VX Agents

API directory · Messaging & SMS

Twilio Voice Calls & Recordings

v1.0.0 · 13 endpoints · 0 connections · shared by vx.ai

Place, redirect and end phone calls through Twilio Programmable Voice, start or pause call recordings, and pull call logs, webhook events, recordings and conference participants afterwards. Outbound calls run from inline TwiML or your webhook URL.

Connect this API to an AI agent Browse all specs

What you can do with Twilio Voice Calls & Recordings via MCP

Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.

MethodPathOperationDescription
GET /2010-04-01/Accounts/{AccountSid}/Calls.json listCalls List calls, filtered by number, status or start time
POST /2010-04-01/Accounts/{AccountSid}/Calls.json createCall Place an outbound call that runs TwiML or a webhook URL
GET /2010-04-01/Accounts/{AccountSid}/Calls/{Sid}.json getCall Get one call's status, duration, price and numbers
POST /2010-04-01/Accounts/{AccountSid}/Calls/{Sid}.json updateCall Redirect a live call to new TwiML, or end it
GET /2010-04-01/Accounts/{AccountSid}/Calls/{CallSid}/Events.json listCallEvents List the webhook requests and responses for a call
POST /2010-04-01/Accounts/{AccountSid}/Calls/{CallSid}/Recordings.json startCallRecording Start recording a live call
GET /2010-04-01/Accounts/{AccountSid}/Calls/{CallSid}/Recordings.json listCallRecordings List the recordings of one call
POST /2010-04-01/Accounts/{AccountSid}/Calls/{CallSid}/Recordings/{Sid}.json updateCallRecording Pause, resume or stop a call recording
GET /2010-04-01/Accounts/{AccountSid}/Recordings.json listRecordings List recordings in the account by date or call
GET /2010-04-01/Accounts/{AccountSid}/Recordings/{Sid}.json getRecording Get a recording's details, duration and media link
GET /2010-04-01/Accounts/{AccountSid}/Conferences.json listConferences List conference calls by name, status or date
GET /2010-04-01/Accounts/{AccountSid}/Conferences/{Sid}.json getConference Get one conference's status and times
GET /2010-04-01/Accounts/{AccountSid}/Conferences/{ConferenceSid}/Participants.json listConferenceParticipants List who is in a conference (muted, on hold)

Authentication

twilioBasic

HTTP Basic

How to get a credential

  1. Sign in to the Twilio Console (a free trial works; trial accounts can only call verified numbers).
  2. Recommended: open Account → API keys & tokens, create a Standard API key, and use the key SID (SK...) as the username and its secret as the password.
  3. Or use your Account SID (AC...) as the username and the Auth Token as the password.
  4. Note your Account SID: every path needs it as AccountSid.

Permissions used

Standard API keys and the Auth Token can call every operation in this spec.

Area Operations
Calls listCalls, getCall, createCall, updateCall, listCallEvents
Recordings startCallRecording, updateCallRecording, listCallRecordings, listRecordings, getRecording
Conferences listConferences, getConference, listConferenceParticipants

Common errors

  • 401 Unauthorized (code 20003): wrong SID/secret pair, or the key belongs to another account.
  • 404 Not Found (code 20404): wrong AccountSid or resource SID.
  • 400 Bad Request: From is not a Twilio number you own, To is not E.164, or a trial account called an unverified number (code 21219).
  • 429 Too Many Requests (code 20429): too many concurrent requests; retry with backoff.

Store the pair as a VX Agents basic auth credential (username = SID, password = secret or Auth Token).

Usage guide

Setup

  • Credential: Twilio API key SID + secret (or Account SID + Auth Token) as basic auth.
  • Pin AccountSid (starts with AC) as a preset: every operation needs it in the path.
  • Pin your Twilio voice number as From for createCall if you always call from the same line.

Place and manage a call

  1. createCall with To and From in E.164 (+14155550123) and one of: Twiml (for example <Response><Say>Your table is ready.</Say></Response>), Url (your TwiML webhook) or ApplicationSid. Add Record=true to record the whole call, StatusCallback to get status updates, and MachineDetection=Enable to detect voicemail.
  2. getCall with the returned sid to follow status (queued, ringing, in-progress, completed, busy, no-answer, failed, canceled), duration and price.
  3. While it is live: updateCall with new Twiml or Url to redirect it, or Status=completed to hang up (canceled for a call still queued or ringing).
  4. startCallRecording on a live call; updateCallRecording with Status paused, in-progress or stopped.

Before createCall, updateCall or starting a recording, show the number, message and effect to the user and get a yes: calls ring real phones, cost money, and recording may need the other party's consent.

Look back

  • listCalls by To, From, Status or start time (StartTime> = after, StartTime< = before, as YYYY-MM-DD).
  • listCallEvents shows each webhook request and response for a call, which helps debug TwiML errors.
  • listCallRecordings (one call) or listRecordings (account, by date or ConferenceSid), then getRecording. Media is at the recording uri with .json swapped for .mp3 or .wav (send the same credential if the account requires auth for media).
  • listConferences, getConference and listConferenceParticipants (filter Muted, Hold).

Good to know

  • Bodies are form-encoded; field names are PascalCase.
  • Lists page with PageSize (max 1000) and the next_page_uri in the response.
  • Trial accounts can only call verified numbers and play a trial message first.
  • The old Recording Transcriptions API is deprecated and not included.

Source: Twilio Voice API reference (https://www.twilio.com/docs/voice/api/call-resource), checked 2026-10-19.

How to use this spec

  1. Create a free VX Agents account (sandbox tools included).
  2. Open the marketplace and connect “Twilio Voice Calls & Recordings” to an agent.
  3. Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.

Related APIs