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 Profiles 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: Messaging profiles name: Profiles paths: /messaging_profiles: get: operationId: ListMessagingProfiles parameters: - description: 'Consolidated filter parameter (deepObject style). Originally: filter[name]' explode: true in: query name: filter schema: properties: name: description: Filter by name type: string type: object style: deepObject - $ref: '#/components/parameters/PageConsolidated' - description: Filter profiles by exact name match. in: query name: filter[name][eq] required: false schema: type: string - description: Filter profiles by name containing the given string. in: query name: filter[name][contains] required: false schema: type: string responses: '200': $ref: '#/components/responses/ListMessagingProfilesResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse' summary: List messaging profiles tags: - Profiles x-endpoint-cost: medium x-group-parameters: 'true' x-latency-category: responsive post: operationId: CreateMessagingProfile requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateMessagingProfileRequest' description: New Messaging Profile object required: true responses: '200': $ref: '#/components/responses/MessagingProfileResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse' summary: Create a messaging profile tags: - Profiles x-endpoint-cost: medium x-latency-category: responsive /messaging_profiles/{id}: delete: operationId: DeleteMessagingProfile parameters: - $ref: '#/components/parameters/MessagingProfileId' responses: '200': $ref: '#/components/responses/MessagingProfileResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse' summary: Delete a messaging profile tags: - Profiles x-latency-category: responsive get: operationId: RetrieveMessagingProfile parameters: - $ref: '#/components/parameters/MessagingProfileId' responses: '200': $ref: '#/components/responses/MessagingProfileResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse' summary: Retrieve a messaging profile tags: - Profiles x-latency-category: responsive patch: operationId: UpdateMessagingProfile parameters: - $ref: '#/components/parameters/MessagingProfileId' requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateMessagingProfileRequest' description: New Messaging Profile object required: true responses: '200': $ref: '#/components/responses/MessagingProfileResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse' summary: Update a messaging profile tags: - Profiles x-latency-category: responsive /messaging_profiles/{id}/phone_numbers: get: operationId: ListProfilePhoneNumbers parameters: - $ref: '#/components/parameters/MessagingProfileId' - $ref: '#/components/parameters/PageConsolidated' responses: '200': $ref: '#/components/responses/ListMessagingProfilePhoneNumbersResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse' summary: List phone numbers associated with a messaging profile tags: - Profiles x-group-parameters: 'true' x-latency-category: responsive /messaging_profiles/{id}/short_codes: get: operationId: ListProfileShortCodes parameters: - $ref: '#/components/parameters/MessagingProfileId' - $ref: '#/components/parameters/PageConsolidated' responses: '200': $ref: '#/components/responses/ListMessagingProfileShortCodesResponse' 4XX: $ref: '#/components/responses/messaging_GenericErrorResponse' summary: List short codes associated with a messaging profile tags: - Profiles x-group-parameters: 'true' x-latency-category: responsive components: responses: messaging_GenericErrorResponse: content: application/json: schema: $ref: '#/components/schemas/messaging_Errors' description: Unexpected error ListMessagingProfileShortCodesResponse: content: application/json: schema: properties: data: items: $ref: '#/components/schemas/ShortCode' type: array meta: $ref: '#/components/schemas/messaging_PaginationMeta' title: List Messaging Profile Short Codes Response type: object description: Successful response with a list of messaging profile short codes. ListMessagingProfilesResponse: content: application/json: schema: properties: data: items: $ref: '#/components/schemas/MessagingProfile' type: array meta: $ref: '#/components/schemas/messaging_PaginationMeta' title: List Messaging Profiles Response type: object description: Successful response with a list of messaging profiles. ListMessagingProfilePhoneNumbersResponse: content: application/json: schema: properties: data: items: $ref: '#/components/schemas/PhoneNumberWithMessagingSettings' type: array meta: $ref: '#/components/schemas/messaging_PaginationMeta' title: List Messaging Profile Phone Numbers Response type: object description: Successful response with a list of messaging profile phone numbers. MessagingProfileResponse: content: application/json: schema: properties: data: $ref: '#/components/schemas/MessagingProfile' title: Messaging Profile Response type: object description: Successful response with details about a messaging profile. schemas: MessagingFeatureSet: description: 'The set of features available for a specific messaging use case (SMS or MMS). Features can vary depending on the characteristics the phone number, as well as its current product configuration. ' example: domestic_two_way: true international_inbound: false international_outbound: true properties: domestic_two_way: description: Send messages to and receive messages from numbers in the same country. type: boolean international_inbound: description: Receive messages from numbers in other countries. type: boolean international_outbound: description: Send messages to numbers in other countries. type: boolean required: - domestic_two_way - international_inbound - international_outbound type: - object - 'null' NumberPoolSettings: description: 'Number Pool allows you to send messages from a pool of numbers of different types, assigning weights to each type. The pool consists of all the long code and toll free numbers assigned to the messaging profile. To disable this feature, set the object field to `null`. ' example: geomatch: false long_code_weight: 1 skip_unhealthy: true sticky_sender: false toll_free_weight: 10 properties: geomatch: default: false description: 'If set to true, Number Pool will try to choose a sending number with the same area code as the destination number. If there are no such numbers available, a nunber with a different area code will be chosen. Currently only NANP numbers are supported. ' type: boolean long_code_weight: description: 'Defines the probability weight for a Long Code number to be selected when sending a message. The higher the weight the higher the probability. The sum of the weights for all number types does not necessarily need to add to 100. Weight must be a non-negative number, and when equal to zero it will remove the number type from the pool. ' example: 1 type: number skip_unhealthy: description: 'If set to true all unhealthy numbers will be automatically excluded from the pool. Health metrics per number are calculated on a regular basis, taking into account the deliverability rate and the amount of messages marked as spam by upstream carriers. Numbers with a deliverability rate below 25% or spam ratio over 75% will be considered unhealthy. ' example: true type: boolean sticky_sender: default: false description: 'If set to true, Number Pool will try to choose the same sending number for all messages to a particular recipient. If the sending number becomes unhealthy and `skip_unhealthy` is set to true, a new number will be chosen. ' type: boolean toll_free_weight: description: 'Defines the probability weight for a Toll Free number to be selected when sending a message. The higher the weight the higher the probability. The sum of the weights for all number types does not necessarily need to add to 100. Weight must be a non-negative number, and when equal to zero it will remove the number type from the pool. ' example: 10 type: number required: - toll_free_weight - long_code_weight - skip_unhealthy type: - object - 'null' MessagingProfile: example: created_at: '2019-01-23T18:10:02.574Z' daily_spend_limit: '100.00' daily_spend_limit_enabled: false enabled: true health_webhook_url: null id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 mms_fall_back_to_sms: false mms_transcoding: false mobile_only: false name: Profile for Messages number_pool_settings: geomatch: false long_code_weight: 2 skip_unhealthy: false sticky_sender: true toll_free_weight: 10 record_type: messaging_profile redaction_enabled: false redaction_level: 2 updated_at: '2019-01-23T18:10:02.574Z' url_shortener_settings: domain: example.ex prefix: cmpny replace_blacklist_only: true send_webhooks: false v1_secret: rP1VamejkU2v0qIUxntqLW2c webhook_api_version: '2' webhook_failover_url: https://backup.example.com/hooks webhook_url: https://www.example.com/hooks whitelisted_destinations: - US properties: ai_assistant_id: description: The AI assistant ID associated with this messaging profile. type: - string - 'null' alpha_sender: description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID. pattern: ^[A-Za-z0-9 ]{1,11}$ type: - string - 'null' created_at: description: ISO 8601 formatted date indicating when the resource was created. format: date-time readOnly: true type: string daily_spend_limit: description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC. pattern: ^[0-9]+(?:\.[0-9]+)?$ type: string daily_spend_limit_enabled: description: Whether to enforce the value configured by `daily_spend_limit`. type: boolean enabled: description: Specifies whether the messaging profile is enabled or not. type: boolean health_webhook_url: description: 'DEPRECATED: health check url service checking' format: url type: - string - 'null' id: description: Identifies the type of resource. format: uuid readOnly: true type: string mms_fall_back_to_sms: default: false description: enables SMS fallback for MMS messages. type: boolean mms_transcoding: default: false description: enables automated resizing of MMS media. type: boolean mobile_only: default: false description: Send messages only to mobile phone numbers. type: boolean name: description: A user friendly name for the messaging profile. type: string number_pool_settings: $ref: '#/components/schemas/NumberPoolSettings' organization_id: description: The organization that owns this messaging profile. type: string record_type: description: Identifies the type of the resource. enum: - messaging_profile readOnly: true type: string redaction_enabled: default: false description: Indicates whether message content redaction is enabled for this profile. type: boolean redaction_level: default: 2 description: Determines how much information is redacted in messages for privacy or compliance purposes. type: integer resource_group_id: description: The resource group ID associated with this messaging profile. type: - string - 'null' smart_encoding: default: false description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and minimize costs. type: boolean updated_at: description: ISO 8601 formatted date indicating when the resource was updated. format: date-time readOnly: true type: string url_shortener_settings: $ref: '#/components/schemas/UrlShortenerSettings' v1_secret: description: Secret used to authenticate with v1 endpoints. type: string webhook_api_version: description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format. enum: - '1' - '2' - '2010-04-01' type: string webhook_failover_url: description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails. format: url type: - string - 'null' webhook_url: description: The URL where webhooks related to this messaging profile will be sent. format: url type: - string - 'null' whitelisted_destinations: description: Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. items: description: ISO 3166-1 alpha-2 country code. pattern: ^[A-Z]{2}$ type: string type: array type: object UpdateMessagingProfileRequest: example: enabled: true name: Updated Profile for Messages number_pool_settings: geomatch: false long_code_weight: 2 skip_unhealthy: false sticky_sender: true toll_free_weight: 10 url_shortener_settings: domain: example.ex prefix: cmpny replace_blacklist_only: true send_webhooks: false v1_secret: rP1VamejkU2v0qIUxntqLW2c webhook_api_version: '2' webhook_failover_url: https://backup.example.com/hooks webhook_url: https://www.example.com/hooks whitelisted_destinations: - US properties: alpha_sender: description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID. pattern: ^[A-Za-z0-9 ]{1,11}$ type: - string - 'null' created_at: description: ISO 8601 formatted date indicating when the resource was created. format: date-time readOnly: true type: string daily_spend_limit: description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC. pattern: ^[0-9]+(?:\.[0-9]+)?$ type: string daily_spend_limit_enabled: description: Whether to enforce the value configured by `daily_spend_limit`. type: boolean enabled: description: Specifies whether the messaging profile is enabled or not. type: boolean id: description: Identifies the type of resource. format: uuid readOnly: true type: string mms_fall_back_to_sms: default: false description: enables SMS fallback for MMS messages. type: boolean mms_transcoding: default: false description: enables automated resizing of MMS media. type: boolean mobile_only: default: false description: Send messages only to mobile phone numbers. type: boolean name: description: A user friendly name for the messaging profile. type: string number_pool_settings: $ref: '#/components/schemas/NumberPoolSettings' record_type: description: Identifies the type of the resource. enum: - messaging_profile readOnly: true type: string smart_encoding: default: false description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and minimize costs. type: boolean updated_at: description: ISO 8601 formatted date indicating when the resource was updated. format: date-time readOnly: true type: string url_shortener_settings: $ref: '#/components/schemas/UrlShortenerSettings' v1_secret: description: Secret used to authenticate with v1 endpoints. type: string webhook_api_version: description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format. enum: - '1' - '2' - '2010-04-01' type: string webhook_failover_url: description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails. format: url type: - string - 'null' webhook_url: description: The URL where webhooks related to this messaging profile will be sent. format: url type: - string - 'null' whitelisted_destinations: description: 'Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. This field is required if the messaging profile doesn''t have it defined yet.' items: description: ISO 3166-1 alpha-2 country code. pattern: ^[A-Z]{2}$ type: string type: array type: object CreateMessagingProfileRequest: example: enabled: true name: My name number_pool_settings: geomatch: false long_code_weight: 1 skip_unhealthy: true sticky_sender: false toll_free_weight: 10 url_shortener_settings: domain: example.ex prefix: '' replace_blacklist_only: true send_webhooks: false webhook_api_version: '2' webhook_failover_url: https://backup.example.com/hooks webhook_url: https://www.example.com/hooks whitelisted_destinations: - US properties: ai_assistant_id: description: The AI assistant ID to associate with this messaging profile. maxLength: 64 type: - string - 'null' alpha_sender: description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID. pattern: ^[A-Za-z0-9 ]{1,11}$ type: - string - 'null' daily_spend_limit: description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC. pattern: ^[0-9]+(?:\.[0-9]+)?$ type: string daily_spend_limit_enabled: description: Whether to enforce the value configured by `daily_spend_limit`. type: boolean enabled: default: true description: Specifies whether the messaging profile is enabled or not. type: boolean health_webhook_url: description: A URL to receive health check webhooks for numbers in this profile. format: url type: - string - 'null' mms_fall_back_to_sms: default: false description: enables SMS fallback for MMS messages. type: boolean mms_transcoding: default: false description: enables automated resizing of MMS media. type: boolean mobile_only: default: false description: Send messages only to mobile phone numbers. type: boolean name: description: A user friendly name for the messaging profile. type: string number_pool_settings: $ref: '#/components/schemas/NumberPoolSettings' resource_group_id: description: The resource group ID to associate with this messaging profile. maxLength: 64 type: - string - 'null' smart_encoding: default: false description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and minimize costs. type: boolean url_shortener_settings: $ref: '#/components/schemas/UrlShortenerSettings' webhook_api_version: default: '2' description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format. enum: - '1' - '2' - '2010-04-01' type: string webhook_failover_url: default: '' description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails. format: url type: - string - 'null' webhook_url: default: '' description: The URL where webhooks related to this messaging profile will be sent. format: url type: - string - 'null' whitelisted_destinations: description: Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `["*"]` all destinations will be allowed. items: description: ISO 3166-1 alpha-2 country code. pattern: ^[A-Z]{2}$ type: string type: array required: - name - whitelisted_destinations type: object UrlShortenerSettings: description: 'The URL shortener feature allows automatic replacement of URLs that were generated using a public URL shortener service. Some examples include bit.do, bit.ly, goo.gl, ht.ly, is.gd, ow.ly, rebrand.ly, t.co, tiny.cc, and tinyurl.com. Such URLs are replaced with with links generated by Telnyx. The use of custom links can improve branding and message deliverability. To disable this feature, set the object field to `null`. ' example: domain: example.ex prefix: '' replace_blacklist_only: true send_webhooks: false properties: domain: description: 'One of the domains provided by the Telnyx URL shortener service. ' example: acct.fyi type: string prefix: description: 'Optional prefix that can be used to identify your brand, and will appear in the Telnyx generated URLs after the domain name. ' example: '' type: string replace_blacklist_only: description: 'Use the link replacement tool only for links that are specifically blacklisted by Telnyx. ' example: true type: boolean send_webhooks: description: 'Receive webhooks for when your replaced links are clicked. Webhooks are sent to the webhooks on the messaging profile. ' example: false type: boolean required: - domain type: - object - 'null' ShortCode: example: country_code: US created_at: '2019-01-23T18:10:02.574Z' id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 messaging_profile_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 record_type: short_code short_code: '12345' tags: - test_customer updated_at: '2019-01-23T18:10:02.574Z' properties: country_code: description: ISO 3166-1 alpha-2 country code. example: US pattern: ^[A-Z]{2}$ readOnly: true type: string created_at: description: ISO 8601 formatted date indicating when the resource was created. format: date-time readOnly: true type: string id: description: Identifies the type of resource. format: uuid readOnly: true type: string messaging_profile_id: description: Unique identifier for a messaging profile. type: - string - 'null' record_type: description: Identifies the type of the resource. enum: - short_code example: short_code readOnly: true type: string short_code: description: Short digit sequence used to address messages. readOnly: true type: string tags: items: type: string type: - array updated_at: description: ISO 8601 formatted date indicating when the resource was updated. format: date-time readOnly: true type: string required: - messaging_profile_id type: object messaging_Errors: properties: errors: items: $ref: '#/components/schemas/messaging_Error' type: array messaging_PaginationMeta: properties: page_number: example: 2 type: integer page_size: example: 25 type: integer total_pages: example: 3 type: integer total_results: example: 55 type: integer required: - total_pages - total_results - page_size - page_number type: object messaging_Error: properties: code: type: string x-format: integer detail: type: string meta: type: object source: properties: parameter: description: Indicates which query parameter caused the error. type: string pointer: description: JSON pointer (RFC6901) to the offending entity. format: json-pointer type: string type: object title: type: string required: - code - title PhoneNumberWithMessagingSettings: example: country_code: US created_at: '2019-01-23T18:10:02.574Z' eligible_messaging_products: - A2P features: mms: null sms: domestic_two_way: true international_inbound: true international_outbound: true health: inbound_outbound_ratio: 0.43 message_count: 122 spam_ratio: 0.06 success_ratio: 0.94 id: '1293384261075731499' messaging_product: A2P messaging_profile_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 phone_number: '+18005550001' record_type: messaging_settings traffic_type: A2P type: tollfree updated_at: '2019-01-23T18:10:02.574Z' properties: country_code: description: ISO 3166-1 alpha-2 country code. example: US pattern: ^[A-Z]{2}$ readOnly: true type: string created_at: description: ISO 8601 formatted date indicating when the resource was created. format: date-time readOnly: true type: string eligible_messaging_products: description: The messaging products that this number can be registered to use items: type: string readOnly: true type: array features: properties: mms: $ref: '#/components/schemas/MessagingFeatureSet' sms: $ref: '#/components/schemas/MessagingFeatureSet' readOnly: true type: object health: $ref: '#/components/schemas/NumberHealthMetrics' id: description: Identifies the type of resource. readOnly: true type: string messaging_product: description: The messaging product that the number is registered to use example: P2P type: string messaging_profile_id: description: Unique identifier for a messaging profile. type: - string - 'null' organization_id: description: The organization that owns this phone number. type: string phone_number: description: +E.164 formatted phone number. readOnly: true type: string x-format: e164 record_type: description: Identifies the type of the resource. enum: - messaging_phone_number - messaging_settings example: messaging_settings readOnly: true type: string tags: description: Tags associated with this phone number. items: type: string type: array traffic_type: description: The messaging traffic or use case for which the number is currently configured. example: P2P readOnly: true type: string type: description: The type of the phone number enum: - long-code - toll-free - short-code - longcode - tollfree - shortcode readOnly: true type: string updated_at: description: ISO 8601 formatted date indicating when the resource was updated. format: date-time readOnly: true type: string type: object NumberHealthMetrics: description: 'High level health metrics about the number and it''s messaging sending patterns. ' example: inbound_outbound_ratio: 1 message_count: 10 spam_ratio: 10 success_ratio: 2 properties: inbound_outbound_ratio: description: The ratio of messages received to the number of messages sent. format: float type: number message_count: description: The number of messages analyzed for the health metrics. type: integer spam_ratio: description: The ratio of messages blocked for spam to the number of messages attempted. format: float type: number success_ratio: description: The ratio of messages sucessfully delivered to the number of messages attempted. format: float type: number required: - message_count - inbound_outbound_ratio - success_ratio - spam_ratio type: object parameters: PageConsolidated: description: 'Consolidated page parameter (deepObject style). Originally: page[number], page[size]' explode: true in: query name: page schema: properties: number: default: 1 description: The page number to load minimum: 1 type: integer size: default: 20 description: The size of the page maximum: 250 minimum: 1 type: integer type: object style: deepObject MessagingProfileId: description: The id of the messaging profile to retrieve in: path name: id required: true schema: format: uuid type: string securitySchemes: bearerAuth: scheme: bearer type: http branded-calling_bearerAuth: description: API key passed as a Bearer token in the Authorization header scheme: bearer type: http oauthClientAuth: description: OAuth 2.0 authentication for Telnyx API and MCP integrations flows: authorizationCode: authorizationUrl: https://api.telnyx.com/v2/oauth/authorize refreshUrl: https://api.telnyx.com/v2/oauth/token scopes: admin: Administrative access to Telnyx resources tokenUrl: https://api.telnyx.com/v2/oauth/token clientCredentials: scopes: admin: Administrative access to Telnyx resources tokenUrl: https://api.telnyx.com/v2/oauth/token type: oauth2 outbound-voice-profiles_bearerAuth: bearerFormat: JWT scheme: bearer type: http pronunciation-dicts_bearerAuth: description: Telnyx API v2 key. Obtain from https://portal.telnyx.com scheme: bearer type: http stored-payment-transactions_bearerAuth: bearerFormat: JWT scheme: bearer type: http