GuidesStart here

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.

The shape
https://api.murusai.com/v1/{platform}/{token}

platform: vapi · retell · elevenlabs · synthflow · bland

A 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.

Keep your API key connected as well. Live events are the fast path; the minute-by-minute import fills in anything a webhook missed.

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:

  1. In Vapi, open your assistant, Advanced, Server URL, and paste your Vapi URL. Leave the server URL secret empty.
  2. Under server messages, turn on status-update, speech-update, transcript, user-interrupted and end-of-call-report.
  3. 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.

Only the post-call webhook. Their conversation-initiation webhook expects your agent's own variables back in the reply, so pointing it at us would break your calls.

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.