Error Reference

All errors follow a consistent JSON format. The HTTP status code and error field together identify the problem.

400bad_request

Malformed JSON, missing required fields, or a value fails validation.

{ "success": false, "code": "bad_request", "message": "Field \"source\" is required." }
401unauthorized

API key or session token is missing, invalid, or expired. X-API-Key and Authorization: Bearer (portal session JWT) are the two accepted credentials — most document endpoints accept either.

{ "success": false, "code": "unauthorized", "message": "invalid api key" }
402plan_upgrade_required

The requested feature isn't included on your current plan.

{ "success": false, "code": "plan_upgrade_required", "message": "'ai-summary' is not available on the pro plan — upgrade to access it" }
402spend_cap_reached

This period's overage has hit the spend cap set under Pricing → Cost controls. Raise or remove the cap, or wait for the next billing period — retrying won't help.

{ "success": false, "code": "spend_cap_reached", "message": "spend cap of $250.00 reached for this billing period" }
402seat_limit_reached

Creating or accepting an invite would exceed your organization's seats. Add extra seats or remove a member or pending invite first.

{ "success": false, "code": "seat_limit_reached", "message": "all seats are in use" }
403forbidden

Request blocked outright (e.g. a blocked URL host for URL-based conversions) — distinct from a plan-gating rejection, which is a 402.

{ "success": false, "code": "forbidden", "message": "source_url host is not allowed" }
404not_found

The referenced resource (job, template, upload session) doesn't exist or doesn't belong to your org.

{ "success": false, "code": "not_found", "message": "job 'abc123' not found" }
429rate_limited

Too many requests from your IP in a short window — a flat, plan-independent throttle, not your monthly quota.

{ "success": false, "code": "rate_limited", "message": "too many requests" }
429quota_exceeded

Your plan's monthly credit pool is exhausted for this billing period.

{ "success": false, "code": "quota_exceeded", "message": "monthly quota exceeded for the starter plan" }
500internal_error

Unexpected server error. Retrying usually resolves this.

{ "success": false, "code": "internal_error", "message": "An unexpected error occurred." }
502upstream_error

A dependency the request relies on (e.g. fetching a remote URL to convert, or the headless renderer) failed or timed out.

{ "success": false, "code": "upstream_error", "message": "failed to fetch source_url" }