{"id":"3f03e92e-3f26-4a47-b3c7-a0eea6c60d3a","shortId":"52R4C5","kind":"skill","title":"telnyx-messaging-javascript","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Messaging - 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({\n  apiKey: process.env['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```javascript\ntry {\n  const response = await client.messages.send({\n      to: '+18445550001',\n      from: '+18005550101',\n      text: 'Hello from Telnyx!',\n  });\n} catch (err) {\n  if (err instanceof Telnyx.APIConnectionError) {\n    console.error('Network error — check connectivity and retry');\n  } else if (err instanceof Telnyx.RateLimitError) {\n    const retryAfter = err.headers?.['retry-after'] || 1;\n    await new Promise(r => setTimeout(r, retryAfter * 1000));\n  } else if (err instanceof Telnyx.APIError) {\n    console.error(`API error ${err.status}: ${err.message}`);\n    if (err.status === 422) {\n      console.error('Validation error — check required fields and formats');\n    }\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## 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 await (const item of 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| `messagingProfileId` | string (UUID) | No | Unique identifier for a messaging profile. |\n| `mediaUrls` | array[string] | No | A list of media URLs. |\n| `webhookUrl` | 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```javascript\nconst response = await client.messages.send({\n    to: '+18445550001',\n    from: '+18005550101',\n    text: 'Hello from Telnyx!',\n});\n\nconsole.log(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.sentAt`\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.sendWithAlphanumericSender()` — `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| `messagingProfileId` | string (UUID) | Yes | The messaging profile ID to use. |\n| `webhookUrl` | string (URL) | No | Callback URL for delivery status updates. |\n| `webhookFailoverUrl` | string (URL) | No | Failover callback URL for delivery status updates. |\n| `useProfileWebhooks` | boolean | No | If true, use the messaging profile's webhook settings. |\n\n```javascript\nconst response = await client.messages.sendWithAlphanumericSender({\n  from: 'MyCompany',\n  messaging_profile_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n  text: 'Hello from Telnyx!',\n  to: '+13125550001',\n});\n\nconsole.log(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.sentAt`\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```javascript\n// In your webhook handler (e.g., Express — use raw body, not parsed JSON):\napp.post('/webhooks', express.raw({ type: 'application/json' }), async (req, res) => {\n  try {\n    const event = await client.webhooks.unwrap(req.body.toString(), {\n      headers: req.headers,\n    });\n    // Signature valid — event is the parsed webhook payload\n    console.log('Received event:', event.data.event_type);\n    res.status(200).send('OK');\n  } catch (err) {\n    console.error('Webhook verification failed:', err.message);\n    res.status(400).send('Invalid signature');\n  }\n});\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.sendGroupMms()` — `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| `mediaUrls` | array[string] | No | A list of media URLs. |\n| `webhookUrl` | string (URL) | No | The URL where webhooks related to this message will be sent. |\n| `webhookFailoverUrl` | 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```javascript\nconst response = await client.messages.sendGroupMms({\n  from: '+13125551234',\n  to: ['+18655551234', '+14155551234'],\n    text: 'Hello from Telnyx!',\n});\n\nconsole.log(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.sendLongCode()` — `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| `mediaUrls` | array[string] | No | A list of media URLs. |\n| `webhookUrl` | string (URL) | No | The URL where webhooks related to this message will be sent. |\n| `webhookFailoverUrl` | 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```javascript\nconst response = await client.messages.sendLongCode({\n    from: '+18445550001', to: '+13125550002',\n    text: 'Hello from Telnyx!',\n});\n\nconsole.log(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.sendNumberPool()` — `POST /messages/number_pool`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `messagingProfileId` | 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| `mediaUrls` | array[string] | No | A list of media URLs. |\n| `webhookUrl` | string (URL) | No | The URL where webhooks related to this message will be sent. |\n| `webhookFailoverUrl` | 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```javascript\nconst response = await client.messages.sendNumberPool({\n  messaging_profile_id: 'abc85f64-5717-4562-b3fc-2c9600000000',\n  to: '+13125550002',\n    text: 'Hello from Telnyx!',\n});\n\nconsole.log(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.sendShortCode()` — `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| `mediaUrls` | array[string] | No | A list of media URLs. |\n| `webhookUrl` | string (URL) | No | The URL where webhooks related to this message will be sent. |\n| `webhookFailoverUrl` | 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```javascript\nconst response = await client.messages.sendShortCode({\n    from: '+18445550001', to: '+18445550001',\n    text: 'Hello from Telnyx!',\n});\n\nconsole.log(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| `messagingProfileId` | string (UUID) | No | Unique identifier for a messaging profile. |\n| `mediaUrls` | array[string] | No | A list of media URLs. |\n| `webhookUrl` | 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```javascript\nconst response = await client.messages.schedule({\n    to: '+18445550001',\n    from: '+18005550101',\n    text: 'Appointment reminder',\n    sendAt: '2025-07-01T15:00:00Z',\n});\n\nconsole.log(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.sendWhatsapp()` — `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| `whatsappMessage` | object | Yes |  |\n| `type` | enum (WHATSAPP) | No | Message type - must be set to \"WHATSAPP\" |\n| `webhookUrl` | string (URL) | No | The URL where webhooks related to this message will be sent. |\n\n```javascript\nconst response = await client.messages.sendWhatsapp({\n  from: '+13125551234',\n  to: '+13125551234',\n  whatsapp_message: {},\n});\n\nconsole.log(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.cancelScheduled()` | `DELETE /messages/{id}` | Remove, detach, or clean up an existing resource. | `id` |\n| List alphanumeric sender IDs | `client.alphanumericSenderIDs.list()` | `GET /alphanumeric_sender_ids` | Inspect available resources or choose an existing resource before mutating it. | None |\n| Create an alphanumeric sender ID | `client.alphanumericSenderIDs.create()` | `POST /alphanumeric_sender_ids` | Create or provision an additional resource when the core tasks do not cover this flow. | `alphanumericSenderId`, `messagingProfileId` |\n| Retrieve an alphanumeric sender ID | `client.alphanumericSenderIDs.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.alphanumericSenderIDs.delete()` | `DELETE /alphanumeric_sender_ids/{id}` | Remove, detach, or clean up an existing resource. | `id` |\n| Retrieve group MMS messages | `client.messages.retrieveGroupMessages()` | `GET /messages/group/{message_id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `messageId` |\n| List messaging hosted numbers | `client.messagingHostedNumbers.list()` | `GET /messaging_hosted_numbers` | Inspect available resources or choose an existing resource before mutating it. | None |\n| Retrieve a messaging hosted number | `client.messagingHostedNumbers.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.messagingHostedNumbers.update()` | `PATCH /messaging_hosted_numbers/{id}` | Modify an existing resource without recreating it. | `id` |\n| List opt-outs | `client.messagingOptouts.list()` | `GET /messaging_optouts` | Inspect available resources or choose an existing resource before mutating it. | None |\n| List high-level messaging profile metrics | `client.messagingProfileMetrics.list()` | `GET /messaging_profile_metrics` | Inspect available resources or choose an existing resource before mutating it. | None |\n| Regenerate messaging profile secret | `client.messagingProfiles.actions.regenerateSecret()` | `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.messagingProfiles.listAlphanumericSenderIDs()` | `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.messagingProfiles.retrieveMetrics()` | `GET /messaging_profiles/{id}/metrics` | Fetch the current state before updating, deleting, or making control-flow decisions. | `id` |\n| List Auto-Response Settings | `client.messagingProfiles.autorespConfigs.list()` | `GET /messaging_profiles/{profile_id}/autoresp_configs` | Fetch the current state before updating, deleting, or making control-flow decisions. | `profileId` |\n| Create auto-response setting | `client.messagingProfiles.autorespConfigs.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`, `countryCode`, `profileId` |\n| Get Auto-Response Setting | `client.messagingProfiles.autorespConfigs.retrieve()` | `GET /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `profileId`, `autorespCfgId` |\n| Update Auto-Response Setting | `client.messagingProfiles.autorespConfigs.update()` | `PUT /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}` | Modify an existing resource without recreating it. | `op`, `keywords`, `countryCode`, `profileId`, +1 more |\n| Delete Auto-Response Setting | `client.messagingProfiles.autorespConfigs.delete()` | `DELETE /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}` | Remove, detach, or clean up an existing resource. | `profileId`, `autorespCfgId` |\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","javascript","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-messaging-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-messaging-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 (20,084 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.389Z","embedding":null,"createdAt":"2026-04-18T22:06:44.930Z","updatedAt":"2026-04-22T06:54:39.389Z","lastSeenAt":"2026-04-22T06:54:39.389Z","tsv":"'+1':2091 '+13125550001':178,601 '+13125550002':1126,1249 '+13125551234':1003,1564,1566 '+14155551234':1006 '+18005550101':82,465,1468 '+18445550001':80,463,1124,1369,1371,1466 '+18655551234':1005 '+3':991 '+6':1112,1228,1357 '+7':451 '+8':1454 '-01':1475 '-07':1474 '-4562':1244 '-5717':1243 '/actions/regenerate_secret':1910 '/alphanumeric_sender_ids':1700,1720,1745,1768,1943 '/autoresp_configs':1992,2017,2047,2076,2103 '/messages':375,1661,1683 '/messages/alphanumeric_sender_id':499 '/messages/group':1785 '/messages/group_mms':926 '/messages/long_code':1042 '/messages/number_pool':1162 '/messages/schedule':1402 '/messages/short_code':1287 '/messages/whatsapp':1502 '/messaging_hosted_numbers':1808,1828,1851 '/messaging_optouts':1867 '/messaging_profile_metrics':1889 '/messaging_profiles':1908,1941,1965,1989,2014,2044,2073,2100 '/metrics':1967 '/webhooks':651 '00':1477 '00z':1478 '1':111 '1000':119 '10dlc':240 '182bd5e5':591 '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e':590 '200':680 '2025':1473 '2c9600000000':1247 '400':691 '401':66,144 '403':148 '404':151 '422':62,132,155 '429':59,161 '4fe4':593 '6e1a':592 '8601':755,770 'a2p':233 'a799':594 'aa6d9a6ab26e':595 'abc85f64':1242 'accept':262 'accou':1519 'account':517 'action':1916 'addit':311,1580,1725,2022 'address':385,398,523,1066,1182,1311,1412 'addresse':790 'agent':362 'alphanumer':403,486,510,1695,1715,1740,1763,1932 'alphanumericsenderid':1736 'alreadi':42,218 'alway':67,632 'api':26,50,126,146 'apikey':23 'app.post':650 'application/json':654 'appoint':1470 'array':428,735,783,826,849,946,954,1075,1191,1320,1431 'assign':220 'associ':1516 'assum':39 'async':655 'asynchron':256 'authent':64 'auto':196,1984,2009,2039,2068,2095 'auto-pagin':195 'auto-respons':1983,2008,2038,2067,2094 'automat':211 'autoresp':2048,2077,2104 'autorespcfgid':2065,2116 'avail':1702,1810,1869,1891 'await':77,112,201,460,583,661,1000,1121,1237,1366,1463,1561 'b3fc':1246 'b3fc-2c9600000000':1245 'backoff':167 'bash':9 'beyond':339 'block':248 'bodi':408,536,646,740,831 'boolean':569 'call':51 'callback':551,562 'cancel':1677 'carrier':246,268 'catch':87,683 'caveat':213 'cfg':2049,2078,2105 'check':96,136,158 'choos':1155,1705,1813,1872,1894 'clean':1688,1773,2110 'click':2126,2129 'client':20,40 'client.alphanumericsenderids.create':1718 'client.alphanumericsenderids.delete':1766 'client.alphanumericsenderids.list':1698 'client.alphanumericsenderids.retrieve':1743 'client.messages.cancelscheduled':1681 'client.messages.retrieve':1659 'client.messages.retrievegroupmessages':1783 'client.messages.schedule':1400,1464 'client.messages.send':78,373,461 'client.messages.sendgroupmms':924,1001 'client.messages.sendlongcode':1040,1122 'client.messages.sendnumberpool':1160,1238 'client.messages.sendshortcode':1285,1367 'client.messages.sendwhatsapp':1500,1562 'client.messages.sendwithalphanumericsender':497,584 'client.messaginghostednumbers.list':1806 'client.messaginghostednumbers.retrieve':1826 'client.messaginghostednumbers.update':1849 'client.messagingoptouts.list':1865 'client.messagingprofilemetrics.list':1887 'client.messagingprofiles.actions.regeneratesecret':1906 'client.messagingprofiles.autorespconfigs.create':2012 'client.messagingprofiles.autorespconfigs.delete':2098 'client.messagingprofiles.autorespconfigs.list':1987 'client.messagingprofiles.autorespconfigs.retrieve':2042 'client.messagingprofiles.autorespconfigs.update':2071 'client.messagingprofiles.listalphanumericsenderids':1939 'client.messagingprofiles.retrievemetrics':1963 'client.webhooks.unwrap':662 'close':897 'co':392,530,1073,1189,1318,1419 'code':72,143,184,236,305,1025,1031,1268,1274,1284 'common':141,489,905 'complet':239,2138 'connect':97 'console.error':93,125,133,685 'console.log':470,602,674,1011,1131,1254,1376,1479,1569 'const':19,75,105,202,458,581,659,998,1119,1235,1364,1461,1559 'content':410,742,833 'control':1673,1757,1798,1840,1954,1978,2003,2061 'control-flow':1672,1756,1797,1839,1953,1977,2002,2060 'core':353,893,1584,1729,2026 'correct':223 'countri':183 'countrycod':2035,2089 'cover':1733,2030 'creat':1713,1721,1923,2007,2018 'current':1665,1749,1790,1832,1946,1970,1995,2053 'dash':187 'data.event':716,800,2121 'data.payload.completed':764 'data.payload.cost':779 'data.payload.direction':817 'data.payload.errors':782 'data.payload.id':727,810 'data.payload.media':848 'data.payload.sent':749 'data.payload.text':737,828 'data.payload.to':734,825 'data.payload.type':840 'data.record':851 'date':752,757,767,772 'date-tim':751,766 'decis':1675,1759,1800,1842,1956,1980,2005,2063 'default':31 'delet':1669,1682,1753,1761,1767,1794,1836,1950,1974,1999,2057,2093,2099 'deliv':726,809 'deliveri':253,269,369,554,565,711,1395 'delivery-rel':368 'descript':379,503,715,799,930,1046,1166,1291,1406,1506,2123 'destin':952 'detach':1686,1771,2108 'detail':1959 'differ':494 'direct':821 'e.164':175,382,386,395,399,506,520,524,933,938,1049,1054,1063,1067,1179,1183,1294,1299,1308,1312,1409,1413,1509,1514,1522,1527 'e.g':177,642 'ed25519':619,626 'els':100,120 'empti':415,747,838 'endpoint':1039,1651 'enum':278,287,718,802,818,841,853,1533 'err':88,90,102,122,684 'err.headers':107 'err.message':129,689 'err.status':128,131 'error':47,56,61,65,69,95,127,135,142,157,786 'event':660,668,676,724,807,854,2119,2120 'event.data.event':677 'exact':364,1595 'exampl':37,342 'exhaust':2131 'exist':1691,1707,1776,1815,1855,1874,1896,1919,2082,2113 'exponenti':166 'express':643 'express.raw':652 'fail':53,688 'failov':561,982,1103,1219,1348 'fetch':1663,1747,1788,1830,1944,1968,1993,2051 'field':138,159,280,283,290,338,352,366,372,474,606,699,713,797,865,881,1015,1135,1258,1380,1483,1573,1647 'filter':251 'final':267,778 'first':1587 'flow':361,900,1674,1735,1758,1799,1841,1955,1979,2004,2032,2062 'follow':909,1914 'follow-up':908,1913 'forc':1027,1270 'format':140,160,176,387,400,525,756,771,939,1055,1068,1184,1300,1313,1414,1515,1528 'found':154 'frequenc':1613 'full':1605,2134 'futur':1394 'generic':1037 'get':1660,1699,1744,1784,1807,1827,1866,1888,1940,1958,1964,1988,2037,2043 'group':914,1780 'guess':1645 'handl':48,68 'handler':641,885 'header':631,664 'heavili':250 'hello':84,467,597,1008,1128,1251,1373 'high':1882 'high-level':1881 'host':1804,1824,1847 'i.e':409,741,832 'id':488,512,544,589,1241,1662,1676,1684,1693,1697,1717,1742,1746,1760,1765,1769,1778,1787,1829,1843,1852,1860,1909,1930,1934,1942,1957,1966,1981,1991,2016,2046,2050,2075,2079,2102,2106 'identifi':422,729,812,855,1172,1425 'immedi':1399 'import':15,168,886 'inbound':795,819 'includ':179,622 'index':1592 'indic':758,773 'initi':43 'inlin':296,341,701,870 'inspect':1701,1809,1868,1890 'instal':8,11 'instanceof':91,103,123 'instead':1034,1396,1497 'insuffici':149 'integr':709 'invalid':145,693 'invent':275 'iso':754,769 'item':203 'iter':198,207 'javascript':4,7,14,73,457,580,637,997,1118,1234,1363,1460,1558 'json':649 'key':27,147 'keyword':2034,2088 'let':1148 'level':1883,1928 'limit':58,163 'link':2128 'list':191,432,869,950,958,1079,1195,1324,1435,1694,1802,1861,1880,1931,1982 'long':235,1024,1030 'long-cod':234,1029 'lower':1612 'lower-frequ':1611 'make':1671,1755,1796,1838,1952,1976,2001,2059 'match':336 'may':787 'media':434,960,1081,1197,1326,1437 'mediaurl':427,953,1074,1190,1319,1430 'messag':3,6,224,252,360,407,425,447,535,542,575,587,739,761,776,796,824,830,847,916,944,973,989,1026,1060,1094,1110,1144,1150,1175,1210,1226,1239,1269,1305,1339,1355,1389,1392,1428,1450,1493,1536,1554,1568,1658,1680,1782,1786,1803,1823,1846,1884,1903,1937,1960 'message.finalized':720 'message.link':2125 'message.received':803 'message.sent':719 'messageid':1801 'messagingprofileid':417,537,1167,1420,1737 'method':192,1597,1650 'metric':1886,1962 'miss':1646 'mms':843,915,919,1781 'modifi':1853,2080 'multipl':922 'must':172,217,238,1280,1538 'mutat':1710,1818,1877,1899 'mycompani':586 'need':292,363,863,903 'network':55,94 'new':21,113,1925 'non':414,746,837 'non-empti':413,745,836 'none':1712,1820,1879,1901 'note':169 'npm':10 'null':781 'number':171,216,389,402,527,936,1052,1070,1146,1153,1186,1297,1315,1416,1512,1525,1805,1825,1848 'object':736,780,784,827,850,947,1530 'ok':682 'omit':35 'one':918 'op':2033,2087 'oper':212,309,312,888,1581,1589,1619,1648 'opt':1863 'opt-out':1862 'option':316,321,452,992,1113,1229,1358,1455,1606,1624,1629,2132 'optional-paramet':315,320,1623,1628 'out':1864 'outbound':359 'page':210 'pagin':190,197 'param':453,993,1114,1230,1359,1456,1600,1607,1655 'paramet':277,286,317,322,376,500,927,1043,1163,1288,1403,1503,1625,1630,2133 'parenthes':189 'pars':648,671 'part':705 'patch':1850 'path':710,1033,1276 'payload':346,351,673,698,875,880,920,1615,2140 'permiss':150 'phone':170,388,401,526,935,1051,1069,1185,1296,1314,1415,1511,1524 'point':788 'pool':1147,1154 'post':374,498,925,1041,1161,1286,1401,1501,1719,1907,2013 'prefix':181 'primari':358,472,604,708,1013,1133,1256,1378,1481,1571 'process.env':24 'product':71,243,636 'profil':225,426,543,576,588,1151,1176,1240,1429,1885,1904,1938,1961,1990,2015,2045,2074,2101 'profileid':2006,2036,2064,2090,2115 'promis':114 'provis':1723,2020 'put':2072 'queue':1390 'r':115,117 'rate':57,162 'rather':1921 'raw':645 'read':300,313,334,343,872,1621 'receiv':384,522,675,1065,1181,1310,1411 'recipi':923 'recreat':1858,2085 'refer':270,347,792,876 'references/api-details.md':301,302,319,329,348,455,456,877,995,996,1116,1117,1232,1233,1361,1362,1458,1459,1602,1603,1627,1637,2142,2143 'regener':1902 'registr':241 'relat':370,444,970,986,1091,1107,1207,1223,1336,1352,1447,1551 'remind':1471 'remov':1685,1770,2107 'replac':2127 'replacedlinkclick':2124 'req':656 'req.body.tostring':663 'req.headers':665 'request':265,365,495,621 'requir':137,378,493,502,929,1045,1165,1290,1405,1505,1599,1654 'res':657 'res.status':679,690 'resourc':152,733,816,860,1692,1703,1708,1726,1777,1811,1816,1856,1870,1875,1892,1897,1929,2023,2083,2114 'respons':76,260,279,289,326,331,371,459,473,582,605,999,1014,1120,1134,1236,1257,1365,1379,1462,1482,1560,1572,1608,1634,1639,1985,2010,2040,2069,2096,2135 'response-schema':325,330,1633,1638 'response.data':471,603,1012,1132,1255,1377,1480,1570 'response.data.body':1579 'response.data.direction':1020,1140,1263,1385,1488,1578 'response.data.errors':480,612 'response.data.from':477,609,1018,1138,1261,1383,1486,1576 'response.data.id':475,607,1016,1136,1259,1381,1484,1574 'response.data.sentat':479,611 'response.data.text':478,610,1021,1141,1264,1386,1489 'response.data.to':476,608,1017,1137,1260,1382,1485,1575 'response.data.type':1019,1139,1262,1384,1487,1577 'result':205 'retri':99,109,164 'retriev':1656,1738,1779,1821 'retry-aft':108 'retryaft':106,118 'return':193 'rule':272 'schedul':1387,1679 'schema':327,332,1609,1635,1640,2136 'sdk':1596,1649 'secret':1905 'section':318,328,1626,1636 'see':2141 'send':215,228,244,259,355,397,481,681,692,912,917,942,1022,1032,1038,1058,1142,1265,1275,1303,1398,1490,1494 'sendat':1472 'sender':487,490,511,1157,1279,1696,1716,1741,1764,1933 'sent':450,763,976,1097,1213,1342,1453,1557 'set':579,1540,1986,2011,2041,2070,2097 'settimeout':116 'setup':13 'shape':496 'short':391,529,1072,1188,1267,1273,1283,1317,1418 'short-cod':1272 'shown':45,295 'sign':616 'signatur':625,634,666,694 'skill':299 'skill-telnyx-messaging-javascript' 'sms':357,483,842 'sms/mms':1499 'source-team-telnyx' 'space':186 'state':1666,1750,1791,1833,1947,1971,1996,2054 'status':555,566 'step':911 'string':381,394,405,416,418,429,437,505,519,532,538,548,558,738,748,829,839,932,955,963,978,1048,1062,1076,1084,1099,1168,1178,1192,1200,1215,1293,1307,1321,1329,1344,1408,1421,1432,1440,1508,1521,1544 'support':887 't15':1476 'task':354,894,1585,1730,2027 'telnyx':2,5,12,16,18,22,25,86,276,469,599,615,624,629,1010,1130,1253,1375 'telnyx-messaging-javascript':1 'telnyx-signature-ed25519':623 'telnyx-timestamp':628 'telnyx.apiconnectionerror':92 'telnyx.apierror':124 'telnyx.ratelimiterror':104 'text':83,404,466,531,596,1007,1127,1250,1372,1469 'time':753,768 'timestamp':630 'top':1927 'top-level':1926 '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':229,237,1496 'treat':257 'tri':74,658 'trigger':1911 'true':572 'type':377,501,653,678,714,717,722,731,798,801,805,814,845,852,857,928,1044,1164,1289,1404,1504,1532,1537,2122 'uniqu':421,1171,1424 'unsuccessful/unconfirm':794 'updat':556,567,712,1668,1752,1793,1835,1844,1949,1973,1998,2056,2066 'url':435,438,441,549,552,559,563,961,964,967,979,983,1082,1085,1088,1100,1104,1198,1201,1204,1216,1220,1327,1330,1333,1345,1349,1438,1441,1444,1545,1548 'us':232 'use':199,271,307,546,573,644,889,940,1056,1145,1301,1582,1601,1617,1652 'useprofilewebhook':568 'user':515 'uuid':419,539,728,811,1169,1422 'valid':60,134,156,509,667 'variant':491 'variat':906 'verif':614,687 'verifi':633 'webhook':254,282,337,345,350,443,578,613,617,640,672,686,695,697,864,874,879,969,985,1090,1106,1206,1222,1335,1351,1446,1550,1614,2118,2139 'webhook-payload-field':349,878 'webhookfailoverurl':557,977,1098,1214,1343 'webhookurl':436,547,962,1083,1199,1328,1439,1543 'whatsapp':1492,1495,1518,1534,1542,1567 'whatsappmessag':1529 'without':1857,2084 'workflow':1920 'write':304,883 'yes':383,396,406,507,521,533,540,934,948,1050,1064,1170,1180,1295,1309,1410,1510,1523,1531","prices":[{"id":"464351a3-b6a1-4999-a313-43047885ee0d","listingId":"3f03e92e-3f26-4a47-b3c7-a0eea6c60d3a","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:44.930Z"}],"sources":[{"listingId":"3f03e92e-3f26-4a47-b3c7-a0eea6c60d3a","source":"github","sourceId":"team-telnyx/ai/telnyx-messaging-javascript","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-messaging-javascript","isPrimary":false,"firstSeenAt":"2026-04-18T22:06:44.930Z","lastSeenAt":"2026-04-22T06:54:39.389Z"}],"details":{"listingId":"3f03e92e-3f26-4a47-b3c7-a0eea6c60d3a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-messaging-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":"26cbf2621da809482d936ddac64c91499a5ad64e","skill_md_path":"skills/telnyx-messaging-javascript/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-messaging-javascript"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-messaging-javascript","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-messaging-javascript"},"updatedAt":"2026-04-22T06:54:39.389Z"}}