Webhooks

Push every event into your systems.

Praatbox fires HTTP POSTs at endpoints you configure for every meaningful event. Signed with HMAC-SHA256, retried with exponential backoff, idempotent by event ID.

Payload shape

POST /your/endpoint
content-type: application/json
x-praatbox-signature: sha256=...
x-praatbox-event: conversation.handoff

{
  "event": "conversation.handoff",
  "id": "evt_4f9c2a",
  "occurred_at": "2026-04-12T14:32:08Z",
  "data": {
    "conversation_id": "c_9a3f",
    "reason": "low_confidence",
    "transcript_url": "https://api.praatbox.com/v1/..."
  }
}

Events

Verifying signatures

Compute HMAC-SHA256 over the raw request body using your endpoint's signing secret. Compare in constant time against the x-praatbox-signature header.

Retries

We retry on any 5xx or timeout. Five attempts, exponential backoff up to 24 hours. After that the event is dead-lettered and visible in Settings → Webhooks → Failed deliveries — replay any event with one click.

Testing

Use the dashboard's "Send test event" button to fire a synthetic webhook at any endpoint. Or use the Praatbox CLI: praatbox webhooks tail streams every event to your terminal as JSON.