Manual
CLI
API
Log in Get started free

Errors

The error format of the API and the codes you meet most.

A request that fails answers with a status of 400 or higher and an API Problem (RFC 9457), with the content type application/problem+json:

JSON
{
  "type": "https://docs.continuous-translations.com/api/errors#not_found",
  "title": "Not Found",
  "status": 404,
  "error": "not_found"
}
MemberDescription
typeA URL that identifies the problem. It ends with the error code.
titleThe name of the HTTP status. It does not change per request.
statusThe HTTP status, the same as the status of the response.
errorA code to act on, not a sentence. The codes are below and on the page of each route.

A problem can carry more members, such as fields for validation errors. See Languages and time zones.

Match on error: it stays the same, while title and the text of type are for people. The responses of versions before this format had only error and the extra members, and those are still there.

Validation errors #

A field that is missing or wrong answers 422 with invalid_request, and fields says which fields and why:

JSON
{
  "type": "https://docs.continuous-translations.com/api/errors#invalid_request",
  "title": "Unprocessable Content",
  "status": 422,
  "error": "invalid_request",
  "fields": { "name": "invalid" }
}

The value in fields is invalid for most problems. Some routes give a more precise reason, such as too_short, taken or is_source_language. Each endpoint page lists the ones it can give.

Common codes #

StatuserrorMeaning
400invalid_stateThe state of a GitHub or GitLab connection is not the one you were given
401unauthenticatedThe token is missing, not valid or expired
401invalid_credentialsThe email address or password is wrong
402plan_limitThe plan of the organisation has no room for this. limit, plan and max say which limit
403forbiddenYour role does not allow this
403insufficient_scopeThe API key has no scope for this route, see Authentication
401mfa_requiredThe account uses two-factor authentication and no code was sent
401invalid_codeThe two-factor code is wrong or was used already
403ip_not_allowedThe organisation has an IP allowlist and the address of the request is not on it
403mfa_setup_requiredThe organisation requires two-factor authentication and your account has none. Set it up first
403wrong_passwordThe password you sent is not the password of the account
404not_foundThe route does not exist, the item does not exist, you cannot see it, or an id in the path is not a UUID
405method_not_allowedThe route exists, but not for this HTTP method. The Allow header lists the methods
409conflictIt already exists
409project_frozenThe project is frozen, so keys cannot change
409branch_frozenThe branch is frozen
409branch_protectedThe branch is the protected main branch
410invalid_or_expired_tokenThe link from an invitation or password reset is unknown or has expired
422invalid_requestA field is missing or wrong, see fields
429rate_limitedToo many requests, see Rate limiting
500server_errorSomething went wrong on our side
502github_error, gitlab_errorGitHub or GitLab refused a request. message says why
503github_not_configured, gitlab_not_configuredThe integration is not set up on this server

A route can give other codes of its own, such as not_in_review or owner_cannot_change. They are listed on the page of that route.

Not found and forbidden #

The API answers 404 and not 403 for a project, branch or key you have no access to, so it does not reveal that it exists. 403 means you can see it but your role is too low.