{"id":"bd237c68-506b-4986-9ac3-657b8d324dc7","shortId":"xKnvgB","kind":"skill","title":"telnyx-whatsapp-javascript","tagline":">-","description":"# Telnyx WhatsApp Business API - JavaScript\n\n## Installation\n\n```bash\nnpm install telnyx\n```\n\n## Setup\n\n```javascript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx({ apiKey: process.env['TELNYX_API_KEY'] });\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```javascript\ntry {\n    const response = await client.messages.sendWhatsapp({\n        from: \"+19452940762\",\n        to: \"+18005551234\",\n        type: \"WHATSAPP\",\n        whatsapp_message: {\n            type: \"text\",\n            text: { body: \"Hello from Telnyx!\" },\n        },\n    });\n} catch (error) {\n    if (error instanceof Telnyx.APIError) {\n        console.log(`API error: ${error.status} - ${error.message}`);\n    } else if (error instanceof Telnyx.AuthenticationError) {\n        console.log(\"Invalid API key\");\n    } else if (error instanceof Telnyx.RateLimitError) {\n        console.log(\"Rate limited - retry with backoff\");\n    }\n}\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 async iterator pattern: `for await (const item of response) { }`.\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.sendWhatsapp()` — `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```javascript\n// Send by template name + language\nconst response = await client.messages.sendWhatsapp({\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});\nconsole.log(response.data.id);\n```\n\n```javascript\n// Send by Telnyx template_id (no name/language needed)\nconst response = await client.messages.sendWhatsapp({\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.sendWhatsapp()` — `POST /messages/whatsapp`\n\n```javascript\nconst response = await client.messages.sendWhatsapp({\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.businessAccounts.list()` — `GET /v2/whatsapp/business_accounts`\n\n```javascript\nconst response = await client.whatsapp.businessAccounts.list();\nfor (const waba of response.data) {\n    console.log(`${waba.id}: ${waba.name} (${waba.status})`);\n}\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 for a WABA\n\n`client.whatsapp.templates.list()` — `GET /v2/whatsapp/message_templates`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `waba_id` | string (UUID) | Yes | Telnyx WABA UUID |\n| `category` | string | No | Filter: `AUTHENTICATION`, `MARKETING`, `UTILITY` |\n| `status` | string | No | Filter: `APPROVED`, `PENDING`, `REJECTED`, `DISABLED` |\n\n```javascript\nconst response = await client.whatsapp.templates.list(\n    { waba_id: \"019c1ff0-5c30-7f36-8436-730b1d0b0e56\", status: \"APPROVED\" },\n);\nfor (const tmpl of response.data) {\n    console.log(`${tmpl.id}: ${tmpl.name} (${tmpl.category}) - ${tmpl.status}`);\n}\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```javascript\nconst response = await 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});\nconsole.log(`Template created: ${response.data.id} (status: ${response.data.status})`);\n```\n\n### List phone numbers for a WABA\n\n`client.whatsapp.phoneNumbers.list()` — `GET /v2/whatsapp/phone_numbers`\n\n```javascript\nconst response = await client.whatsapp.phoneNumbers.list(\n    { waba_id: \"019c1ff0-5c30-7f36-8436-730b1d0b0e56\" },\n);\nfor (const pn of response.data) {\n    console.log(`${pn.phone_number} - quality: ${pn.quality_rating}`);\n}\n```\n\n---\n\n### Webhook Verification\n\nTelnyx signs webhooks with Ed25519. Always verify signatures in production:\n\n```javascript\nimport { Webhook } from 'telnyx';\n\nconst event = Webhook.constructEvent(\n    request.body,\n    request.headers['telnyx-signature-ed25519'],\n    request.headers['telnyx-timestamp'],\n    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.whatsappMessageTemplates.retrieve()` | Check template status |\n| Get business profile | `client.whatsapp.phoneNumbers.profile.retrieve()` | View business profile |\n| Configure webhooks | `client.whatsapp.businessAccounts.settings.update()` | Subscribe to events |\n\n## Additional Operations\n\n| Operation | SDK Method | Endpoint | Required Params |\n|-----------|-----------|----------|-----------------|\n| Send WhatsApp message | `client.messages.sendWhatsapp()` | `POST /messages/whatsapp` | `from`, `to`, `whatsapp_message` |\n| List WABAs | `client.whatsapp.businessAccounts.list()` | `GET /v2/whatsapp/business_accounts` | — |\n| Get WABA | `client.whatsapp.businessAccounts.retrieve()` | `GET /v2/whatsapp/business_accounts/:id` | `waba_id` |\n| List templates | `client.whatsapp.templates.list()` | `GET /v2/whatsapp/message_templates` | `waba_id` |\n| Get template | `client.whatsappMessageTemplates.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.phoneNumbers.list()` | `GET /v2/whatsapp/phone_numbers` | `waba_id` |\n| Configure webhooks | `client.whatsapp.businessAccounts.settings.update()` | `PATCH /v2/whatsapp/business_accounts/:id/settings` | `waba_id` |","tags":["telnyx","whatsapp","javascript","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-whatsapp-javascript","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-javascript","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,542 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.788Z","embedding":null,"createdAt":"2026-04-18T22:08:53.503Z","updatedAt":"2026-04-22T00:54:56.788Z","lastSeenAt":"2026-04-22T00:54:56.788Z","tsv":"'+13125550001':233 '+18005551234':76,595,643,714 '+19452940762':74,593,641,712 '-12345':618,910 '-730':816,881,941 '/messages/whatsapp':521,705,1196 '/v2/whatsapp/business_accounts':733,1205,1210,1252 '/v2/whatsapp/message_templates':776,868,1218,1233 '/v2/whatsapp/phone_numbers':928,1245 '/v2/whatsapp_message_templates':1225 '0':674,1022 '019c1ff0':812,877,937 '019c1ff0-5c30-7f36':811,876,936 '019cd44b':654 '019cd44b-3a1c-781b-956e-bd33e9fd2ac6':653 '1':897,1140 '131026':189 '131047':167 '132000':198 '132015':212 '15':623 '2':905,1141 '20':912 '2026':624,913 '24':163,174,257,515,698 '3a1c':655 '40008':150 '401':60,122 '403':126 '404':129 '422':56,133 '429':53,139 '483291':666 '5c30':813,878,938 '781b':656 '7f36':814,879,939 '8436':815,880,940 '956e':657 'account':322,730,764,1121 'addit':453,1183 'affect':410 'alert':1122 'alreadi':36 'alway':61,961,1146 'anytim':245,513 'api':8,28,44,95,106,124 'apikey':25 'appoint':1090 'approv':334,374,506,800,819,855 'arriv':903 'associ':325 'assum':33 'async':300 'authent':58,380,793,847,1109 'automat':291 'avoid':1135 'await':71,304,590,638,709,737,807,872,932 'b1d0b0e56':817,882,942 'backoff':118,145 'bash':11 'bd33e9fd2ac6':658 'best':1080 'beyond':481 'bill':379,411 'bodi':84,367,612,661,722,893,907 'busi':7,321,729,761,1171,1175 'call':45 'callback':576 'case':1162 'catch':88,153 'catch-al':152 'categori':375,404,789,886,1107,1237 'caveat':310 'chang':1049 'check':136,156,371,1105,1167 'client':22,34 'client.messages.sendwhatsapp':72,519,591,639,703,710,1194 'client.whatsapp.businessaccounts.list':731,738,1203 'client.whatsapp.businessaccounts.retrieve':1208 'client.whatsapp.businessaccounts.settings.update':1179,1250 'client.whatsapp.phonenumbers.list':926,933,1243 'client.whatsapp.phonenumbers.profile.retrieve':1173 'client.whatsapp.templates.create':866,873,1231 'client.whatsapp.templates.list':774,808,1216 'client.whatsappmessagetemplates.retrieve':1166,1223 'code':66,121,239,447,607,853,1111 'common':119 'compon':610,659,861,891,1239 'concis':1130 'configur':1177,1248 'confirm':353,605 'console.log':94,104,113,625,744,825,914,948 'const':21,69,305,588,636,707,735,740,805,821,870,930,944,971 'contain':387 'content':398,1125,1145 'core':495 'correct':1149 'count':201 'countri':238,768 'creat':360,862,916,1229 'custom':178,262,700 'data.event':1009 'data.payload.id':1017 'data.payload.template':1030,1039 'data.payload.to':1021 'definit':211 'deliv':678,1027 'deliveri':579,1004,1014 'descript':525,780,1008,1052,1088 'detail':1165 'disabl':216,803,858 'due':219 'e.164':230,528,536,540,546 'e.g':232,351,405,1089 'ed25519':960,979 'els':99,108 'en':608,889 'enabl':532 'endpoint':294,1188 'ensur':203 'enum':420,429,1011 'error':41,50,55,59,63,89,91,96,101,110,120,135,149,155 'error.message':98 'error.status':97 'etc':1142 'event':972,1016,1053,1182 'exampl':31,484,906,1098,1101 'exponenti':144 'fail':47,169,679,1029 'field':137,422,425,432,480,494,669,750,832,991,1006,1050,1102 'filter':792,799 'first':183 'form':248,688 'format':138,161,231,537,547,1137 'found':132 'free':247,687 'free-form':246,686 'get':382,732,775,927,1113,1163,1170,1204,1206,1209,1217,1221,1224,1244 'handl':42,62 'hasn':179 'hello':85 'hour':164,175,258,516,699 'hyphen':356 'id':267,276,283,563,632,652,756,759,782,810,840,875,935,1020,1031,1060,1211,1213,1220,1226,1228,1235,1247,1255 'id/settings':1253 'import':17,223,967,1155 'includ':234 'initi':37 'inlin':438,483,993 'instal':10,13 'instanceof':92,102,111 'instead':277 'insuffici':127 'integr':1001 'invalid':105,123 'invent':417 'issu':222 'item':306 'iter':301 'javascript':4,9,16,67,582,627,706,734,804,869,929,966 'keep':1128 'key':29,107,125,986 'languag':280,288,587,606,852,888,1238 'last':263 'limit':52,115,141 'list':293,727,769,920,1201,1214,1240 'lowercas':347,1084 'march':622,911 'market':395,408,794,848,1123 'match':208,478 'matter':377 'may':400 'messag':80,168,181,188,241,250,264,328,394,501,508,555,559,561,567,599,647,671,691,695,718,864,1003,1019,1038,1046,1193,1200 'message.finalized':1013 'message.sent':1012 'meta':151,218,369,399,757,1103,1131 'method':1160,1187 'mismatch':202 'msg1':1093 'must':227,315,331,345,386,551 'name':279,286,344,586,603,762,845,883,1040,1043,1066,1069,1082,1236 'name/language':634 'need':434,635 'network':49 'new':23,1072 'newslett':1127 'non':186 'non-templ':185 'note':224 'npm':12 'number':160,192,205,226,314,534,544,681,922,950,1150,1242 'object':556,560 'offer':1126 'oper':309,451,454,1157,1158,1184,1185 'option':458,463 'optional-paramet':457,462 'ord':617,909 'order':352,604,724,884,896,1118 'otp':389 'otp/verification':1110 'pagin':292,296 'param':1190 'paramet':158,200,207,368,419,428,459,464,522,613,662,777,1138,1152 'part':997 'patch':1251 'path':1002 'pattern':302 'paus':214 'payload':488,493,990 'payload.reason':1075 'payload.status':1070 'payload.template':1059,1065 'pend':801,856 'permiss':128 'phone':159,191,225,313,533,543,921,1241 'pn':945 'pn.phone':949 'pn.quality':952 'post':520,704,867,1195,1232 'practic':1081 'pre':505 'pre-approv':504 'prefer':1132 'prefix':236 'price':384,1115 'primari':667,748,830,1000 'process.env':26 'product':65,965 'profil':329,562,568,1172,1176 'promot':397,1124 'provid':285,362,1096,1147 'public':985 'qualiti':221,951 'queu':676,1025 'rate':51,114,140,953 'read':442,455,476,485,1028 'realist':363,1097 'reason':1078 'recipi':190,542 'reclassifi':401 'refer':270,412,489 'references/api-details.md':443,444,461,471,490 'regist':317 'reject':802,857 'rejection/disable':1077 'remind':1091 'request.body':974 'request.headers':975,980 'requir':524,779,1189 'resolv':290 'resourc':130 'respons':70,308,421,431,468,473,589,637,668,708,736,749,806,831,871,931 'response-schema':467,472 'response.data':743,824,947 'response.data.from.phone':680 'response.data.id':626,670,917 'response.data.status':919 'response.data.to':673 'response.data.type':682 'restrict':518 'result':297 'retri':116,142 'return':295 'review':370,1104 'rule':166,414 'sampl':364,1094 'schema':469,474 'sdk':1159,1186 'section':460,470 'select':376,1108 'send':171,312,342,497,502,583,628,684,692,842,1154,1191 'sent':244,254,512,677,1026 'servic':701 'session':249 'setup':15 'ship':726,885,900,1120 'shorter':1133 'shown':39,437 'sign':957 'signatur':963,978 'skill':441 'skill-telnyx-whatsapp-javascript' 'source-team-telnyx' 'space':355 'special':383,1114 'specif':148 'status':335,580,675,765,796,818,918,1015,1023,1048,1074,1169 'string':527,539,549,564,573,783,790,797,1024,1032,1041,1055,1061,1067,1071,1076 'subscrib':1180 'support':1156 'task':496 'telnyx':2,5,14,18,20,24,27,87,273,418,630,752,786,834,956,970,977,982,984,1033,1062 'telnyx-signature-ed25519':976 'telnyx-timestamp':981 'telnyx-whatsapp-javascript':1 'telnyx.apierror':93 'telnyx.authenticationerror':103 'telnyx.ratelimiterror':112 'templat':157,187,199,210,213,240,266,271,275,282,330,343,361,381,403,500,507,509,585,601,602,631,649,650,651,770,835,839,844,860,865,915,1034,1037,1042,1045,1047,1063,1068,1073,1079,1134,1164,1168,1215,1222,1227,1230 'text':82,83,615,616,620,621,664,665,690,694,720,721,894,908 'timestamp':983 'tmpl':822 'tmpl.category':828,846 'tmpl.components':859 'tmpl.id':826,833 'tmpl.language':851 'tmpl.name':827,843 'tmpl.status':829,854 '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':393,1117 'tri':68 'type':77,81,523,548,596,600,611,614,619,644,648,660,663,715,719,778,892,1007,1010,1051,1054 'underscor':349,1086 'unnecessari':1136 'updat':581,1005,1119 'uppercas':358 'url':572,574,577 'us':609,890 'use':298,340,413,449,570,837,1083,1139,1161 'user':197 'util':390,406,795,850,887,1116 'uuid':274,565,672,754,784,788,836,1018,1035,1064 'valid':54,134 'valu':365,1095 'variabl':1144 'verif':955 'verifi':962 'view':1174 'waba':323,741,753,758,767,773,781,787,809,874,925,934,1202,1207,1212,1219,1234,1246,1254 'waba.country':766 'waba.id':745,751 'waba.name':746,760 'waba.status':747,763 'waba.waba':755 'webhook':424,479,487,492,571,954,958,968,987,989,1178,1249 'webhook-payload-field':491 'webhook.constructevent':973 'whatsapp':3,6,78,79,147,196,320,499,531,553,554,558,597,598,645,646,683,689,716,717,728,1192,1199 'whatsapp-en':530 'whatsapp-specif':146 'whatsapp.template.approved':1056 'whatsapp.template.disabled':1058 'whatsapp.template.rejected':1057 'window':165,176,259,517,702 'within':255,696 'write':446 'yes':529,541,557,785","prices":[{"id":"fcd0a689-e89f-4097-a470-d0c6d1276bc9","listingId":"bd237c68-506b-4986-9ac3-657b8d324dc7","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:53.503Z"}],"sources":[{"listingId":"bd237c68-506b-4986-9ac3-657b8d324dc7","source":"github","sourceId":"team-telnyx/ai/telnyx-whatsapp-javascript","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-whatsapp-javascript","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:53.503Z","lastSeenAt":"2026-04-22T00:54:56.788Z"}],"details":{"listingId":"bd237c68-506b-4986-9ac3-657b8d324dc7","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-whatsapp-javascript","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":"24f19859b8c602aab7ae5e13f892d8ff5745e35b","skill_md_path":"skills/telnyx-whatsapp-javascript/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-whatsapp-javascript"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-whatsapp-javascript","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-whatsapp-javascript"},"updatedAt":"2026-04-22T00:54:56.788Z"}}