latestOpenAPI 3.1.0MIT2026-08-226224149.1 KB

613ceff68dc7

Get bulk request status

Poll the status of an asynchronous bulk request. Returns the bulk request payload plus paginated per-row results. Results grow as processing continues, so only non-pending items are included.

get/bulk_requests/{id}

Path parameters

idstring required

The bulk request ID returned from POST /records/bulk

Query parameters

limitinteger

Number of result items to return

offsetinteger

Pagination offset for result items

Response

Bulk request payload with paginated results

idinteger
status'pending' | 'processing' | 'completed' | 'failed' | 'cancelled'

pending = queued, processing = records being inserted, completed = all rows processed, failed = job errored, cancelled = cancellation honored on a heartbeat

sourcestring nullable

Origin of the request (e.g. bulk_api, csv, nacha)

total_itemsinteger
processed_itemsinteger
successful_itemsinteger
failed_itemsinteger
skipped_itemsinteger

Records skipped due to on_conflict: skip matching an existing external_id

progressinteger

processed_items / total_items as a percentage (0-100)

filenamestring nullable

Original filename for CSV/NACHA uploads. Null for API-submitted requests.

created_atstring date-time
started_atstring date-time nullable
completed_atstring date-time nullable
last_progress_atstring date-time nullable

Heartbeat timestamp from the worker; used to detect stuck jobs

cancellation_requested_atstring date-time nullable

Set by POST /bulk_requests/{id}/cancel; the worker exits at its next heartbeat

parsingboolean

True while a CSV/NACHA upload is still being parsed (before rows are enqueued)

stuckboolean

True if the request has been processing for more than 5 minutes without a heartbeat

error_messagestring nullable
error_detailsobject

Free-form structured error context (e.g. row indices, validation errors)

parent_bulk_request_idinteger nullable

If this request is a retry, the ID of the original (parent) bulk request

on_conflict'skip' | 'error'

Conflict policy applied when an external_id already exists in the stream

data_stream_idinteger nullable

Data stream the request targets, when applicable