GET /v1/async/status returns a live snapshot of everything currently in flight for your API key: how deep your admission queue is versus its capacity, how much of your sync concurrency budget is in use, and every inflight child grouped by surface and by region. It takes no parameters — it always reports the current state of the key making the request.
Use it as a pacing signal. Before you fire a large batch of captures, read this endpoint to see how much headroom you have, then throttle your submissions to stay under your limits instead of discovering them through 429 responses.
This is a read-only snapshot and never counts against your credits. It reflects state at the moment of the request and can change immediately as work is admitted and completed.
Request
Response
200 OK
The async admission queue for your key. New parent jobs wait here before their children begin processing.
Your synchronous concurrency budget — the number of
?mode=sync (or Prefer: wait) captures that can run at the same time.Every child currently active (queued or processing) for your key.
Pace submissions to avoid 429s
Every429 your key can receive maps to a field in this snapshot, so you can preflight against it:
| You want to avoid | Watch | Headroom formula |
|---|---|---|
QUEUE_CAPACITY_EXCEEDED | admissionQueue | capacity - depth |
CONCURRENCY_LIMIT_EXCEEDED | syncConcurrency | limit - running |
RATE_LIMIT_EXCEEDED | request rate (see X-RateLimit-* headers) | — |
Read the snapshot before a batch
Poll
GET /v1/async/status right before submitting a large set of captures.Compute your headroom
For async work, keep submissions under
admissionQueue.capacity - admissionQueue.depth. For sync work, keep concurrent calls under syncConcurrency.limit - syncConcurrency.running.Related
Concurrency & limits
How the rate limit, sync concurrency budget, and admission queue fit together — and how to back off cleanly.
Asynchronous captures
Submit a parent job, fan out across surfaces and regions, and poll children as they complete.