Skip to content

API Conventions

Behaviors that apply to every endpoint in the Lumen Partners API.

Error format

All errors return an HTTP status code matching the error class and a JSON body shaped like:

{
  "success": false,
  "error": {
    "code": "INVALID_INPUT",
    "message": "Human-readable description of what went wrong."
  }
}

code is a stable, machine-readable identifier you can branch on. message is human-facing and may change without notice.

Endpoint-specific error codes are listed on each endpoint's reference page.

Common error codes

These codes can be returned by any endpoint:

HTTP code When
400 INVALID_INPUT The request was malformed (bad JSON, missing required fields, wrong field types).
401 UNAUTHORIZED The X-Partner-Api-Key header is missing, malformed, or invalid.
429 RATE_LIMIT You have exceeded your request budget. The Retry-After header indicates how long to wait.
5xx INTERNAL_ERROR A Lumen-side problem. Safe to retry with exponential backoff.

Versioning

The API uses path-based versioning (/partners/v1/, /partners/v2/, ...). Within a major version:

  • Additive changes are non-breaking. New endpoints, new optional request fields, new response fields, and new enum values may be introduced at any time. Your integration should ignore unknown response fields rather than fail on them.
  • Removed or changed fields are breaking. Breaking changes ship in a new major version with a published deprecation timeline of at least 6 months.

When new alert subtypes or other enum values appear, treat them as their nearest known equivalent (or pass them through) rather than rejecting them.