| name | telnyx-texml-python |
| description | Build voice applications using TeXML markup language (TwiML-compatible). Manage applications, calls, conferences, recordings, queues, and streams. This skill provides Python SDK examples. |
| metadata | {"author":"telnyx","product":"texml","language":"python","generated_by":"telnyx-ext-skills-generator"} |
Telnyx Texml - Python
Installation
pip install telnyx
Setup
import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"),
)
All examples below assume client is already initialized as shown above.
List all TeXML Applications
Returns a list of your TeXML Applications.
GET /texml_applications
page = client.texml_applications.list()
page = page.data[0]
print(page.id)
Creates a TeXML Application
Creates a TeXML Application.
POST /texml_applications — Required: friendly_name, voice_url
texml_application = client.texml_applications.create(
friendly_name="call-router",
voice_url="https://example.com",
)
print(texml_application.data)
Retrieve a TeXML Application
Retrieves the details of an existing TeXML Application.
GET /texml_applications/{id}
texml_application = client.texml_applications.retrieve(
"1293384261075731499",
)
print(texml_application.data)
Update a TeXML Application
Updates settings of an existing TeXML Application.
PATCH /texml_applications/{id} — Required: friendly_name, voice_url
texml_application = client.texml_applications.update(
id="1293384261075731499",
friendly_name="call-router",
voice_url="https://example.com",
)
print(texml_application.data)
Deletes a TeXML Application
Deletes a TeXML Application.
DELETE /texml_applications/{id}
texml_application = client.texml_applications.delete(
"1293384261075731499",
)
print(texml_application.data)
Fetch multiple call resources
Returns multiple call resources for an account.
GET /texml/Accounts/{account_sid}/Calls
response = client.texml.accounts.calls.retrieve_calls(
account_sid="account_sid",
)
print(response.calls)
Initiate an outbound call
Initiate an outbound TeXML call.
POST /texml/Accounts/{account_sid}/Calls — Required: To, From, ApplicationSid
response = client.texml.accounts.calls.calls(
account_sid="account_sid",
application_sid="example-app-sid",
from_="+13120001234",
to="+13121230000",
)
print(response.from_)
Fetch a call
Returns an individual call identified by its CallSid.
GET /texml/Accounts/{account_sid}/Calls/{call_sid}
call = client.texml.accounts.calls.retrieve(
call_sid="call_sid",
account_sid="account_sid",
)
print(call.account_sid)
Update call
Update TeXML call.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}
call = client.texml.accounts.calls.update(
call_sid="call_sid",
account_sid="account_sid",
)
print(call.account_sid)
List conference participants
Lists conference participants
GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants
response = client.texml.accounts.conferences.participants.retrieve_participants(
conference_sid="conference_sid",
account_sid="account_sid",
)
print(response.end)
Dial a new conference participant
Dials a new conference participant
POST /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants
response = client.texml.accounts.conferences.participants.participants(
conference_sid="conference_sid",
account_sid="account_sid",
)
print(response.account_sid)
Get conference participant resource
Gets conference participant resource
GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}
participant = client.texml.accounts.conferences.participants.retrieve(
call_sid_or_participant_label="call_sid_or_participant_label",
account_sid="account_sid",
conference_sid="conference_sid",
)
print(participant.account_sid)
Update a conference participant
Updates a conference participant
POST /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}
participant = client.texml.accounts.conferences.participants.update(
call_sid_or_participant_label="call_sid_or_participant_label",
account_sid="account_sid",
conference_sid="conference_sid",
)
print(participant.account_sid)
Delete a conference participant
Deletes a conference participant
DELETE /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}
client.texml.accounts.conferences.participants.delete(
call_sid_or_participant_label="call_sid_or_participant_label",
account_sid="account_sid",
conference_sid="conference_sid",
)
List conference resources
Lists conference resources.
GET /texml/Accounts/{account_sid}/Conferences
response = client.texml.accounts.conferences.retrieve_conferences(
account_sid="account_sid",
)
print(response.conferences)
Fetch a conference resource
Returns a conference resource.
GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}
conference = client.texml.accounts.conferences.retrieve(
conference_sid="conference_sid",
account_sid="account_sid",
)
print(conference.account_sid)
Update a conference resource
Updates a conference resource.
POST /texml/Accounts/{account_sid}/Conferences/{conference_sid}
conference = client.texml.accounts.conferences.update(
conference_sid="conference_sid",
account_sid="account_sid",
)
print(conference.account_sid)
List queue resources
Lists queue resources.
GET /texml/Accounts/{account_sid}/Queues
page = client.texml.accounts.queues.list(
account_sid="account_sid",
)
page = page.queues[0]
print(page.account_sid)
Create a new queue
Creates a new queue resource.
POST /texml/Accounts/{account_sid}/Queues
queue = client.texml.accounts.queues.create(
account_sid="account_sid",
)
print(queue.account_sid)
Fetch a queue resource
Returns a queue resource.
GET /texml/Accounts/{account_sid}/Queues/{queue_sid}
queue = client.texml.accounts.queues.retrieve(
queue_sid="queue_sid",
account_sid="account_sid",
)
print(queue.account_sid)
Update a queue resource
Updates a queue resource.
POST /texml/Accounts/{account_sid}/Queues/{queue_sid}
queue = client.texml.accounts.queues.update(
queue_sid="queue_sid",
account_sid="account_sid",
)
print(queue.account_sid)
Delete a queue resource
Delete a queue resource.
DELETE /texml/Accounts/{account_sid}/Queues/{queue_sid}
client.texml.accounts.queues.delete(
queue_sid="queue_sid",
account_sid="account_sid",
)
Fetch multiple recording resources
Returns multiple recording resources for an account.
GET /texml/Accounts/{account_sid}/Recordings.json
response = client.texml.accounts.retrieve_recordings_json(
account_sid="account_sid",
)
print(response.end)
Fetch recording resource
Returns recording resource identified by recording id.
GET /texml/Accounts/{account_sid}/Recordings/{recording_sid}.json
texml_get_call_recording_response_body = client.texml.accounts.recordings.json.retrieve_recording_sid_json(
recording_sid="6a09cdc3-8948-47f0-aa62-74ac943d6c58",
account_sid="account_sid",
)
print(texml_get_call_recording_response_body.account_sid)
Delete recording resource
Deletes recording resource identified by recording id.
DELETE /texml/Accounts/{account_sid}/Recordings/{recording_sid}.json
client.texml.accounts.recordings.json.delete_recording_sid_json(
recording_sid="6a09cdc3-8948-47f0-aa62-74ac943d6c58",
account_sid="account_sid",
)
Fetch recordings for a call
Returns recordings for a call identified by call_sid.
GET /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings.json
response = client.texml.accounts.calls.recordings_json.retrieve_recordings_json(
call_sid="call_sid",
account_sid="account_sid",
)
print(response.end)
Request recording for a call
Starts recording with specified parameters for call idientified by call_sid.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings.json
response = client.texml.accounts.calls.recordings_json.recordings_json(
call_sid="call_sid",
account_sid="account_sid",
)
print(response.account_sid)
Update recording on a call
Updates recording resource for particular call.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings/{recording_sid}.json
response = client.texml.accounts.calls.recordings.recording_sid_json(
recording_sid="6a09cdc3-8948-47f0-aa62-74ac943d6c58",
account_sid="account_sid",
call_sid="call_sid",
)
print(response.account_sid)
List conference recordings
Lists conference recordings
GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings
response = client.texml.accounts.conferences.retrieve_recordings(
conference_sid="conference_sid",
account_sid="account_sid",
)
print(response.end)
Fetch recordings for a conference
Returns recordings for a conference identified by conference_sid.
GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings.json
response = client.texml.accounts.conferences.retrieve_recordings_json(
conference_sid="conference_sid",
account_sid="account_sid",
)
print(response.end)
Create a TeXML secret
Create a TeXML secret which can be later used as a Dynamic Parameter for TeXML when using Mustache Templates in your TeXML.
POST /texml/secrets — Required: name, value
response = client.texml.secrets(
name="My Secret Name",
value="My Secret Value",
)
print(response.data)
Request siprec session for a call
Starts siprec session with specified parameters for call idientified by call_sid.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec.json
response = client.texml.accounts.calls.siprec_json(
call_sid="call_sid",
account_sid="account_sid",
)
print(response.account_sid)
Updates siprec session for a call
Updates siprec session identified by siprec_sid.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec/{siprec_sid}.json
response = client.texml.accounts.calls.siprec.siprec_sid_json(
siprec_sid="siprec_sid",
account_sid="account_sid",
call_sid="call_sid",
)
print(response.account_sid)
Start streaming media from a call.
Starts streaming media from a call to a specific WebSocket address.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Streams.json
response = client.texml.accounts.calls.streams_json(
call_sid="call_sid",
account_sid="account_sid",
)
print(response.account_sid)
Update streaming on a call
Updates streaming resource for particular call.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Streams/{streaming_sid}.json
response = client.texml.accounts.calls.streams.streaming_sid_json(
streaming_sid="6a09cdc3-8948-47f0-aa62-74ac943d6c58",
account_sid="account_sid",
call_sid="call_sid",
)
print(response.account_sid)
List recording transcriptions
Returns multiple recording transcription resources for an account.
GET /texml/Accounts/{account_sid}/Transcriptions.json
response = client.texml.accounts.retrieve_transcriptions_json(
account_sid="account_sid",
)
print(response.end)
Fetch a recording transcription resource
Returns the recording transcription resource identified by its ID.
GET /texml/Accounts/{account_sid}/Transcriptions/{recording_transcription_sid}.json
response = client.texml.accounts.transcriptions.json.retrieve_recording_transcription_sid_json(
recording_transcription_sid="6a09cdc3-8948-47f0-aa62-74ac943d6c58",
account_sid="account_sid",
)
print(response.account_sid)
Delete a recording transcription
Permanently deletes a recording transcription.
DELETE /texml/Accounts/{account_sid}/Transcriptions/{recording_transcription_sid}.json
client.texml.accounts.transcriptions.json.delete_recording_transcription_sid_json(
recording_transcription_sid="6a09cdc3-8948-47f0-aa62-74ac943d6c58",
account_sid="account_sid",
)
Webhooks
The following webhook events are sent to your configured webhook URL.
All webhooks include telnyx-timestamp and telnyx-signature-ed25519 headers for verification (Standard Webhooks compatible).
| Event | Description |
|---|
TexmlCallAnsweredWebhook | TeXML Call Answered. Webhook sent when a TeXML call is answered |
TexmlCallCompletedWebhook | TeXML Call Completed. Webhook sent when a TeXML call is completed |
TexmlCallInitiatedWebhook | TeXML Call Initiated. Webhook sent when a TeXML call is initiated |
TexmlCallRingingWebhook | TeXML Call Ringing. Webhook sent when a TeXML call is ringing |
TexmlCallAmdWebhook | TeXML Call AMD. Webhook sent when Answering Machine Detection (AMD) completes during a TeXML call |
TexmlCallDtmfWebhook | TeXML Call DTMF. Webhook sent when a DTMF digit is received during a TeXML call |
TexmlGatherWebhook | TeXML Gather. Webhook sent when a Gather command completes (sent to the action URL) |
TexmlHttpRequestWebhook | TeXML HTTP Request. Webhook sent as response to an HTTP Request instruction |
TexmlAiGatherWebhook | TeXML AI Gather. Webhook sent when AI Gather completes with transcription results |
TexmlConferenceJoinWebhook | TeXML Conference Join. Webhook sent when a participant joins a TeXML conference |
TexmlConferenceLeaveWebhook | TeXML Conference Leave. Webhook sent when a participant leaves a TeXML conference |
TexmlConferenceSpeakerWebhook | TeXML Conference Speaker. Webhook sent when a participant starts or stops speaking in a TeXML conference |
TexmlConferenceEndWebhook | TeXML Conference End. Webhook sent when a TeXML conference ends |
TexmlConferenceStartWebhook | TeXML Conference Start. Webhook sent when a TeXML conference starts |
TexmlQueueWebhook | TeXML Queue. Webhook sent for queue status events (triggered by Enqueue command waitUrl) |
TexmlRecordingCompletedWebhook | TeXML Recording Completed. Webhook sent when a recording is completed during a TeXML call (triggered by recordingStatusCallbackEvent) |