{"id":"fa79fa1c-4e40-402b-a7d8-b3651ae0d83c","shortId":"ARZNBJ","kind":"skill","title":"telnyx-messaging-python","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Messaging - Python\n\n## Installation\n\n```bash\npip install telnyx\n```\n\n## Setup\n\n```python\nimport os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n    api_key=os.environ.get(\"TELNYX_API_KEY\"),  # This is the default and can be omitted\n)\n```\n\nAll examples below assume `client` is already initialized as shown above.\n\n## Error Handling\n\nAll API calls can fail with network errors, rate limits (429), validation errors (422),\nor authentication errors (401). Always handle errors in production code:\n\n```python\nimport telnyx\n\ntry:\n    response = client.messages.send(\n        to=\"+18445550001\",\n        from_=\"+18005550101\",\n        text=\"Hello from Telnyx!\",\n    )\nexcept telnyx.APIConnectionError:\n    print(\"Network error — check connectivity and retry\")\nexcept telnyx.RateLimitError:\n    import time\n    time.sleep(1)  # Check Retry-After header for actual delay\nexcept telnyx.APIStatusError as e:\n    print(f\"API error {e.status_code}: {e.message}\")\n    if e.status_code == 422:\n        print(\"Validation error — check required fields and formats\")\n```\n\nCommon error codes: `401` invalid API key, `403` insufficient permissions,\n`404` resource not found, `422` validation error (check field formats),\n`429` rate limited (retry with exponential backoff).\n\n## Important Notes\n\n- **Phone numbers** must be in E.164 format (e.g., `+13125550001`). Include the `+` prefix and country code. No spaces, dashes, or parentheses.\n- **Pagination:** List methods return an auto-paginating iterator. Use `for item in page_result:` to iterate through all pages automatically.\n\n## Operational Caveats\n\n- The sending number must already be assigned to the correct messaging profile before you send traffic from it.\n- US A2P long-code traffic must complete 10DLC registration before production sending or carriers will block or heavily filter messages.\n- Delivery webhooks are asynchronous. Treat the send response as acceptance of the request, not final carrier delivery.\n\n## Reference Use Rules\n\nDo not invent Telnyx parameters, enums, response fields, or webhook fields.\n\n- If the parameter, enum, or response field you need is not shown inline in this skill, read [references/api-details.md](references/api-details.md) before writing code.\n- Before using any operation in `## Additional Operations`, read [the optional-parameters section](references/api-details.md#optional-parameters) and [the response-schemas section](references/api-details.md#response-schemas).\n- Before reading or matching webhook fields beyond the inline examples, read [the webhook payload reference](references/api-details.md#webhook-payload-fields).\n\n## Core Tasks\n\n### Send an SMS\n\nPrimary outbound messaging flow. Agents need exact request fields and delivery-related response fields.\n\n`client.messages.send()` — `POST /messages`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `to` | string (E.164) | Yes | Receiving address (+E.164 formatted phone number or short co... |\n| `from_` | string (E.164) | Yes | Sending address (+E.164 formatted phone number, alphanumeric... |\n| `text` | string | Yes | Message body (i.e., content) as a non-empty string. |\n| `messaging_profile_id` | string (UUID) | No | Unique identifier for a messaging profile. |\n| `media_urls` | array[string] | No | A list of media URLs. |\n| `webhook_url` | string (URL) | No | The URL where webhooks related to this message will be sent. |\n| ... | | | +7 optional params in [references/api-details.md](references/api-details.md) |\n\n```python\nresponse = client.messages.send(\n    to=\"+18445550001\",\n    from_=\"+18005550101\",\n    text=\"Hello from Telnyx!\",\n)\nprint(response.data)\n```\n\nPrimary response fields:\n- `response.data.id`\n- `response.data.to`\n- `response.data.from`\n- `response.data.text`\n- `response.data.sent_at`\n- `response.data.errors`\n\n### Send an SMS with an alphanumeric sender ID\n\nCommon sender variant that requires different request shape.\n\n`client.messages.send_with_alphanumeric_sender()` — `POST /messages/alphanumeric_sender_id`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `from_` | string (E.164) | Yes | A valid alphanumeric sender ID on the user's account. |\n| `to` | string (E.164) | Yes | Receiving address (+E.164 formatted phone number or short co... |\n| `text` | string | Yes | The message body. |\n| `messaging_profile_id` | string (UUID) | Yes | The messaging profile ID to use. |\n| `webhook_url` | string (URL) | No | Callback URL for delivery status updates. |\n| `webhook_failover_url` | string (URL) | No | Failover callback URL for delivery status updates. |\n| `use_profile_webhooks` | boolean | No | If true, use the messaging profile's webhook settings. |\n\n```python\nresponse = client.messages.send_with_alphanumeric_sender(\n    from_=\"MyCompany\",\n    messaging_profile_id=\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n    text=\"Hello from Telnyx!\",\n    to=\"+13125550001\",\n)\nprint(response.data)\n```\n\nPrimary response fields:\n- `response.data.id`\n- `response.data.to`\n- `response.data.from`\n- `response.data.text`\n- `response.data.sent_at`\n- `response.data.errors`\n\n---\n\n### Webhook Verification\n\nTelnyx signs webhooks with Ed25519. Each request includes `telnyx-signature-ed25519`\nand `telnyx-timestamp` headers. Always verify signatures in production:\n\n```python\n# In your webhook handler (e.g., Flask — use raw body, not parsed JSON):\n@app.route(\"/webhooks\", methods=[\"POST\"])\ndef handle_webhook():\n    payload = request.get_data(as_text=True)  # raw body as string\n    headers = dict(request.headers)\n    try:\n        event = client.webhooks.unwrap(payload, headers=headers)\n    except Exception as e:\n        print(f\"Webhook verification failed: {e}\")\n        return \"Invalid signature\", 400\n    # Signature valid — event is the parsed webhook payload\n    print(f\"Received event: {event.data.event_type}\")\n    return \"OK\", 200\n```\n\n## Webhooks\n\nThese webhook payload fields are inline because they are part of the primary integration path.\n\n### Delivery Update\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.event_type` | enum: message.sent, message.finalized | The type of event being delivered. |\n| `data.payload.id` | uuid | Identifies the type of resource. |\n| `data.payload.to` | array[object] |  |\n| `data.payload.text` | string | Message body (i.e., content) as a non-empty string. |\n| `data.payload.sent_at` | date-time | ISO 8601 formatted date indicating when the message was sent. |\n| `data.payload.completed_at` | date-time | ISO 8601 formatted date indicating when the message was finalized. |\n| `data.payload.cost` | object \\| null |  |\n| `data.payload.errors` | array[object] | These errors may point at addressees when referring to unsuccessful/unconfirm... |\n\n### Inbound Message\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.event_type` | enum: message.received | The type of event being delivered. |\n| `data.payload.id` | uuid | Identifies the type of resource. |\n| `data.payload.direction` | enum: inbound | The direction of the message. |\n| `data.payload.to` | array[object] |  |\n| `data.payload.text` | string | Message body (i.e., content) as a non-empty string. |\n| `data.payload.type` | enum: SMS, MMS | The type of message. |\n| `data.payload.media` | array[object] |  |\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n\nIf you need webhook fields that are not listed inline here, read [the webhook payload reference](references/api-details.md#webhook-payload-fields) before writing the handler.\n\n---\n\n## Important Supporting Operations\n\nUse these when the core tasks above are close to your flow, but you need a common variation or follow-up step.\n\n### Send a group MMS message\n\nSend one MMS payload to multiple recipients.\n\n`client.messages.send_group_mms()` — `POST /messages/group_mms`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `from_` | string (E.164) | Yes | Phone number, in +E.164 format, used to send the message. |\n| `to` | array[object] | Yes | A list of destinations. |\n| `media_urls` | array[string] | No | A list of media URLs. |\n| `webhook_url` | string (URL) | No | The URL where webhooks related to this message will be sent. |\n| `webhook_failover_url` | string (URL) | No | The failover URL where webhooks related to this message will... |\n| ... | | | +3 optional params in [references/api-details.md](references/api-details.md) |\n\n```python\nresponse = client.messages.send_group_mms(\n    from_=\"+13125551234\",\n    to=[\"+18655551234\", \"+14155551234\"],\n    text=\"Hello from Telnyx!\",\n)\nprint(response.data)\n```\n\nPrimary response fields:\n- `response.data.id`\n- `response.data.to`\n- `response.data.from`\n- `response.data.type`\n- `response.data.direction`\n- `response.data.text`\n\n### Send a long code message\n\nForce a long-code sending path instead of the generic send endpoint.\n\n`client.messages.send_long_code()` — `POST /messages/long_code`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `from_` | string (E.164) | Yes | Phone number, in +E.164 format, used to send the message. |\n| `to` | string (E.164) | Yes | Receiving address (+E.164 formatted phone number or short co... |\n| `media_urls` | array[string] | No | A list of media URLs. |\n| `webhook_url` | string (URL) | No | The URL where webhooks related to this message will be sent. |\n| `webhook_failover_url` | string (URL) | No | The failover URL where webhooks related to this message will... |\n| ... | | | +6 optional params in [references/api-details.md](references/api-details.md) |\n\n```python\nresponse = client.messages.send_long_code(\n    from_=\"+18445550001\",\n    to=\"+13125550002\",\n    text=\"Hello from Telnyx!\",\n)\nprint(response.data)\n```\n\nPrimary response fields:\n- `response.data.id`\n- `response.data.to`\n- `response.data.from`\n- `response.data.type`\n- `response.data.direction`\n- `response.data.text`\n\n### Send a message using number pool\n\nLet a messaging profile or number pool choose the sender for you.\n\n`client.messages.send_number_pool()` — `POST /messages/number_pool`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `messaging_profile_id` | string (UUID) | Yes | Unique identifier for a messaging profile. |\n| `to` | string (E.164) | Yes | Receiving address (+E.164 formatted phone number or short co... |\n| `media_urls` | array[string] | No | A list of media URLs. |\n| `webhook_url` | string (URL) | No | The URL where webhooks related to this message will be sent. |\n| `webhook_failover_url` | string (URL) | No | The failover URL where webhooks related to this message will... |\n| ... | | | +6 optional params in [references/api-details.md](references/api-details.md) |\n\n```python\nresponse = client.messages.send_number_pool(\n    messaging_profile_id=\"abc85f64-5717-4562-b3fc-2c9600000000\",\n    to=\"+13125550002\",\n    text=\"Hello from Telnyx!\",\n)\nprint(response.data)\n```\n\nPrimary response fields:\n- `response.data.id`\n- `response.data.to`\n- `response.data.from`\n- `response.data.type`\n- `response.data.direction`\n- `response.data.text`\n\n### Send a short code message\n\nForce a short-code sending path when the sender must be a short code.\n\n`client.messages.send_short_code()` — `POST /messages/short_code`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `from_` | string (E.164) | Yes | Phone number, in +E.164 format, used to send the message. |\n| `to` | string (E.164) | Yes | Receiving address (+E.164 formatted phone number or short co... |\n| `media_urls` | array[string] | No | A list of media URLs. |\n| `webhook_url` | string (URL) | No | The URL where webhooks related to this message will be sent. |\n| `webhook_failover_url` | string (URL) | No | The failover URL where webhooks related to this message will... |\n| ... | | | +6 optional params in [references/api-details.md](references/api-details.md) |\n\n```python\nresponse = client.messages.send_short_code(\n    from_=\"+18445550001\",\n    to=\"+18445550001\",\n    text=\"Hello from Telnyx!\",\n)\nprint(response.data)\n```\n\nPrimary response fields:\n- `response.data.id`\n- `response.data.to`\n- `response.data.from`\n- `response.data.type`\n- `response.data.direction`\n- `response.data.text`\n\n### Schedule a message\n\nQueue a message for future delivery instead of sending immediately.\n\n`client.messages.schedule()` — `POST /messages/schedule`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `to` | string (E.164) | Yes | Receiving address (+E.164 formatted phone number or short co... |\n| `messaging_profile_id` | string (UUID) | No | Unique identifier for a messaging profile. |\n| `media_urls` | array[string] | No | A list of media URLs. |\n| `webhook_url` | string (URL) | No | The URL where webhooks related to this message will be sent. |\n| ... | | | +8 optional params in [references/api-details.md](references/api-details.md) |\n\n```python\nresponse = client.messages.schedule(\n    to=\"+18445550001\",\n    from_=\"+18005550101\",\n    text=\"Appointment reminder\",\n    send_at=\"2025-07-01T15:00:00Z\",\n)\nprint(response.data)\n```\n\nPrimary response fields:\n- `response.data.id`\n- `response.data.to`\n- `response.data.from`\n- `response.data.type`\n- `response.data.direction`\n- `response.data.text`\n\n### Send a WhatsApp message\n\nSend WhatsApp traffic instead of SMS/MMS.\n\n`client.messages.send_whatsapp()` — `POST /messages/whatsapp`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `from_` | string (E.164) | Yes | Phone number in +E.164 format associated with Whatsapp accou... |\n| `to` | string (E.164) | Yes | Phone number in +E.164 format |\n| `whatsapp_message` | object | Yes |  |\n| `type_` | enum (WHATSAPP) | No | Message type - must be set to \"WHATSAPP\" |\n| `webhook_url` | string (URL) | No | The URL where webhooks related to this message will be sent. |\n\n```python\nresponse = client.messages.send_whatsapp(\n    from_=\"+13125551234\",\n    to=\"+13125551234\",\n    whatsapp_message={},\n)\nprint(response.data)\n```\n\nPrimary response fields:\n- `response.data.id`\n- `response.data.to`\n- `response.data.from`\n- `response.data.type`\n- `response.data.direction`\n- `response.data.body`\n\n---\n\n## Additional Operations\n\nUse the core tasks above first. The operations below are indexed here with exact SDK methods and required params; use [references/api-details.md](references/api-details.md) for full optional params, response schemas, and lower-frequency webhook payloads.\nBefore using any operation below, read [the optional-parameters section](references/api-details.md#optional-parameters) and [the response-schemas section](references/api-details.md#response-schemas) so you do not guess missing fields.\n\n| Operation | SDK method | Endpoint | Use when | Required params |\n|-----------|------------|----------|----------|-----------------|\n| Retrieve a message | `client.messages.retrieve()` | `GET /messages/{id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `id` |\n| Cancel a scheduled message | `client.messages.cancel_scheduled()` | `DELETE /messages/{id}` | Remove, detach, or clean up an existing resource. | `id` |\n| List alphanumeric sender IDs | `client.alphanumeric_sender_ids.list()` | `GET /alphanumeric_sender_ids` | Inspect available resources or choose an existing resource before mutating it. | None |\n| Create an alphanumeric sender ID | `client.alphanumeric_sender_ids.create()` | `POST /alphanumeric_sender_ids` | Create or provision an additional resource when the core tasks do not cover this flow. | `alphanumeric_sender_id`, `messaging_profile_id` |\n| Retrieve an alphanumeric sender ID | `client.alphanumeric_sender_ids.retrieve()` | `GET /alphanumeric_sender_ids/{id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `id` |\n| Delete an alphanumeric sender ID | `client.alphanumeric_sender_ids.delete()` | `DELETE /alphanumeric_sender_ids/{id}` | Remove, detach, or clean up an existing resource. | `id` |\n| Retrieve group MMS messages | `client.messages.retrieve_group_messages()` | `GET /messages/group/{message_id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `message_id` |\n| List messaging hosted numbers | `client.messaging_hosted_numbers.list()` | `GET /messaging_hosted_numbers` | Inspect available resources or choose an existing resource before mutating it. | None |\n| Retrieve a messaging hosted number | `client.messaging_hosted_numbers.retrieve()` | `GET /messaging_hosted_numbers/{id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `id` |\n| Update a messaging hosted number | `client.messaging_hosted_numbers.update()` | `PATCH /messaging_hosted_numbers/{id}` | Modify an existing resource without recreating it. | `id` |\n| List opt-outs | `client.messaging_optouts.list()` | `GET /messaging_optouts` | Inspect available resources or choose an existing resource before mutating it. | None |\n| List high-level messaging profile metrics | `client.messaging_profile_metrics.list()` | `GET /messaging_profile_metrics` | Inspect available resources or choose an existing resource before mutating it. | None |\n| Regenerate messaging profile secret | `client.messaging_profiles.actions.regenerate_secret()` | `POST /messaging_profiles/{id}/actions/regenerate_secret` | Trigger a follow-up action in an existing workflow rather than creating a new top-level resource. | `id` |\n| List alphanumeric sender IDs for a messaging profile | `client.messaging_profiles.list_alphanumeric_sender_ids()` | `GET /messaging_profiles/{id}/alphanumeric_sender_ids` | Fetch the current state before updating, deleting, or making control-flow decisions. | `id` |\n| Get detailed messaging profile metrics | `client.messaging_profiles.retrieve_metrics()` | `GET /messaging_profiles/{id}/metrics` | Fetch the current state before updating, deleting, or making control-flow decisions. | `id` |\n| List Auto-Response Settings | `client.messaging_profiles.autoresp_configs.list()` | `GET /messaging_profiles/{profile_id}/autoresp_configs` | Fetch the current state before updating, deleting, or making control-flow decisions. | `profile_id` |\n| Create auto-response setting | `client.messaging_profiles.autoresp_configs.create()` | `POST /messaging_profiles/{profile_id}/autoresp_configs` | Create or provision an additional resource when the core tasks do not cover this flow. | `op`, `keywords`, `country_code`, `profile_id` |\n| Get Auto-Response Setting | `client.messaging_profiles.autoresp_configs.retrieve()` | `GET /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `profile_id`, `autoresp_cfg_id` |\n| Update Auto-Response Setting | `client.messaging_profiles.autoresp_configs.update()` | `PUT /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}` | Modify an existing resource without recreating it. | `op`, `keywords`, `country_code`, `profile_id`, +1 more |\n| Delete Auto-Response Setting | `client.messaging_profiles.autoresp_configs.delete()` | `DELETE /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}` | Remove, detach, or clean up an existing resource. | `profile_id`, `autoresp_cfg_id` |\n\n### Other Webhook Events\n\n| Event | `data.event_type` | Description |\n|-------|-------------------|-------------|\n| `replacedLinkClick` | `message.link_click` | Replaced Link Click |\n\n---\n\nFor exhaustive optional parameters, full response schemas, and complete webhook payloads, see [references/api-details.md](references/api-details.md).","tags":["telnyx","messaging","python","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-messaging-python","topic-agent-skills","topic-ai-coding-agent","topic-claude-code","topic-cpaas","topic-cursor","topic-iot","topic-llm","topic-sdk","topic-sip","topic-sms","topic-speech-to-text","topic-telephony"],"categories":["ai"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/team-telnyx/ai/telnyx-messaging-python","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add team-telnyx/ai","source_repo":"https://github.com/team-telnyx/ai","install_from":"skills.sh"}},"qualityScore":"0.533","qualityRationale":"deterministic score 0.53 from registry signals: · indexed on github topic:agent-skills · 167 github stars · SKILL.md body (19,831 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T06:54:39.995Z","embedding":null,"createdAt":"2026-04-18T22:06:50.451Z","updatedAt":"2026-04-22T06:54:39.995Z","lastSeenAt":"2026-04-22T06:54:39.995Z","tsv":"'+1':2162 '+13125550001':171,607 '+13125550002':1157,1288 '+13125551234':1028,1614,1616 '+14155551234':1031 '+18005550101':83,459,1515 '+18445550001':81,457,1155,1414,1416,1513 '+18655551234':1030 '+3':1016 '+6':1143,1267,1402 '+7':447 '+8':1503 '-01':1523 '-07':1522 '-4562':1283 '-5717':1282 '/actions/regenerate_secret':1969 '/alphanumeric_sender_ids':1751,1771,1800,1823,2005 '/autoresp_configs':2055,2081,2113,2145,2174 '/messages':367,1711,1734 '/messages/alphanumeric_sender_id':497 '/messages/group':1842 '/messages/group_mms':947 '/messages/long_code':1069 '/messages/number_pool':1195 '/messages/schedule':1447 '/messages/short_code':1328 '/messages/whatsapp':1551 '/messaging_hosted_numbers':1866,1886,1909 '/messaging_optouts':1925 '/messaging_profile_metrics':1947 '/messaging_profiles':1967,2003,2028,2052,2078,2110,2142,2171 '/metrics':2030 '/webhooks':658 '00':1525 '00z':1526 '1':102 '10dlc':232 '182bd5e5':597 '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e':596 '200':713 '2025':1521 '2c9600000000':1286 '400':696 '401':67,137 '403':141 '404':144 '422':63,125,148 '429':60,154 '4fe4':599 '6e1a':598 '8601':774,789 'a2p':225 'a799':600 'aa6d9a6ab26e':601 'abc85f64':1281 'accept':254 'accou':1568 'account':515 'action':1975 'actual':109 'addit':303,1630,1776,2086 'address':377,390,521,1093,1217,1352,1457 'addresse':809 'agent':354 'alphanumer':395,481,494,508,589,1746,1766,1787,1795,1818,1991,1999 'alreadi':43,210 'alway':68,639 'api':23,27,51,117,139 'app.route':657 'appoint':1517 'array':423,754,802,845,868,967,976,1103,1227,1362,1479 'assign':212 'associ':1565 'assum':40 'asynchron':248 'authent':65 'auto':189,2047,2073,2105,2137,2166 'auto-pagin':188 'auto-respons':2046,2072,2104,2136,2165 'automat':203 'autoresp':2114,2132,2146,2175,2188 'avail':1753,1868,1927,1949 'b3fc':1285 'b3fc-2c9600000000':1284 'backoff':160 'bash':9 'beyond':331 'block':240 'bodi':400,534,653,671,759,850 'boolean':574 'call':52 'callback':552,565 'cancel':1727 'carrier':238,260 'caveat':205 'cfg':2115,2133,2147,2176,2189 'check':93,103,129,151 'choos':1186,1756,1871,1930,1952 'clean':1739,1828,2181 'click':2200,2203 'client':21,41 'client.alphanumeric_sender_ids.create':1769 'client.alphanumeric_sender_ids.delete':1821 'client.alphanumeric_sender_ids.list':1749 'client.alphanumeric_sender_ids.retrieve':1798 'client.messages.cancel':1731 'client.messages.retrieve':1709,1838 'client.messages.schedule':1445,1511 'client.messages.send':79,365,455,492,587,943,1024,1065,1151,1191,1275,1324,1410,1548,1611 'client.messaging_hosted_numbers.list':1864 'client.messaging_hosted_numbers.retrieve':1884 'client.messaging_hosted_numbers.update':1907 'client.messaging_optouts.list':1923 'client.messaging_profile_metrics.list':1945 'client.messaging_profiles.actions.regenerate':1964 'client.messaging_profiles.autoresp_configs.create':2076 'client.messaging_profiles.autoresp_configs.delete':2169 'client.messaging_profiles.autoresp_configs.list':2050 'client.messaging_profiles.autoresp_configs.retrieve':2108 'client.messaging_profiles.autoresp_configs.update':2140 'client.messaging_profiles.list':1998 'client.messaging_profiles.retrieve':2025 'client.webhooks.unwrap':679 'close':916 'co':384,528,1100,1224,1359,1464 'code':73,120,124,136,177,228,297,1050,1056,1067,1153,1307,1313,1323,1326,1412,2100,2159 'common':134,484,924 'complet':231,2212 'connect':94 'content':402,761,852 'control':1723,1812,1855,1898,2016,2041,2066,2127 'control-flow':1722,1811,1854,1897,2015,2040,2065,2126 'core':345,912,1634,1780,2090 'correct':215 'countri':176,2099,2158 'cover':1784,2094 'creat':1764,1772,1982,2071,2082 'current':1715,1804,1847,1890,2008,2033,2058,2119 'dash':180 'data':666 'data.event':735,819,2195 'data.payload.completed':783 'data.payload.cost':798 'data.payload.direction':836 'data.payload.errors':801 'data.payload.id':746,829 'data.payload.media':867 'data.payload.sent':768 'data.payload.text':756,847 'data.payload.to':753,844 'data.payload.type':859 'data.record':870 'date':771,776,786,791 'date-tim':770,785 'decis':1725,1814,1857,1900,2018,2043,2068,2129 'def':661 'default':32 'delay':110 'delet':1719,1733,1808,1816,1822,1851,1894,2012,2037,2062,2123,2164,2170 'deliv':745,828 'deliveri':245,261,361,555,568,730,1440 'delivery-rel':360 'descript':371,501,734,818,951,1073,1199,1332,1451,1555,2197 'destin':973 'detach':1737,1826,2179 'detail':2021 'dict':675 'differ':489 'direct':840 'e':114,686,692 'e.164':168,374,378,387,391,504,518,522,954,959,1076,1081,1090,1094,1214,1218,1335,1340,1349,1353,1454,1458,1558,1563,1571,1576 'e.g':170,649 'e.message':121 'e.status':119,123 'ed25519':626,633 'empti':407,766,857 'endpoint':1064,1701 'enum':270,279,737,821,837,860,872,1583 'error':48,57,62,66,70,92,118,128,135,150,805 'event':678,699,708,743,826,873,2193,2194 'event.data.event':709 'exact':356,1645 'exampl':38,334 'except':88,97,111,683,684 'exhaust':2205 'exist':1742,1758,1831,1873,1913,1932,1954,1978,2151,2184 'exponenti':159 'f':116,688,706 'fail':54,691 'failov':559,564,1001,1007,1128,1134,1252,1258,1387,1393 'fetch':1713,1802,1845,1888,2006,2031,2056,2117 'field':131,152,272,275,282,330,344,358,364,468,612,718,732,816,884,900,1040,1166,1297,1425,1531,1623,1697 'filter':243 'final':259,797 'first':1637 'flask':650 'flow':353,919,1724,1786,1813,1856,1899,2017,2042,2067,2096,2128 'follow':928,1973 'follow-up':927,1972 'forc':1052,1309 'format':133,153,169,379,392,523,775,790,960,1082,1095,1219,1341,1354,1459,1564,1577 'found':147 'frequenc':1663 'full':1655,2208 'futur':1439 'generic':1062 'get':1710,1750,1799,1841,1865,1885,1924,1946,2002,2020,2027,2051,2103,2109 'group':933,944,1025,1835,1839 'guess':1695 'handl':49,69,662 'handler':648,904 'header':107,638,674,681,682 'heavili':242 'hello':85,461,603,1033,1159,1290,1418 'high':1940 'high-level':1939 'host':1862,1882,1905 'i.e':401,760,851 'id':411,483,510,537,544,595,1202,1280,1467,1712,1726,1735,1744,1748,1768,1789,1792,1797,1801,1815,1820,1824,1833,1844,1859,1887,1901,1910,1918,1968,1989,1993,2001,2004,2019,2029,2044,2054,2070,2080,2102,2112,2116,2131,2134,2144,2148,2161,2173,2177,2187,2190 'identifi':416,748,831,874,1207,1472 'immedi':1444 'import':15,19,75,99,161,905 'inbound':814,838 'includ':172,629 'index':1642 'indic':777,792 'initi':44 'inlin':288,333,720,889 'inspect':1752,1867,1926,1948 'instal':8,11 'instead':1059,1441,1545 'insuffici':142 'integr':728 'invalid':138,694 'invent':267 'iso':773,788 'item':194 'iter':191,199 'json':656 'key':24,28,140 'keyword':2098,2157 'let':1179 'level':1941,1987 'limit':59,156 'link':2202 'list':184,427,888,971,980,1107,1231,1366,1483,1745,1860,1919,1938,1990,2045 'long':227,1049,1055,1066,1152 'long-cod':226,1054 'lower':1662 'lower-frequ':1661 'make':1721,1810,1853,1896,2014,2039,2064,2125 'match':328 'may':806 'media':421,429,974,982,1101,1109,1225,1233,1360,1368,1477,1485 'messag':3,6,216,244,352,399,409,419,443,533,535,542,580,593,758,780,795,815,843,849,866,935,965,996,1014,1051,1087,1123,1141,1175,1181,1200,1210,1247,1265,1278,1308,1346,1382,1400,1434,1437,1465,1475,1499,1541,1579,1586,1605,1618,1708,1730,1790,1837,1840,1843,1858,1861,1881,1904,1942,1961,1996,2022 'message.finalized':739 'message.link':2199 'message.received':822 'message.sent':738 'method':185,659,1647,1700 'metric':1944,2024,2026 'miss':1696 'mms':862,934,938,945,1026,1836 'modifi':1911,2149 'multipl':941 'must':165,209,230,1319,1588 'mutat':1761,1876,1935,1957 'mycompani':592 'need':284,355,882,922 'network':56,91 'new':1984 'non':406,765,856 'non-empti':405,764,855 'none':1763,1878,1937,1959 'note':162 'null':800 'number':164,208,381,394,525,957,1079,1097,1177,1184,1192,1221,1276,1338,1356,1461,1561,1574,1863,1883,1906 'object':755,799,803,846,869,968,1580 'ok':712 'omit':36 'one':937 'op':2097,2156 'oper':204,301,304,907,1631,1639,1669,1698 'opt':1921 'opt-out':1920 'option':308,313,448,1017,1144,1268,1403,1504,1656,1674,1679,2206 'optional-paramet':307,312,1673,1678 'os':16 'os.environ.get':25 'out':1922 'outbound':351 'page':196,202 'pagin':183,190 'param':449,1018,1145,1269,1404,1505,1650,1657,1705 'paramet':269,278,309,314,368,498,948,1070,1196,1329,1448,1552,1675,1680,2207 'parenthes':182 'pars':655,702 'part':724 'patch':1908 'path':729,1058,1315 'payload':338,343,664,680,704,717,894,899,939,1665,2214 'permiss':143 'phone':163,380,393,524,956,1078,1096,1220,1337,1355,1460,1560,1573 'pip':10 'point':807 'pool':1178,1185,1193,1277 'post':366,496,660,946,1068,1194,1327,1446,1550,1770,1966,2077 'prefix':174 'primari':350,466,610,727,1038,1164,1295,1423,1529,1621 'print':90,115,126,464,608,687,705,1036,1162,1293,1421,1527,1619 'product':72,235,643 'profil':217,410,420,536,543,572,581,594,1182,1201,1211,1279,1466,1476,1791,1943,1962,1997,2023,2053,2069,2079,2101,2111,2130,2143,2160,2172,2186 'provis':1774,2084 'put':2141 'python':4,7,14,74,453,585,644,1022,1149,1273,1408,1509,1609 'queue':1435 'rate':58,155 'rather':1980 'raw':652,670 'read':292,305,326,335,891,1671 'receiv':376,520,707,1092,1216,1351,1456 'recipi':942 'recreat':1916,2154 'refer':262,339,811,895 'references/api-details.md':293,294,311,321,340,451,452,896,1020,1021,1147,1148,1271,1272,1406,1407,1507,1508,1652,1653,1677,1687,2216,2217 'regener':1960 'registr':233 'relat':362,440,993,1011,1120,1138,1244,1262,1379,1397,1496,1602 'remind':1518 'remov':1736,1825,2178 'replac':2201 'replacedlinkclick':2198 'request':257,357,490,628 'request.get':665 'request.headers':676 'requir':130,370,488,500,950,1072,1198,1331,1450,1554,1649,1704 'resourc':145,752,835,879,1743,1754,1759,1777,1832,1869,1874,1914,1928,1933,1950,1955,1988,2087,2152,2185 'respons':78,252,271,281,318,323,363,454,467,586,611,1023,1039,1150,1165,1274,1296,1409,1424,1510,1530,1610,1622,1658,1684,1689,2048,2074,2106,2138,2167,2209 'response-schema':317,322,1683,1688 'response.data':465,609,1037,1163,1294,1422,1528,1620 'response.data.body':1629 'response.data.direction':1045,1171,1302,1430,1536,1628 'response.data.errors':475,619 'response.data.from':471,615,1043,1169,1300,1428,1534,1626 'response.data.id':469,613,1041,1167,1298,1426,1532,1624 'response.data.sent':473,617 'response.data.text':472,616,1046,1172,1303,1431,1537 'response.data.to':470,614,1042,1168,1299,1427,1533,1625 'response.data.type':1044,1170,1301,1429,1535,1627 'result':197 'retri':96,105,157 'retriev':1706,1793,1834,1879 'retry-aft':104 'return':186,693,711 'rule':264 'schedul':1432,1729,1732 'schema':319,324,1659,1685,1690,2210 'sdk':1646,1699 'secret':1963,1965 'section':310,320,1676,1686 'see':2215 'send':207,220,236,251,347,389,476,931,936,963,1047,1057,1063,1085,1173,1304,1314,1344,1443,1519,1538,1542 'sender':482,485,495,509,590,1188,1318,1747,1767,1788,1796,1819,1992,2000 'sent':446,782,999,1126,1250,1385,1502,1608 'set':584,1590,2049,2075,2107,2139,2168 'setup':13 'shape':491 'short':383,527,1099,1223,1306,1312,1322,1325,1358,1411,1463 'short-cod':1311 'shown':46,287 'sign':623 'signatur':632,641,695,697 'skill':291 'skill-telnyx-messaging-python' 'sms':349,478,861 'sms/mms':1547 'source-team-telnyx' 'space':179 'state':1716,1805,1848,1891,2009,2034,2059,2120 'status':556,569 'step':930 'string':373,386,397,408,412,424,433,503,517,530,538,549,561,673,757,767,848,858,953,977,986,1003,1075,1089,1104,1113,1130,1203,1213,1228,1237,1254,1334,1348,1363,1372,1389,1453,1468,1480,1489,1557,1570,1595 'support':906 't15':1524 'task':346,913,1635,1781,2091 'telnyx':2,5,12,18,20,22,26,76,87,268,463,605,622,631,636,1035,1161,1292,1420 'telnyx-messaging-python':1 'telnyx-signature-ed25519':630 'telnyx-timestamp':635 'telnyx.apiconnectionerror':89 'telnyx.apistatuserror':112 'telnyx.ratelimiterror':98 'text':84,396,460,529,602,668,1032,1158,1289,1417,1516 'time':100,772,787 'time.sleep':101 'timestamp':637 'top':1986 'top-level':1985 'topic-agent-skills' 'topic-ai-coding-agent' 'topic-claude-code' 'topic-cpaas' 'topic-cursor' 'topic-iot' 'topic-llm' 'topic-sdk' 'topic-sip' 'topic-sms' 'topic-speech-to-text' 'topic-telephony' 'traffic':221,229,1544 'treat':249 'tri':77,677 'trigger':1970 'true':577,669 'type':369,499,710,733,736,741,750,817,820,824,833,864,871,876,949,1071,1197,1330,1449,1553,1582,1587,2196 'uniqu':415,1206,1471 'unsuccessful/unconfirm':813 'updat':557,570,731,1718,1807,1850,1893,1902,2011,2036,2061,2122,2135 'url':422,430,432,434,437,548,550,553,560,562,566,975,983,985,987,990,1002,1004,1008,1102,1110,1112,1114,1117,1129,1131,1135,1226,1234,1236,1238,1241,1253,1255,1259,1361,1369,1371,1373,1376,1388,1390,1394,1478,1486,1488,1490,1493,1594,1596,1599 'us':224 'use':192,263,299,546,571,578,651,908,961,1083,1176,1342,1632,1651,1667,1702 'user':513 'uuid':413,539,747,830,1204,1469 'valid':61,127,149,507,698 'variant':486 'variat':925 'verif':621,690 'verifi':640 'webhook':246,274,329,337,342,431,439,547,558,573,583,620,624,647,663,689,703,714,716,883,893,898,984,992,1000,1010,1111,1119,1127,1137,1235,1243,1251,1261,1370,1378,1386,1396,1487,1495,1593,1601,1664,2192,2213 'webhook-payload-field':341,897 'whatsapp':1540,1543,1549,1567,1578,1584,1592,1612,1617 'without':1915,2153 'workflow':1979 'write':296,902 'yes':375,388,398,505,519,531,540,955,969,1077,1091,1205,1215,1336,1350,1455,1559,1572,1581","prices":[{"id":"afbf575d-0089-4e98-98ee-af04d16cb20d","listingId":"fa79fa1c-4e40-402b-a7d8-b3651ae0d83c","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"team-telnyx","category":"ai","install_from":"skills.sh"},"createdAt":"2026-04-18T22:06:50.451Z"}],"sources":[{"listingId":"fa79fa1c-4e40-402b-a7d8-b3651ae0d83c","source":"github","sourceId":"team-telnyx/ai/telnyx-messaging-python","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-messaging-python","isPrimary":false,"firstSeenAt":"2026-04-18T22:06:50.451Z","lastSeenAt":"2026-04-22T06:54:39.995Z"}],"details":{"listingId":"fa79fa1c-4e40-402b-a7d8-b3651ae0d83c","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-messaging-python","github":{"repo":"team-telnyx/ai","stars":167,"topics":["agent-skills","ai","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk","sip","sms","speech-to-text","telephony","telnyx","tts","twilio-migration","voice-agents","voice-ai","webrtc","windsurf"],"license":"mit","html_url":"https://github.com/team-telnyx/ai","pushed_at":"2026-04-21T22:09:49Z","description":"Official one-stop shop for AI Agents and developers building with Telnyx.","skill_md_sha":"2c6d73f6f7bd3a433656b2e34ec1d74d0d157912","skill_md_path":"skills/telnyx-messaging-python/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-messaging-python"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-messaging-python","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-messaging-python"},"updatedAt":"2026-04-22T06:54:39.995Z"}}