Overview
AudioPod processing is asynchronous: you create a job, it runs, and it finishes a few seconds to a few minutes later. Instead of polling the job status, register a webhook and AudioPod willPOST a signed event to your server the moment the job completes or fails.
Every delivery is HMAC-signed, retried with exponential backoff, and carries a unique event id so you can safely deduplicate.
Events
Register an endpoint
Create an endpoint with the URL to call and the events you want. The response includes a signing secret — it is shown once, so store it now.Your endpoint must use HTTPS and must resolve to a public address. AudioPod refuses URLs that resolve to private, loopback, or internal addresses (SSRF protection), re-checked at delivery time.
Event payload
The body is JSON. Every event carriesevent_id and event_type; job events add the job context.
job.failed event adds error_message and failure_reason. The job_type field tells you which tool produced the job. Completion webhooks now fire across the audio job types — for example transcription, text_to_speech, voice_cloning, voice_conversion, music_generation, stem_extraction, speaker_diarization, denoise, reader, podcast, media_converter, audiobook, and export_acx.
HTTP headers
Verify the signature
The signature isHMAC-SHA256(secret, "{timestamp}.{raw_request_body}"), hex-encoded. Recompute it over the raw body bytes you received and the X-AudioPod-Timestamp header, then compare in constant time. Reject anything that doesn’t match.
Respond fast, deduplicate, and retry-proof
- Return
2xxquickly. Acknowledge within 10 seconds, then do slow work asynchronously. Any non-2xx(or a timeout) is treated as a failed attempt. - Deduplicate on
X-AudioPod-Event-Id. Retries reuse the same event id, so store processed ids and ignore repeats. - Retries: failed deliveries retry with exponential backoff — 1m, 2m, 4m, … capped at 1h — up to 5 attempts. After that the delivery is dead-lettered and can be replayed from the delivery log.
Manage endpoints
Test your integration
webhook.test event so you can confirm your signature verification and 2xx response before wiring it to real jobs. Check GET …/deliveries to see the recorded status and response code.