{"id":"bac56e0e-81ab-467a-a934-abe7b583e22d","shortId":"Tc4m46","kind":"skill","title":"telnyx-whatsapp-java","tagline":">-","description":"# Telnyx WhatsApp Business API - Java\n\n## Installation\n\n**Maven:**\n\n```xml\n<dependency>\n    <groupId>com.telnyx.sdk</groupId>\n    <artifactId>telnyx</artifactId>\n    <version>6.36.0</version>\n</dependency>\n```\n\n**Gradle:**\n\n```groovy\nimplementation(\"com.telnyx.sdk:telnyx:6.36.0\")\n```\n\n## Setup\n\n```java\nimport com.telnyx.sdk.client.TelnyxClient;\n\nTelnyxClient client = TelnyxOkHttpClient.fromEnv();\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```java\nimport com.telnyx.sdk.TelnyxException;\n\ntry {\n    var response = client.messages().sendWhatsapp()\n        .from(\"+19452940762\")\n        .to(\"+18005551234\")\n        .type(\"WHATSAPP\")\n        .whatsappMessage(Map.of(\n            \"type\", \"text\",\n            \"text\", Map.of(\"body\", \"Hello from Telnyx!\")\n        ))\n        .execute();\n} catch (TelnyxException e) {\n    System.out.println(\"API error: \" + e.statusCode() + \" - \" + e.getMessage());\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 auto-pager pattern: `for (var item : response.autoPager()) { }`.\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| `whatsappMessage` | object | Yes | WhatsApp message object |\n| `messagingProfileId` | string (UUID) | No | Messaging profile to use |\n| `webhookUrl` | string (URL) | No | Callback URL for delivery status updates |\n\n```java\n// Send by template name + language\nvar response = client.messages().sendWhatsapp()\n    .from(\"+19452940762\")\n    .to(\"+18005551234\")\n    .type(\"WHATSAPP\")\n    .whatsappMessage(Map.of(\n        \"type\", \"template\",\n        \"template\", Map.of(\n            \"name\", \"order_confirmation\",\n            \"language\", Map.of(\"code\", \"en_US\"),\n            \"components\", List.of(\n                Map.of(\n                    \"type\", \"body\",\n                    \"parameters\", List.of(\n                        Map.of(\"type\", \"text\", \"text\", \"ORD-12345\"),\n                        Map.of(\"type\", \"text\", \"text\", \"March 15, 2026\")\n                    )\n                )\n            )\n        )\n    ))\n    .execute();\nSystem.out.println(response.data().id());\n```\n\n```java\n// Send by Telnyx template_id (no name/language needed)\nvar response = client.messages().sendWhatsapp()\n    .from(\"+19452940762\")\n    .to(\"+18005551234\")\n    .type(\"WHATSAPP\")\n    .whatsappMessage(Map.of(\n        \"type\", \"template\",\n        \"template\", Map.of(\n            \"template_id\", \"019cd44b-3a1c-781b-956e-bd33e9fd2ac6\",\n            \"components\", List.of(\n                Map.of(\n                    \"type\", \"body\",\n                    \"parameters\", List.of(\n                        Map.of(\"type\", \"text\", \"text\", \"483291\")\n                    )\n                )\n            )\n        )\n    ))\n    .execute();\n```\n\nPrimary response fields:\n- `response.data().id()` — Message UUID\n- `response.data().to().get(0).status()` — `queued`, `sent`, `delivered`, `failed`\n- `response.data().from().phoneNumber()`\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```java\nvar response = client.messages().sendWhatsapp()\n    .from(\"+19452940762\")\n    .to(\"+18005551234\")\n    .type(\"WHATSAPP\")\n    .whatsappMessage(Map.of(\n        \"type\", \"text\",\n        \"text\", Map.of(\"body\", \"Your order has shipped!\")\n    ))\n    .execute();\n```\n\n### List WhatsApp Business Accounts\n\n`client.whatsapp().businessAccounts().list()` — `GET /v2/whatsapp/business_accounts`\n\n```java\nvar response = client.whatsapp().businessAccounts().list().execute();\nfor (var waba : response.data()) {\n    System.out.println(waba.id() + \": \" + waba.name() + \" (\" + waba.status() + \")\");\n}\n```\n\nPrimary response fields:\n- `waba.id()` — Telnyx WABA UUID\n- `waba.wabaId()` — 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| `wabaId` | 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```java\nvar response = client.whatsapp().templates().list()\n    .wabaId(\"019c1ff0-5c30-7f36-8436-730b1d0b0e56\")\n    .status(\"APPROVED\")\n    .execute();\nfor (var tmpl : response.data()) {\n    System.out.println(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```java\nvar response = client.whatsapp().templates().create()\n    .wabaId(\"019c1ff0-5c30-7f36-8436-730b1d0b0e56\")\n    .name(\"order_shipped\")\n    .category(\"UTILITY\")\n    .language(\"en_US\")\n    .components(List.of(\n        Map.of(\n            \"type\", \"BODY\",\n            \"text\", \"Your order {{1}} has been shipped and will arrive by {{2}}.\",\n            \"example\", Map.of(\n                \"body_text\", List.of(List.of(\"ORD-12345\", \"March 20, 2026\"))\n            )\n        )\n    ))\n    .execute();\nSystem.out.println(\"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```java\nvar response = client.whatsapp().phoneNumbers().list()\n    .wabaId(\"019c1ff0-5c30-7f36-8436-730b1d0b0e56\")\n    .execute();\nfor (var pn : response.data()) {\n    System.out.println(pn.phoneNumber() + \" - quality: \" + pn.qualityRating());\n}\n```\n\n---\n\n### Webhook Verification\n\nTelnyx signs webhooks with Ed25519. Always verify signatures in production:\n\n```java\nimport com.telnyx.sdk.webhooks.Webhook;\n\nvar event = Webhook.constructEvent(\n    requestBody,\n    request.getHeader(\"telnyx-signature-ed25519\"),\n    request.getHeader(\"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`, `whatsappMessage` |\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` | `wabaId` |\n| List templates | `client.whatsapp().templates().list()` | `GET /v2/whatsapp/message_templates` | `wabaId` |\n| Get template | `client.whatsappMessageTemplates().retrieve()` | `GET /v2/whatsapp_message_templates/:id` | `templateId` |\n| Create template | `client.whatsapp().templates().create()` | `POST /v2/whatsapp/message_templates` | `wabaId`, `name`, `category`, `language`, `components` |\n| List phone numbers | `client.whatsapp().phoneNumbers().list()` | `GET /v2/whatsapp/phone_numbers` | `wabaId` |\n| Configure webhooks | `client.whatsapp().businessAccounts().settings().update()` | `PATCH /v2/whatsapp/business_accounts/:id/settings` | `wabaId` |","tags":["telnyx","whatsapp","java","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-whatsapp-java","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-java","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,929 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.709Z","embedding":null,"createdAt":"2026-04-18T22:08:52.722Z","updatedAt":"2026-04-22T00:54:56.709Z","lastSeenAt":"2026-04-22T00:54:56.709Z","tsv":"'+13125550001':213 '+18005551234':77,571,628,711 '+19452940762':75,569,626,709 '-12345':600,919 '-730':818,885,955 '/messages/whatsapp':501,702,1214 '/v2/whatsapp/business_accounts':734,1224,1231,1278 '/v2/whatsapp/message_templates':779,872,1240,1256 '/v2/whatsapp/phone_numbers':942,1269 '/v2/whatsapp_message_templates':1247 '0':668,1032 '019c1ff0':814,881,951 '019c1ff0-5c30-7f36':813,880,950 '019cd44b':640 '019cd44b-3a1c-781b-956e-bd33e9fd2ac6':639 '1':903,1150 '131026':169 '131047':147 '132000':178 '132015':192 '15':606 '2':911,1151 '20':921 '2026':607,922 '24':143,154,237,494,694 '3a1c':641 '40008':130 '401':59,102 '403':106 '404':109 '422':55,113 '429':52,119 '483291':656 '5c30':815,882,952 '6.36.0':15,21 '781b':642 '7f36':816,883,953 '8436':817,884,954 '956e':643 'account':301,729,765,1131 'addit':432,1200 'affect':389 'alert':1132 'alreadi':35 'alway':60,973,1156 'anytim':225,492 'api':8,43,95,104 'appoint':1100 'approv':313,353,485,802,821,857 'arriv':909 'associ':304 'assum':32 'authent':57,359,795,849,1119 'auto':281 'auto-pag':280 'automat':271 'avoid':1145 'b1d0b0e56':819,886,956 'backoff':125 'bd33e9fd2ac6':644 'best':1090 'beyond':460 'bill':358,390 'bodi':86,346,592,649,720,899,914 'busi':7,300,728,762,1182,1189 'businessaccount':731,739,1194,1221,1228,1274 'call':44 'callback':552 'case':1172 'catch':91,133 'catch-al':132 'categori':354,383,791,890,1117,1259 'caveat':289 'chang':1059 'check':116,136,350,1115,1178 'client':27,33 'client.messages':72,498,566,623,699,706,1211 'client.whatsapp':730,738,775,809,868,876,938,946,1184,1193,1220,1227,1236,1252,1265,1273 'client.whatsappmessagetemplates':1176,1244 'code':65,101,219,426,585,855,1121 'com.telnyx.sdk':13,19 'com.telnyx.sdk.client.telnyxclient':25 'com.telnyx.sdk.telnyxexception':68 'com.telnyx.sdk.webhooks.webhook':980 'common':99 'compon':588,645,863,895,1261 'concis':1140 'configur':1191,1271 'confirm':332,582 'contain':366 'content':377,1135,1155 'core':474 'correct':1159 'count':181 'countri':218,769 'creat':339,864,870,878,926,1250,1254 'custom':158,242,696 'data.event':1019 'data.payload.id':1027 'data.payload.template':1040,1049 'data.payload.to':1031 'definit':191 'deliv':672,1037 'deliveri':555,1014,1024 'descript':505,783,1018,1062,1098 'detail':1175 'disabl':196,805,860 'due':199 'e':93 'e.164':210,508,516,520,526 'e.g':212,330,384,1099 'e.getmessage':98 'e.statuscode':97 'ed25519':972,989 'en':586,893 'enabl':512 'endpoint':274,1205 'ensur':183 'enum':399,408,1021 'error':40,49,54,58,62,96,100,115,129,135 'etc':1152 'event':982,1026,1063,1199 'exampl':30,463,912,1108,1111 'execut':90,608,657,725,741,822,923,957 'exponenti':124 'fail':46,149,673,1039 'field':117,401,404,411,459,473,660,752,834,1001,1016,1060,1112 'filter':794,801 'first':163 'form':228,684 'format':118,141,211,517,527,1147 'found':112 'free':227,683 'free-form':226,682 'get':361,667,733,778,941,1123,1173,1181,1223,1225,1230,1239,1242,1246,1268 'gradl':16 'groovi':17 'handl':41,61 'hasn':159 'hello':87 'hour':144,155,238,495,695 'hyphen':335 'id':247,256,263,611,617,638,662,760,842,928,1030,1041,1070,1232,1248 'id/settings':1279 'implement':18 'import':24,67,203,979,1165 'includ':214 'initi':36 'inlin':417,462,1003 'instal':10 'instead':257 'insuffici':107 'integr':1011 'invalid':103 'invent':396 'issu':202 'item':286 'java':4,9,23,66,558,612,703,735,806,873,943,978 'keep':1138 'key':105,996 'languag':260,268,563,583,854,892,1260 'last':243 'limit':51,121 'list':273,726,732,740,770,777,811,932,940,948,1218,1222,1234,1238,1262,1267 'list.of':589,594,646,651,896,916,917 'lowercas':326,1094 'map.of':81,85,575,579,584,590,595,601,632,636,647,652,715,719,897,913 'march':605,920 'market':374,387,796,850,1133 'match':188,457 'matter':356 'maven':11 'may':379 'messag':148,161,168,221,230,244,307,373,480,487,538,544,663,687,691,866,1013,1029,1048,1056,1210 'message.finalized':1023 'message.sent':1022 'messagingprofileid':540 'meta':131,198,348,378,758,1113,1141 'method':1170,1204 'mismatch':182 'msg1':1103 'must':207,294,310,324,365,531 'name':259,266,323,562,580,763,847,887,1050,1053,1076,1079,1092,1258 'name/language':619 'need':413,620 'network':48 'new':1082 'newslett':1137 'non':166 'non-templ':165 'note':204 'number':140,172,185,206,293,514,524,934,1160,1264 'object':535,539 'offer':1136 'oper':288,430,433,1167,1168,1201,1202 'option':437,442 'optional-paramet':436,441 'ord':599,918 'order':331,581,722,888,902,1128 'otp':368 'otp/verification':1120 'pager':282 'pagin':272,276 'param':1207 'paramet':138,180,187,347,398,407,438,443,502,593,650,780,1148,1162 'part':1007 'patch':1277 'path':1012 'pattern':283 'paus':194 'payload':467,472,1000 'payload.reason':1085 'payload.status':1080 'payload.template':1069,1075 'pend':803,858 'permiss':108 'phone':139,171,205,292,513,523,933,1263 'phonenumb':676,939,947,1185,1266 'pn':960 'pn.phonenumber':963 'pn.qualityrating':965 'post':500,701,871,1213,1255 'practic':1091 'pre':484 'pre-approv':483 'prefer':1142 'prefix':216 'price':363,1125 'primari':658,750,832,1010 'product':64,977 'profil':308,545,1183,1186,1190 'promot':376,1134 'provid':265,341,1106,1157 'public':995 'qualiti':201,964 'queu':670,1035 'rate':50,120 'read':421,434,455,464,1038 'realist':342,1107 'reason':1088 'recipi':170,522 'reclassifi':380 'refer':250,391,468 'references/api-details.md':422,423,440,450,469 'regist':296 'reject':804,859 'rejection/disable':1087 'remind':1101 'request.getheader':985,990 'requestbodi':984 'requir':504,782,1206 'resolv':270 'resourc':110 'respons':71,400,410,447,452,565,622,659,705,737,751,808,833,875,945 'response-schema':446,451 'response.autopager':287 'response.data':610,661,665,674,677,745,826,927,930,961 'restrict':497 'result':277 'retri':122 'retriev':1177,1187,1229,1245 'return':275 'review':349,1114 'rule':146,393 'sampl':343,1104 'schema':448,453 'sdk':1169,1203 'section':439,449 'select':355,1118 'send':151,291,321,476,481,559,613,680,688,844,1164,1208 'sendwhatsapp':73,499,567,624,700,707,1212 'sent':224,234,491,671,1036 'servic':697 'session':229 'set':1195,1275 'setup':22 'ship':724,889,906,1130 'shorter':1143 'shown':38,416 'sign':969 'signatur':975,988 'skill':420 'skill-telnyx-whatsapp-java' 'source-team-telnyx' 'space':334 'special':362,1124 'specif':128 'status':314,556,669,766,798,820,929,931,1025,1033,1058,1084,1180 'string':507,519,529,541,549,785,792,799,1034,1042,1051,1065,1071,1077,1081,1086 'subscrib':1197 'support':1166 'system.out.println':94,609,746,827,924,962 'task':475 'telnyx':2,5,14,20,89,253,397,615,754,788,836,968,987,992,994,1043,1072 'telnyx-signature-ed25519':986 'telnyx-timestamp':991 'telnyx-whatsapp-java':1 'telnyxcli':26 'telnyxexcept':92 'telnyxokhttpclient.fromenv':28 'templat':137,167,179,190,193,220,246,251,255,262,309,322,340,360,382,479,486,488,561,577,578,616,634,635,637,771,776,810,837,841,846,862,867,869,877,925,1044,1047,1052,1055,1057,1073,1078,1083,1089,1144,1174,1179,1235,1237,1243,1251,1253 'templateid':1249 'text':83,84,597,598,603,604,654,655,686,690,717,718,900,915 'timestamp':993 'tmpl':825 'tmpl.category':830,848 'tmpl.components':861 'tmpl.id':828,835 'tmpl.language':853 'tmpl.name':829,845 'tmpl.status':831,856 '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':372,1127 'tri':69 'type':78,82,503,528,572,576,591,596,602,629,633,648,653,678,712,716,781,898,1017,1020,1061,1064 'underscor':328,1096 'unnecessari':1146 'updat':557,1015,1129,1196,1276 'uppercas':337 'url':550,553 'us':587,894 'use':278,319,392,428,547,839,1093,1149,1171 'user':177 'util':369,385,797,852,891,1126 'uuid':254,542,664,756,786,790,838,1028,1045,1074 'valid':53,114 'valu':344,1105 'var':70,285,564,621,704,736,743,807,824,874,944,959,981 'variabl':1154 'verif':967 'verifi':974 'view':1188 'waba':302,744,755,759,768,774,789,937,1219,1226 'waba.country':767 'waba.id':747,753 'waba.name':748,761 'waba.status':749,764 'waba.wabaid':757 'wabaid':784,812,879,949,1233,1241,1257,1270,1280 'webhook':403,458,466,471,966,970,997,999,1192,1272 'webhook-payload-field':470 'webhook.constructevent':983 'webhookurl':548 'whatsapp':3,6,79,127,176,299,478,511,533,537,573,630,679,685,713,727,1209 'whatsapp-en':510 'whatsapp-specif':126 'whatsapp.template.approved':1066 'whatsapp.template.disabled':1068 'whatsapp.template.rejected':1067 'whatsappmessag':80,534,574,631,714,1217 'window':145,156,239,496,698 'within':235,692 'write':425 'xml':12 'yes':509,521,536,787","prices":[{"id":"c67b1eaa-c62e-4fb5-af3d-991c6853d6b3","listingId":"bac56e0e-81ab-467a-a934-abe7b583e22d","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:52.722Z"}],"sources":[{"listingId":"bac56e0e-81ab-467a-a934-abe7b583e22d","source":"github","sourceId":"team-telnyx/ai/telnyx-whatsapp-java","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-whatsapp-java","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:52.722Z","lastSeenAt":"2026-04-22T00:54:56.709Z"}],"details":{"listingId":"bac56e0e-81ab-467a-a934-abe7b583e22d","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-whatsapp-java","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":"94c5b28926a1f1535aefdd4edc910b619cc4debd","skill_md_path":"skills/telnyx-whatsapp-java/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-whatsapp-java"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-whatsapp-java","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-whatsapp-java"},"updatedAt":"2026-04-22T00:54:56.709Z"}}