Calls
Your calls, as they were scored. The data is yours on every plan: lengths, numbers, scores and reasons. Never words, because we never hold any.
List calls
Newest first, up to 200 at a time. To page, send the last row's started_at as before and its call_id as before_id; the pair is needed because imported calls often share a start second.
Query parameters
- numberstring
- Only calls on this protected number.
- callerstring
- Only calls with this other party.
- prefixstring
- Only callers starting with this, e.g.
+1512555. Ignored whencalleris set. - direction"inbound" | "outbound"
- sincestring
- Calls started at or after this time.
- beforestring
- Calls started before this time. The paging cursor.
- before_idstring
- With
before: the call_id of the last row seen, to break ties. - limitintegerdefault 50
- At most 200.
Response
- callsobject[]
- One object per call; the fields are below.
A call
| Field | Type | Meaning |
|---|---|---|
call_id | string | Your id for the call. |
number | string | Your protected number. |
caller | string | The other party. On an outbound call, who was dialled. |
direction | "inbound" | "outbound" | |
source | string | Where it came from: api, twilio, vapi, retell:import… |
started_at / ended_at | string | null | ISO 8601. ended_at is null while the call is open. |
end_reason | string | null | As reported at the end, or expired when no end ever arrived. |
duration_s | integer | null | |
score | number | null | The ring-time score, 0 to 1. |
action | string | null | allow, review or reject. |
reasons | string[] | Ring-time reasons and any live_* flags. |
spam_score | integer | null | 0 to 100, once the call has ended or turns have arrived. |
cost | number | null | USD. |
attestation | string | null | STIR/SHAKEN, when the carrier said. |
Export as CSV
The same calls as a spreadsheet, streamed, so a long history never has to fit in memory. Takes the filters of the list, without paging; until closes the window. The ring-time score is written as a percentage so it reads beside the spam score.
Query parameters
- numberstring
- callerstring
- direction"inbound" | "outbound"
- sincestring
- Inclusive.
- untilstring
- Exclusive.
The response carries Content-Disposition: attachment; filename="murusai-calls-2026-09-21.csv", so a browser saves it. RFC 4180: cells with commas or quotes are quoted, quotes doubled.
One call, live
Everything known about one call: the record, the live monitor's counters and flags, and the turn timeline: each turn's role, when it started and ended, how long it ran, how much was said, and whether it was cut off. This is what the dashboard draws.
Path parameters
- call_idstringrequired
- Your id for the call, URL-encoded.
Response
- callobject
- The call, as in the list, plus
cost_breakdown,attrs,caller_region,caller_zip,provider_call_id. - liveobject | null
- Counters and flags:
user_turns,agent_turns,interruptions,user_ms,agent_ms,user_chars,agent_chars,longest_user_ms,longest_user_chars,flags,score.nullwhen no turns ever arrived. - turnsobject[]
- In order. Each:
role,idx,started_at,ended_at,duration_ms,chars,words,interrupted.
Errors
- unknown_call404
- No call with that id on your account.