Browse documentation

Reference

Problem responses.

Errors use application/problem+json. Read the stable code, and follow next when it is present.

Problem format

An error, as RFC 9457 Problem Details: every API error has this shape, as application/problem+json. Programs act on code; title and detail are for reading, and their words may change.

billing_codeoptional · string

Stable reason returned by the billing service when a billing request is refused.

coderequired · string

A stable code, such as not_found. The API's description lists every code and what to do about it.

detailoptional · string

What went wrong this time, and often how to fix it.

nextoptional · object

The next useful action, including a retry delay or confirmation URL when needed.

Fields of next

What a client should do next.

actionrequired · string

Such as retry, login, sign_in, fix_request, add_member, or stop.

after_soptional · integer (int64)

For retry: how many seconds to wait first.

Minimum: 0

commandoptional · string

A command that does it, such as cscale auth login.

urloptional · string

A page to open, such as a passkey confirmation.

pending_keyoptional · string

The original billing request key to resolve before starting new work.

retry_after_soptional · integer (int64)

Wait this many seconds before retrying; Retry-After says the same.

Minimum: 0

statusrequired · integer (int32)

The HTTP status.

Minimum: 0

titlerequired · string

A short summary, such as Not found.

typerequired · string

https://commitscale.com/errors/ and the code, with hyphens, such as https://commitscale.com/errors/not-found.

Problem codes

access_denied

A device login was denied or refused after five wrong codes, or the passkey does not sign in here.

Stop. After five wrong codes, start a new login; otherwise, sign in another way.

already_exists

Something with that name exists, or its current state does not allow this request.

Use the one that exists, or choose another name.

authorization_pending

A device login or agent sign-up is waiting for the person's approval or email verification.

Poll again after Retry-After seconds.

billing_not_configured

Billing is not configured on this server or its billing service.

Billing is unavailable on this server. Try again later or contact support.

billing_refused

Billing refused the operation. billing_code names its reason; pending_key identifies a purchase needing resolution.

Review Billing and retry uncertain operations with the original key. Resolve an unfinished personal purchase through billing/requests/resolve. New work after a final refusal needs a fresh key.

billing_unavailable

Billing could not confirm the request.

Retry the same input with the same idempotency key. Never start another purchase to recover a lost reply.

check_key_scope

A check-only key may call the test check, read its own usage and acceptance rule, contact support, and withdraw data sharing.

Use a person's sign-in for account management. More agent power needs the owner's passkey; this key cannot widen itself.

conflict

The request conflicts with the current state, such as a membership that changed since you read it.

Read detail, fetch the current state, and change the request. When retry_after_s is set, retrying the same request later can work.

excerpt_too_large

A model request exceeds a field, line, rendered byte, token, body or internal per-check question bound.

Skip the question and leave it unanswered. Do not shorten a diff, split its meaning across questions or retry the same oversized input.

expired_token

A device login code, sign-up, sign-in link, or passkey prompt expired or was already used.

Start a new flow. If a sign-up already created the account but its key was lost, the person signs in to revoke and replace that key.

feature_off

The namespace plan does not include this feature.

Retrying on the same plan will not help. GET /api/v1/namespaces/{namespace}/plan, and the namespace's Plan page in Settings, show what its plan includes.

forbidden

The caller may not do this: only people may, only owners may, or the agent was not given this repository or write access.

Stop. Retrying will not help. Ask the owner for the access, or leave the step to a person.

idempotency_key_in_use

The first request with this key is still running, including a queued model question, or it succeeded with a secret, such as a new token, which is never replayed.

When Retry-After is set, retry then with the same key. Otherwise the first request succeeded: do not repeat it.

idempotency_key_reused

The idempotency key was already used for a different request.

Use a new key for each new request, and the same key only for a retry of the same request.

internal

The server failed, and logged why.

Retry after Retry-After seconds. A write is safe to retry with the same idempotency key.

invalid_request

The request is malformed or breaks a rule, such as a title that is too long, or a body that is not the expected JSON.

Fix the request as detail says. The same request fails the same way.

invalid_token

The token is unknown, expired, or revoked, its agent was revoked, or an OAuth token was used outside its MCP resource.

Stop using it. Sign in again, or ask the owner to create a replacement agent key.

model_check_cap_reached

The Free allowance of 100 checks this UTC calendar month is used across Free workspaces. Verified addresses that reach one inbox share the allowance. The check was not started.

Do not retry automatically. Open next.url to upgrade the workspace to Pro and keep checking. Already started checks may finish.

model_replay_expired

A model check's 24-hour replay window expired. Its retained identities cannot be charged again.

Leave this question unanswered. Never silently substitute a fresh check for an expired retry.

model_unavailable

The local check's model is not configured or could not return both answer probabilities.

Leave the question unanswered. Retry the exact body with the same check ID, request ID and idempotency key within the remaining check budget.

not_found

It does not exist, or the caller cannot read it: a repository the caller cannot read is reported as not found.

Check the name or ID, and that the token has the repository.

organization_frozen

The organization's Free plan has more than one person; members cannot write, nobody can promote an owner, and no check can start.

An owner can renew Pro or remove people until one remains; others can ask an owner.

organization_person_limit

The organization's Free plan allows one person.

An owner can upgrade the organization to Pro, or ask an owner to do so.

passkey_layer_required

The person enabled the passkey layer. Direct check-key creation is refused.

Run cscale key create to confirm with a passkey, or use POST /api/v1/check-keys/confirmed.

quota_exceeded

With 429, the caller used its requests for the minute. With 422, a count limit was reached.

With 429, wait Retry-After seconds and retry. With 422, remove one first.

signup_closed

Open sign-up is turned off on this server.

Ask for an invite, or sign in to an existing account.

signup_limited

The address or network reached its rolling sign-up start limit.

Wait Retry-After seconds before starting again. Keep polling an existing request if you have one.

slow_down

A device login or agent sign-up was polled too often.

Wait Retry-After seconds, and poll less often.

support_limited

The account or server has sent too many recent support requests.

Wait Retry-After seconds and retry.

test_check_acceptance_not_counted

The target does not trust this agent key for its claimed person, or the passkey layer requires the person.

Review target trust or ask the person for a passkey acceptance.

test_check_acceptance_policy_unknown

The check could not read the responsible person's acceptance rule.

Treat the passkey layer as on. Agent acceptances do not clear findings. Check the protected check credential and server connection, then retry.

unauthenticated

The request carried no credentials.

Use this operation's sign-in method. Bearer credentials use Authorization: Bearer <token>; browser credentials use the session cookie.

unavailable

With 502, a service the server needs did not answer, such as a sign-in provider. With 503, the server is busy, such as when a workspace is locked or host lookups are full, or a write with an idempotency key runs long: that write goes on, and its answer is kept for the key.

With 502, retry later, or sign in another way. With 503, retry after Retry-After seconds, using the same idempotency key for a write; a long-running write can then replay its answer.