Task finished (completed or failed)

Sent once per task to the webhook_url given at submission, when the task reaches completed or failed. The body is the default GET /tasks/{id} response (no billing, no webhook block). Reply with any 2xx within 10 seconds. Non-2xx, timeout or connection failure triggers up to two retries (~40 s and ~5 min after the task finished). Delivery is at-least-once: deduplicate on the body id. Redirects are not followed; the response body is never read. If all attempts fail the result is NOT lost: poll GET /tasks/{id} — the webhook is the fast path, GET is the guaranteed path.

postWebhooktaskFinalized

Headers

User-Agent'reAPI-Webhook/1' required

Payload

idstring required
modelstring required
status'completed' | 'failed' required
modal_expires_atinteger

Midjourney only: Unix deadline for submitting modal parameters to the same task.

created_atinteger required
outputobject nullable
errorobject nullable

Response

Acknowledged. Any other status counts as a failed attempt.

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.