Asset Job Events
One event, sent when an asset job ends.
ASSET_JOB_FINALIZED
Triggered once per job, when it reaches COMPLETED or FAILED — whichever it ends with.
Callback only
Sent only to the callback_url given when the job was started (POST /images/remove-background, POST /images/text-to-image, POST /images/upscale). There is no dashboard subscription for this event, and a job started without a callback_url sends nothing — poll it instead.
Delivery follows the usual rules: signed when the workspace has a signing secret, acknowledged with 200/201 within 15 seconds, and retried on the 15 s ladder. Being a callback_url, there is no subscription to deactivate — a delivery that exhausts its retries is lost, and the job can still be polled.
ASSET_JOB_FINALIZED payload example
{
"event_type": "ASSET_JOB_FINALIZED",
"job_id": "8f0c2a4e-4869-11f0-96f2-0a00d9eb8f78",
"operation": "images_remove_background",
"status": "COMPLETED",
"outputs": [
{ "type": "image", "url": "https://production-banners.s3.eu-west-1.amazonaws.com/tmp_ai/d3b07384-d113-4ec6-a3b5-2f7c6e1a9b10/8f0c2a4e-4869-11f0-96f2-0a00d9eb8f78.webp", "mime_type": "image/webp" }
],
"credits": { "generation_credits": 0, "ai_credits": 3 },
"error": null,
"created_at": "2026-09-21T14:13:20Z",
"finalized_at": "2026-09-21T14:13:27Z"
}ASSET_JOB_FINALIZED payload fields
The payload is the job exactly as GET /asset-jobs/{jobId} returns it, plus event_type.
| Field | Type | Description |
|---|---|---|
event_type | String | Always "ASSET_JOB_FINALIZED". |
job_id | UUID | The job_id returned when the job was started. |
operation | string | images_remove_background, images_text_to_image, images_upscale. Not a closed list. |
status | string | COMPLETED or FAILED — never anything else in this event. |
outputs | array | The files the job produced, each { "type", "url", "mime_type" } — see Outputs. Each url is valid 7 days. Empty on a failed job. |
credits | object | What the job spent: generation_credits and ai_credits, integers, the same names as GET /credits. 0 and 0 on a failed job. |
error.code / error.message | string | Why the job failed — codes. error is null on a completed job. |
created_at / finalized_at | ISO 8601 (UTC) | When the job started and ended. |
Related
- Asset jobs — the jobs that trigger this event
- Webhooks Overview — delivery, retries and signing
- Signature verification — verify the payload came from Abyssale
