Events · Jobs and exports
job.completed
Job completed
A background job finished successfully: indexing, an archive upload, an export.
- Object type
- job
- Delivered to
- Endpoints with the admin role
Payload
idstringrequiredEvent ID (
evt_…), also sent as thewebhook-idheader. Use it to drop duplicate deliveries.typestringrequiredAllowed values:
job.completedcreated_atstring (date-time)requiredWhen the change happened (UTC).
org_idintegerrequiredapi_versionstringrequiredContract version of the
dataschema.sequenceintegerDelivery sequence number within the endpoint (absent for a test event).
payloadstringrequiredthinmeans nodata: read the object through the API.Allowed values:
fullthindataobjectFields
testbooleanrequiredA test event sent by
POST /v1/webhooks/{webhook_id}/test.
Example delivery
{
"id": "evt_0123456789abcdef0123456789abcdef",
"type": "job.completed",
"created_at": "2026-10-24T10:00:03Z",
"org_id": 1,
"api_version": "1.62.0",
"sequence": 1042,
"object": {
"type": "job",
"id": "4410"
},
"payload": "full",
"data": {
"job": {
"id": 4410,
"kind": "index",
"status": "done",
"card_id": "c_9f2e41",
"collection": "support",
"batch_id": null,
"title": "Refund policy.pdf",
"finished_at": "2026-10-24T10:00:03Z"
}
},
"test": false
}Receiving events
Each delivery is a POST request with this JSON body to your endpoint. Verify the webhook-signature header (Standard Webhooks) before you trust the body, answer with a 2xx status within a few seconds, and do the work afterwards. Deliveries to one endpoint keep the order of events; a failed delivery is retried with growing pauses.
New event types and new fields can appear at any time: skip the types and fields you do not know.