Webhooks

Webhook: job.failed

POSTed to the job's registered webhook URL when the job fails; the payload's error carries the same envelope the poll endpoint returns. Delivery is at-least-once: dedupe on X-Hedra-Webhook-Id and verify X-Hedra-Webhook-Signature before acting.

postWebhookjob.failed

Headers

X-Hedra-Webhook-Idstring required

Deduplication id: the job's own id (job_<uuid>), byte-identical across every retry and every replay. Signed.

X-Hedra-Webhook-Timestampstring required

Unix epoch seconds the delivery was signed at; reject it when more than 5 minutes old. Signed.

X-Hedra-Webhook-Event'job.failed' required

The event this delivery announces. Signed.

X-Hedra-Webhook-Attemptinteger required

1-based attempt number within the current delivery cycle. Informational and outside the signature; do not branch on it.

X-Hedra-Webhook-Redelivery'true' | 'false' required

true when an operator asked for this event to be sent again — process it even if its id was already recorded. Signed.

X-Hedra-Webhook-Signaturestring required

Hex-encoded ed25519 signature over the canonical string documented on the Webhooks tag; verify against the key from GET /webhooks/public-key before acting on the request.

Payload

job_idstring required

The job this envelope describes.

modelstring required

The resolved model id this job ran on.

qualitystring nullable

The quality level this job ran at; present only for models that offer quality levels.

status'IN_QUEUE' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED' required

The four states a job can be in.

promptstring nullable

The prompt this job ran with. When enhance_prompt was set, this is the rewritten prompt the model received rather than the one submitted. Absent on models that take no prompt.

Response

Acknowledged; any 2xx stops the retry ladder. Other responses are retried per the Webhooks tag.

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.