Skip to main content
All operations that take more than a moment return a Job resource. Every job-creating route accepts ?wait_seconds= to optionally block for a result.

Job states

Every job flows through these states:

Sync vs async via wait_seconds

The ?wait_seconds= query parameter controls blocking on each job-creating route:
Response codes:
  • 200 — Job reached a terminal state within wait_seconds; full result is inline.
  • 202 — Timeout before completion; poll GET /v1/jobs/{job_id}.
wait_seconds max is 300. It is always a query parameter, never a JSON body field.

Polling

Succeeded:
Failed:

Streaming job events

Subscribe to real-time status transitions instead of polling:
Returns text/event-stream (Server-Sent Events). Each event is a complete Job JSON object. The stream closes when the job reaches a terminal state.

Idempotency

Use the Idempotency-Key HTTP header to make job-creating requests replay-safe:
Behavior:
  • First call — Starts a new job.
  • Repeated calls with the same key — Returns the original job without starting a new one.
  • The key is scoped per API key.
Idempotency-Key is always an HTTP header, never a JSON body field. Use for:
  • Retrying after a network failure (the same job is returned)
  • CI/CD pipelines (re-running a step is safe)

Listing jobs

Returns a keyset-paginated page (newest first):
Pass ?cursor=<next_cursor> to retrieve the next page. Optional filters: ?status=succeeded, ?kind=parse.

Cancellation

  • Queued or running — Job is marked cancelled.
  • Already terminal — Idempotent; returns the existing terminal job.