Job Completed With Errors

Sent when an indexing job finishes and at least one of its files failed. The job's final status is completed_with_errors.

The files that succeeded are searchable, and data.files.failed counts the files that did not. data.error_code is usually null. It is embedding_stalled when media embedding stopped making progress before every file finished. The event does not name the failed files. Fetch the job at data.url to see which files failed and why.

Each indexing job sends exactly one event, when it reaches its final status. See Webhooks to add an endpoint and verify signatures.

postWebhookwebhookEvents_jobCompletedWithErrors

Headers

webhook-idstring required

A unique id for this message. It stays the same on every retry and resend. Deduplicate on it.

webhook-timestampstring required

When this attempt was sent, in Unix seconds.

webhook-signaturestring required

One or more space-separated signatures, each v1, followed by a base64 HMAC-SHA256 of {webhook-id}.{webhook-timestamp}.{body} made with the endpoint's signing secret.

Payload

idstring required

evt_ followed by the job id. The same for every delivery of this job's event.

type'job.completed' | 'job.completed_with_errors' | 'job.failed' | 'job.timed_out' | 'job.cancelled' required

The event name.

timestampstring date-time required

When the job finished, in ISO 8601 UTC.

Response

Webhook received successfully

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.