The type of every refusal, as the problem's type member carries it. The status is repeated in the body.
invalid-request 400- The request is not valid. The body, a query parameter or a header does not have the shape the operation takes. The errors member lists each one with a JSON Pointer to it.
unauthenticated 401- Authentication is required. No credential, or one that is not current: unknown, revoked or expired. Send Authorization: Bearer with the credential the operation names: a personal API token or an app password, an org token or a backup token.
forbidden 403- Not allowed. The credential is good, but the account's role on this item does not allow the operation.
insufficient-scope 403- The token does not have that scope. A personal API token or an org token may only do what its scopes allow. The scope member names the one the operation needs; make a token that has it.
backup-token 403- A backup token cannot do that. A backup token only reads /api/v1/backup. Use an app password, or an org token for an organisation.
account-suspended 403- The account is suspended. The account — or, for an org token, the organisation — is locked for an unpaid invoice. Reads and writes are refused until it is paid.
not-found 404- Not found. Nothing with that id, or nothing this account may see. The two are the same answer on purpose.
method-not-allowed 405- Method not allowed. The path exists, but not with this method. The Allow header lists the ones it takes.
conflict 409- The request conflicts with the item's state. For example a card moved to a list that is archived, or a site that is made of files asked for its pages.
cursor-expired 410- The cursor is too old. The backup feed no longer remembers deletions that far back. Walk the whole feed again from no cursor, and drop what it does not name.
idempotency-in-flight 409- A request with this Idempotency-Key is still running. Wait for the first request to finish, then retry with the same key to receive its answer.
precondition-failed 412- The item has changed. If-Match named a version the item has moved past. The version member says where it is now: read it again, merge, and retry with the new ETag.
file-too-large 413- The file is too large to work on here. An operation that opens a file holds it in memory, and the API's servers have little. The operation says how large a file it takes; download the file, or use the app in a browser, which has no such bound.
payload-too-large 413- The body is too large. The body is past what the item can hold.
unsupported-media-type 415- Unsupported Content-Type. Send the body in one of the media types the operation lists.
unprocessable 422- The content was refused. The request is well-formed, but its content cannot be saved: a document body the editor cannot open, for example.
requires-app 422- This needs the app in a browser. Some things are only done where the file is drawn or a secret is typed: opening a password-protected PDF, signing it. The detail says which; open the file in the app.
idempotency-key-reused 422- This Idempotency-Key was used for a different request. A key names one request. Use a new key for a different body or path.
allowance-exhausted 429- Today's allowance is used up. A backup token has fetched what it may today. The Retry-After header says how many seconds until it starts again, at midnight UTC.
read-only 403- This operation only reads. A query sent to an operation that reads would have changed the database, so it was refused before it ran. Send statements that write to runSqlStatement, with a token that has the write scope.
sql-error 422- SQLite refused the statement. The SQL did not prepare or did not run: a syntax error, a table that does not exist, a constraint. The detail is SQLite's own message and the offset member is where in the SQL it stopped. Nothing was changed.
query-timeout 422- The query ran out of time. A statement is stopped once it has run for the time the operation allows, and nothing it did is kept. Narrow the query, add an index, or page with a smaller limit.
rate-limited 429- Too many requests. A personal API token or an app password may make 120 requests a minute. Wait the number of seconds the Retry-After header names, then retry.
precondition-required 428- If-Match is required. Writing this item's content needs the ETag you read it at, so a change made since is not overwritten.
internal-error 500- Something went wrong on our side. Retry later. A POST retried with the same Idempotency-Key cannot run twice.
storage-full 507- The owner's storage is full. The change would take the owner past their storage. Free space or add some, then retry.