Retrieve a job
GET/api/v1/jobs/{id}
GET /jobs/{id}
curl -X GET 'https://www.unitpost.com/api/v1/jobs/123' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'User-Agent: my-app/1.0'Response · 200
{
"object": "job",
"id": "id_123",
"kind": "string",
"status": "QUEUED",
"total": 1,
"processed": 0,
"failed": 0,
"error": "string",
"created_at": "2026-01-01T00:00:00.000Z",
"completed_at": "2026-01-01T00:00:00.000Z"
}Retrieve a background job by id to follow its progress. An operation that touches more contacts than fits in one request (for example Delete a custom contact field or Rename a custom field's key above 5,000 holders, or a campaign validation over more than 5,000 recipients) answers 202 with a job. Poll this until status is COMPLETED, FAILED or CANCELED; processed of total is the progress. A failed job keeps the work it finished; retry it from the dashboard (Settings → Jobs). Reading a job takes the read capability of the resource it changes (contacts:read for a custom-field job, campaigns:read for a campaign check). Requires the contacts:read capability.
Parameters1 field
| Field | Type | Description |
|---|---|---|
idrequired | string · path | — |
Response · 200 fields10 fields
| Field | Type | Description |
|---|---|---|
objectrequired | string | — |
idrequired | string | — |
kindrequired | string | — |
statusrequired | enumQUEUED | RUNNING | COMPLETED | FAILED | CANCELED | — |
totalrequired | integer | null | — |
processedrequired | integer | — |
failedrequired | integer | — |
errorrequired | string | null | — |
created_atrequired | string | — |
completed_atrequired | string | null | — |
200401403404