api/python/telnyx-sip-integrations-python/SKILL.md
Manage call recordings, media storage, Dialogflow integration, and external connections for SIP trunking. This skill provides Python SDK examples.
npx skillsauth add team-telnyx/telnyx-toolkit telnyx-sip-integrations-pythonInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
pip install telnyx
import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
All examples below assume client is already initialized as shown above.
Returns a list of your call recordings.
GET /recordings
page = client.recordings.list()
page = page.data[0]
print(page.id)
Retrieves the details of an existing call recording.
GET /recordings/{recording_id}
recording = client.recordings.retrieve(
"recording_id",
)
print(recording.data)
Permanently deletes a call recording.
DELETE /recordings/{recording_id}
recording = client.recordings.delete(
"recording_id",
)
print(recording.data)
Permanently deletes a list of call recordings.
POST /recordings/actions/delete
client.recordings.actions.delete(
ids=["428c31b6-7af4-4bcb-b7f5-5013ef9657c1", "428c31b6-7af4-4bcb-b7f5-5013ef9657c2"],
)
Returns a list of your recording transcriptions.
GET /recording_transcriptions
recording_transcriptions = client.recording_transcriptions.list()
print(recording_transcriptions.data)
Retrieves the details of an existing recording transcription.
GET /recording_transcriptions/{recording_transcription_id}
recording_transcription = client.recording_transcriptions.retrieve(
"6a09cdc3-8948-47f0-aa62-74ac943d6c58",
)
print(recording_transcription.data)
Permanently deletes a recording transcription.
DELETE /recording_transcriptions/{recording_transcription_id}
recording_transcription = client.recording_transcriptions.delete(
"6a09cdc3-8948-47f0-aa62-74ac943d6c58",
)
print(recording_transcription.data)
Returns the information about custom storage credentials.
GET /custom_storage_credentials/{connection_id}
custom_storage_credential = client.custom_storage_credentials.retrieve(
"connection_id",
)
print(custom_storage_credential.connection_id)
Creates a custom storage credentials configuration.
POST /custom_storage_credentials/{connection_id}
custom_storage_credential = client.custom_storage_credentials.create(
connection_id="connection_id",
backend="gcs",
configuration={
"backend": "gcs"
},
)
print(custom_storage_credential.connection_id)
Updates a stored custom credentials configuration.
PUT /custom_storage_credentials/{connection_id}
custom_storage_credential = client.custom_storage_credentials.update(
connection_id="connection_id",
backend="gcs",
configuration={
"backend": "gcs"
},
)
print(custom_storage_credential.connection_id)
Deletes a stored custom credentials configuration.
DELETE /custom_storage_credentials/{connection_id}
client.custom_storage_credentials.delete(
"connection_id",
)
Return details of the Dialogflow connection associated with the given CallControl connection.
GET /dialogflow_connections/{connection_id}
dialogflow_connection = client.dialogflow_connections.retrieve(
"connection_id",
)
print(dialogflow_connection.data)
Save Dialogflow Credentiails to Telnyx, so it can be used with other Telnyx services.
POST /dialogflow_connections/{connection_id}
dialogflow_connection = client.dialogflow_connections.create(
connection_id="connection_id",
service_account={
"type": "bar",
"project_id": "bar",
"private_key_id": "bar",
"private_key": "bar",
"client_email": "bar",
"client_id": "bar",
"auth_uri": "bar",
"token_uri": "bar",
"auth_provider_x509_cert_url": "bar",
"client_x509_cert_url": "bar",
},
)
print(dialogflow_connection.data)
Updates a stored Dialogflow Connection.
PUT /dialogflow_connections/{connection_id}
dialogflow_connection = client.dialogflow_connections.update(
connection_id="connection_id",
service_account={
"type": "bar",
"project_id": "bar",
"private_key_id": "bar",
"private_key": "bar",
"client_email": "bar",
"client_id": "bar",
"auth_uri": "bar",
"token_uri": "bar",
"auth_provider_x509_cert_url": "bar",
"client_x509_cert_url": "bar",
},
)
print(dialogflow_connection.data)
Deletes a stored Dialogflow Connection.
DELETE /dialogflow_connections/{connection_id}
client.dialogflow_connections.delete(
"connection_id",
)
This endpoint returns a list of your External Connections inside the 'data' attribute of the response.
GET /external_connections
page = client.external_connections.list()
page = page.data[0]
print(page.id)
Creates a new External Connection based on the parameters sent in the request.
POST /external_connections — Required: external_sip_connection, outbound
external_connection = client.external_connections.create(
external_sip_connection="zoom",
outbound={},
)
print(external_connection.data)
Return the details of an existing External Connection inside the 'data' attribute of the response.
GET /external_connections/{id}
external_connection = client.external_connections.retrieve(
"id",
)
print(external_connection.data)
Updates settings of an existing External Connection based on the parameters of the request.
PATCH /external_connections/{id} — Required: outbound
external_connection = client.external_connections.update(
id="id",
outbound={
"outbound_voice_profile_id": "outbound_voice_profile_id"
},
)
print(external_connection.data)
Permanently deletes an External Connection.
DELETE /external_connections/{id}
external_connection = client.external_connections.delete(
"id",
)
print(external_connection.data)
Returns the civic addresses and locations from Microsoft Teams.
GET /external_connections/{id}/civic_addresses
civic_addresses = client.external_connections.civic_addresses.list(
id="id",
)
print(civic_addresses.data)
Return the details of an existing Civic Address with its Locations inside the 'data' attribute of the response.
GET /external_connections/{id}/civic_addresses/{address_id}
civic_address = client.external_connections.civic_addresses.retrieve(
address_id="318fb664-d341-44d2-8405-e6bfb9ced6d9",
id="id",
)
print(civic_address.data)
PATCH /external_connections/{id}/locations/{location_id} — Required: static_emergency_address_id
response = client.external_connections.update_location(
location_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
static_emergency_address_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
)
print(response.data)
Returns a list of all active phone numbers associated with the given external connection.
GET /external_connections/{id}/phone_numbers
page = client.external_connections.phone_numbers.list(
id="id",
)
page = page.data[0]
print(page.civic_address_id)
Return the details of a phone number associated with the given external connection.
GET /external_connections/{id}/phone_numbers/{phone_number_id}
phone_number = client.external_connections.phone_numbers.retrieve(
phone_number_id="1234567889",
id="id",
)
print(phone_number.data)
Asynchronously update settings of the phone number associated with the given external connection.
PATCH /external_connections/{id}/phone_numbers/{phone_number_id}
phone_number = client.external_connections.phone_numbers.update(
phone_number_id="1234567889",
id="id",
)
print(phone_number.data)
Returns a list of your Releases for the given external connection.
GET /external_connections/{id}/releases
page = client.external_connections.releases.list(
id="id",
)
page = page.data[0]
print(page.tenant_id)
Return the details of a Release request and its phone numbers.
GET /external_connections/{id}/releases/{release_id}
release = client.external_connections.releases.retrieve(
release_id="7b6a6449-b055-45a6-81f6-f6f0dffa4cc6",
id="id",
)
print(release.data)
Returns a list of your Upload requests for the given external connection.
GET /external_connections/{id}/uploads
page = client.external_connections.uploads.list(
id="id",
)
page = page.data[0]
print(page.location_id)
Creates a new Upload request to Microsoft teams with the included phone numbers.
POST /external_connections/{id}/uploads — Required: number_ids
upload = client.external_connections.uploads.create(
id="id",
number_ids=["3920457616934164700", "3920457616934164701", "3920457616934164702", "3920457616934164703"],
)
print(upload.ticket_id)
Forces a recheck of the status of all pending Upload requests for the given external connection in the background.
POST /external_connections/{id}/uploads/refresh
response = client.external_connections.uploads.refresh_status(
"id",
)
print(response.success)
Returns the count of all pending upload requests for the given external connection.
GET /external_connections/{id}/uploads/status
response = client.external_connections.uploads.pending_count(
"id",
)
print(response.data)
Return the details of an Upload request and its phone numbers.
GET /external_connections/{id}/uploads/{ticket_id}
upload = client.external_connections.uploads.retrieve(
ticket_id="7b6a6449-b055-45a6-81f6-f6f0dffa4cc6",
id="id",
)
print(upload.data)
If there were any errors during the upload process, this endpoint will retry the upload request.
POST /external_connections/{id}/uploads/{ticket_id}/retry
response = client.external_connections.uploads.retry(
ticket_id="7b6a6449-b055-45a6-81f6-f6f0dffa4cc6",
id="id",
)
print(response.data)
Retrieve a list of log messages for all external connections associated with your account.
GET /external_connections/log_messages
page = client.external_connections.log_messages.list()
page = page.log_messages[0]
print(page.code)
Retrieve a log message for an external connection associated with your account.
GET /external_connections/log_messages/{id}
log_message = client.external_connections.log_messages.retrieve(
"id",
)
print(log_message.log_messages)
Dismiss a log message for an external connection associated with your account.
DELETE /external_connections/log_messages/{id}
response = client.external_connections.log_messages.dismiss(
"id",
)
print(response.success)
This endpoint will make an asynchronous request to refresh the Operator Connect integration with Microsoft Teams for the current user.
POST /operator_connect/actions/refresh
response = client.operator_connect.actions.refresh()
print(response.message)
Returns a list of stored media files.
GET /media
media = client.media.list()
print(media.data)
Upload media file to Telnyx so it can be used with other Telnyx services
POST /media — Required: media_url
response = client.media.upload(
media_url="http://www.example.com/audio.mp3",
)
print(response.data)
Returns the information about a stored media file.
GET /media/{media_name}
media = client.media.retrieve(
"media_name",
)
print(media.data)
Updates a stored media file.
PUT /media/{media_name}
media = client.media.update(
media_name="media_name",
)
print(media.data)
Deletes a stored media file.
DELETE /media/{media_name}
client.media.delete(
"media_name",
)
Downloads a stored media file.
GET /media/{media_name}/download
response = client.media.download(
"media_name",
)
print(response)
content = response.read()
print(content)
tools
Build cross-platform VoIP calling apps with React Native using Telnyx Voice SDK. High-level reactive API with automatic lifecycle management, CallKit/ConnectionService integration, and push notifications. Use for mobile VoIP apps with minimal setup.
tools
Build browser-based VoIP calling apps using Telnyx WebRTC JavaScript SDK. Covers authentication, voice calls, events, debugging, call quality metrics, and AI Agent integration. Use for web-based real-time communication.
tools
Build VoIP calling apps on iOS using Telnyx WebRTC SDK. Covers authentication, making/receiving calls, CallKit integration, PushKit/APNS push notifications, call quality metrics, and AI Agent integration. Use when implementing real-time voice communication on iOS.
tools
Build cross-platform VoIP calling apps with Flutter using Telnyx WebRTC SDK. Covers authentication, making/receiving calls, push notifications (FCM + APNS), call quality metrics, and AI Agent integration. Works on Android, iOS, and Web.