Live events
An API key lets us read your calls every minute. Live events have your platform tell us as it happens: calls scored the moment they ring or end, and on Vapi and Retell, who is talking while the call is still going.
One URL per platform
Each platform gets its own URL, with its own token in the path. Find them in the dashboard under Settings, Live events.
https://api.murusai.com/v1/{platform}/{token}
platform: vapi · retell · elevenlabs · synthflow · blandA token can only send events for its own platform. It reads nothing and changes nothing else, so leaving it in a platform's settings is safe. Replace one any time from the same page: the old URL stops working at once and the others are untouched.
Vapi: server URL
Onboarding can do this for you: after you pick your numbers, "Set it up for me" points each assistant that has no server URL of its own at us. By hand:
- In Vapi, open your assistant, Advanced, Server URL, and paste your Vapi URL. Leave the server URL secret empty.
- Under server messages, turn on
status-update,speech-update,transcript,user-interruptedandend-of-call-report. - Make a call. The stream goes live on the first message.
Already handling Vapi's server messages yourself? Forward each one to your Vapi URL, body unchanged, instead of pointing Vapi at us.
Retell: webhook URL
In the Retell dashboard, Webhooks: paste your Retell URL as the account webhook, or on one agent as its webhook. call_started, call_ended and call_analyzed land here; the analysed one brings the cost and who spoke when. With Retell connected under Connections, every delivery's signature is checked against your key.
ElevenLabs: post-call webhook
In ElevenLabs, Settings, Webhooks: add your ElevenLabs URL as a post-call webhook, and copy the signing secret it shows once. Paste that secret into your ElevenLabs connection so every delivery is checked. The whole call lands the moment it ends.
Synthflow: inbound hook
On your Synthflow agent, set your Synthflow URL as inbound_call_webhook_url, which fires about ten seconds before a call connects, and as external_webhook_url for the finished call. On Guard, a caller we would reject is declined at the inbound hook, before your agent answers. Keep your Synthflow key connected: their post-call payload has no numbers, so we read the call back from them.
Bland: post-call webhook
In Bland, Inbound Phone Numbers, your number, Advanced: paste your Bland URL as the webhook. For outbound calls, send it as each call's webhook. To have deliveries checked, create a webhook signing secret under Bland's Settings, Keys, and paste it into your Bland connection. Calls are scored when they end.
What we keep
Numbers, times, what the call cost, and when each side spoke. Transcripts are measured and dropped on arrival: how long each turn ran and how many words it had, never the words. See how scoring works for what the timings feed, and events to send the same thing from your own server.