Webhooks for pre-recorded uploads
Use webhooks to process Lightning 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
1
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.2
Attach metadata
Include
webhook_url and optional webhook_extra query parameters when calling POST /api/v1/lightning/get_text. webhook_extra accepts comma-separated key:value pairs that return verbatim in the webhook payload for correlation.3
Submit audio
Make your transcription request as usual (raw bytes or audio URL). Lightning STT queues the job, streams to the model, and emits the webhook once
status=success (or failed).4
Handle the callback
Parse the JSON payload, verify any signatures you added, and store the transcript, timestamps, and metadata in your system of record. Respond with
2xx to acknowledge receipt; send 5xx to trigger a retry.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.

