Skip to content

Errors and status codes

CodeMeaning
200 OKSuccess
201 CreatedResource created
204 No ContentResource deleted (or no body to return)
304 Not ModifiedConditional GET with matching If-None-Match
401 UnauthorizedMissing or insufficient token (also: read token attempting a write)
403 ForbiddenAuthenticated but your role doesn’t permit this action
404 Not FoundResource does not exist or is not visible to you
422 Unprocessable ContentValidation failed

Auth and authorization errors:

{ "error": "Not authorized" }

Validation errors:

{ "errors": { "name": ["can't be blank"], "currency": ["is not included in the list"] } }

For privacy reasons, the API returns 404 when:

  • The resource doesn’t exist
  • The resource exists but you’re not a member of the owning organization

It returns 403 only when:

  • You are a member of the organization
  • But your role (or other state, e.g. token scope) doesn’t allow the action

In practice: treat 403 and 404 interchangeably during retries — neither will succeed without changing the request.

A read-scoped token attempting any non-GET/HEAD request returns:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Token realm="Application"

The fix is to create a new write-scoped token; tokens are not editable in place. See Authentication.