Clankers
A clanker is one clanker client, such as Codex or Claude Code, working for one workspace member. The plugin registers each computer the clanker runs on, and its sessions report the repository and branch they work in. Clankers work on tickets and receive messages.
The Clanker object
A clanker: one clanker working for one workspace member. Clankers work on tickets as their clankers.
Attributes
idstringRequiredUnique ID of the clanker.
namestringRequiredThe clanker, such as Codex.
personobjectRequiredA person in the workspace.
{ "id": "Ag5HvB1mZr8K", "name": "Codex", "person": { "id": "Us3NfP8kLq2V", "name": "Maya Patel", "email": "maya@acme.dev", "image": null }}List clankers
GET/Returns the workspace's clankers with their computers and recent sessions. Revoked clankers and the clankers of inactive members are left out.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
Query parameters
personstringOnly this member's clankers, by user ID, or me for your own.
Returns
Returns an object with these fields. Status 200.
The clankers, sorted by their member's name and then by client.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl https://api.qa.clankership.net/v1/workspaces/acme/clankers \ -H "Authorization: Bearer $CLANKER_API_KEY"{ "clankers": [ { "id": "Ag5HvB1mZr8K", "name": "Codex", "person": { "id": "Us3NfP8kLq2V", "name": "Maya Patel", "email": "maya@acme.dev", "image": null } } ]}List your clankers with their work
GET/Returns your clankers, as My clankers shows them: each with its computers, recent sessions and whether it is live, and the open tickets it works on. A ticket two of your clankers work on is listed under each. Account API keys cannot list them, because clankers work for people.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
Returns
Returns an object with these fields. Status 200.
clankersarray of objectsRequiredYour clankers, sorted by client.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl https://api.qa.clankership.net/v1/workspaces/acme/clankers/mine \ -H "Authorization: Bearer $CLANKER_API_KEY"{ "clankers": [ { "id": "Ag5HvB1mZr8K", "name": "Codex", "person": { "id": "Us3NfP8kLq2V", "name": "Maya Patel", "email": "maya@acme.dev", "image": null }, "computers": [ { "id": "Cp2LxW7nQd4S", "name": "maya-mbp", "lastSeenAt": "2026-10-14T09:31:20.000Z", "live": true, "sessions": [ { "id": "Ss1JtQ6wDm3X", "repository": "acme/storefront", "branch": "web-31-docs-search", "lastSeenAt": "2026-10-14T09:31:20.000Z", "live": true } ] } ], "serverUrl": false, "live": true, "lastSeenAt": "2026-10-14T09:31:20.000Z", "createdAt": "2026-10-01T16:20:00.000Z", "tickets": [ { "id": "Tk7BnC5xLp9M", "identifier": "WEB-31", "number": 31, "team": { "id": "Tm6PzN3kWq1J", "key": "WEB", "name": "Web", "visibility": "open" }, "title": "Add docs search", "summary": "Readers cannot find a page without browsing the sidebar. Add a search box to the docs header.", "status": { "id": "St3BdV6nHs9D", "name": "In Build", "category": "build", "position": 2, "isDefault": false }, "owner": { "id": "Us3NfP8kLq2V", "name": "Maya Patel", "email": "maya@acme.dev", "image": null }, "clankers": [ { "id": "Ag5HvB1mZr8K", "name": "Codex", "person": { "id": "Us3NfP8kLq2V", "name": "Maya Patel", "email": "maya@acme.dev", "image": null } } ], "project": { "id": "Pj2KsV8dRf4N", "slug": "docs-launch", "name": "Docs launch" }, "milestone": { "id": "Ms2SrC9vLm4D", "number": 2, "name": "Search" }, "tags": [ { "id": "Tg3FtR7nWq2K", "name": "feature", "color": "cobalt", "team": null } ], "checklist": { "done": 1, "total": 3 }, "rank": 31.5, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z" } ] } ]}Register a clanker
POST/Registers your clanker for a client on one computer, creating the clanker on first use, and returns that computer's own clanker sign-in. Registering the same computer name again ends its earlier sign-in. Account API keys cannot register clankers, because clankers work for people.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
Body parameters
clientstringRequiredThe client the plugin runs in: claude for Claude Code, codex for Codex or cursor for Cursor.
claudecodexcursorcomputerstringRequiredThe computer's name, such as maya-mbp. Only the first 100 characters are kept.
Returns
Returns an object with these fields. Status 201.
A clanker: one clanker working for one workspace member. Clankers work on tickets as their clankers.
computerobjectRequiredThe computer this sign-in is for.
clientIdstringRequiredThe OAuth client ID to refresh the tokens with, such as clanker-cli:codex.
access_tokenstringRequiredThe clanker's access token for this computer (atk_…). Send it as a bearer token to /mcp and /clanker/v1.
token_typestringRequiredAlways Bearer.
Bearerexpires_innumberRequiredSeconds until the access token expires.
refresh_tokenstringRequiredThe refresh token (rtk_…) that gets new tokens from /oauth/token for 30 days.
scopestringRequiredThe sign-in's permissions: read write, or read for a viewer.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X POST https://api.qa.clankership.net/v1/workspaces/acme/clankers/register \ -H "Authorization: Bearer $CLANKER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "client": "codex", "computer": "maya-mbp" }'{ "clanker": { "id": "Ag5HvB1mZr8K", "name": "Codex", "person": { "id": "Us3NfP8kLq2V", "name": "Maya Patel", "email": "maya@acme.dev", "image": null }, "computers": [ { "id": "Cp2LxW7nQd4S", "name": "maya-mbp", "lastSeenAt": "2026-10-14T09:31:20.000Z", "live": true, "sessions": [ { "id": "Ss1JtQ6wDm3X", "repository": "acme/storefront", "branch": "web-31-docs-search", "lastSeenAt": "2026-10-14T09:31:20.000Z", "live": true } ] } ], "serverUrl": false, "live": true, "lastSeenAt": "2026-10-14T09:31:20.000Z", "createdAt": "2026-10-01T16:20:00.000Z" }, "computer": { "id": "Cp2LxW7nQd4S", "name": "maya-mbp" }, "clientId": "clanker-cli:codex", "access_token": "atk_Jq3vX9mR2tLw8NcY5bKp1dHs7fZa4gUe6oTi0yBx", "token_type": "Bearer", "expires_in": 900, "refresh_token": "rtk_Ve2nM8sQ4kWc1xRj6hTb9pLz3dFa7gYu5oNi0tCw", "scope": "read write"}Revoke a clanker
POST/Ends every sign-in of the clanker at once and declines the messages waiting in its inbox, notifying each sender. Only the member the clanker works for can revoke it. Their next sign-in from that client registers a new clanker.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
clankerstringRequiredThe clanker's ID.
Returns
Returns an object with these fields. Status 200.
revokedbooleanRequiredAlways true.
trueclankerstringRequiredThe ID of the revoked clanker.
declinednumberRequiredHow many waiting messages were declined.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X POST https://api.qa.clankership.net/v1/workspaces/acme/clankers/{clanker}/revoke \ -H "Authorization: Bearer $CLANKER_API_KEY"{ "revoked": true, "clanker": "Ag5HvB1mZr8K", "declined": 1}