{"id":"dd7a4112-7019-4168-94d6-12b1d87313e8","shortId":"SkKbBj","kind":"skill","title":"telnyx-whatsapp-python","tagline":">-","description":"# Telnyx WhatsApp Business API - 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\"),\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_whatsapp(\n        from_=\"+19452940762\",\n        to=\"+18005551234\",\n        type_=\"WHATSAPP\",\n        whatsapp_message={\n            \"type\": \"text\",\n            \"text\": {\"body\": \"Hello from Telnyx!\"}\n        },\n    )\nexcept telnyx.APIError as e:\n    print(f\"API error: {e.status_code} - {e.message}\")\nexcept telnyx.AuthenticationError:\n    print(\"Invalid API key\")\nexcept telnyx.RateLimitError:\n    print(\"Rate limited - retry with backoff\")\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### WhatsApp-Specific Errors\n\n- **40008** — Meta catch-all error. Check template parameters, phone number formatting, and 24-hour window rules.\n- **131047** — Message failed to send during the 24-hour window. The customer hasn't messaged you first (for non-template messages).\n- **131026** — Recipient phone number is not a WhatsApp user.\n- **132000** — Template parameter count mismatch. Ensure the number of parameters matches the template definition.\n- **132015** — Template paused or disabled by Meta due to quality issues.\n\n## Important Notes\n\n- **Phone numbers** must be in E.164 format (e.g., `+13125550001`). Include the `+` prefix and country code.\n- **Template messages** can be sent anytime. Free-form (session) messages can only be sent within a 24-hour window after the customer last messaged you.\n- **Template IDs**: You can reference templates by Telnyx UUID (`template_id`) instead of `name` + `language`. When `template_id` is provided, name and language are resolved automatically.\n- **Pagination:** List endpoints return paginated results. Use the auto-iterator pattern: `for item in response.auto_paging_iter()`.\n\n## Operational Caveats\n\n- The sending phone number must be registered with a WhatsApp Business Account (WABA) and associated with a messaging profile.\n- Templates must be in `APPROVED` status before they can be used for sending.\n- Template names must be lowercase with underscores only (e.g., `order_confirmation`). No spaces, hyphens, or uppercase.\n- When creating templates, provide realistic sample values for body parameters — Meta reviewers check these during approval.\n- Category selection matters for billing: `AUTHENTICATION` templates get special pricing but must contain an OTP. `UTILITY` is for transactional messages. `MARKETING` for promotional content.\n- Meta may reclassify your template category (e.g., UTILITY to MARKETING) which affects billing.\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 a WhatsApp template message\n\nSend a pre-approved template message. Templates can be sent anytime — no 24-hour window restriction.\n\n`client.messages.send_whatsapp()` — `POST /messages/whatsapp`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `from_` | string (E.164) | Yes | WhatsApp-enabled phone number in +E.164 format |\n| `to` | string (E.164) | Yes | Recipient phone number in +E.164 format |\n| `type_` | string | No | Must be `WHATSAPP` |\n| `whatsapp_message` | object | Yes | WhatsApp message object |\n| `messaging_profile_id` | string (UUID) | No | Messaging profile to use |\n| `webhook_url` | string (URL) | No | Callback URL for delivery status updates |\n\n```python\n# Send by template name + language\nresponse = client.messages.send_whatsapp(\n    from_=\"+19452940762\",\n    to=\"+18005551234\",\n    type_=\"WHATSAPP\",\n    whatsapp_message={\n        \"type\": \"template\",\n        \"template\": {\n            \"name\": \"order_confirmation\",\n            \"language\": {\"code\": \"en_US\"},\n            \"components\": [\n                {\n                    \"type\": \"body\",\n                    \"parameters\": [\n                        {\"type\": \"text\", \"text\": \"ORD-12345\"},\n                        {\"type\": \"text\", \"text\": \"March 15, 2026\"},\n                    ],\n                }\n            ],\n        },\n    },\n)\nprint(response.data.id)\n```\n\n```python\n# Send by Telnyx template_id (no name/language needed)\nresponse = client.messages.send_whatsapp(\n    from_=\"+19452940762\",\n    to=\"+18005551234\",\n    type_=\"WHATSAPP\",\n    whatsapp_message={\n        \"type\": \"template\",\n        \"template\": {\n            \"template_id\": \"019cd44b-3a1c-781b-956e-bd33e9fd2ac6\",\n            \"components\": [\n                {\n                    \"type\": \"body\",\n                    \"parameters\": [{\"type\": \"text\", \"text\": \"483291\"}],\n                }\n            ],\n        },\n    },\n)\n```\n\nPrimary response fields:\n- `response.data.id` — Message UUID\n- `response.data.to[0].status` — `queued`, `sent`, `delivered`, `failed`\n- `response.data.from_.phone_number`\n- `response.data.type` — `WHATSAPP`\n\n### Send a free-form WhatsApp text message\n\nSend a text message within the 24-hour customer service window.\n\n`client.messages.send_whatsapp()` — `POST /messages/whatsapp`\n\n```python\nresponse = client.messages.send_whatsapp(\n    from_=\"+19452940762\",\n    to=\"+18005551234\",\n    type_=\"WHATSAPP\",\n    whatsapp_message={\n        \"type\": \"text\",\n        \"text\": {\"body\": \"Your order has shipped!\"},\n    },\n)\n```\n\n### List WhatsApp Business Accounts\n\n`client.whatsapp.business_accounts.list()` — `GET /v2/whatsapp/business_accounts`\n\n```python\nresponse = client.whatsapp.business_accounts.list()\nfor waba in response.data:\n    print(f\"{waba.id}: {waba.name} ({waba.status})\")\n```\n\nPrimary response fields:\n- `waba.id` — Telnyx WABA UUID\n- `waba.waba_id` — Meta WABA ID\n- `waba.name` — Business name\n- `waba.status` — Account status\n- `waba.country` — WABA country\n\n### List templates\n\n`client.whatsapp.templates.list()` — `GET /v2/whatsapp/message_templates`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `waba_id` | string (UUID) | No | Filter by Telnyx WABA UUID (query parameter) |\n| `category` | string | No | Filter: `AUTHENTICATION`, `MARKETING`, `UTILITY` |\n| `status` | string | No | Filter: `APPROVED`, `PENDING`, `REJECTED`, `DISABLED` |\n\n```python\nresponse = client.whatsapp.templates.list(\n    waba_id=\"019c1ff0-5c30-7f36-8436-730b1d0b0e56\",\n    status=\"APPROVED\",\n)\nfor tmpl in response.data:\n    print(f\"{tmpl.id}: {tmpl.name} ({tmpl.category}) - {tmpl.status}\")\n```\n\nPrimary response fields:\n- `tmpl.id` — Telnyx template UUID (use as `template_id` when sending)\n- `tmpl.name` — Template name\n- `tmpl.category` — `AUTHENTICATION`, `MARKETING`, or `UTILITY`\n- `tmpl.language` — Language code\n- `tmpl.status` — `APPROVED`, `PENDING`, `REJECTED`, `DISABLED`\n- `tmpl.components` — Template components\n\n### Create a message template\n\n`client.whatsapp.templates.create()` — `POST /v2/whatsapp/message_templates`\n\n```python\nresponse = client.whatsapp.templates.create(\n    waba_id=\"019c1ff0-5c30-7f36-8436-730b1d0b0e56\",\n    name=\"order_shipped\",\n    category=\"UTILITY\",\n    language=\"en_US\",\n    components=[\n        {\n            \"type\": \"BODY\",\n            \"text\": \"Your order {{1}} has been shipped and will arrive by {{2}}.\",\n            \"example\": {\n                \"body_text\": [[\"ORD-12345\", \"March 20, 2026\"]]\n            },\n        }\n    ],\n)\nprint(f\"Template created: {response.data.id} (status: {response.data.status})\")\n```\n\n### List phone numbers\n\n`client.whatsapp.phone_numbers.list()` — `GET /v2/whatsapp/phone_numbers`\n\n```python\nresponse = client.whatsapp.phone_numbers.list(\n    waba_id=\"019c1ff0-5c30-7f36-8436-730b1d0b0e56\",\n)\nfor pn in response.data:\n    print(f\"{pn.phone_number} - quality: {pn.quality_rating}\")\n```\n\n---\n\n### Webhook Verification\n\nTelnyx signs webhooks with Ed25519. Always verify signatures in production:\n\n```python\nfrom telnyx.webhooks import Webhook\n\nevent = Webhook.construct_event(\n    payload=request.body,\n    sig_header=request.headers[\"telnyx-signature-ed25519\"],\n    timestamp=request.headers[\"telnyx-timestamp\"],\n    public_key=TELNYX_PUBLIC_KEY,\n)\n```\n\n## Webhooks\n\nThese webhook payload fields are inline because they are part of the primary integration path.\n\n### Message Delivery Update\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.event_type` | enum: message.sent, message.finalized | Delivery status event |\n| `data.payload.id` | uuid | Message ID |\n| `data.payload.to[0].status` | string | `queued`, `sent`, `delivered`, `read`, `failed` |\n| `data.payload.template_id` | string | Telnyx template UUID (if template message) |\n| `data.payload.template_name` | string | Template name (if template message) |\n\n### Template Status Change\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `event_type` | string | `whatsapp.template.approved`, `whatsapp.template.rejected`, `whatsapp.template.disabled` |\n| `payload.template_id` | string | Telnyx template UUID |\n| `payload.template_name` | string | Template name |\n| `payload.status` | string | New template status |\n| `payload.reason` | string | Rejection/disable reason |\n\n## Template Best Practices\n\n- **Naming**: Use lowercase with underscores. Be descriptive (e.g., `appointment_reminder`, not `msg1`).\n- **Sample values**: Provide realistic examples in the `example` field — Meta reviewers check these.\n- **Category selection**:\n  - `AUTHENTICATION` — OTP/verification codes only. Gets special pricing.\n  - `UTILITY` — Transactional (order updates, shipping, account alerts).\n  - `MARKETING` — Promotional content, offers, newsletters.\n- **Keep it concise**: Meta prefers shorter templates. Avoid unnecessary formatting.\n- **Parameters**: Use `{{1}}`, `{{2}}`, etc. for variable content. Always provide the correct number of parameters when sending.\n\n## Important Supporting Operations\n\n| Operation | SDK Method | Use Case |\n|-----------|-----------|----------|\n| Get template details | `client.whatsapp_message_templates.retrieve()` | Check template status |\n| Get business profile | `client.whatsapp.phone_numbers.profile.retrieve()` | View business profile |\n| Update WABA settings | `client.whatsapp.business_accounts.settings.update()` | Configure webhook URL and events |\n\n## Additional Operations\n\n| Operation | SDK Method | Endpoint | Required Params |\n|-----------|-----------|----------|-----------------|\n| Send WhatsApp message | `client.messages.send_whatsapp()` | `POST /messages/whatsapp` | `from_`, `to`, `whatsapp_message` |\n| List WABAs | `client.whatsapp.business_accounts.list()` | `GET /v2/whatsapp/business_accounts` | — |\n| Get WABA | `client.whatsapp.business_accounts.retrieve()` | `GET /v2/whatsapp/business_accounts/{id}` | `waba_id` |\n| List templates | `client.whatsapp.templates.list()` | `GET /v2/whatsapp/message_templates` | — |\n| Get template | `client.whatsapp_message_templates.retrieve()` | `GET /v2/whatsapp_message_templates/{id}` | `template_id` |\n| Create template | `client.whatsapp.templates.create()` | `POST /v2/whatsapp/message_templates` | `waba_id`, `name`, `category`, `language`, `components` |\n| List phone numbers | `client.whatsapp.phone_numbers.list()` | `GET /v2/whatsapp/phone_numbers` | — |\n| Get WABA settings | `client.whatsapp.business_accounts.settings.retrieve()` | `GET /v2/whatsapp/business_accounts/{id}/settings` | `waba_id` |\n| Update WABA settings | `client.whatsapp.business_accounts.settings.update()` | `PATCH /v2/whatsapp/business_accounts/{id}/settings` | `waba_id` |","tags":["telnyx","whatsapp","python","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-whatsapp-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-whatsapp-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 (12,429 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-22T00:54:56.957Z","embedding":null,"createdAt":"2026-04-18T22:08:54.268Z","updatedAt":"2026-04-22T00:54:56.957Z","lastSeenAt":"2026-04-22T00:54:56.957Z","tsv":"'+13125550001':229 '+18005551234':78,592,639,711 '+19452940762':76,590,637,709 '-12345':615,902 '-730':810,873,929 '/messages/whatsapp':519,703,1194 '/settings':1249,1259 '/v2/whatsapp/business_accounts':730,1203,1208,1247,1257 '/v2/whatsapp/message_templates':768,862,1216,1229 '/v2/whatsapp/phone_numbers':918,1241 '/v2/whatsapp_message_templates':1221 '0':670,1016 '019c1ff0':806,869,925 '019c1ff0-5c30-7f36':805,868,924 '019cd44b':650 '019cd44b-3a1c-781b-956e-bd33e9fd2ac6':649 '1':889,1134 '131026':185 '131047':163 '132000':194 '132015':208 '15':620 '2':897,1135 '20':904 '2026':621,905 '24':159,170,253,512,695 '3a1c':651 '40008':146 '401':61,118 '403':122 '404':125 '422':57,129 '429':54,135 '483291':662 '5c30':807,870,926 '781b':652 '7f36':808,871,927 '8436':809,872,928 '956e':653 'account':319,727,759,1115 'addit':450,1180 'affect':407 'alert':1116 'alreadi':37 'alway':62,949,1140 'anytim':241,510 'api':8,25,29,45,96,105,120 'appoint':1084 'approv':331,371,503,796,813,849 'arriv':895 'associ':322 'assum':34 'authent':59,377,789,841,1103 'auto':297 'auto-iter':296 'automat':287 'avoid':1129 'b1d0b0e56':811,874,930 'backoff':114,141 'bash':11 'bd33e9fd2ac6':654 'best':1074 'beyond':478 'bill':376,408 'bodi':86,364,609,657,719,885,899 'busi':7,318,726,756,1165,1169 'call':46 'callback':574 'case':1156 'catch':149 'catch-al':148 'categori':372,401,785,878,1101,1233 'caveat':307 'chang':1043 'check':132,152,368,1099,1161 'client':23,35 'client.messages.send':73,516,587,634,700,706,1191 'client.whatsapp.business_accounts.list':728,733,1201 'client.whatsapp.business_accounts.retrieve':1206 'client.whatsapp.business_accounts.settings.retrieve':1245 'client.whatsapp.business_accounts.settings.update':1174,1255 'client.whatsapp.phone_numbers.list':916,921,1239 'client.whatsapp.phone_numbers.profile.retrieve':1167 'client.whatsapp.templates.create':860,865,1227 'client.whatsapp.templates.list':766,802,1214 'client.whatsapp_message_templates.retrieve':1160,1219 'code':67,99,117,235,444,604,847,1105 'common':115 'compon':607,655,855,883,1235 'concis':1124 'configur':1175 'confirm':350,602 'contain':384 'content':395,1119,1139 'core':492 'correct':1143 'count':197 'countri':234,763 'creat':357,856,909,1225 'custom':174,258,697 'data.event':1003 'data.payload.id':1011 'data.payload.template':1024,1033 'data.payload.to':1015 'definit':207 'deliv':674,1021 'deliveri':577,998,1008 'descript':523,772,1002,1046,1082 'detail':1159 'disabl':212,799,852 'due':215 'e':93 'e.164':226,526,534,538,544 'e.g':228,348,402,1083 'e.message':100 'e.status':98 'ed25519':948,970 'en':605,881 'enabl':530 'endpoint':290,1185 'ensur':199 'enum':417,426,1005 'error':42,51,56,60,64,97,116,131,145,151 'etc':1136 'event':959,961,1010,1047,1179 'exampl':32,481,898,1092,1095 'except':90,101,107 'exponenti':140 'f':95,739,819,907,936 'fail':48,165,675,1023 'field':133,419,422,429,477,491,665,745,826,985,1000,1044,1096 'filter':778,788,795 'first':179 'form':244,685 'format':134,157,227,535,545,1131 'found':128 'free':243,684 'free-form':242,683 'get':379,729,767,917,1107,1157,1164,1202,1204,1207,1215,1217,1220,1240,1242,1246 'handl':43,63 'hasn':175 'header':965 'hello':87 'hour':160,171,254,513,696 'hyphen':353 'id':263,272,279,561,629,648,751,754,774,804,834,867,923,1014,1025,1054,1209,1211,1222,1224,1231,1248,1251,1258,1261 'import':17,21,69,219,957,1149 'includ':230 'initi':38 'inlin':435,480,987 'instal':10,13 'instead':273 'insuffici':123 'integr':995 'invalid':104,119 'invent':414 'issu':218 'item':301 'iter':298,305 'keep':1122 'key':26,30,106,121,977,980 'languag':276,284,585,603,846,880,1234 'last':259 'limit':53,111,137 'list':289,724,764,913,1199,1212,1236 'lowercas':344,1078 'march':619,903 'market':392,405,790,842,1117 'match':204,475 'matter':374 'may':397 'messag':82,164,177,184,237,246,260,325,391,498,505,553,557,559,565,596,643,667,688,692,715,858,997,1013,1032,1040,1190,1198 'message.finalized':1007 'message.sent':1006 'meta':147,214,366,396,752,1097,1125 'method':1154,1184 'mismatch':198 'msg1':1087 'must':223,312,328,342,383,549 'name':275,282,341,584,600,757,839,875,1034,1037,1060,1063,1076,1232 'name/language':631 'need':431,632 'network':50 'new':1066 'newslett':1121 'non':182 'non-templ':181 'note':220 'number':156,188,201,222,311,532,542,678,915,938,1144,1238 'object':554,558 'offer':1120 'oper':306,448,451,1151,1152,1181,1182 'option':455,460 'optional-paramet':454,459 'ord':614,901 'order':349,601,721,876,888,1112 'os':18 'os.environ.get':27 'otp':386 'otp/verification':1104 'page':304 'pagin':288,292 'param':1187 'paramet':154,196,203,365,416,425,456,461,520,610,658,769,784,1132,1146 'part':991 'patch':1256 'path':996 'pattern':299 'paus':210 'payload':485,490,962,984 'payload.reason':1069 'payload.status':1064 'payload.template':1053,1059 'pend':797,850 'permiss':124 'phone':155,187,221,310,531,541,677,914,1237 'pip':12 'pn':932 'pn.phone':937 'pn.quality':940 'post':518,702,861,1193,1228 'practic':1075 'pre':502 'pre-approv':501 'prefer':1126 'prefix':232 'price':381,1109 'primari':663,743,824,994 'print':94,103,109,622,738,818,906,935 'product':66,953 'profil':326,560,566,1166,1170 'promot':394,1118 'provid':281,359,1090,1141 'public':976,979 'python':4,9,16,68,580,624,704,731,800,863,919,954 'qualiti':217,939 'queri':783 'queu':672,1019 'rate':52,110,136,941 'read':439,452,473,482,1022 'realist':360,1091 'reason':1072 'recipi':186,540 'reclassifi':398 'refer':266,409,486 'references/api-details.md':440,441,458,468,487 'regist':314 'reject':798,851 'rejection/disable':1071 'remind':1085 'request.body':963 'request.headers':966,972 'requir':522,771,1186 'resolv':286 'resourc':126 'respons':72,418,428,465,470,586,633,664,705,732,744,801,825,864,920 'response-schema':464,469 'response.auto':303 'response.data':737,817,934 'response.data.from':676 'response.data.id':623,666,910 'response.data.status':912 'response.data.to':669 'response.data.type':679 'restrict':515 'result':293 'retri':112,138 'return':291 'review':367,1098 'rule':162,411 'sampl':361,1088 'schema':466,471 'sdk':1153,1183 'section':457,467 'select':373,1102 'send':167,309,339,494,499,581,625,681,689,836,1148,1188 'sent':240,250,509,673,1020 'servic':698 'session':245 'set':1173,1244,1254 'setup':15 'ship':723,877,892,1114 'shorter':1127 'shown':40,434 'sig':964 'sign':945 'signatur':951,969 'skill':438 'skill-telnyx-whatsapp-python' 'source-team-telnyx' 'space':352 'special':380,1108 'specif':144 'status':332,578,671,760,792,812,911,1009,1017,1042,1068,1163 'string':525,537,547,562,571,775,786,793,1018,1026,1035,1049,1055,1061,1065,1070 'support':1150 'task':493 'telnyx':2,5,14,20,22,24,28,70,89,269,415,627,747,780,828,944,968,974,978,1027,1056 'telnyx-signature-ed25519':967 'telnyx-timestamp':973 'telnyx-whatsapp-python':1 'telnyx.apierror':91 'telnyx.authenticationerror':102 'telnyx.ratelimiterror':108 'telnyx.webhooks':956 'templat':153,183,195,206,209,236,262,267,271,278,327,340,358,378,400,497,504,506,583,598,599,628,645,646,647,765,829,833,838,854,859,908,1028,1031,1036,1039,1041,1057,1062,1067,1073,1128,1158,1162,1213,1218,1223,1226 'text':84,85,612,613,617,618,660,661,687,691,717,718,886,900 'timestamp':971,975 'tmpl':815 'tmpl.category':822,840 'tmpl.components':853 'tmpl.id':820,827 'tmpl.language':845 'tmpl.name':821,837 'tmpl.status':823,848 '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' 'transact':390,1111 'tri':71 'type':79,83,521,546,593,597,608,611,616,640,644,656,659,712,716,770,884,1001,1004,1045,1048 'underscor':346,1080 'unnecessari':1130 'updat':579,999,1113,1171,1252 'uppercas':355 'url':570,572,575,1177 'us':606,882 'use':294,337,410,446,568,831,1077,1133,1155 'user':193 'util':387,403,791,844,879,1110 'uuid':270,563,668,749,776,782,830,1012,1029,1058 'valid':55,130 'valu':362,1089 'variabl':1138 'verif':943 'verifi':950 'view':1168 'waba':320,735,748,753,762,773,781,803,866,922,1172,1200,1205,1210,1230,1243,1250,1253,1260 'waba.country':761 'waba.id':740,746 'waba.name':741,755 'waba.status':742,758 'waba.waba':750 'webhook':421,476,484,489,569,942,946,958,981,983,1176 'webhook-payload-field':488 'webhook.construct':960 'whatsapp':3,6,74,80,81,143,192,317,496,517,529,551,552,556,588,594,595,635,641,642,680,686,701,707,713,714,725,1189,1192,1197 'whatsapp-en':528 'whatsapp-specif':142 'whatsapp.template.approved':1050 'whatsapp.template.disabled':1052 'whatsapp.template.rejected':1051 'window':161,172,255,514,699 'within':251,693 'write':443 'yes':527,539,555","prices":[{"id":"72e4b352-6b70-4eca-ae83-533c6b7b5145","listingId":"dd7a4112-7019-4168-94d6-12b1d87313e8","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:08:54.268Z"}],"sources":[{"listingId":"dd7a4112-7019-4168-94d6-12b1d87313e8","source":"github","sourceId":"team-telnyx/ai/telnyx-whatsapp-python","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-whatsapp-python","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:54.268Z","lastSeenAt":"2026-04-22T00:54:56.957Z"}],"details":{"listingId":"dd7a4112-7019-4168-94d6-12b1d87313e8","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-whatsapp-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":"79d7580416c479ed34f35378b504f4934d88207e","skill_md_path":"skills/telnyx-whatsapp-python/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-whatsapp-python"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-whatsapp-python","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-whatsapp-python"},"updatedAt":"2026-04-22T00:54:56.957Z"}}