The Calls API is the core of the Voice API: POST/v1/calls places a call, GET/v1/calls/{CallSid} reads it, and the other endpoints list calls, show a call's event timeline, hang up a live call and manage recordings. All endpoints take JSON, return JSON wrapped in data, and use the same authentication.
Endpoints#
| Method | Path | What it does |
|---|---|---|
| POST | /v1/calls |
Place an outbound call. See Make a Call |
| GET | /v1/calls |
List calls, newest first |
| GET | /v1/calls/summary |
Count, total price and total duration for the same filters as the list |
| GET | /v1/calls/{CallSid} |
Read one call |
| POST | /v1/calls/{CallSid} |
End a live call. See Update or End a Call |
| DELETE | /v1/calls/{CallSid} |
Hang up a live call |
| GET | /v1/calls/{CallSid}/events |
Event timeline. See Call Events and Outcomes |
| GET | /v1/calls/{CallSid}/recordings |
Recordings of this call |
| POST | /v1/calls/{CallSid}/recordings/start |
Start recording a live call |
| GET | /v1/recordings |
List recordings. See Recordings and Transcriptions |
Twilio-shaped aliases such as /v1/Accounts/{AccountSid}/Calls map to the same handlers. See Migrate from Twilio.
The call object#
{
"call_sid": "CA_6f1c2d3e-0000-4000-8000-000000000000",
"sid": "CA_6f1c2d3e-0000-4000-8000-000000000000",
"account_sid": "2b7e0a1c-0000-4000-8000-000000000000",
"from": "+9180XXXXXXXX",
"to": "+9198XXXXXXXX",
"direction": "outbound-api",
"status": "completed",
"answered_at": "2026-10-28T09:30:12Z",
"ended_at": "2026-10-28T09:31:02Z",
"duration": 50,
"price": { "amount": 0.5, "currency": "INR" },
"hangup_cause": "completed",
"sip_response_code": 200,
"call_outcome": "answered",
"custom_parameters": { "order_id": "ORD-1042" },
"created_at": "2026-10-28T09:30:00Z"
}
| Field | Description |
|---|---|
call_sid / sid |
The call ID, CA_ plus a UUID. sid is the same value, for code written against Twilio |
direction |
outbound-api (placed with this API), inbound, outbound-dial (a dial leg) or outbound-trunk (placed through your SIP trunk) |
status |
queued, initiated, ringing, in-progress, completed, busy, failed, no-answer, canceled |
duration |
Answered seconds, after the call ends |
price |
Amount charged and currency, after the call ends |
hangup_cause |
Why the call ended. See Call Events and Outcomes |
sip_response_code |
Final SIP code, for example 200, 486, 480 |
call_outcome |
answered, callee, unreachable, invalid_number, network, account or platform |
answered_by |
human, machine or unknown when answering-machine detection ran |
caller_name |
Display name sent with the call, if any |
parent_call_sid |
Set on a child leg created by dial |
custom_parameters |
Your metadata from the request |
recording |
Recording details when one exists |
Fields that do not apply yet (for example ended_at on a ringing call) are left out.
Listing calls#
| Query parameter | Description |
|---|---|
status |
Filter by status |
direction |
Filter by direction |
from, to |
Filter by number (E.164) |
start_date, end_date |
RFC 3339 timestamps, for example 2026-10-01T00:00:00Z |
page, per_page |
Pagination. per_page defaults to 20 |
The response meta carries total, page, per_page and total_pages.