Skip to content

Rate limits and quotas

Updated

Two different ceilings#

These are easy to confuse and behave differently:

Rate limitCredit quota
MeasuresRequests per time windowPages processed, cumulatively
Error429 rate_limit_exceeded402 usage_limit_exceeded
ResetsAutomatically, per windowNever — needs topping up
Retry helps?Yes, after waitingNo

Rate limits#

Defaults per key:

WindowRequests
Per minute10
Per hour100
Per day1,000
Per month10,000

Every response carries your current position:

HeaderMeaning
X-RateLimit-LimitRequests allowed in the window
X-RateLimit-RemainingRequests left
X-RateLimit-ResetUnix timestamp when the window resets
Tip
On a 429, wait until X-RateLimit-Reset rather than guessing a backoff. The official SDKs do this automatically and fall back to exponential backoff only when the header is absent.

The 10-per-minute limit shapes multi-page design#

A 50-page PDF splits into roughly 17 chunks, each needing its own process call. At 10 requests per minute that is about two minutes of wall clock regardless of concurrency — so firing chunks in parallel does not finish sooner, it just produces 429s.

This is why all three official SDKs process chunks sequentially. Do the same in a hand-rolled integration.

Credits#

Billing is per page, not per request: a 10-page document costs 10 credits.

Warning
A failed extraction (422 extraction_failed) on the synchronous path still deducts 1 credit. Budget for it when reconciling usage. On the multi-page path a failed chunk is not charged and stays available for retry, and persist_failed never charges.

Two quota errors exist:

CodeHTTPMeaning
usage_limit_exceeded402The key's cumulative cap is reached
insufficient_credits402Remaining credits do not cover this document's page count

insufficient_credits is checked before a large document is split, so you are told up front rather than part-way through.

Document limits#

LimitValue
Max file size10 MB (413 file_too_large)
Max pages150 (400 page_limit_exceeded)
Accepted typesPDF, JPG, PNG (400 invalid_file_type)
Sync threshold3 pages — above this a PDF is split

The SDKs check size and type locally before sending, so a bad file costs no round trip.

Multi-page job limits#

LimitValue
Job TTL2 hours from split (410 job_expired)
Concurrent open jobs per key5 (429 too_many_open_jobs)
Pages per chunk3

too_many_open_jobs means you have unfinished splits. Collect or finalize them, or let them expire, before starting more. It arrives as a 429 but waiting alone will not clear it within the window — you need to finish the outstanding jobs.

Raising limits#

Rate limits and credit caps are set per key. Contact support@docxtract.io if your volume needs more than the defaults.