---
title: "Task event webhook"
method: POST
path: "taskEvent"
---

# Task event webhook

`POST taskEvent` (webhook)

Dikirim ke `webhook_url` (per task, atau default project) pada setiap
perubahan status: `task.processing`, `task.succeeded`, `task.failed`,
`task.cancelled`.

- Signature: header `X-Run-Signature` berformat `t=<unix_ts>,v1=<hex>`
  — HMAC SHA-256 atas `"{t}.{raw_body}"` dengan signing secret project.
  Tolak bila selisih `t` dengan waktu sekarang melebihi toleransi
  (rekomendasi 5 menit).
- Balas HTTP 2xx untuk menandai sukses; selain itu dikirim ulang
  dengan exponential backoff.
- Delivery duplikat mungkin terjadi — gunakan `id` event untuk dedup.

## Payload

- WebhookEvent
  - `id` string, required
  - `type` 'task.processing' | 'task.succeeded' | 'task.failed' | 'task.cancelled', required
  - `created_at` string, date-time, required
  - `attempt` integer, required: Nomor attempt delivery, mulai dari 1.
  - `data` Task, required
    - `id` string, required
    - `status` 'queued' | 'processing' | 'succeeded' | 'failed' | 'cancelled', required
    - `model` string, required
    - `input` object
    - `price` object, required
      - `currency` 'IDR', required
      - `estimated` integer, required
      - `reserved` integer, required
      - `final` integer: Biaya final; hadir setelah task selesai. 0 bila gagal.
      - `pricing_version` string
    - `output` object: Hadir bila `status = succeeded`.
      - `urls` string[]
      - `expires_at` string, date-time: Output dihapus setelah 7 hari — salin ke storage sendiri.
    - `error` object: Hadir bila `status = failed`.
      - `code` 'invalid_request' | 'unauthorized' | 'forbidden' | 'not_found' | 'idempotency_conflict' | 'rate_limited' | 'insufficient_balance' | 'quote_expired' | 'model_not_found' | 'model_offline' | 'unsupported_parameter' | 'moderation_blocked' | 'upstream_error' | 'upstream_timeout' | 'task_not_cancellable' | 'internal_error': Kode error ternormalisasi — status internal upstream tidak pernah bocor.
      - `message` string
    - `webhook_url` string, uri
    - `metadata` object
    - `created_at` string, date-time, required
    - `started_at` string, date-time
    - `completed_at` string, date-time

## Acknowledgement `200`

Diterima client.

---

[API](https://skmtc.dev/getrun/apis/getrun-api.md) · [All operations](https://skmtc.dev/getrun/apis/getrun-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getrun/apis/getrun-api/revisions/2e80f8b28c48?raw)
