Skip to main content
The batch queue is an opt-in lane for async jobs that don’t need immediate turnaround. Jobs run when there’s spare capacity and are guaranteed to complete within a published SLA. In return, they consume fewer credits than the standard lane.

When to use the batch queue

Pick the batch queue when you can trade latency for cost. Webhooks work with both async lanes (standard and batch), and we generally recommend them over polling /job/{id}. You get the result pushed to you as soon as it’s ready instead of paying for the round-trips.

How to opt in

The batch queue currently works with /parse_async only. Set queue_priority: "batch" on a /parse_async request to use it. No other endpoint supports the batch queue today. queue_priority has no effect on synchronous /parse or on the other async endpoints (/extract_async, /split_async, /edit_async).
The response shape is identical to a regular /parse_async submission. You get back a job_id and poll /job/{id} for the result.

SLA

Batch jobs are guaranteed to complete within 12 hours of submission. The 12-hour window is the firm commitment.

Credit Consumption

Batch jobs consume 20% fewer credits than the same parse on the standard lane. The discount is applied to the number of credits used, not to the monetary cost of each credit. The credit usage returned in /job/{id} already reflects the reduced amount, so no separate invoicing step is needed. Because the reduction applies to credit consumption, it stacks on top of any existing per-organisation credit rate. Customers on legacy or volume pricing keep their existing per-credit rate and additionally consume 20% fewer credits when they use the batch queue.

Back-off and capacity limits

If the batch queue is saturated, /parse_async returns HTTP 503 with a Retry-After: 300 header. Well-behaved clients will pause for the suggested interval before retrying; SDKs handle this automatically. The cap is a safety valve, and under normal operation you should never see it.

Out of scope today

  • The batch queue is supported on /parse_async only. It is not available on synchronous /parse or on the other async endpoints (/extract_async, /split_async, /edit_async); these do not honour queue_priority and run at standard priority and pricing.
  • Per-customer batch-discount tiers are not available; the 20% is global.