ArchFindrDevelopers

Errors

Status codes and the shape of error responses.

The API uses standard HTTP status codes. Errors return a JSON body with an errors array, so one parser handles every failure.

{
  "errors": [
    { "message": "Missing scope requests:read", "code": "E_AUTHORIZATION_FAILURE" }
  ]
}
FieldPresentMeaning
messageAlwaysA human-readable explanation. Do not parse it.
codeMost errorsA stable identifier such as E_ROW_NOT_FOUND. Branch on this.
fieldValidation errorsThe input that failed, such as perPage.
ruleValidation errorsThe rule that failed, such as max.

Status codes

StatusCodeWhen
400The request body is not valid JSON.
401E_UNAUTHORIZED_ACCESSThe key is missing, invalid, expired or revoked.
403E_AUTHORIZATION_FAILUREThe key lacks the required scope, its owner lost access, or its client is not approved.
404E_ROW_NOT_FOUNDThe resource does not exist, or belongs to another owner.
409E_REFERENCEDThe resource is still referenced by something else and cannot be deleted.
422E_VALIDATION_ERRORA query parameter or body field failed validation.
429E_TOO_MANY_REQUESTSThe key exceeded its rate limit.
5xxA server problem. Retry with backoff.

One error uses a flat shape

409 E_REFERENCED is returned as { "message": "...", "code": "E_REFERENCED" } without the errors array. Handle both shapes if you delete resources.

Validation errors

A 422 lists every invalid field in one response:

{
  "errors": [
    { "message": "The perPage field must not be greater than 100", "rule": "max", "field": "perPage" },
    { "message": "The page field must be at least 1", "rule": "min", "field": "page" }
  ]
}

Handling errors

  • Fix 4xx errors in your request. Do not retry them unchanged, except 429.
  • Retry 429 and 5xx with exponential backoff and jitter.
  • Log the code and your request details, but never log the key.

On this page