AAtlas API
Reference

Errors

Atlas returns a shared error envelope so integrations can handle failures consistently.

Atlas does not wrap successful responses in a generic status/message/data envelope.

  • successful reads return resource-shaped JSON
  • list endpoints return list-shaped JSON
  • errors always return the shared envelope below

Error envelope

{
  "error": {
    "type": "rate_limit_exceeded",
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded",
    "request_id": "req_01JABCXYZ123",
    "details": null
  }
}

Fields

FieldTypeMeaning
error.typestringBroad error class
error.codestringStable application code for programmatic handling
error.messagestringHuman-readable message
error.request_idstringRequest correlation ID for support and debugging
error.detailsobject or array or nullOptional structured context

Common status codes

StatusMeaningTypical cause
400Bad Requestmalformed request shape or unsupported parameters
401Unauthorizedmissing, invalid, expired, revoked, or wrong-environment key
403Forbiddenorganization inactive or action not allowed
404Not Foundcompany, filing, or other resource does not exist
409Conflictduplicate create attempt or idempotency key reused with a different payload
422Unprocessable Entityvalidation failure
429Too Many Requestsrate limit exceeded
500Internal Server Errorunexpected Atlas error

Example: unauthorized

{
  "error": {
    "type": "authentication_error",
    "code": "invalid_api_key",
    "message": "The API key provided is invalid for this environment.",
    "request_id": "req_01JABCXYZ124",
    "details": null
  }
}

Example: validation failure

{
  "error": {
    "type": "validation_error",
    "code": "invalid_request",
    "message": "One or more request parameters are invalid.",
    "request_id": "req_01JABCXYZ125",
    "details": [
      {
        "field": "cursor",
        "message": "cursor must be a valid opaque pagination token"
      }
    ]
  }
}

Example: rate limited

{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded for the current window.",
    "request_id": "req_01JABCXYZ126",
    "details": {
      "retry_after": 60
    }
  }
}

Headers worth handling

When Atlas rate limits a request, integrations should check:

  • Retry-After
  • X-RateLimit-Limit
  • X-RateLimit-Remaining
  • X-RateLimit-Reset

On this page