Skip to content

An error response. error.code names the error and is stable; branch on it, since several codes share a status. error.message is for people and may change.

error.details, when present, takes one of three shapes:

  • A list of {field, message}, on validation_error and invalid_parameter, and on feature_unavailable or limit_reached when one field caused the refusal. field can be a path such as widgets[1].id or check_ins.<slug>, or base for the record as a whole, and the same field can appear more than once.
  • {required_scope, token_scopes}, on insufficient_scope: the scope the operation needs, and the scopes the token has.
  • {merged_into, location}, on fault_merged: the fault it was merged into. Only writes get this; reads of a merged fault redirect to it with a 301.

Every 429 sends a Retry-After header with the seconds to wait. A 503 can be retried after a short wait.

Include meta.request_id when contacting support.

error.codeStatusMeaning
invalid_parameter400A query parameter is malformed or outside its allowed values.
unauthorized401The credential is missing, invalid or revoked.
unsupported_auth_scheme401The credential was sent with HTTP basic auth instead of as a Bearer token.
credential_in_query401The credential was sent in the URL.
ingestion_key_not_accepted401An ingestion key was sent; this API takes an API token.
access_denied403The credential isn’t allowed to do this to this record.
insufficient_scope403The token lacks a scope this needs. details names it.
project_restricted403A token limited to some projects can’t create projects.
requires_user_token403This records who acted, so it needs a user token, not an account token.
feature_unavailable403The plan doesn’t include this.
limit_reached403The plan’s limit for this resource is reached.
account_inactive403The account isn’t active.
account_parked403The account is parked.
not_found404Doesn’t exist, or isn’t visible to this credential.
fault_merged409The fault was merged into another. details names it.
validation_error422The body is invalid. details, when present, names each field.
forbidden_attributes422The body sets fields that can’t be set.
ambiguous_account422The credential covers more than one account.
delete_failed422The delete didn’t complete.
rate_limit_exceeded429Over the rate limit. Wait for Retry-After.
concurrent_request429Another request is changing the same thing. Retry.
streams_provisioning429The project’s Insights streams are still being set up. Retry.
maintenance_mode503Writes are paused for maintenance. Retry later.
service_unavailable503Temporarily unavailable. Retry shortly.