Configure voicemail, voice channels, and emergency (E911) services for your phone numbers. This skill provides Python SDK examples.
Scanned 2/12/2026
Install via CLI
openskills install team-telnyx/telnyx-ext-agent-skills---
name: telnyx-numbers-services-python
description: >-
Configure voicemail, voice channels, and emergency (E911) services for your
phone numbers. This skill provides Python SDK examples.
metadata:
author: telnyx
product: numbers-services
language: python
---
# Telnyx Numbers Services - Python
## Installation
```bash
pip install telnyx
```
## Setup
```python
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.
## List dynamic emergency addresses
Returns the dynamic emergency addresses according to filters
`GET /dynamic_emergency_addresses`
```python
page = client.dynamic_emergency_addresses.list()
page = page.data[0]
print(page.id)
```
## Create a dynamic emergency address.
Creates a dynamic emergency address.
`POST /dynamic_emergency_addresses` — Required: `house_number`, `street_name`, `locality`, `administrative_area`, `postal_code`, `country_code`
```python
dynamic_emergency_address = client.dynamic_emergency_addresses.create(
administrative_area="TX",
country_code="US",
house_number="600",
locality="Austin",
postal_code="78701",
street_name="Congress",
)
print(dynamic_emergency_address.data)
```
## Get a dynamic emergency address
Returns the dynamic emergency address based on the ID provided
`GET /dynamic_emergency_addresses/{id}`
```python
dynamic_emergency_address = client.dynamic_emergency_addresses.retrieve(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
)
print(dynamic_emergency_address.data)
```
## Delete a dynamic emergency address
Deletes the dynamic emergency address based on the ID provided
`DELETE /dynamic_emergency_addresses/{id}`
```python
dynamic_emergency_address = client.dynamic_emergency_addresses.delete(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
)
print(dynamic_emergency_address.data)
```
## List dynamic emergency endpoints
Returns the dynamic emergency endpoints according to filters
`GET /dynamic_emergency_endpoints`
```python
page = client.dynamic_emergency_endpoints.list()
page = page.data[0]
print(page.dynamic_emergency_address_id)
```
## Create a dynamic emergency endpoint.
Creates a dynamic emergency endpoints.
`POST /dynamic_emergency_endpoints` — Required: `dynamic_emergency_address_id`, `callback_number`, `caller_name`
```python
dynamic_emergency_endpoint = client.dynamic_emergency_endpoints.create(
callback_number="+13125550000",
caller_name="Jane Doe Desk Phone",
dynamic_emergency_address_id="0ccc7b54-4df3-4bca-a65a-3da1ecc777f0",
)
print(dynamic_emergency_endpoint.data)
```
## Get a dynamic emergency endpoint
Returns the dynamic emergency endpoint based on the ID provided
`GET /dynamic_emergency_endpoints/{id}`
```python
dynamic_emergency_endpoint = client.dynamic_emergency_endpoints.retrieve(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
)
print(dynamic_emergency_endpoint.data)
```
## Delete a dynamic emergency endpoint
Deletes the dynamic emergency endpoint based on the ID provided
`DELETE /dynamic_emergency_endpoints/{id}`
```python
dynamic_emergency_endpoint = client.dynamic_emergency_endpoints.delete(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
)
print(dynamic_emergency_endpoint.data)
```
## List your voice channels for non-US zones
Returns the non-US voice channels for your account.
`GET /channel_zones`
```python
page = client.channel_zones.list()
page = page.data[0]
print(page.id)
```
## Update voice channels for non-US Zones
Update the number of Voice Channels for the Non-US Zones.
`PUT /channel_zones/{channel_zone_id}` — Required: `channels`
```python
channel_zone = client.channel_zones.update(
channel_zone_id="channel_zone_id",
channels=0,
)
print(channel_zone.id)
```
## List your voice channels for US Zone
Returns the US Zone voice channels for your account.
`GET /inbound_channels`
```python
inbound_channels = client.inbound_channels.list()
print(inbound_channels.data)
```
## Update voice channels for US Zone
Update the number of Voice Channels for the US Zone.
`PATCH /inbound_channels` — Required: `channels`
```python
inbound_channel = client.inbound_channels.update(
channels=7,
)
print(inbound_channel.data)
```
## List All Numbers using Channel Billing
Retrieve a list of all phone numbers using Channel Billing, grouped by Zone.
`GET /list`
```python
response = client.list.retrieve_all()
print(response.data)
```
## List Numbers using Channel Billing for a specific Zone
Retrieve a list of phone numbers using Channel Billing for a specific Zone.
`GET /list/{channel_zone_id}`
```python
response = client.list.retrieve_by_zone(
"channel_zone_id",
)
print(response.data)
```
## Get voicemail
Returns the voicemail settings for a phone number
`GET /phone_numbers/{phone_number_id}/voicemail`
```python
voicemail = client.phone_numbers.voicemail.retrieve(
"123455678900",
)
print(voicemail.data)
```
## Create voicemail
Create voicemail settings for a phone number
`POST /phone_numbers/{phone_number_id}/voicemail`
```python
voicemail = client.phone_numbers.voicemail.create(
phone_number_id="123455678900",
)
print(voicemail.data)
```
## Update voicemail
Update voicemail settings for a phone number
`PATCH /phone_numbers/{phone_number_id}/voicemail`
```python
voicemail = client.phone_numbers.voicemail.update(
phone_number_id="123455678900",
)
print(voicemail.data)
```
No comments yet. Be the first to comment!