Skip to main content

Get bulk job status

Inspect a native bulk-job executor receipt. Research Table column progress is owned by operation runs.

GET/api/bulk-jobs/{job_id}
Scope jobs:readUpdated September 27, 2026

This page documents the canonical HTTP contract. Switch to the CLI example when you want the operator workflow.

Authentication and visibility use the same user/org/runtime-owner filters as the list endpoint. The get handler first attests the linked operation run; missing linkage returns 409, and an absent or inaccessible operation/job record returns 404. For Research Table column runs, poll GET /api/operation-runs/{operation_run_id} instead. This endpoint is a native executor/debugging view and remains canonical only for domains that explicitly own bulk jobs. The returned status is the persisted executor status, except queue-supervised jobs with no provider start or processed rows can be presented as waiting_for_workers. The route does not define a closed status enum or a cancellation action.

Use this endpoint as the source of truth only for the native bulk-job domains described above. A local client timeout while waiting does not cancel backend processing. Retry the same job_id after a transient read failure; do not start duplicate work just to recover status.

The response includes recorded billing metadata and estimates when present. Reading status does not incur the job's provider charges; values do not define a fixed rate for other jobs.

If you do not have a job ID, call List bulk jobs first using table_id + column_id.

Path parameters

  • job_idrequired

    string

    Native executor job ID returned alongside operationRunId when this run uses a bulk executor.

Errors

StatusMeaning
401Invalid API key or missing auth.
403Missing jobs:read scope.
404Operation run or bulk job not found within caller scope.
409Bulk job has no attested operation_run_id.

Docs