VoiceML — Twilio-compatible REST API (0.6.6)

Download OpenAPI specification:Download

Outbound voice + AMD service with a Twilio-compatible REST API

VoiceML exposes a Twilio-compatible Programmable Voice Calls REST API so existing Twilio SDKs (twilio-node, twilio-python, twilio-go, ...) can integrate with minimal migration effort. Authentication, error codes, and pagination follow Twilio's documented conventions where supported.

URL format: Twilio's canonical URL form ends with .json (e.g. /Calls/{Sid}.json). VoiceML accepts BOTH the .json-suffixed and the unsuffixed form — the server strips a trailing .json/.xml/.wav suffix before routing (see WrapWithFormatSuffix). The spec documents the .json form so SDKs generated against this spec produce Twilio-compatible URLs out of the box; existing clients that omit .json continue to work unchanged.

Authentication is per-tenant HTTP Basic:

  • Username = :AccountSid (the URL path parameter, Twilio-format AC + 32 hex chars). Same value the Twilio SDK validates in its constructor — migration-compatible.
  • Password = the per-account API key. The same key is used to compute X-Twilio-Signature on outbound webhooks.

Account management (create / rotate / disable / delete) is NOT exposed on this public listener — it lives on a private observability listener documented separately.

Calls

List calls

Paginated list of call records for the given account. Filters match Twilio: To, From, Status, ParentCallSid, StartTime (bare = full UTC day), StartTime< (strict upper), StartTime> (strict lower), and the same triple for EndTime. For backwards compatibility the legacy StartTime>= / EndTime<= SQL-style operators are also accepted at the handler. Pagination via Page and PageSize (max 1000). EndTime filters restrict the result set to terminal-status rows (an in-progress call has no end time and cannot match an EndTime window).

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

query Parameters
To
string
From
string
Status
string
ParentCallSid
string
StartTime
string <date-time>

Calls started on this UTC date (YYYY-MM-DD).

StartTime<
string <date-time>

Calls started strictly before this UTC date/time.

StartTime>
string <date-time>

Calls started strictly after this UTC date/time.

EndTime
string <date-time>

Calls ended on this UTC date (YYYY-MM-DD).

EndTime<
string <date-time>

Calls ended strictly before this UTC date/time.

EndTime>
string <date-time>

Calls ended strictly after this UTC date/time.

Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

Responses

Response samples

Content type
application/json
{
  • "calls": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Create (originate) a call

Originates an outbound call via FreeSWITCH. The To and From numbers are validated and normalised to E.164 against the authenticated tenant's phone_regions list — set per-account in the admin API. Empty list disables validation; multi-region tenants accept numbers valid in any listed region. MachineDetection is optional; omitting it skips AMD entirely.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Request Body schema:
required
To
required
string
From
required
string
Url
string

HTTP(S) endpoint that returns voice markup when the call answers. Mutually exclusive with Twiml (inline body wins if both set).

Method
string
Default: "POST"
Enum: "GET" "POST"

HTTP method used to fetch Url (Twilio default = POST).

Twiml
string

Inline voice markup body — alternative to Url. If both are set, Twiml wins (matches Twilio's documented precedence).

ApplicationSid
string

References a stored Application resource. Its VoiceUrl / VoiceMethod / VoiceFallbackUrl / VoiceFallbackMethod / StatusCallback{,Method,Event} fields fill any per-call request field that's empty. Per-call values always win — the Application provides defaults, not overrides. Cross-tenant Application lookups return 404 with the same shape as a nonexistent sid.

FallbackUrl
string

URL to fetch voice markup from if the primary Url / Twiml source fails to fetch or parse. Tried only on primary failure.

FallbackMethod
string
Default: "POST"
Enum: "GET" "POST"
StatusCallback
string
StatusCallbackMethod
string
Default: "POST"
StatusCallbackEvent
Array of strings
Items Enum: "initiated" "ringing" "answered" "completed"
MachineDetection
string
Enum: "Enable" "DetectMessageEnd"
MachineDetectionTimeout
integer
MachineDetectionSpeechThreshold
integer
MachineDetectionSpeechEndThreshold
integer
MachineDetectionSilenceTimeout
integer
AsyncAmdStatusCallback
string
AsyncAmdStatusCallbackMethod
string
Default: "POST"
Record
boolean
Default: false
RecordingStatusCallback
string
RecordingStatusCallbackMethod
string
Default: "POST"
RecordingStatusCallbackEvent
string

Comma-separated subset of in-progress, completed, absent.

RecordingChannels
string
Enum: "mono" "dual"

Recording channel layout. Accepted-and-mono-only in v0.19.x — dual is parsed but the writer emits a single mixed channel.

RecordingTrack
string
Enum: "inbound" "outbound" "both"

Accepted-and-ignored in v0.19.x — recording captures the bridged audio regardless.

Trim
string
Enum: "trim-silence" "do-not-trim"

Accepted-and-ignored in v0.19.x — recording is fixed at trim-silence.

Timeout
integer >= 1
Default: 60

Originate timeout (seconds). Drives the FreeSWITCH originate_timeout channel variable.

SendDigits
string

DTMF burst played after answer — charset 0-9*#wW (w=500ms, W=1s pause). Wired into the originate.

CallerId
string

Alternate to From for SIP From: rewriting. When set, drives the channel effective_caller_id_number.

CallReason
string

Stored as a custom channel variable on the originating call leg, accessible to customer dialplans for reporting and routing decisions.

SipAuthUsername
string

SIP digest auth username for BYOC trunks; channel var sip_auth_username.

SipAuthPassword
string

SIP digest auth password (paired with SipAuthUsername).

Byoc
string

Twilio BYOC Trunk SID. Accepted-and-ignored — VoiceML routes via FreeSWITCH gateways configured at deploy time.

AsyncAmd
boolean

Twilio compatibility — AMD on VoiceML is always async; this flag is accepted but redundant.

CallToken
string

Twilio CallToken for verified-caller-id flows. Accepted-and-ignored.

Responses

Request samples

Content type
No sample

Response samples

Content type
application/json
{
  • "sid": "CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "api_version": "2010-04-01",
  • "to": "+18005551234",
  • "to_formatted": "string",
  • "from": "+18005550000",
  • "from_formatted": "string",
  • "parent_call_sid": "string",
  • "caller_name": "string",
  • "forwarded_from": "string",
  • "status": "queued",
  • "direction": "inbound",
  • "answered_by": "human",
  • "start_time": "string",
  • "end_time": "string",
  • "duration": "string",
  • "price": "string",
  • "price_unit": "string",
  • "phone_number_sid": "string",
  • "annotation": "string",
  • "group_sid": "string",
  • "queue_time": "string",
  • "trunk_sid": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string",
  • "subresource_uris": {
    }
}

Fetch a call

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "sid": "CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "api_version": "2010-04-01",
  • "to": "+18005551234",
  • "to_formatted": "string",
  • "from": "+18005550000",
  • "from_formatted": "string",
  • "parent_call_sid": "string",
  • "caller_name": "string",
  • "forwarded_from": "string",
  • "status": "queued",
  • "direction": "inbound",
  • "answered_by": "human",
  • "start_time": "string",
  • "end_time": "string",
  • "duration": "string",
  • "price": "string",
  • "price_unit": "string",
  • "phone_number_sid": "string",
  • "annotation": "string",
  • "group_sid": "string",
  • "queue_time": "string",
  • "trunk_sid": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string",
  • "subresource_uris": {
    }
}

Update or terminate a live call

Three flows on the same endpoint (mirrors Twilio):

  • Status=completed|canceled — terminate the call.
  • Twiml=<inline> — execute inline voice markup on the live call (wins over Url when both are present).
  • Url=… — fetch new voice markup and execute it on the live call (live redirect / hot swap). If Status is present alongside any voice markup source, Status wins. The success response is the full Call resource — same shape GET returns — so SDK deserialisers round-trip.
Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Request Body schema:
required
Status
string
Enum: "completed" "canceled"
Twiml
string

Inline voice markup body. Wins over Url.

Url
string
Method
string
Default: "POST"
Enum: "GET" "POST"
FallbackUrl
string
FallbackMethod
string
Default: "POST"
Enum: "GET" "POST"
StatusCallback
string

Swaps the live call's StatusCallback URL.

StatusCallbackMethod
string

Swaps the live call's StatusCallback HTTP method.

StatusCallbackEvent
Array of strings
Items Enum: "initiated" "ringing" "answered" "completed"

Replaces the event-mask. Repeatable form param; empty list defaults to [completed] (Twilio default).

Responses

Request samples

Content type
No sample

Response samples

Content type
application/json
{
  • "sid": "CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "api_version": "2010-04-01",
  • "to": "+18005551234",
  • "to_formatted": "string",
  • "from": "+18005550000",
  • "from_formatted": "string",
  • "parent_call_sid": "string",
  • "caller_name": "string",
  • "forwarded_from": "string",
  • "status": "queued",
  • "direction": "inbound",
  • "answered_by": "human",
  • "start_time": "string",
  • "end_time": "string",
  • "duration": "string",
  • "price": "string",
  • "price_unit": "string",
  • "phone_number_sid": "string",
  • "annotation": "string",
  • "group_sid": "string",
  • "queue_time": "string",
  • "trunk_sid": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string",
  • "subresource_uris": {
    }
}

Delete a call record

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "string",
  • "more_info": "string",
  • "status": 0
}

