Telnyx Phone Number Configurations API
Configure your phone numbers
Configure your phone numbers
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 Phone Number Configurations 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: Configure your phone numbers
name: Phone Number Configurations
paths:
/phone_numbers:
get:
operationId: ListPhoneNumbers
parameters:
- $ref: '#/components/parameters/numbers_PageConsolidated'
- description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order.
in: query
name: sort
required: false
schema:
enum:
- purchased_at
- phone_number
- connection_name
- usage_payment_method
example: connection_name
type: string
- description: 'Consolidated filter parameter (deepObject style). Originally: filter[tag], filter[phone_number], filter[status], filter[country_iso_alpha2], filter[connection_id], filter[voice.connection_name], filter[voice.usage_payment_method], filter[billing_group_id], filter[emergency_address_id], filter[customer_reference], filter[number_type], filter[source]'
explode: true
in: query
name: filter
schema:
properties:
billing_group_id:
description: Filter by the billing_group_id associated with phone numbers. To filter to only phone numbers that have no billing group associated them, set the value of this filter to the string 'null'.
example: 62e4bf2e-c278-4282-b524-488d9c9c43b2
type: string
connection_id:
description: Filter by connection_id.
example: '1521916448077776306'
type: string
country_iso_alpha2:
description: Filter by phone number country ISO alpha-2 code. Can be a single value or an array of values.
oneOf:
- example: US
type: string
- example:
- US
- CA
items:
type: string
type: array
customer_reference:
description: Filter numbers via the customer_reference set.
type: string
emergency_address_id:
description: Filter by the emergency_address_id associated with phone numbers. To filter only phone numbers that have no emergency address associated with them, set the value of this filter to the string 'null'.
example: '9102160989215728032'
type: string
number_type:
additionalProperties: false
description: Filter phone numbers by phone number type.
properties:
eq:
description: Filter phone numbers by phone number type.
enum:
- local
- national
- toll_free
- mobile
- shared_cost
type: string
type: object
phone_number:
description: "Filter by phone number. Requires at least three digits.\n Non-numerical characters will result in no values being returned."
type: string
source:
description: Filter phone numbers by their source. Use 'ported' for numbers ported from other carriers, or 'purchased' for numbers bought directly from Telnyx.
enum:
- ported
- purchased
type: string
status:
description: Filter by phone number status.
enum:
- purchase-pending
- purchase-failed
- port-pending
- active
- deleted
- port-failed
- emergency-only
- ported-out
- port-out-pending
example: active
type: string
tag:
description: Filter by phone number tags.
type: string
voice.connection_name:
additionalProperties: false
description: Filter by voice connection name pattern matching.
properties:
contains:
description: Filter contains connection name. Requires at least three characters.
example: test
type: string
ends_with:
description: Filter ends with connection name. Requires at least three characters.
example: test
type: string
eq:
description: Filter by connection name.
example: test
type: string
starts_with:
description: Filter starts with connection name. Requires at least three characters.
example: test
type: string
type: object
voice.usage_payment_method:
description: Filter by usage_payment_method.
enum:
- pay-per-minute
- channel
example: channel
type: string
without_tags:
description: When set to 'true', filters for phone numbers that do not have any tags applied. All other values are ignored.
enum:
- 'true'
- 'false'
type: string
type: object
style: deepObject
- description: Although it is an infrequent occurrence, due to the highly distributed nature of the Telnyx platform, it is possible that there will be an issue when loading in Messaging Profile information. As such, when this parameter is set to `true` and an error in fetching this information occurs, messaging profile related fields will be omitted in the response and an error message will be included instead of returning a 503 error.
in: query
name: handle_messaging_profile_error
schema:
default: 'false'
enum:
- 'true'
- 'false'
example: 'false'
type: string
responses:
'200':
$ref: '#/components/responses/ListPhoneNumbersResponse'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
summary: List phone numbers
tags:
- Phone Number Configurations
x-endpoint-cost: medium
x-group-parameters: 'true'
x-latency-category: responsive
/phone_numbers/actions/verify_ownership:
post:
description: Verifies ownership of the provided phone numbers and returns a mapping of numbers to their IDs, plus a list of numbers not found in the account.
operationId: VerifyPhoneNumberOwnership
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PhoneNumberVerifyOwnershipRequest'
required: true
responses:
'200':
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/PhoneNumberVerifyOwnershipResponse'
title: Phone Number Verify Ownership Response
type: object
description: Phone number ownership verification completed.
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
summary: Verify ownership of phone numbers
tags:
- Phone Number Configurations
x-endpoint-cost: light
x-latency-category: responsive
/phone_numbers/slim:
get:
description: List phone numbers, This endpoint is a lighter version of the /phone_numbers endpoint having higher performance and rate limit.
operationId: SlimListPhoneNumbers
parameters:
- $ref: '#/components/parameters/numbers_PageConsolidated'
- description: Include the connection associated with the phone number.
in: query
name: include_connection
required: false
schema:
default: false
type: boolean
- description: Include the tags associated with the phone number.
in: query
name: include_tags
required: false
schema:
default: false
type: boolean
- description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order.
in: query
name: sort
required: false
schema:
enum:
- purchased_at
- phone_number
- connection_name
- usage_payment_method
example: connection_name
type: string
- description: 'Consolidated filter parameter (deepObject style). Originally: filter[tag], filter[phone_number], filter[status], filter[country_iso_alpha2], filter[connection_id], filter[voice.connection_name], filter[voice.usage_payment_method], filter[billing_group_id], filter[emergency_address_id], filter[customer_reference], filter[number_type], filter[source]'
explode: true
in: query
name: filter
schema:
properties:
billing_group_id:
description: Filter by the billing_group_id associated with phone numbers. To filter to only phone numbers that have no billing group associated them, set the value of this filter to the string 'null'.
example: 62e4bf2e-c278-4282-b524-488d9c9c43b2
type: string
connection_id:
description: Filter by connection_id.
example: '1521916448077776306'
type: string
country_iso_alpha2:
description: Filter by phone number country ISO alpha-2 code. Can be a single value or an array of values.
oneOf:
- example: US
type: string
- example:
- US
- CA
items:
type: string
type: array
customer_reference:
description: Filter numbers via the customer_reference set.
type: string
emergency_address_id:
description: Filter by the emergency_address_id associated with phone numbers. To filter only phone numbers that have no emergency address associated with them, set the value of this filter to the string 'null'.
example: '9102160989215728032'
type: string
number_type:
additionalProperties: false
description: Filter phone numbers by phone number type.
properties:
eq:
description: Filter phone numbers by phone number type.
enum:
- local
- national
- toll_free
- mobile
- shared_cost
type: string
type: object
phone_number:
description: "Filter by phone number. Requires at least three digits.\n Non-numerical characters will result in no values being returned."
type: string
source:
description: Filter phone numbers by their source. Use 'ported' for numbers ported from other carriers, or 'purchased' for numbers bought directly from Telnyx.
enum:
- ported
- purchased
type: string
status:
description: Filter by phone number status.
enum:
- purchase-pending
- purchase-failed
- port_pending
- active
- deleted
- port-failed
- emergency-only
- ported-out
- port-out-pending
example: active
type: string
tag:
description: Filter by phone number tags. (This requires the include_tags param)
type: string
voice.connection_name:
additionalProperties: false
description: Filter by voice connection name pattern matching (requires include_connection param).
properties:
contains:
description: Filter contains connection name. Requires at least three characters and the include_connection param.
example: test
type: string
ends_with:
description: Filter ends with connection name. Requires at least three characters and the include_connection param.
example: test
type: string
eq:
description: Filter by connection name.
example: test
type: string
starts_with:
description: Filter starts with connection name. Requires at least three characters and the include_connection param.
example: test
type: string
type: object
voice.usage_payment_method:
description: Filter by usage_payment_method.
enum:
- pay-per-minute
- channel
example: channel
type: string
type: object
style: deepObject
responses:
'200':
$ref: '#/components/responses/SlimListPhoneNumbersResponse'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
summary: Slim List phone numbers
tags:
- Phone Number Configurations
x-endpoint-cost: medium
x-group-parameters: 'true'
x-latency-category: responsive
/phone_numbers/voice:
get:
operationId: ListPhoneNumbersWithVoiceSettings
parameters:
- $ref: '#/components/parameters/numbers_PageConsolidated'
- description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order.
in: query
name: sort
required: false
schema:
enum:
- purchased_at
- phone_number
- connection_name
- usage_payment_method
example: connection_name
type: string
- description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number], filter[connection_name], filter[customer_reference], filter[voice.usage_payment_method]'
explode: true
in: query
name: filter
schema:
properties:
connection_name:
additionalProperties: false
description: Filter by connection name pattern matching.
properties:
contains:
description: Filter contains connection name. Requires at least three characters.
example: test
type: string
type: object
customer_reference:
description: Filter numbers via the customer_reference set.
type: string
phone_number:
description: "Filter by phone number. Requires at least three digits.\n Non-numerical characters will result in no values being returned."
type: string
voice.usage_payment_method:
description: Filter by usage_payment_method.
enum:
- pay-per-minute
- channel
example: channel
type: string
type: object
style: deepObject
responses:
'200':
$ref: '#/components/responses/ListPhoneNumbersWithVoiceSettingsResponse'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
summary: List phone numbers with voice settings
tags:
- Phone Number Configurations
x-endpoint-cost: medium
x-group-parameters: 'true'
x-latency-category: responsive
/phone_numbers/{id}:
delete:
operationId: DeletePhoneNumber
parameters:
- $ref: '#/components/parameters/IntId'
responses:
'200':
$ref: '#/components/responses/DeletePhoneNumberResponse'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
summary: Delete a phone number
tags:
- Phone Number Configurations
x-endpoint-cost: medium
x-latency-category: responsive
get:
operationId: RetrievePhoneNumber
parameters:
- $ref: '#/components/parameters/IntId'
responses:
'200':
$ref: '#/components/responses/PhoneNumberResponse'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
summary: Retrieve a phone number
tags:
- Phone Number Configurations
x-endpoint-cost: medium
x-latency-category: responsive
patch:
operationId: UpdatePhoneNumber
parameters:
- $ref: '#/components/parameters/IntId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePhoneNumberRequest'
description: Updated settings for the phone number.
required: true
responses:
'200':
$ref: '#/components/responses/PhoneNumberResponse'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
summary: Update a phone number
tags:
- Phone Number Configurations
x-endpoint-cost: medium
x-latency-category: responsive
/phone_numbers/{id}/actions/bundle_status_change:
patch:
operationId: PhoneNumberBundleStatusChange
parameters:
- $ref: '#/components/parameters/IntId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PhoneNumberBundleStatusChangeRequest'
required: true
responses:
'200':
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/PhoneNumberWithVoiceSettings'
title: Phone Number Bundle Status Change
type: object
description: Phone number bundle status change success
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
summary: Change the bundle status for a phone number (set to being in a bundle or remove from a bundle)
tags:
- Phone Number Configurations
x-endpoint-cost: medium
x-latency-category: responsive
/phone_numbers/{id}/actions/enable_emergency:
post:
operationId: EnablePhoneNumberEmergency
parameters:
- $ref: '#/components/parameters/IntId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PhoneNumberEnableEmergencyRequest'
required: true
responses:
'200':
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/PhoneNumberWithVoiceSettings'
title: Phone Number Enable Emergency
type: object
description: Phone number emergency enabled.
'202':
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/PhoneNumberWithVoiceSettings'
title: Phone Number Enable Emergency
type: object
description: Phone number emergency requested.
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
summary: Enable emergency for a phone number
tags:
- Phone Number Configurations
x-endpoint-cost: medium
x-latency-category: responsive
/phone_numbers/{id}/voice:
get:
operationId: GetPhoneNumberVoiceSettings
parameters:
- $ref: '#/components/parameters/IntId'
responses:
'200':
$ref: '#/components/responses/PhoneNumberWithVoiceSettingsResponse'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
summary: Retrieve a phone number with voice settings
tags:
- Phone Number Configurations
x-endpoint-cost: medium
x-latency-category: responsive
patch:
operationId: UpdatePhoneNumberVoiceSettings
parameters:
- $ref: '#/components/parameters/IntId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePhoneNumberVoiceSettingsRequest'
description: Updated voice settings for the phone number.
required: true
responses:
'200':
$ref: '#/components/responses/PhoneNumberWithVoiceSettingsResponse'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
summary: Update a phone number with voice settings
tags:
- Phone Number Configurations
x-endpoint-cost: medium
x-latency-category: responsive
components:
schemas:
UpdatePhoneNumberVoiceSettingsRequest:
example:
call_forwarding:
call_forwarding_enabled: true
forwarding_type: always
forwards_to: '+13035559123'
call_recording:
inbound_call_recording_channels: single
inbound_call_recording_enabled: true
inbound_call_recording_format: wav
caller_id_name_enabled: true
cnam_listing:
cnam_listing_details: example
cnam_listing_enabled: true
inbound_call_screening: disabled
media_features:
accept_any_rtp_packets_enabled: true
rtp_auto_adjust_enabled: true
t38_fax_gateway_enabled: true
tech_prefix_enabled: true
translated_number: '+13035559999'
usage_payment_method: pay-per-minute
properties:
call_forwarding:
$ref: '#/components/schemas/CallForwarding'
call_recording:
$ref: '#/components/schemas/CallRecording'
caller_id_name_enabled:
default: false
description: Controls whether the caller ID name is enabled for this phone number.
type: boolean
cnam_listing:
$ref: '#/components/schemas/CnamListing'
inbound_call_screening:
default: disabled
description: The inbound_call_screening setting is a phone number configuration option variable that allows users to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls. This feature has an additional per-number monthly cost associated with it.
enum:
- disabled
- reject_calls
- flag_calls
type: string
media_features:
$ref: '#/components/schemas/MediaFeatures'
tech_prefix_enabled:
default: false
description: Controls whether a tech prefix is enabled for this phone number.
type: boolean
translated_number:
description: This field allows you to rewrite the destination number of an inbound call before the call is routed to you. The value of this field may be any alphanumeric value, and the value will replace the number originally dialed.
type: string
usage_payment_method:
default: pay-per-minute
description: Controls whether a number is billed per minute or uses your concurrent channels.
enum:
- pay-per-minute
- channel
type: string
type: object
PhoneNumberVerifyOwnershipRequest:
properties:
phone_numbers:
description: Array of phone numbers to verify ownership for
items:
description: Phone number in E.164 format
example: '+15551234567'
type: string
maxItems: 1000
minItems: 1
type: array
required:
- phone_numbers
type: object
numbers_IntId:
description: Identifies the resource.
example: '1293384261075731499'
readOnly: true
type: string
PhoneNumberEnableEmergencyRequest:
example:
emergency_address_id: '53829456729313'
emergency_enabled: true
properties:
emergency_address_id:
description: Identifies the address to be used with emergency services.
type: string
emergency_enabled:
description: Indicates whether to enable emergency services on this number.
type: boolean
required:
- emergency_enabled
- emergency_address_id
type: object
PhoneNumberDeletedDetailed:
example:
billing_group_id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323
call_forwarding_enabled: true
call_recording_enabled: true
caller_id_name_enabled: true
cnam_listing_enabled: true
connection_id: '1293384261075731499'
connection_name: connection-name
created_at: '2019-10-23T18:10:00.000Z'
customer_reference: customer-reference
deletion_lock_enabled: false
emergency_address_id: '1315261609962112019'
emergency_enabled: true
external_pin: '1234'
hd_voice_enabled: true
id: '1293384261075731499'
messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000
messaging_profile_name: regional-customers
phone_number: '+19705555098'
phone_number_type: local
purchased_at: '2019-10-23T18:10:00.000Z'
record_type: phone_number
status: deleted
t38_fax_gateway_enabled: true
tags:
- tag_1
- tag_2
updated_at: '2019-10-24T18:10:00.000Z'
properties:
billing_group_id:
description: Identifies the billing group associated with the phone number.
type: string
call_forwarding_enabled:
default: true
description: Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints.
readOnly: true
type: boolean
call_recording_enabled:
description: Indicates whether call recording is enabled for this number.
readOnly: true
type: boolean
caller_id_name_enabled:
description: Indicates whether caller ID is enabled for this number.
readOnly: true
type: boolean
cnam_listing_enabled:
description: Indicates whether a CNAM listing is enabled for this number.
readOnly: true
type: boolean
connection_id:
description: Identifies the connection associated with the phone number.
type: string
connection_name:
description: The user-assigned name of the connection to be associated with this phone number.
readOnly: true
type: string
created_at:
description: ISO 8601 formatted date indicating when the time it took to activate after the purchase.
readOnly: true
type: string
customer_reference:
description: A customer reference string for customer look ups.
example: MY REF 001
type: string
deletion_lock_enabled:
description: Indicates whether deletion lock is enabled for this number. When enabled, this prevents the phone number from being deleted via the API or Telnyx portal.
readOnly: true
type: boolean
emergency_address_id:
description: Identifies the emergency address associated with the phone number.
readOnly: true
type: string
emergency_enabled:
description: Indicates whether emergency services are enabled for this number.
readOnly: true
type: boolean
external_pin:
description: If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. N
# --- truncated at 32 KB (66 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/telnyx/refs/heads/main/openapi/telnyx-phone-number-configurations-api-openapi.yml