x-beatapi-event: task.succeeded or task.failedx-beatapi-timestamp: Unix timestamp in secondsx-beatapi-signature: hex HMAC-SHA256 signaturehmac_sha256(secret, timestamp + "." + raw_request_body).{
"id": "evt_123",
"event": "task.succeeded",
"created_at": 1782210300,
"data": {
"id": "task_8K2qA",
"object": "task",
"workflow": "music-video",
"status": "succeeded",
"output": {
"media": [
{
"type": "video",
"url": "https://media.beatapi.io/outputs/task_8K2qA/0.mp4",
"mime_type": "video/mp4"
}
]
}
}
}GET /v1/tasks/{task_id} remains the source of truth.curl --location 'https://api.beatapi.io/v1/webhooks' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"url": "https://example.com/beatapi-webhook",
"events": [
"task.succeeded",
"task.failed"
]
}'{
"data": {
"id": "wh_9aBcD",
"object": "webhook_endpoint",
"url": "https://example.com/beatapi-webhook",
"description": "Production webhook",
"events": [
"task.succeeded",
"task.failed"
],
"status": "active",
"secret": "whsec_example_store_this_once",
"created_at": 1782210000,
"updated_at": 1782210000
}
}