Errors & retries
Retry safely. Keep the job ID and request ID.
{
"error": {
"code": "api_access_unavailable",
"message": "Your current subscription does not include API processing."
},
"request_id": "request-uuid"
}| HTTP | Action |
|---|---|
| 401 | Check the key. It may be missing or revoked. |
| 403 | Check API eligibility. |
| 404 | Check the resource ID and organization. |
| 409 | Read the error code. request_in_progress and report_not_ready are retryable. idempotency_conflict requires correcting the request. |
| 410 | The PDF has expired or been deleted. |
| 413 / 422 | Correct the file size or request fields. |
| 429 | Wait for Retry-After. |
| 5xx / network timeout | Retry with backoff and the same idempotency key. |
Idempotency
Generate one unique key for each intended creation request. Reuse that key and identical parameters after timeouts or server failures. Reusing a key with changed parameters returns a conflict. Repeating a job request does not create another run or charge again. Python and JavaScript examples include bounded retries; the shell example stops on errors.
Idempotency records are retained with integration history. A new key does not turn a consumed upload into a new job. Use a new upload for another processing request.
Rate limits
Requests share an organization allowance of 600 per minute, including a separate limit of 60 upload preparations per minute. Document concurrency comes from the purchased plan. Jobs wait when capacity is busy. Validation-only follows the same capacity rules.