Skip to main content

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

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 /waves/v1/pulse/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). Pulse 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 5xx to trigger Waves’ retry logic; use idempotent handlers. Waves does 10 retries before giving up on delivery.
  • Rate limits: add lightweight rate limiting or queueing to absorb bursts.
  • Local development: tunnel your local server with ngrok http 3000 to test callbacks.

Testing checklist

  1. Trigger a transcription with webhook_url pointing to your dev endpoint.
  2. Inspect the webhook payload, store the request_id, and ensure metadata flows through.
  3. Simulate failures by returning 500 to confirm retries work as expected.