Webhooks
Webhooks for pre-recorded uploads
Use webhooks to process Pulse STT jobs asynchronously—ideal for long recordings or high-volume backfills. When a transcription finishes, Waves sends a POST request to your callback with the final payload.
Steps
Create a webhook endpoint
Route an HTTPS URL (e.g., https://api.example.com/webhooks/stt) that accepts POST requests. Implement signature checks or HMAC validation inside this handler to guard against spoofed traffic.
Attach metadata
Include webhook_url and optional webhook_extra query parameters when calling POST /api/v1/pulse/get_text. webhook_extra accepts comma-separated key:value pairs that return verbatim in the webhook payload for correlation.
Sample request
Sample webhook payload
Implementation tips
- Security: terminate TLS, validate signatures/HMACs, and reject unsigned requests.
- Retries: respond with
5xxto trigger Waves’ retry logic; use idempotent handlers. Waves does10 retriesbefore giving up on delivery. - Rate limits: add lightweight rate limiting or queueing to absorb bursts.
- Local development: tunnel your local server with
ngrok http 3000to test callbacks.
Testing checklist
- Trigger a transcription with
webhook_urlpointing to your dev endpoint. - Inspect the webhook payload, store the
request_id, and ensure metadata flows through. - Simulate failures by returning
500to confirm retries work as expected.

