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, you get a discount on the credits they consume.

When to use the batch queue

ApproachBest for
Batch queue (this page)Bulk uploads, backfills, overnight runs — anything where minutes-to-hours latency is acceptable
Async parseStandard async — immediate processing, normal pricing
Sync parseSmall documents, interactive flows — get the result back in one request
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).
from reducto import AsyncReducto

client = AsyncReducto()

response = await client.parse.run_job(
    input="https://example.com/large-doc.pdf",
    options={"queue_priority": "batch"},
)
curl -X POST https://platform.reducto.ai/parse_async \
  -H "Authorization: Bearer $REDUCTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "document_url": "https://example.com/large-doc.pdf",
    "queue_priority": "batch"
  }'
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.

Pricing

Batch jobs receive a 20% credit discount on parsing. The credit usage returned in /job/{id} reflects the discounted amount directly — no separate invoicing step. The discount applies on top of any existing per-organisation credit rate, so customers on legacy or volume pricing keep their existing rate and additionally get the 20% off 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 — 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.