Get bulk import job status and results
Returns the status and per-contact outcomes of a bulk import job
created by POST /v1/contacts/bulk. Poll until status is
completed or failed.
Per-contact outcomes are keyset-paginated by row index via the
cursor query param. Use the next_cursor from results to fetch
the next page; when next_cursor is null there are no more items.
Items are available from the time the job enters running status.
Path parameters
job_id string<uuid> required Job ID returned by POST /v1/contacts/bulk.
Query parameters
cursor string optional Opaque cursor returned from the previous page.
Responses
Errors follow the RFC 7807 problem format — see the error reference.
job_id string<uuid> required status string required Job lifecycle state — pending, running, completed, or failed.
total integer required processed integer required succeeded integer required failed integer required ses_pending integer | null optional How many of THIS job's contacts have not yet been mirrored to SES.
null means "not computable for this job", never zero: it is returned
when the job's address set is not recoverable — a CSV import (the file
is transient) or a bulk update that selected contacts by filter rather
than by an explicit list. Use org_ses_pending in that case.
org_ses_pending integer required The organization's entire pending mirror queue, which this job's contacts are part of. Always present.
results object required One keyset page of per-contact outcomes.
Fields of results:
data array<object> required Each entry in data:
index integer required Zero-based position of the contact in the submitted contacts array.
email string<email> required outcome string enum required One of: created, updated, skipped, failed
reason string optional Populated for skipped and failed items only.
next_cursor string | null required Opaque cursor for the next page, or null when there are no more items.
code is internal_error. The
request_id field can be quoted to SendOps support to investigate.
application/problem+json