{
"id": "<string>",
"type": "job.canceled",
"created_at": "2023-11-07T05:31:56Z",
"data": {
"id": "<string>",
"type": "<string>",
"model": "<string>",
"operation": "<string>",
"input": {},
"outputs": [
{
"id": "<string>",
"type": "<string>",
"mime_type": "<string>",
"file_name": "<string>",
"size_bytes": 123,
"url": "<string>",
"url_expires_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"object": "file",
"width": 123,
"height": 123,
"duration_seconds": 123,
"formats": [
{
"format": "<string>",
"id": "<string>",
"url": "<string>",
"url_expires_at": "2023-11-07T05:31:56Z"
}
],
"preview_url": "<string>",
"role": "<string>",
"metadata": {}
}
],
"credits": {
"estimated": 123,
"held": 123,
"charged": 123,
"released": 123,
"charge_ref": "<string>"
},
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"metadata": {},
"created_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"poll_after_ms": 123,
"links": {
"self": "<string>",
"cancel": "<string>"
},
"object": "job",
"cast_usage": {}
}
}Jobcanceled
A job was canceled (error.code queue_timeout when it waited in the queue too long).
Sent to the job’s webhook_url once, when the job reaches this terminal status (not when its charge settles: data.credits.state may still be pending). The event is thin: GET /v1/jobs/{id} is authoritative, and the output links in data expire one hour after the event is rendered. Signed per Standard Webhooks with the key’s whsec_ secret (shown once at key creation). Any 2xx response marks it delivered; anything else (or no answer) is retried with backoff for 24 hours, same webhook-id, fresh webhook-timestamp. Revoking the key stops its undelivered events.
{
"id": "<string>",
"type": "job.canceled",
"created_at": "2023-11-07T05:31:56Z",
"data": {
"id": "<string>",
"type": "<string>",
"model": "<string>",
"operation": "<string>",
"input": {},
"outputs": [
{
"id": "<string>",
"type": "<string>",
"mime_type": "<string>",
"file_name": "<string>",
"size_bytes": 123,
"url": "<string>",
"url_expires_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"object": "file",
"width": 123,
"height": 123,
"duration_seconds": 123,
"formats": [
{
"format": "<string>",
"id": "<string>",
"url": "<string>",
"url_expires_at": "2023-11-07T05:31:56Z"
}
],
"preview_url": "<string>",
"role": "<string>",
"metadata": {}
}
],
"credits": {
"estimated": 123,
"held": 123,
"charged": 123,
"released": 123,
"charge_ref": "<string>"
},
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"metadata": {},
"created_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"poll_after_ms": 123,
"links": {
"self": "<string>",
"cancel": "<string>"
},
"object": "job",
"cast_usage": {}
}
}Headers
The event's id (evt_…, the body's id), stable across retries: deduplicate on it.
Unix seconds when this attempt was sent. Reject old timestamps to stop replays.
v1,<base64 HMAC-SHA256 of "{webhook-id}.{webhook-timestamp}.{raw body}"> keyed with the base64-decoded part of the key's whsec_ secret. May hold several space-separated signatures; accept the request if any one matches.
Body
Response
Delivered.