Skip to main content

Errors and limits

Errors use a stable JSON shape:
field, suggestedFix, allowedValues, and writableFields are included when the server can provide a precise recovery hint. AI agents should use those fields to correct the payload instead of guessing.

Common error codes

Recovery fields

Example non-writable field error:

Scopes

API keys carry scopes. A read key can list and read subscriptions and call the analytics and audit endpoints. A write key additionally allows create, update, cancel, pause, resume, and delete. A write call made with a read-only key returns 403 insufficient_scope; do not retry — request a write-scoped key. See Authentication.

Rate-limit headers

Authenticated API responses include:
X-RateLimit-Reset is a Unix timestamp in seconds. Validation failures (400) are rejected before the hourly quota is consumed, so they do not count against your limit and do not carry rate-limit headers. Fixing the payload and retrying is free. 429 responses also include a Retry-After header with the number of seconds to wait before retrying. This applies both to the per-user request limit and to the “too many invalid API key attempts” lockout.

CORS

The subscription API supports browser preflight requests:
Keep API keys out of browser apps unless you fully trust the browser context. CORS support is mainly for developer tooling, internal dashboards, or trusted local workflows.