Calls / Recordings

List recordings for one call

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

query Parameters
DateCreated
string <date-time>

Filter to recordings created on this UTC date (YYYY-MM-DD).

DateCreated<
string <date-time>

Filter to recordings created strictly before this UTC date.

DateCreated>
string <date-time>

Filter to recordings created strictly after this UTC date.

Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

Responses

Response samples

Content type
application/json
{
  • "recordings": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "start": 0,
  • "end": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Start a recording mid-call

Begins a fresh recording on the live call leg via FreeSWITCH's uuid_record. The new Recording resource is returned in the 201 response. Distinct from Record=true on POST /Calls, which captures from the start of the call.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Request Body schema: application/x-www-form-urlencoded
optional
RecordingMaxDuration
integer

Cap recording length in seconds. 0 = no limit.

RecordingChannels
string
Enum: "mono" "dual"
PlayBeep
boolean
Default: true
RecordingStatusCallback
string
RecordingStatusCallbackMethod
string
Default: "POST"
RecordingStatusCallbackEvent
string

Comma-separated: in-progress,completed,absent

Responses

Response samples

Content type
application/json
{
  • "sid": "RExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "conference_sid": "string",
  • "status": "in-progress",
  • "source": "OutboundAPI",
  • "channels": 1,
  • "duration": "string",
  • "api_version": "string",
  • "uri": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "start_time": "string",
  • "price": "string",
  • "price_unit": "string",
  • "encryption_details": { },
  • "subresource_uris": { },
  • "media_url": "string",
  • "error_code": 0
}

Fetch recording metadata for a specific call (call-scoped form)

Same JSON resource as /Recordings/{RecordingSid} but enforces the call-scope from the URL path. 404 if the recording exists but is attached to a different call.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "sid": "RExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "conference_sid": "string",
  • "status": "in-progress",
  • "source": "OutboundAPI",
  • "channels": 1,
  • "duration": "string",
  • "api_version": "string",
  • "uri": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "start_time": "string",
  • "price": "string",
  • "price_unit": "string",
  • "encryption_details": { },
  • "subresource_uris": { },
  • "media_url": "string",
  • "error_code": 0
}

Update a mid-call recording's status

Wires uuid_record stop|pause|resume on the live call leg. All three transitions return 200 + the post-mutation Recording resource. Tenant-scoped: a RecordingSid that belongs to a different account returns 404 without leaking existence.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Request Body schema: application/x-www-form-urlencoded
required
Status
required
string
Enum: "stopped" "paused" "in-progress"

Responses

Response samples

Content type
application/json
{
  • "sid": "RExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "conference_sid": "string",
  • "status": "in-progress",
  • "source": "OutboundAPI",
  • "channels": 1,
  • "duration": "string",
  • "api_version": "string",
  • "uri": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "start_time": "string",
  • "price": "string",
  • "price_unit": "string",
  • "encryption_details": { },
  • "subresource_uris": { },
  • "media_url": "string",
  • "error_code": 0
}

Delete a recording (row + local WAV + S3 object when present)

Removes the memdb row, unlinks the on-disk WAV, and (when RECORDING_S3_BUCKET is configured) issues an S3 DeleteObject on the archived copy. S3 deletion is best-effort: failure logs but does not fail the API call (the bucket lifecycle policy is the long-stop cleanup). Tenant-scoped — cross-tenant DELETE returns 404 without affecting the row.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "string",
  • "more_info": "string",
  • "status": 0
}

Calls / Streams

List active media streams for the call

Returns 0 or 1 entries — mod_audio_fork supports a single active fork per call uuid, matching the slot model on the VoiceML tracker. Pagination envelope is the canonical Twilio shape so SDK auto-paginators round-trip cleanly.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Responses

Response samples

