# Callback and Webhook

Add an HTTPS `callback_url` to the create request:

```json
{
  "model": "seedance-2.5-text-to-video",
  "prompt": "A five-second studio product shot",
  "duration": 5,
  "callback_url": "https://webhook.site/replace-with-endpoint-id"
}
```

EvoLink documents these callback rules:

- Sent after a task is completed, failed, or cancelled and billing confirmation finishes
- HTTPS only
- Private IP targets are rejected
- Maximum URL length is 2048 characters
- Request timeout is 10 seconds
- Failed delivery is retried after 1, 2, and 4 seconds
- A 2xx response acknowledges success
- The body matches the task query response shape

Return a 2xx response quickly and process the event asynchronously. Make handlers idempotent because retries can deliver the same task more than once. Persist the task ID and independently query `GET /v1/tasks/{task_id}` when delivery state is uncertain
