View as Markdown

Management API

The management API sets up workspaces and keys from your own systems. MSPs use it to add a client in two calls. It is modelled on OpenRouter's key management API, so it will feel familiar.

It needs a management key. Create one in the console under Cost control. A management key can manage workspaces and keys and read statements. It cannot call models. Ordinary keys cannot use these endpoints.

All amounts are Australian dollars, excluding GST.

Add a client in two calls

bash
# 1. A workspace with an allowance
curl https://api.continuumlabs.ai/v1/workspaces \
  -H "Authorization: Bearer cl-your-management-key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Harbour & Co Accounting",
    "allowance_aud": 500,
    "allowance_reset": "monthly",
    "at_limit": "downshift",
    "downshift_model": "gpt-oss-120b",
    "alert_email": "it@harbourco.example",
    "resale_markup_pct": 40
  }'

# 2. A key in that workspace
curl https://api.continuumlabs.ai/v1/keys \
  -H "Authorization: Bearer cl-your-management-key" \
  -H "Content-Type: application/json" \
  -d '{"name": "Front desk app", "workspace_id": "WORKSPACE_ID", "limit": 100, "limit_reset": "monthly"}'

The new key is in the key field of the response. It is shown once. Only a scrambled version is stored.

Workspaces

CallDoes
GET /workspacesLists workspaces, with this period's spend.
GET /workspaces/{id}One workspace.
POST /workspacesCreates one. name is required.
PATCH /workspaces/{id}Changes any field.
DELETE /workspaces/{id}Deletes it. Its keys stay, without a workspace.
FieldMeaning
nameUp to 60 characters.
allowance_audThe allowance, or null for none.
allowance_resetdaily, weekly or monthly.
at_limitstop, or downshift to use a cheaper model from 90%.
downshift_modelThe cheaper model's ID. Required with downshift.
alert_email, alert_webhookWhere alerts go at 50%, 80% and 100%. The webhook must be https.
resale_markup_pctFor MSPs: the markup statements show the client.

Responses add allowance_remaining_aud and spent_this_period_aud.

Keys

CallDoes
GET /keysLists ordinary keys, with this period's usage.
GET /keys/{id}One key.
POST /keysCreates one. Returns the key once.
PATCH /keys/{id}Changes the name, workspace, limit, or switches it off.
DELETE /keys/{id}Deletes it. Requests using it stop at once.
FieldMeaning
nameUp to 60 characters.
workspace_idThe workspace, or null.
limitThe key's own limit, or null for none.
limit_resetdaily, weekly or monthly.
disabledtrue switches the key off at once.

Responses add limit_remaining and usage_this_period.

Statements

CallDoes
GET /statements/account?month=2026-10The whole account's statement for a month.
GET /statements/{workspace_id}?month=2026-10One workspace's.

See statements for what's in it.

Errors

Errors use the same shape as the rest of the API. A bad field returns 400 with a message naming it. An ID from another account returns 404.