Webhooks
Receive job results without polling.
Pass webhookUrl when submitting a job and we'll POST a signed payload to that URL when the job ends.
POST /v1/jobs
{
"tool": "video-convert",
"input": { "url": "https://..." },
"options": { "format": "mp4" },
"webhookUrl": "https://your-app.com/hooks/utified"
}Delivery payload
{
"event": "job.completed",
"id": "job_abc123",
"tool": "video-convert",
"state": "completed",
"result": { "url": "https://cdn.utified.com/...mp4" },
"error": null,
"finishedAt": "2026-05-08T10:00:00.000Z"
}Verifying signatures
Every delivery includes:
X-Utified-Event- e.g.job.completedorjob.failedX-Utified-Signature-t=<ms>,v1=<hmac>
Compute HMAC-SHA256(secret, `$`$${t}.$${rawBody}$``) with the webhook secret displayed for your key, and compare against v1 in constant time. Reject deliveries older than 5 minutes.
Retries
Failed deliveries (non-2xx, network error, >10s timeout) are retried up to 6 times with exponential backoff starting at 30 seconds. Return any 2xx promptly to ack.