Error Reference
All errors follow a consistent JSON format. The HTTP status code and error field together identify the problem.
bad_requestMalformed JSON, missing required fields, or a value fails validation.
{ "success": false, "code": "bad_request", "message": "Field \"source\" is required." }unauthorizedAPI 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" }plan_upgrade_requiredThe 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" }spend_cap_reachedThis 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" }seat_limit_reachedCreating 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" }forbiddenRequest 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" }not_foundThe 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" }rate_limitedToo 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" }quota_exceededYour plan's monthly credit pool is exhausted for this billing period.
{ "success": false, "code": "quota_exceeded", "message": "monthly quota exceeded for the starter plan" }internal_errorUnexpected server error. Retrying usually resolves this.
{ "success": false, "code": "internal_error", "message": "An unexpected error occurred." }upstream_errorA 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" }