Content type
application/json
{
  • "streams": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Start a media stream on the call (REST equivalent of `<Connect><Stream>`/`<Start><Stream>`)

Issues uuid_audio_fork start on the call leg via the same executor primitive the voice markup verbs use. Returns the new Stream resource with an MZ-prefixed sid.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Request Body schema: application/x-www-form-urlencoded
required
Url
required
string

wss:// endpoint for the customer's WebSocket server. Required.

Track
string
Enum: "inbound_track" "outbound_track" "both_tracks"
Name
string
StatusCallback
string
StatusCallbackMethod
string
Default: "POST"

Responses

Response samples

Content type
application/json
{
  • "sid": "MZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "name": "string",
  • "status": "in-progress",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

Fetch a single stream by sid

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Sid
required
string^(MZ|SR|RT)[a-f0-9]{32}$

Twilio-compatible subresource SID — used by Streams (MZ prefix), Siprec (SR prefix), and Transcriptions (RT prefix). The regex covers all three subresources mounted under /Calls/{CallSid}/{Streams|Siprec|Transcriptions}/{Sid}.

Responses

Response samples

Content type
application/json
{
  • "sid": "MZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "name": "string",
  • "status": "in-progress",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

Update a media stream — only Status=stopped is meaningful

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Sid
required
string^(MZ|SR|RT)[a-f0-9]{32}$

Twilio-compatible subresource SID — used by Streams (MZ prefix), Siprec (SR prefix), and Transcriptions (RT prefix). The regex covers all three subresources mounted under /Calls/{CallSid}/{Streams|Siprec|Transcriptions}/{Sid}.

Request Body schema: application/x-www-form-urlencoded
required
Status
required
string
Value: "stopped"

Responses

Response samples

Content type
application/json
{
  • "sid": "MZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "name": "string",
  • "status": "in-progress",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

Calls / Siprec

List active SIPREC sessions for the call

Returns 0 or 1 entries — mod_siprec supports one mirror per call uuid. Pagination envelope is the canonical Twilio shape.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Responses

Response samples

Content type
application/json
{
  • "siprec": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Start a SIPREC session on the call (REST equivalent of `<Start><Siprec>`)

Invokes the siprec dialplan app via uuid_broadcast against the configured connector profile. Returns the new Siprec resource with an SR-prefixed sid.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Request Body schema: application/x-www-form-urlencoded
optional
Name
string
ConnectorName
string

mod_siprec profile name. Empty falls back to SIPREC_DEFAULT_PROFILE then default.

Track
string
Enum: "inbound_track" "outbound_track" "both_tracks"
StatusCallback
string
StatusCallbackMethod
string
Default: "POST"

Responses

Response samples

Content type
application/json
{
  • "sid": "SRxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "name": "string",
  • "connector_name": "string",
  • "status": "in-progress",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

Fetch a single SIPREC session by sid

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Sid
required
string^(MZ|SR|RT)[a-f0-9]{32}$

Twilio-compatible subresource SID — used by Streams (MZ prefix), Siprec (SR prefix), and Transcriptions (RT prefix). The regex covers all three subresources mounted under /Calls/{CallSid}/{Streams|Siprec|Transcriptions}/{Sid}.

Responses

Response samples

Content type
application/json
{
  • "sid": "SRxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "name": "string",
  • "connector_name": "string",
  • "status": "in-progress",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

Update a SIPREC session — clears tracking only

StefanYohansson/mod_siprec doesn't expose a stop verb; the SRS recording session continues until the call hangs up. This endpoint clears VoiceML's session-tracking entry only. Documented mod_siprec limitation.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Sid
required
string^(MZ|SR|RT)[a-f0-9]{32}$

Twilio-compatible subresource SID — used by Streams (MZ prefix), Siprec (SR prefix), and Transcriptions (RT prefix). The regex covers all three subresources mounted under /Calls/{CallSid}/{Streams|Siprec|Transcriptions}/{Sid}.

Request Body schema: application/x-www-form-urlencoded
required
Status
required
string
Value: "stopped"

Responses

Response samples

Content type
application/json
{
  • "sid": "SRxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "name": "string",
  • "connector_name": "string",
  • "status": "in-progress",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

Calls / Transcriptions

List active transcriptions for the call

Returns 0 or 1 entries. Pagination envelope is the canonical Twilio shape.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Responses

Response samples

Content type
application/json
{
  • "transcriptions": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Start real-time transcription on the call (REST equivalent of `<Start><Transcription>`)

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Request Body schema: application/x-www-form-urlencoded
optional
Name
string
Track
string
Enum: "inbound_track" "outbound_track" "both_tracks"
LanguageCode
string
Default: "en-US"
TranscriptionEngine
string
Enum: "deepgram" "google" "aws" "azure"
ProfanityFilter
boolean
PartialResults
boolean
Hints
string
StatusCallback
string
StatusCallbackMethod
string
Default: "POST"
StatusCallbackEvents
string

Comma-separated event filter.

Responses

Response samples

Content type
application/json
{
  • "sid": "RTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "name": "string",
  • "language_code": "en-US",
  • "transcription_engine": "deepgram",
  • "status": "in-progress",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

Fetch a single transcription by sid

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Sid
required
string^(MZ|SR|RT)[a-f0-9]{32}$

Twilio-compatible subresource SID — used by Streams (MZ prefix), Siprec (SR prefix), and Transcriptions (RT prefix). The regex covers all three subresources mounted under /Calls/{CallSid}/{Streams|Siprec|Transcriptions}/{Sid}.

Responses

Response samples

Content type
application/json
{
  • "sid": "RTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "name": "string",
  • "language_code": "en-US",
  • "transcription_engine": "deepgram",
  • "status": "in-progress",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

Update a transcription — only Status=stopped is meaningful

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Sid
required
string^(MZ|SR|RT)[a-f0-9]{32}$

Twilio-compatible subresource SID — used by Streams (MZ prefix), Siprec (SR prefix), and Transcriptions (RT prefix). The regex covers all three subresources mounted under /Calls/{CallSid}/{Streams|Siprec|Transcriptions}/{Sid}.

Request Body schema: application/x-www-form-urlencoded
required
Status
required
string
Value: "stopped"

Responses

Response samples

Content type
application/json
{
  • "sid": "RTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "name": "string",
  • "language_code": "en-US",
  • "transcription_engine": "deepgram",
  • "status": "in-progress",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

Calls / Events

List per-call lifecycle events (compat stub)

Twilio's fine-grained per-call event stream. VoiceML delivers equivalent data via StatusCallback (initiated / ringing / answered / completed); this endpoint is mounted as a stub returning an empty list so SDK helpers iterate cleanly. The canonical event source is the customer's StatusCallback URL. Page/PageSize are accepted for SDK ergonomics but have no effect on an empty list.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

query Parameters
Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

Responses

Response samples

Content type
application/json
{
  • "events": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "total": 0,
  • "uri": "string"
}

Calls / Notifications

List per-call notifications (compat stub)

Twilio's per-call alert log. VoiceML doesn't track notifications as a separate stream — relevant operator-side events flow through Prometheus + structured logs. This endpoint is mounted as a stub so SDK helpers don't 404; the response is always an empty list. Page/PageSize and Log are accepted for SDK ergonomics but have no effect on an empty list.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

query Parameters
Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

Log
integer
Enum: 0 1

Twilio-compatible parameter — 0 = error-level only, 1 = warning-level + above. Accepted for SDK migration compatibility; has no effect since VoiceML's per-call notification stream is unimplemented (this endpoint is a stub returning an empty list).

MessageDate
string <date-time>

Twilio-compatible date filter — accept-but-no-op on empty notification stub.

MessageDate<
string <date-time>

Twilio-compatible date filter — accept-but-no-op on empty notification stub.

MessageDate>
string <date-time>

Twilio-compatible date filter — accept-but-no-op on empty notification stub.

Responses

Response samples

Content type
application/json
{
  • "notifications": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "total": 0,
  • "uri": "string"
}

Fetch a per-call notification (compat stub)

Per-call notification fetch. VoiceML does not persist a notification stream — the list endpoint is always empty and individual fetches return 404.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{ }

Calls / UserDefinedMessages

Send a user-defined message on a live call (NOT IMPLEMENTED)

Twilio's chat-style messages on a live call. Real message-passing infrastructure (a websocket on the customer-facing leg) that's out of scope for VoiceML. Returns 501 with Twilio code 20501. The empty request body schema is declared so codegen tooling emits a method signature consistent with Twilio's SDK.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Request Body schema: application/x-www-form-urlencoded
optional
object

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "string",
  • "more_info": "string",
  • "status": 0
}

Conferences

List active conferences for the account

Returns conferences currently active in mod_conference for this tenant. Live query — no caching, always reflects the FreeSWITCH state of the moment. Conferences appear once a first participant joins (typically via voice markup <Dial><Conference>) and disappear as soon as the last participant leaves.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

query Parameters
FriendlyName
string

Filter to conferences with this exact FriendlyName.

Status
string
Enum: "init" "in-progress" "completed"

Filter to conferences in this lifecycle state.

DateCreated
string <date-time>

Twilio-compatible parameter. VoiceML's conference list is a live FreeSWITCH query with no historical store — accepted but does not narrow the result set.

DateCreated<
string <date-time>

Twilio-compatible date filter — accept-but-no-op on live conference list.

DateCreated>
string <date-time>

Twilio-compatible date filter — accept-but-no-op on live conference list.

DateUpdated
string <date-time>

Twilio-compatible date filter — accept-but-no-op on live conference list.

DateUpdated<
string <date-time>

Twilio-compatible date filter — accept-but-no-op on live conference list.

DateUpdated>
string <date-time>

Twilio-compatible date filter — accept-but-no-op on live conference list.

Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

Responses

Response samples

Content type
application/json
{
  • "conferences": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Fetch a single conference

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "sid": "CFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "friendly_name": "incident-42",
  • "status": "init",
  • "region": "string",
  • "api_version": "string",
  • "uri": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "reason_conference_ended": "conference-ended-via-api",
  • "call_sid_ending_conference": "string",
  • "subresource_uris": {
    },
  • "member_count": 0
}

End an active conference

v1 supports only Status=completed — kicks every participant and tears down the room. Twilio's other update fields (Announce*) are not yet implemented.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Request Body schema: application/x-www-form-urlencoded
required
Status
required
string
Value: "completed"

Responses

Response samples

Content type
application/json
{
  • "sid": "CFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "friendly_name": "incident-42",
  • "status": "init",
  • "region": "string",
  • "api_version": "string",
  • "uri": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "reason_conference_ended": "conference-ended-via-api",
  • "call_sid_ending_conference": "string",
  • "subresource_uris": {
    },
  • "member_count": 0
}

Conferences / Participants

List participants in a conference

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

ConferenceSid
required
string^CF[a-f0-9]{32}$|^[A-Z]{2}[0-9a-f]+__.+$

Twilio-compatible Conference SID — literal CF + 32 hex chars (34 total). Server-generated lazily on first <Dial><Conference> dispatch (or on first appearance in a GET /Conferences list); cleared when the conference ends. The v0.19.x namespaced form (<AccountSid>__<friendly>) is still accepted on input for migration safety, but the response always emits the CF shape.

query Parameters
Muted
boolean

Filter to participants with this Muted state.

Hold
boolean

Filter to participants with this Hold state.

Coaching
boolean

Filter to participants with this Coaching state.

Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

Responses

Response samples

Content type
application/json
{
  • "participants": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "total": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Dial a participant into a conference

Places an outbound call from From to To that joins the named conference on answer via inline voice markup. Returns immediately with status=queued while the leg is ringing.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

ConferenceSid
required
string^CF[a-f0-9]{32}$|^[A-Z]{2}[0-9a-f]+__.+$

Twilio-compatible Conference SID — literal CF + 32 hex chars (34 total). Server-generated lazily on first <Dial><Conference> dispatch (or on first appearance in a GET /Conferences list); cleared when the conference ends. The v0.19.x namespaced form (<AccountSid>__<friendly>) is still accepted on input for migration safety, but the response always emits the CF shape.

Request Body schema: application/x-www-form-urlencoded
required
From
required
string

Caller ID / originating endpoint (E.164 or Twilio client:/sip:/app: form).

To
required
string

Destination endpoint to dial into the conference.

Label
string
Muted
boolean
StartConferenceOnEnter
boolean
Default: true
EndConferenceOnExit
boolean
Default: false
Timeout
integer

Ring timeout in seconds (default 60).

StatusCallback
string <uri>
StatusCallbackMethod
string
Enum: "GET" "POST"
StatusCallbackEvent
string

Responses

Response samples

Content type
application/json
{
  • "call_sid": "CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "conference_sid": "string",
  • "account_sid": "string",
  • "muted": true,
  • "hold": true,
  • "call_sid_to_coach": "string",
  • "coaching": true,
  • "queue_time": "string",
  • "start_conference_on_enter": true,
  • "end_conference_on_exit": true,
  • "status": "queued",
  • "label": "string",
  • "api_version": "string",
  • "uri": "string",
  • "date_created": "string",
  • "date_updated": "string"
}

Fetch a single participant

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

ConferenceSid
required
string^CF[a-f0-9]{32}$|^[A-Z]{2}[0-9a-f]+__.+$

Twilio-compatible Conference SID — literal CF + 32 hex chars (34 total). Server-generated lazily on first <Dial><Conference> dispatch (or on first appearance in a GET /Conferences list); cleared when the conference ends. The v0.19.x namespaced form (<AccountSid>__<friendly>) is still accepted on input for migration safety, but the response always emits the CF shape.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Responses

Response samples

Content type
application/json
{
  • "call_sid": "CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "conference_sid": "string",
  • "account_sid": "string",
  • "muted": true,
  • "hold": true,
  • "call_sid_to_coach": "string",
  • "coaching": true,
  • "queue_time": "string",
  • "start_conference_on_enter": true,
  • "end_conference_on_exit": true,
  • "status": "queued",
  • "label": "string",
  • "api_version": "string",
  • "uri": "string",
  • "date_created": "string",
  • "date_updated": "string"
}

Mute / unmute / hold a participant

At least one of Muted or Hold must be set. Twilio's HoldUrl (custom hold-music URL) and AnnounceUrl are not yet implemented.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

ConferenceSid
required
string^CF[a-f0-9]{32}$|^[A-Z]{2}[0-9a-f]+__.+$

Twilio-compatible Conference SID — literal CF + 32 hex chars (34 total). Server-generated lazily on first <Dial><Conference> dispatch (or on first appearance in a GET /Conferences list); cleared when the conference ends. The v0.19.x namespaced form (<AccountSid>__<friendly>) is still accepted on input for migration safety, but the response always emits the CF shape.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Request Body schema: application/x-www-form-urlencoded
required
Muted
boolean

Mute / unmute the participant.

Hold
boolean

Place the participant on hold (default hold-music profile) or remove from hold.

Responses

Response samples

Content type
application/json
{
  • "call_sid": "CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "conference_sid": "string",
  • "account_sid": "string",
  • "muted": true,
  • "hold": true,
  • "call_sid_to_coach": "string",
  • "coaching": true,
  • "queue_time": "string",
  • "start_conference_on_enter": true,
  • "end_conference_on_exit": true,
  • "status": "queued",
  • "label": "string",
  • "api_version": "string",
  • "uri": "string",
  • "date_created": "string",
  • "date_updated": "string"
}

Kick a participant out of the conference

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

ConferenceSid
required
string^CF[a-f0-9]{32}$|^[A-Z]{2}[0-9a-f]+__.+$

Twilio-compatible Conference SID — literal CF + 32 hex chars (34 total). Server-generated lazily on first <Dial><Conference> dispatch (or on first appearance in a GET /Conferences list); cleared when the conference ends. The v0.19.x namespaced form (<AccountSid>__<friendly>) is still accepted on input for migration safety, but the response always emits the CF shape.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "string",
  • "more_info": "string",
  • "status": 0
}

Conferences / Recordings

List recordings captured by a conference

Returns recordings created by <Dial><Conference record="record-from-start"> verbs that ran in this conference. Pagination envelope same as /Recordings.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

ConferenceSid
required
string^CF[a-f0-9]{32}$|^[A-Z]{2}[0-9a-f]+__.+$

Twilio-compatible Conference SID — literal CF + 32 hex chars (34 total). Server-generated lazily on first <Dial><Conference> dispatch (or on first appearance in a GET /Conferences list); cleared when the conference ends. The v0.19.x namespaced form (<AccountSid>__<friendly>) is still accepted on input for migration safety, but the response always emits the CF shape.

query Parameters
DateCreated
string <date-time>

Filter to recordings created on this UTC date (YYYY-MM-DD).

DateCreated<
string <date-time>

Filter to recordings created strictly before this UTC date.

DateCreated>
string <date-time>

Filter to recordings created strictly after this UTC date.

Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

Responses

Response samples

Content type
application/json
{
  • "recordings": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "start": 0,
  • "end": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Fetch a conference-scoped recording

Same JSON resource as /Recordings/{RecordingSid} but enforces the conference scope from the URL path. 404 if the recording exists but is attached to a different conference.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

ConferenceSid
required
string^CF[a-f0-9]{32}$|^[A-Z]{2}[0-9a-f]+__.+$

Twilio-compatible Conference SID — literal CF + 32 hex chars (34 total). Server-generated lazily on first <Dial><Conference> dispatch (or on first appearance in a GET /Conferences list); cleared when the conference ends. The v0.19.x namespaced form (<AccountSid>__<friendly>) is still accepted on input for migration safety, but the response always emits the CF shape.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "sid": "RExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "conference_sid": "string",
  • "status": "in-progress",
  • "source": "OutboundAPI",
  • "channels": 1,
  • "duration": "string",
  • "api_version": "string",
  • "uri": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "start_time": "string",
  • "price": "string",
  • "price_unit": "string",
  • "encryption_details": { },
  • "subresource_uris": { },
  • "media_url": "string",
  • "error_code": 0
}

Update a conference-scoped recording's status

Same semantics as /Calls/{CallSid}/Recordings/{Sid} but enforces conference scope from the URL path.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

ConferenceSid
required
string^CF[a-f0-9]{32}$|^[A-Z]{2}[0-9a-f]+__.+$

Twilio-compatible Conference SID — literal CF + 32 hex chars (34 total). Server-generated lazily on first <Dial><Conference> dispatch (or on first appearance in a GET /Conferences list); cleared when the conference ends. The v0.19.x namespaced form (<AccountSid>__<friendly>) is still accepted on input for migration safety, but the response always emits the CF shape.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Request Body schema: application/x-www-form-urlencoded
required
Status
required
string
Enum: "stopped" "paused" "in-progress"

Responses

Response samples

Content type
application/json
{
  • "sid": "RExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "conference_sid": "string",
  • "status": "in-progress",
  • "source": "OutboundAPI",
  • "channels": 1,
  • "duration": "string",
  • "api_version": "string",
  • "uri": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "start_time": "string",
  • "price": "string",
  • "price_unit": "string",
  • "encryption_details": { },
  • "subresource_uris": { },
  • "media_url": "string",
  • "error_code": 0
}

Delete a conference-scoped recording

Same semantics as /Recordings/{Sid} but enforces conference scope from the URL path.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

ConferenceSid
required
string^CF[a-f0-9]{32}$|^[A-Z]{2}[0-9a-f]+__.+$

Twilio-compatible Conference SID — literal CF + 32 hex chars (34 total). Server-generated lazily on first <Dial><Conference> dispatch (or on first appearance in a GET /Conferences list); cleared when the conference ends. The v0.19.x namespaced form (<AccountSid>__<friendly>) is still accepted on input for migration safety, but the response always emits the CF shape.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "string",
  • "more_info": "string",
  • "status": 0
}

Queues

Create a queue

Create a named queue. Idempotent — POSTing the same FriendlyName a second time returns the existing queue rather than erroring (matches Twilio).

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Request Body schema: application/x-www-form-urlencoded
required
FriendlyName
required
string <= 64 characters
MaxSize
integer >= 0
Default: 0

Responses

Response samples

Content type
application/json
{
  • "sid": "QU0123456789abcdef0123456789abcdef",
  • "account_sid": "string",
  • "friendly_name": "support",
  • "current_size": 0,
  • "max_size": 0,
  • "average_wait_time": 0,
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

List queues for the account (paged, FriendlyName ASC)

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

query Parameters
Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

Responses

Response samples

Content type
application/json
{
  • "queues": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "start": 0,
  • "end": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Fetch a queue

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "sid": "QU0123456789abcdef0123456789abcdef",
  • "account_sid": "string",
  • "friendly_name": "support",
  • "current_size": 0,
  • "max_size": 0,
  • "average_wait_time": 0,
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

Update a queue (FriendlyName / MaxSize)

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Request Body schema: application/x-www-form-urlencoded
required
FriendlyName
string <= 64 characters
MaxSize
integer >= 0

Responses

Response samples

Content type
application/json
{
  • "sid": "QU0123456789abcdef0123456789abcdef",
  • "account_sid": "string",
  • "friendly_name": "support",
  • "current_size": 0,
  • "max_size": 0,
  • "average_wait_time": 0,
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

Delete a queue

Refused with 409 if any members are still waiting — caller must drain the queue first (matches Twilio's behaviour).

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "string",
  • "more_info": "string",
  • "status": 0
}

Queues / Members

List waiting members in a queue

Returned ordered by position; position 1 = longest waiting (front of queue).

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

QueueSid
required
string^QU[0-9a-f]{32}$

Twilio-compatible Queue SID — literal "QU" + 32 hex chars (34 total). Server-generated on POST /Queues.

query Parameters
Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

Responses

Response samples

Content type
application/json
{
  • "queue_members": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "start": 0,
  • "end": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Peek the longest-waiting member

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

QueueSid
required
string^QU[0-9a-f]{32}$

Twilio-compatible Queue SID — literal "QU" + 32 hex chars (34 total). Server-generated on POST /Queues.

Responses

Response samples

Content type
application/json
{
  • "call_sid": "CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "queue_sid": "string",
  • "account_sid": "string",
  • "date_enqueued": "string",
  • "wait_time": 0,
  • "position": 0,
  • "uri": "string"
}

Dequeue the front member to a voice markup URL

Pops the longest-waiting member and redirects their call to the URL in the body. The member's wait-loop fetches that URL and runs the returned voice markup on their leg as continuation.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

QueueSid
required
string^QU[0-9a-f]{32}$

Twilio-compatible Queue SID — literal "QU" + 32 hex chars (34 total). Server-generated on POST /Queues.

Request Body schema: application/x-www-form-urlencoded
required
Url
required
string <uri>

HTTPS-only.

Method
string
Default: "POST"
Enum: "GET" "POST"

Responses

Response samples

Content type
application/json
{
  • "call_sid": "CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "queue_sid": "string",
  • "account_sid": "string",
  • "date_enqueued": "string",
  • "wait_time": 0,
  • "position": 0,
  • "uri": "string"
}

Fetch a specific member by CallSid

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

QueueSid
required
string^QU[0-9a-f]{32}$

Twilio-compatible Queue SID — literal "QU" + 32 hex chars (34 total). Server-generated on POST /Queues.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Responses

Response samples

Content type
application/json
{
  • "call_sid": "CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "queue_sid": "string",
  • "account_sid": "string",
  • "date_enqueued": "string",
  • "wait_time": 0,
  • "position": 0,
  • "uri": "string"
}

Dequeue a specific member to a voice markup URL

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

QueueSid
required
string^QU[0-9a-f]{32}$

Twilio-compatible Queue SID — literal "QU" + 32 hex chars (34 total). Server-generated on POST /Queues.

CallSid
required
string^CA[a-f0-9]{32}$

Twilio-format Call SID (CA + 32 hex characters).

Request Body schema: application/x-www-form-urlencoded
required
Url
required
string <uri>
Method
string
Default: "POST"
Enum: "GET" "POST"

Responses

Response samples

Content type
application/json
{
  • "call_sid": "CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "queue_sid": "string",
  • "account_sid": "string",
  • "date_enqueued": "string",
  • "wait_time": 0,
  • "position": 0,
  • "uri": "string"
}

Applications

Create an Application

Persistent named voice markup+callback bundle — referenced by <Dial><Application>AP…</Application></Dial>. The agent's Dial verb resolves the SID, fetches voice_url, and runs the returned voice markup on the call leg.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Request Body schema: application/x-www-form-urlencoded
required
FriendlyName
string
VoiceUrl
string <uri>
VoiceMethod
string
Enum: "GET" "POST"
VoiceFallbackUrl
string <uri>
VoiceFallbackMethod
string
Enum: "GET" "POST"
VoiceCallerIdLookup
boolean
StatusCallback
string <uri>
StatusCallbackMethod
string
Enum: "GET" "POST"
StatusCallbackEvent
string

Comma-separated.

Responses

Response samples

Content type
application/json
{
  • "sid": "AP0123456789abcdef0123456789abcdef",
  • "account_sid": "string",
  • "friendly_name": "ivr-main",
  • "api_version": "string",
  • "voice_url": "string",
  • "voice_method": "GET",
  • "voice_fallback_url": "string",
  • "voice_fallback_method": "GET",
  • "voice_caller_id_lookup": true,
  • "status_callback": "string",
  • "status_callback_method": "GET",
  • "status_callback_event": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

List Applications for the account (paged, FriendlyName ASC)

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

query Parameters
FriendlyName
string

Filter to Applications with this exact FriendlyName.

Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

Responses

Response samples

Content type
application/json
{
  • "applications": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "start": 0,
  • "end": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Fetch an Application

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "sid": "AP0123456789abcdef0123456789abcdef",
  • "account_sid": "string",
  • "friendly_name": "ivr-main",
  • "api_version": "string",
  • "voice_url": "string",
  • "voice_method": "GET",
  • "voice_fallback_url": "string",
  • "voice_fallback_method": "GET",
  • "voice_caller_id_lookup": true,
  • "status_callback": "string",
  • "status_callback_method": "GET",
  • "status_callback_event": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

Update an Application (partial — only set fields are touched)

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Request Body schema: application/x-www-form-urlencoded
required
FriendlyName
string
VoiceUrl
string <uri>
VoiceMethod
string
Enum: "GET" "POST"
VoiceFallbackUrl
string <uri>
VoiceFallbackMethod
string
Enum: "GET" "POST"
VoiceCallerIdLookup
boolean
StatusCallback
string <uri>
StatusCallbackMethod
string
Enum: "GET" "POST"
StatusCallbackEvent
string

Responses

Response samples

Content type
application/json
{
  • "sid": "AP0123456789abcdef0123456789abcdef",
  • "account_sid": "string",
  • "friendly_name": "ivr-main",
  • "api_version": "string",
  • "voice_url": "string",
  • "voice_method": "GET",
  • "voice_fallback_url": "string",
  • "voice_fallback_method": "GET",
  • "voice_caller_id_lookup": true,
  • "status_callback": "string",
  • "status_callback_method": "GET",
  • "status_callback_event": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "uri": "string"
}

Delete an Application

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "string",
  • "more_info": "string",
  • "status": 0
}

IncomingPhoneNumbers

List DIDs assigned to the authenticated tenant

Returns every DID currently bound to the authenticated account. Tenant-scoped — only the caller's own rows are returned; the global admin list endpoint is on the private listener and not described here.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

query Parameters
Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

PhoneNumber
string^\+[1-9]\d{1,14}$

Exact-match filter on the E.164 phone number. Twilio's canonical lookup pattern is GET /IncomingPhoneNumbers?PhoneNumber=+1... followed by GET /IncomingPhoneNumbers/{sid} using the sid from the list result. SDK clients (twilio-python's .list(phone_number=...) etc.) issue this pattern; the filter exists so it Just Works against VoiceML. Returns a 0-or-1-row envelope.

FriendlyName
string

Twilio-compatible parameter. VoiceML doesn't model per-DID FriendlyName on phone_numbers (the field is empty in every view), so this parameter is accepted but does not narrow or widen the result set. Declared for SDK migration compatibility.

Beta
boolean

Twilio-compatible parameter. VoiceML does not model the carrier-supplied "beta" flag (no upstream beta-status distinction), so this parameter is accepted but does not narrow or widen the result set. Declared for SDK migration compatibility.

Origin
string
Enum: "twilio" "hosted"

Twilio-compatible parameter. VoiceML treats every assigned DID as locally provisioned (no twilio/hosted origin distinction), so this parameter is accepted but does not narrow or widen the result set. Declared for SDK migration compatibility.

Responses

Response samples

Content type
application/json
{
  • "incoming_phone_numbers": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "start": 0,
  • "end": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Assign a DID to the authenticated tenant

Tenant self-serve assignment of an E.164 DID. Idempotent on the same tenant — re-POSTing the same PhoneNumber rebinds its voice routing without erroring (matches Twilio's update semantics). Returns 409 when the number is already claimed by a different account.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Request Body schema:
required
PhoneNumber
required
string

E.164 — leading +, 7-15 digits.

VoiceUrl
string <uri>
VoiceMethod
string
Enum: "GET" "POST"
VoiceFallbackUrl
string <uri>
VoiceFallbackMethod
string
Enum: "GET" "POST"

Responses

Request samples

Content type
No sample

Response samples

Content type
application/json
{
  • "sid": "PNxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "phone_number": "+18005551234",
  • "friendly_name": "string",
  • "api_version": "2010-04-01",
  • "uri": "string",
  • "origin": "twilio",
  • "beta": true,
  • "capabilities": {
    },
  • "voice_url": "string",
  • "voice_method": "GET",
  • "voice_fallback_url": "string",
  • "voice_fallback_method": "GET",
  • "voice_application_sid": "string",
  • "voice_caller_id_lookup": true,
  • "voice_receive_mode": "voice",
  • "sms_url": "string",
  • "sms_method": "GET",
  • "sms_fallback_url": "string",
  • "sms_fallback_method": "GET",
  • "sms_application_sid": "string",
  • "status_callback": "string",
  • "status_callback_method": "GET",
  • "trunk_sid": "string",
  • "address_sid": "string",
  • "address_requirements": "none",
  • "identity_sid": "string",
  • "bundle_sid": "string",
  • "emergency_status": "Active",
  • "emergency_address_sid": "string",
  • "emergency_address_status": "registered",
  • "status": "string",
  • "type": "local",
  • "date_created": "string",
  • "date_updated": "string"
}

List local DIDs assigned to the authenticated tenant

Twilio type-specific list alias. Returns DIDs inferred as local (non-toll-free US numbers and all non-US numbers). Same pagination envelope as /IncomingPhoneNumbers.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

query Parameters
Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

PhoneNumber
string^\+[1-9]\d{1,14}$
FriendlyName
string
Beta
boolean
Origin
string
Enum: "twilio" "hosted"

Responses

Response samples

Content type
application/json
{
  • "incoming_phone_numbers": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "start": 0,
  • "end": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Assign a local DID to the authenticated tenant

Twilio type-specific create alias — same semantics as POST /IncomingPhoneNumbers.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Request Body schema: application/x-www-form-urlencoded
required
PhoneNumber
required
string
VoiceUrl
string <uri>
VoiceMethod
string
Enum: "GET" "POST"

Responses

Response samples

Content type
application/json
{
  • "sid": "PNxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "phone_number": "+18005551234",
  • "friendly_name": "string",
  • "api_version": "2010-04-01",
  • "uri": "string",
  • "origin": "twilio",
  • "beta": true,
  • "capabilities": {
    },
  • "voice_url": "string",
  • "voice_method": "GET",
  • "voice_fallback_url": "string",
  • "voice_fallback_method": "GET",
  • "voice_application_sid": "string",
  • "voice_caller_id_lookup": true,
  • "voice_receive_mode": "voice",
  • "sms_url": "string",
  • "sms_method": "GET",
  • "sms_fallback_url": "string",
  • "sms_fallback_method": "GET",
  • "sms_application_sid": "string",
  • "status_callback": "string",
  • "status_callback_method": "GET",
  • "trunk_sid": "string",
  • "address_sid": "string",
  • "address_requirements": "none",
  • "identity_sid": "string",
  • "bundle_sid": "string",
  • "emergency_status": "Active",
  • "emergency_address_sid": "string",
  • "emergency_address_status": "registered",
  • "status": "string",
  • "type": "local",
  • "date_created": "string",
  • "date_updated": "string"
}

List mobile DIDs assigned to the authenticated tenant

Twilio type-specific list alias. VoiceML does not track carrier mobile classification on BYO DIDs — this endpoint returns an empty page unless future metadata is added.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

query Parameters
Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

PhoneNumber
string^\+[1-9]\d{1,14}$
FriendlyName
string
Beta
boolean
Origin
string
Enum: "twilio" "hosted"

Responses

Response samples

Content type
application/json
{
  • "incoming_phone_numbers": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "start": 0,
  • "end": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Assign a mobile DID to the authenticated tenant

Twilio type-specific create alias — same semantics as POST /IncomingPhoneNumbers.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Request Body schema: application/x-www-form-urlencoded
required
PhoneNumber
required
string
VoiceUrl
string <uri>
VoiceMethod
string
Enum: "GET" "POST"

Responses

Response samples

Content type
application/json
{
  • "sid": "PNxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "phone_number": "+18005551234",
  • "friendly_name": "string",
  • "api_version": "2010-04-01",
  • "uri": "string",
  • "origin": "twilio",
  • "beta": true,
  • "capabilities": {
    },
  • "voice_url": "string",
  • "voice_method": "GET",
  • "voice_fallback_url": "string",
  • "voice_fallback_method": "GET",
  • "voice_application_sid": "string",
  • "voice_caller_id_lookup": true,
  • "voice_receive_mode": "voice",
  • "sms_url": "string",
  • "sms_method": "GET",
  • "sms_fallback_url": "string",
  • "sms_fallback_method": "GET",
  • "sms_application_sid": "string",
  • "status_callback": "string",
  • "status_callback_method": "GET",
  • "trunk_sid": "string",
  • "address_sid": "string",
  • "address_requirements": "none",
  • "identity_sid": "string",
  • "bundle_sid": "string",
  • "emergency_status": "Active",
  • "emergency_address_sid": "string",
  • "emergency_address_status": "registered",
  • "status": "string",
  • "type": "local",
  • "date_created": "string",
  • "date_updated": "string"
}

List toll-free DIDs assigned to the authenticated tenant

Twilio type-specific list alias. Returns US toll-free NPAs (800/833/844/855/866/877/888). Same pagination envelope as /IncomingPhoneNumbers.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

query Parameters
Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

PhoneNumber
string^\+[1-9]\d{1,14}$
FriendlyName
string
Beta
boolean
Origin
string
Enum: "twilio" "hosted"

Responses

Response samples

Content type
application/json
{
  • "incoming_phone_numbers": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "start": 0,
  • "end": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Assign a toll-free DID to the authenticated tenant

Twilio type-specific create alias — same semantics as POST /IncomingPhoneNumbers.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Request Body schema: application/x-www-form-urlencoded
required
PhoneNumber
required
string
VoiceUrl
string <uri>
VoiceMethod
string
Enum: "GET" "POST"

Responses

Response samples

Content type
application/json
{
  • "sid": "PNxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "phone_number": "+18005551234",
  • "friendly_name": "string",
  • "api_version": "2010-04-01",
  • "uri": "string",
  • "origin": "twilio",
  • "beta": true,
  • "capabilities": {
    },
  • "voice_url": "string",
  • "voice_method": "GET",
  • "voice_fallback_url": "string",
  • "voice_fallback_method": "GET",
  • "voice_application_sid": "string",
  • "voice_caller_id_lookup": true,
  • "voice_receive_mode": "voice",
  • "sms_url": "string",
  • "sms_method": "GET",
  • "sms_fallback_url": "string",
  • "sms_fallback_method": "GET",
  • "sms_application_sid": "string",
  • "status_callback": "string",
  • "status_callback_method": "GET",
  • "trunk_sid": "string",
  • "address_sid": "string",
  • "address_requirements": "none",
  • "identity_sid": "string",
  • "bundle_sid": "string",
  • "emergency_status": "Active",
  • "emergency_address_sid": "string",
  • "emergency_address_status": "registered",
  • "status": "string",
  • "type": "local",
  • "date_created": "string",
  • "date_updated": "string"
}

Fetch a single DID assigned to the authenticated tenant

Tenant-scoped — a phone number that exists but belongs to a different account 404s with the same shape as a nonexistent number (no enumeration leak).

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "sid": "PNxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "phone_number": "+18005551234",
  • "friendly_name": "string",
  • "api_version": "2010-04-01",
  • "uri": "string",
  • "origin": "twilio",
  • "beta": true,
  • "capabilities": {
    },
  • "voice_url": "string",
  • "voice_method": "GET",
  • "voice_fallback_url": "string",
  • "voice_fallback_method": "GET",
  • "voice_application_sid": "string",
  • "voice_caller_id_lookup": true,
  • "voice_receive_mode": "voice",
  • "sms_url": "string",
  • "sms_method": "GET",
  • "sms_fallback_url": "string",
  • "sms_fallback_method": "GET",
  • "sms_application_sid": "string",
  • "status_callback": "string",
  • "status_callback_method": "GET",
  • "trunk_sid": "string",
  • "address_sid": "string",
  • "address_requirements": "none",
  • "identity_sid": "string",
  • "bundle_sid": "string",
  • "emergency_status": "Active",
  • "emergency_address_sid": "string",
  • "emergency_address_status": "registered",
  • "status": "string",
  • "type": "local",
  • "date_created": "string",
  • "date_updated": "string"
}

Update voice routing on an assigned DID

Only-set-fields-touched semantics. Tenant-scoped — a number assigned to a different account 404s.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Request Body schema:
required
VoiceUrl
string <uri>
VoiceMethod
string
Enum: "GET" "POST"
VoiceFallbackUrl
string <uri>
VoiceFallbackMethod
string
Enum: "GET" "POST"

Responses

Request samples

Content type
No sample

Response samples

Content type
application/json
{
  • "sid": "PNxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "phone_number": "+18005551234",
  • "friendly_name": "string",
  • "api_version": "2010-04-01",
  • "uri": "string",
  • "origin": "twilio",
  • "beta": true,
  • "capabilities": {
    },
  • "voice_url": "string",
  • "voice_method": "GET",
  • "voice_fallback_url": "string",
  • "voice_fallback_method": "GET",
  • "voice_application_sid": "string",
  • "voice_caller_id_lookup": true,
  • "voice_receive_mode": "voice",
  • "sms_url": "string",
  • "sms_method": "GET",
  • "sms_fallback_url": "string",
  • "sms_fallback_method": "GET",
  • "sms_application_sid": "string",
  • "status_callback": "string",
  • "status_callback_method": "GET",
  • "trunk_sid": "string",
  • "address_sid": "string",
  • "address_requirements": "none",
  • "identity_sid": "string",
  • "bundle_sid": "string",
  • "emergency_status": "Active",
  • "emergency_address_sid": "string",
  • "emergency_address_status": "registered",
  • "status": "string",
  • "type": "local",
  • "date_created": "string",
  • "date_updated": "string"
}

Release a DID from the authenticated tenant

Tenant-scoped — a number assigned to a different account 404s without affecting the row. Idempotent: 204 on success OR if the number was already gone.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "string",
  • "more_info": "string",
  • "status": 0
}

Recordings

List recordings for the account

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

query Parameters
DateCreated
string <date-time>

Filter to recordings created on this UTC date (YYYY-MM-DD).

DateCreated<
string <date-time>

Filter to recordings created strictly before this UTC date.

DateCreated>
string <date-time>

Filter to recordings created strictly after this UTC date.

CallSid
string^CA[0-9a-fA-F]{32}$

Filter to recordings whose CallSid equals this value.

ConferenceSid
string^CF[0-9a-fA-F]{32}$

Filter to recordings whose ConferenceSid equals this value.

IncludeSoftDeleted
boolean

Twilio-compatible parameter. VoiceML hard-deletes recordings — there is no soft-delete store — so this parameter is accepted but does not change the result set.

Page
integer >= 0
Default: 0

Zero-based page index.

PageSize
integer [ 1 .. 1000 ]
Default: 50

Page size. Max 1000; default 50.

PageToken
string

The page token. This is provided by the API.

Responses

Response samples

Content type
application/json
{
  • "recordings": [
    ],
  • "page": 0,
  • "page_size": 0,
  • "num_pages": 0,
  • "total": 0,
  • "start": 0,
  • "end": 0,
  • "first_page_uri": "string",
  • "next_page_uri": "string",
  • "previous_page_uri": "string",
  • "uri": "string"
}

Fetch recording metadata

Returns JSON metadata for the recording. The companion .wav path returns the audio bytes (or a 302/410 redirect depending on archival state); see recordings.fetchAudio.

Tenant-scoped: a RecordingSid that belongs to a different account returns 404 with the same shape as a nonexistent sid — no enumeration leak.

See docs/aws-recordings.md for the archival pipeline.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

query Parameters
IncludeSoftDeleted
boolean

Twilio-compatible parameter. VoiceML hard-deletes recordings — accepted but does not change fetch behaviour.

Responses

Response samples

Content type
application/json
{
  • "sid": "RExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  • "account_sid": "string",
  • "call_sid": "string",
  • "conference_sid": "string",
  • "status": "in-progress",
  • "source": "OutboundAPI",
  • "channels": 1,
  • "duration": "string",
  • "api_version": "string",
  • "uri": "string",
  • "date_created": "string",
  • "date_updated": "string",
  • "start_time": "string",
  • "price": "string",
  • "price_unit": "string",
  • "encryption_details": { },
  • "subresource_uris": { },
  • "media_url": "string",
  • "error_code": 0
}

Delete a recording (row + local WAV + S3 object when present)

Removes the memdb row, unlinks the on-disk WAV, and (when RECORDING_S3_BUCKET is configured) issues an S3 DeleteObject on the archived copy. S3 deletion is best-effort: failure logs but does not fail the API call (the bucket lifecycle policy is the long-stop cleanup). Tenant-scoped — cross-tenant DELETE returns 404 without affecting the row.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "string",
  • "more_info": "string",
  • "status": 0
}

Fetch recording audio (WAV)

Returns the captured audio as audio/wav with one of three delivery shapes:

  • 200 OK — local file present (typical for the first RECORDING_LOCAL_GRACE window after the call ends).
  • 302 Found — local file cleaned up but archived to S3; Location header points at a presigned URL with TTL RECORDING_PRESIGN_TTL.
  • 410 Gone — local file gone AND no s3_key set (typically: archival not configured + cleanup ran, or archival failed and the WAV was lost).

Tenant-scoped: a RecordingSid that belongs to a different account returns 404 with the same shape as a nonexistent sid — no enumeration leak.

See docs/aws-recordings.md for the archival pipeline.

Authorizations:
basicAuth
path Parameters
AccountSid
required
string^AC[0-9a-f]{32}$

Twilio-format AccountSid: literal "AC" + 32 hex chars (34 total). Server-generated at account creation; the same value the customer's Twilio SDK validates in its constructor.

Sid
required
string^(CA(?:[0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[...

Twilio generic resource identifier on fetch-by-id endpoints (CA/RE/AP/QU/CF/PN + 32 hex, or dashed CA form). Parameter name is always Sid per twilio-oai; the path segment position determines which prefix is valid.

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "string",
  • "more_info": "string",
  • "status": 0
}

Diagnostics

Deep liveness probe

Composite probe with two-tier severity. Hard checks (memdb, disk free space, FreeSWITCH process + required modules + Sofia profile RUNNING) flip the LB-facing ok boolean. Soft checks (host CPU loadavg, memory pressure, FS workload percents, Raft cluster) surface in warnings only — the LB stays in rotation. Result cached 5 s on full success.

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "warnings": [
    ]
}

OpenAPI spec (YAML)

Responses

OpenAPI spec (YAML, .yml alias)

Alias for /openapi.yaml. Same response, same content type.

Responses

OpenAPI spec (JSON)

Responses