Skip to main content
WEBHOOK

Headers

X-Hedra-Webhook-Id
string
required

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

X-Hedra-Webhook-Timestamp
string
required

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

X-Hedra-Webhook-Event
string
required

The event this delivery announces. Signed.

Allowed value: "job.failed"
X-Hedra-Webhook-Attempt
integer
required

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

Required range: x >= 1
X-Hedra-Webhook-Redelivery
enum<string>
required

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

Available options:
true,
false
X-Hedra-Webhook-Signature
string
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.

Body

application/json

Body of a webhook delivery: the GET /jobs/{job_id} result envelope without its poll-only fields (logs, cost, currency) — poll the job to read those.

job_id
string
required
model
string
required
status
enum<string>
required

The four states a job can be in.

Available options:
IN_QUEUE,
IN_PROGRESS,
COMPLETED,
FAILED
quality
string | null

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

prompt
string | null

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.

outputs
OutputItem · object[]
metrics
Metrics · object | null

Timing for this job; present on completed jobs only.

error
ErrorEnvelope · object | null

Response

2XX

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