OpenAPI Specification
openapi: 3.1.0
info:
contact:
email: support@telnyx.com
description: Telnyx provides global communications and connectivity APIs for developers — including SIP trunking, programmable voice, SMS, MMS, WhatsApp Business Messaging, Call Control, Fax, Wireless (IoT & eSIM), Phone Numbers (DID provisioning & porting), Emergency Services, and Network APIs for private interconnects and edge connectivity. Build, scale, and manage voice, messaging, and data networks with Telnyx's carrier-grade global infrastructure and API-first platform.
title: Telnyx Access Tokens Conference Commands API
version: 2.0.0
x-endpoint-cost: light
servers:
- description: Version 2.0.0 of the Telnyx API
url: https://api.telnyx.com/v2
security:
- bearerAuth: []
tags:
- description: Conference command operations
name: Conference Commands
paths:
/conferences:
get:
description: Lists conferences. Conferences are created on demand, and will expire after all participants have left the conference or after 4 hours regardless of the number of active participants. Conferences are listed in descending order by `expires_at`.
operationId: ListConferences
parameters:
- $ref: '#/components/parameters/ConferenceRegion'
- $ref: '#/components/parameters/call-control_FilterConsolidated'
- $ref: '#/components/parameters/call-control_PageConsolidated'
responses:
'200':
$ref: '#/components/responses/ListConferencesResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: List conferences
tags:
- Conference Commands
x-group-parameters: 'true'
x-latency-category: responsive
post:
description: 'Create a conference from an existing call leg using a `call_control_id` and a conference name. Upon creating the conference, the call will be automatically bridged to the conference. Conferences will expire after all participants have left the conference or after 4 hours regardless of the number of active participants.
**Expected Webhooks:**
- `conference.created`
- `conference.participant.joined`
- `conference.participant.left`
- `conference.ended`
- `conference.recording.saved`
- `conference.floor.changed`
'
operationId: CreateConference
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateConferenceRequest'
description: Create a conference
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Create conference
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{conference_id}/participants:
get:
description: Lists conference participants
operationId: ListConferenceParticipants
parameters:
- description: Uniquely identifies the conference by id
in: path
name: conference_id
required: true
schema:
type: string
- $ref: '#/components/parameters/ConferenceRegion'
- $ref: '#/components/parameters/call-control_PageConsolidated'
- description: 'Consolidated filter parameter (deepObject style). Originally: filter[muted], filter[on_hold], filter[whispering]'
explode: true
in: query
name: filter
schema:
properties:
muted:
description: If present, participants will be filtered to those who are/are not muted
type: boolean
on_hold:
description: If present, participants will be filtered to those who are/are not put on hold
type: boolean
whispering:
description: If present, participants will be filtered to those who are whispering or are not
type: boolean
type: object
style: deepObject
responses:
'200':
$ref: '#/components/responses/ListParticipantsResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: List conference participants
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}:
get:
description: Retrieve an existing conference
operationId: RetrieveConference
parameters:
- description: Uniquely identifies the conference by id
in: path
name: id
required: true
schema:
type: string
- $ref: '#/components/parameters/ConferenceRegion'
responses:
'200':
$ref: '#/components/responses/ConferenceResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
summary: Retrieve a conference
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/end:
post:
description: End a conference and terminate all active participants.
operationId: EndConference
parameters:
- description: Uniquely identifies the conference.
in: path
name: id
required: true
schema:
format: uuid
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EndConferenceRequest'
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: End a conference
tags:
- Conference Commands
x-endpoint-cost: 0.01
x-latency-category: interactive
/conferences/{id}/actions/gather_using_audio:
post:
description: Play an audio file to a specific conference participant and gather DTMF input.
operationId: ConferenceGatherUsingAudio
parameters:
- description: Uniquely identifies the conference.
in: path
name: id
required: true
schema:
format: uuid
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceGatherUsingAudioRequest'
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Gather DTMF using audio prompt in a conference
tags:
- Conference Commands
x-endpoint-cost: 0.01
x-latency-category: interactive
/conferences/{id}/actions/hold:
post:
description: Hold a list of participants in a conference call
operationId: HoldConferenceParticipants
parameters:
- description: Uniquely identifies the conference by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceHoldRequest'
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Hold conference participants
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/join:
post:
description: "Join an existing call leg to a conference. Issue the Join Conference command with the conference ID in the path and the `call_control_id` of the leg you wish to join to the conference as an attribute. The conference can have up to a certain amount of active participants, as set by the `max_participants` parameter in conference creation request. \n\n**Expected Webhooks:**\n\n- `conference.participant.joined`\n- `conference.participant.left`\n"
operationId: JoinConference
parameters:
- description: Uniquely identifies the conference by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/JoinConferenceRequest'
description: Join Conference request object
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Join a conference
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/leave:
post:
description: "Removes a call leg from a conference and moves it back to parked state. \n\n**Expected Webhooks:**\n\n- `conference.participant.left`\n"
operationId: LeaveConference
parameters:
- description: Uniquely identifies the conference by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LeaveConferenceRequest'
description: Leave Conference request object
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Leave a conference
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/mute:
post:
description: Mute a list of participants in a conference call
operationId: MuteConferenceParticipants
parameters:
- description: Uniquely identifies the conference by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceMuteRequest'
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Mute conference participants
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/play:
post:
description: Play audio to all or some participants on a conference call.
operationId: PlayConferenceAudio
parameters:
- description: Uniquely identifies the conference by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConferencePlayRequest'
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Play audio to conference participants
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/record_pause:
post:
description: Pause conference recording.
operationId: PauseConferenceRecording
parameters:
- description: Specifies the conference by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PauseConferenceRecordingRequest'
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Conference recording pause
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/record_resume:
post:
description: Resume conference recording.
operationId: ResumeConferenceRecording
parameters:
- description: Specifies the conference by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ResumeConferenceRecordingRequest'
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Conference recording resume
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/record_start:
post:
description: 'Start recording the conference. Recording will stop on conference end, or via the Stop Recording command.
**Expected Webhooks:**
- `conference.recording.saved`'
operationId: StartConferenceRecording
parameters:
- description: Specifies the conference to record by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StartConferenceRecordingRequest'
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Conference recording start
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/record_stop:
post:
description: 'Stop recording the conference.
**Expected Webhooks:**
- `conference.recording.saved`
'
operationId: StopConferenceRecording
parameters:
- description: Specifies the conference to stop the recording for by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StopRecordingConferenceRequest'
description: Stop recording conference request
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Conference recording stop
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/send_dtmf:
post:
description: Send DTMF tones to one or more conference participants.
operationId: ConferenceSendDTMF
parameters:
- description: Uniquely identifies the conference.
in: path
name: id
required: true
schema:
format: uuid
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceSendDTMFRequest'
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Send DTMF to conference participants
tags:
- Conference Commands
x-endpoint-cost: 0.01
x-latency-category: interactive
/conferences/{id}/actions/speak:
post:
description: Convert text to speech and play it to all or some participants.
operationId: SpeakTextToConference
parameters:
- description: Specifies the conference by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceSpeakRequest'
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Speak text to conference participants
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/stop:
post:
description: Stop audio being played to all or some participants on a conference call.
operationId: StopConferenceAudio
parameters:
- description: Uniquely identifies the conference by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceStopRequest'
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Stop audio being played on the conference
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/unhold:
post:
description: Unhold a list of participants in a conference call
operationId: UnholdConferenceParticipants
parameters:
- description: Uniquely identifies the conference by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceUnholdRequest'
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Unhold conference participants
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/unmute:
post:
description: Unmute a list of participants in a conference call
operationId: UnmuteConferenceParticipants
parameters:
- description: Uniquely identifies the conference by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceUnmuteRequest'
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Unmute conference participants
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/actions/update:
post:
description: Update conference participant supervisor_role
operationId: UpdateConference
parameters:
- description: Uniquely identifies the conference by id or name
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateConferenceRequest'
description: Update Conference request object
required: true
responses:
'200':
$ref: '#/components/responses/ConferenceCommandResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Update conference participant
tags:
- Conference Commands
x-latency-category: interactive
/conferences/{id}/participants/{participant_id}:
get:
description: Retrieve details of a specific conference participant by their ID or label.
operationId: RetrieveConferenceParticipant
parameters:
- description: Uniquely identifies the conference.
in: path
name: id
required: true
schema:
format: uuid
type: string
- description: Uniquely identifies the participant by their ID or label.
in: path
name: participant_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceParticipantResource'
description: Successful response
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Retrieve a conference participant
tags:
- Conference Commands
x-endpoint-cost: 0.01
x-latency-category: interactive
patch:
description: Update properties of a conference participant.
operationId: UpdateConferenceParticipant
parameters:
- description: Uniquely identifies the conference.
in: path
name: id
required: true
schema:
format: uuid
type: string
- description: Uniquely identifies the participant.
in: path
name: participant_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateConferenceParticipantRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceParticipantResource'
description: Successful response
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
summary: Update a conference participant
tags:
- Conference Commands
x-endpoint-cost: 0.01
x-latency-category: interactive
components:
responses:
ConferenceCommandResponse:
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/ConferenceCommandResult'
title: Conference Command Response
type: object
description: Successful response upon making a conference command.
NotFoundResponse:
content:
application/json:
examples:
audio_file_not_found:
summary: Audio file not found
value:
errors:
- code: '10005'
detail: Provided audio file URL couldn't be found.
title: Audio file not found
conference_not_found:
summary: Conference not found
value:
errors:
- code: '90058'
detail: The conference does not exist.
title: Invalid conference_id
recording_not_found:
summary: Recording not found
value:
errors:
- code: '10005'
detail: The recording could not be found. Please check the recording_id and try again.
source:
pointer: /recording_id
title: Recording not found
resource_not_found:
summary: Generic resource not found
value:
errors:
- code: '10007'
detail: Resource not found
title: Resource not found
schema:
$ref: '#/components/schemas/call-control_Errors'
description: 'Resource not found. The requested resource does not exist. Common causes include: invalid call_control_id, conference not found, audio file not found, or recording not found.'
ConferenceResponse:
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/Conference'
title: Conference Response
type: object
description: Successful response with details about a conference.
ListParticipantsResponse:
content:
application/json:
schema:
properties:
data:
items:
$ref: '#/components/schemas/Participant'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
title: List Participants Response
type: object
description: Successful response with a list of conference participants.
ListConferencesResponse:
content:
application/json:
schema:
properties:
data:
items:
$ref: '#/components/schemas/Conference'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
title: List Conferences Response
type: object
description: Successful response with a list of conferences.
UnprocessableEntityResponse:
content:
application/json:
examples:
ai_assistant_already_active:
summary: AI Assistant already active
value:
errors:
- code: '90061'
detail: AI Assistant cannot be started more than once.
title: AI Assistant is already in progress
call_already_ended:
summary: Call has already ended
value:
errors:
- code: '90018'
detail: This call is no longer active and can't receive commands.
title: Call has already ended
call_already_in_queue:
summary: Call already in queue
value:
errors:
- code: '90038'
detail: Call can't be added to a queue it's already in.
title: Call already in queue
call_not_answered:
summary: Call not answered yet
value:
errors:
- code: '90034'
detail: This call can't receive this command because it has not been answered yet.
title: Call not answered yet
cannot_record_before_audio_started:
summary: Cannot record before audio started
value:
errors:
- code: '90020'
detail: Call recording cannot be started until audio has commenced on the call.
title: Call recording triggered before audio started
conference_already_ended:
summary: Conference has already ended
value:
errors:
- code: '90019'
detail: This conference is no longer active and can't receive commands.
title: Conference has already ended
conference_name_conflict:
summary: Conference name conflict
value:
errors:
- code: '90033'
detail: Conference with given name already exists and it's active.
title: Unable to execute command
fork_not_found:
summary: Call is not forked
value:
errors:
- code: '90031'
detail: Can't stop forking, because the call isn't currently forked.
title: Call is not currently forked
invalid_call_control_id:
summary: Invalid call control ID
value:
errors:
- code: '90015'
detail: The call_control_id provided was not valid.
source:
pointer: /call_control_id
title: Invalid Call Control ID
invalid_connection_id:
summary: Invalid connection ID
value:
errors:
- code: '10015'
detail: The requested connection_id (Call Control App ID) is either invalid or does not exist. Only Call Control Apps with valid webhook URL are accepted.
source:
pointer: /connection_id
title: Invalid value for connection_id (Call Control App ID)
invalid_enumerated_value:
summary: Invalid enumerated value
value:
errors:
- code: '10032'
detail: 'The value must be one of: dual, single.'
source:
pointer: /record_channels
title: Invalid enumerated value
invalid_phone_number_format:
summary: Invalid phone number format
value:
errors:
- code: '10016'
detail: The 'to' parameter must be in E164 format.
source:
pointer: /to
title: Phone number must be in +E164 format
max_participants_reached:
summary: Maximum participants reached
value:
errors:
- code: '90032'
detail: The maximum allowed value of `max_participants` has been reached at 100.
title: Maximum number of participants reached
media_streaming_used:
summary: Media streaming in use
value:
errors:
- code: '90045'
detai
# --- truncated at 32 KB (89 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/telnyx/refs/heads/main/openapi/telnyx-conference-commands-api-openapi.yml