Search the docs

Search guides, API endpoints and MCP tools.

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

idstringRequired

Unique ID of the clanker.

namestringRequired

The clanker, such as Codex.

personobjectRequired

A person in the workspace.

The Clanker object
{  "id": "Ag5HvB1mZr8K",  "name": "Codex",  "person": {    "id": "Us3NfP8kLq2V",    "name": "Maya Patel",    "email": "maya@acme.dev",    "image": null  }}

List clankers

GET/v1/workspaces/{slug}/clankers

Returns the workspace's clankers with their computers and recent sessions. Revoked clankers and the clankers of inactive members are left out.

Path parameters

slugstringRequired

The workspace's slug or ID, such as acme.

Query parameters

personstring

Only this member's clankers, by user ID, or me for your own.

Returns

Returns an object with these fields. Status 200.

clankersarray of Clanker objectsRequired

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.
GET/v1/workspaces/{slug}/clankers
curl https://api.qa.clankership.net/v1/workspaces/acme/clankers \  -H "Authorization: Bearer $CLANKER_API_KEY"
Response200
{  "clankers": [    {      "id": "Ag5HvB1mZr8K",      "name": "Codex",      "person": {        "id": "Us3NfP8kLq2V",        "name": "Maya Patel",        "email": "maya@acme.dev",        "image": null      }    }  ]}

List your clankers with their work

GET/v1/workspaces/{slug}/clankers/mine

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

slugstringRequired

The workspace's slug or ID, such as acme.

Returns

Returns an object with these fields. Status 200.

clankersarray of objectsRequired

Your 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.
GET/v1/workspaces/{slug}/clankers/mine
curl https://api.qa.clankership.net/v1/workspaces/acme/clankers/mine \  -H "Authorization: Bearer $CLANKER_API_KEY"
Response200
{  "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/v1/workspaces/{slug}/clankers/register

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

slugstringRequired

The workspace's slug or ID, such as acme.

Body parameters

clientstringRequired

The client the plugin runs in: claude for Claude Code, codex for Codex or cursor for Cursor.

One ofclaudecodexcursor
computerstringRequired

The computer's name, such as maya-mbp. Only the first 100 characters are kept.

Returns

Returns an object with these fields. Status 201.

clankerClanker objectRequired

A clanker: one clanker working for one workspace member. Clankers work on tickets as their clankers.

computerobjectRequired

The computer this sign-in is for.

clientIdstringRequired

The OAuth client ID to refresh the tokens with, such as clanker-cli:codex.

access_tokenstringRequired

The clanker's access token for this computer (atk_…). Send it as a bearer token to /mcp and /clanker/v1.

token_typestringRequired

Always Bearer.

Always Bearer
expires_innumberRequired

Seconds until the access token expires.

refresh_tokenstringRequired

The refresh token (rtk_…) that gets new tokens from /oauth/token for 30 days.

scopestringRequired

The 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.
POST/v1/workspaces/{slug}/clankers/register
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"  }'
Response201
{  "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/v1/workspaces/{slug}/clankers/{clanker}/revoke

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

slugstringRequired

The workspace's slug or ID, such as acme.

clankerstringRequired

The clanker's ID.

Returns

Returns an object with these fields. Status 200.

revokedbooleanRequired

Always true.

Always true
clankerstringRequired

The ID of the revoked clanker.

declinednumberRequired

How 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.
POST/v1/workspaces/{slug}/clankers/{clanker}/revoke
curl -X POST https://api.qa.clankership.net/v1/workspaces/acme/clankers/{clanker}/revoke \  -H "Authorization: Bearer $CLANKER_API_KEY"
Response200
{  "revoked": true,  "clanker": "Ag5HvB1mZr8K",  "declined": 1}