Webhooks & Events
Vomyra pushes call events to your endpoint as they happen � no polling required. This page is the canonical reference for every event type, the payload structure, and how to verify request signatures.
Setup
Event types
All events are sent as a JSON POST body with a top-level event field and a data object.
| Event | Description | Key fields |
|---|---|---|
call.started | Fired when a call connects and Myra begins speaking. Inbound and outbound. | call_idassistant_idphone_number_iddirectioncallerstarted_at |
call.ended | Fired when any call terminates. Contains the ended_reason and a summary of the call. | call_idstatusended_reasonduration_secondscosttranscript_urlrecording_url |
call.tool_invoked | Fired each time Myra invokes a tool during a call. Useful for auditing and debugging. | call_idtool_nametool_idparametersinvoked_at |
call.transferred | Fired when a call is forwarded to a human agent or another number via the transfer tool. | call_idtransfer_destinationtransferred_atreason |
assistant.updated | Fired when an assistant's configuration is changed via the API or dashboard. | assistant_idupdated_bychanged_fieldsupdated_at |
Example payload � call.ended
Verifying signatures
Vomyra adds an X-Vomyra-Signature header containing a hex-encoded HMAC-SHA256 of the raw request body, signed with your webhook secret.
Best practices
Reply immediately, process later
Return 200 within 2 seconds. Push the event to a queue and process it asynchronously. If Vomyra does not receive a 2xx, it retries the event.
Handle retries idempotently
Network failures cause duplicate deliveries. Key your handler off call_id or a combination of event + call_id to avoid double-processing.
Test locally with a tunnel
Use ngrok or Cloudflare Tunnel to expose your local server during development. Register the tunnel URL in the dashboard.
Log everything while building
Log the raw request headers and body while developing. You will need this when a payload shape differs from what you expected.
Use separate endpoints per environment
Register a different webhook URL for staging and production. Do not send production events to a development endpoint.
Related pages
Call Lifecycle
All call statuses and ended_reason codes � the values you'll filter on in webhook handlers.
API Reference
REST endpoints for retrieving call details, transcripts, and recordings.
Authentication
API key management and webhook secret rotation.
Google Sheets
No-code alternative for logging call outcomes without a webhook endpoint.