{"id":"ca6afbfc-ce0f-4d18-81a0-3c92f71b1765","shortId":"CYjWqM","kind":"skill","title":"telnyx-messaging-go","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Messaging - Go\n\n## Installation\n\n```bash\ngo get github.com/team-telnyx/telnyx-go\n```\n\n## Setup\n\n```go\nimport (\n  \"context\"\n  \"fmt\"\n  \"os\"\n\n  \"github.com/team-telnyx/telnyx-go\"\n  \"github.com/team-telnyx/telnyx-go/option\"\n)\n\nclient := telnyx.NewClient(\n  option.WithAPIKey(os.Getenv(\"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```go\nimport \"errors\"\n\nresponse, err := client.Messages.Send(context.Background(), telnyx.MessageSendParams{\n\t\tTo: \"+18445550001\",\n\t\tFrom: \"+18005550101\",\n\t\tText: \"Hello from Telnyx!\",\n\t})\nif err != nil {\n  var apiErr *telnyx.Error\n  if errors.As(err, &apiErr) {\n    switch apiErr.StatusCode {\n    case 422:\n      fmt.Println(\"Validation error — check required fields and formats\")\n    case 429:\n      fmt.Println(\"Rate limited, retrying...\")\n    default:\n      fmt.Printf(\"API error %d: %s\\n\", apiErr.StatusCode, apiErr.Error())\n    }\n  } else {\n    fmt.Println(\"Network error — check connectivity and retry\")\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:** Use `ListAutoPaging()` for automatic iteration: `iter := client.Resource.ListAutoPaging(ctx, params); for iter.Next() { item := iter.Current() }`.\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```go\n\tresponse, err := client.Messages.Send(context.Background(), telnyx.MessageSendParams{\n\t\tTo: \"+18445550001\",\n\t\tFrom: \"+18005550101\",\n\t\tText: \"Hello from Telnyx!\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Messages.SendWithAlphanumericSender(context.Background(), telnyx.MessageSendWithAlphanumericSenderParams{\n\t\tFrom:               \"MyCompany\",\n\t\tMessagingProfileID: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n\t\tText: \"Hello from Telnyx!\",\n\t\tTo: \"+13125550001\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n// In your webhook handler:\nfunc handleWebhook(w http.ResponseWriter, r *http.Request) {\n  body, _ := io.ReadAll(r.Body)\n  event, err := client.Webhooks.Unwrap(body, r.Header)\n  if err != nil {\n    http.Error(w, \"Invalid signature\", http.StatusBadRequest)\n    return\n  }\n  // Signature valid — event is the parsed webhook payload\n  fmt.Println(\"Received event:\", event.Data.EventType)\n  w.WriteHeader(http.StatusOK)\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```go\n\tresponse, err := client.Messages.SendGroupMms(context.Background(), telnyx.MessageSendGroupMmsParams{\n\t\tFrom: \"+13125551234\",\n\t\tTo:   []string{\"+18655551234\", \"+14155551234\"},\n\t\tText: \"Hello from Telnyx!\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Messages.SendLongCode(context.Background(), telnyx.MessageSendLongCodeParams{\n\t\tFrom: \"+18445550001\",\n\t\tTo:   \"+13125550002\",\n\t\tText: \"Hello from Telnyx!\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Messages.SendNumberPool(context.Background(), telnyx.MessageSendNumberPoolParams{\n\t\tMessagingProfileID: \"abc85f64-5717-4562-b3fc-2c9600000000\",\n\t\tTo:                 \"+13125550002\",\n\t\tText: \"Hello from Telnyx!\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Messages.SendShortCode(context.Background(), telnyx.MessageSendShortCodeParams{\n\t\tFrom: \"+18445550001\",\n\t\tTo:   \"+18445550001\",\n\t\tText: \"Hello from Telnyx!\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Messages.Schedule(context.Background(), telnyx.MessageScheduleParams{\n\t\tTo: \"+18445550001\",\n\t\tFrom: \"+18005550101\",\n\t\tText: \"Appointment reminder\",\n\t\tSendAt: \"2025-07-01T15:00:00Z\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Messages.SendWhatsapp(context.Background(), telnyx.MessageSendWhatsappParams{\n\t\tFrom:            \"+13125551234\",\n\t\tTo:              \"+13125551234\",\n\t\tWhatsappMessage: telnyx.WhatsappMessageContentParam{},\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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.Get()` | `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.New()` | `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.Get()` | `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.GetGroupMessages()` | `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.Get()` | `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.GetMetrics()` | `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.New()` | `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.Get()` | `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","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk","sip"],"capabilities":["skill","source-team-telnyx","skill-telnyx-messaging-go","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-go","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,641 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:38.604Z","embedding":null,"createdAt":"2026-04-18T22:06:37.989Z","updatedAt":"2026-04-22T06:54:38.604Z","lastSeenAt":"2026-04-22T06:54:38.604Z","tsv":"'+1':2119 '+13125550001':169,591 '+13125550002':1117,1246 '+13125551234':985,1585,1587 '+14155551234':989 '+18005550101':82,449,1481 '+18445550001':80,447,1115,1374,1376,1479 '+18655551234':988 '+3':972 '+6':1102,1226,1361 '+7':434 '+8':1466 '-01':1488 '-07':1487 '-4562':1241 '-5717':1240 '/actions/regenerate_secret':1938 '/alphanumeric_sender_ids':1728,1748,1773,1796,1971 '/autoresp_configs':2020,2045,2075,2104,2131 '/messages':358,1689,1711 '/messages/alphanumeric_sender_id':490 '/messages/group':1813 '/messages/group_mms':907 '/messages/long_code':1032 '/messages/number_pool':1160 '/messages/schedule':1414 '/messages/short_code':1291 '/messages/whatsapp':1522 '/messaging_hosted_numbers':1836,1856,1879 '/messaging_optouts':1895 '/messaging_profile_metrics':1917 '/messaging_profiles':1936,1969,1993,2017,2042,2072,2101,2128 '/metrics':1995 '/team-telnyx/telnyx-go':14,23 '/team-telnyx/telnyx-go/option':26 '00':1490 '00z':1491 '10dlc':223 '182bd5e5':581 '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e':580 '2025':1486 '2c9600000000':1244 '401':64,135 '403':139 '404':142 '422':60,100,146 '429':57,110,152 '4fe4':583 '6e1a':582 '8601':736,751 'a2p':216 'a799':584 'aa6d9a6ab26e':585 'abc85f64':1239 'accept':245 'accou':1539 'account':508 'action':1944 'addit':294,1608,1753,2050 'address':368,381,514,1056,1180,1315,1424 'addresse':771 'agent':345 'alphanumer':386,477,501,1723,1743,1768,1791,1960 'alphanumericsenderid':1764 'alreadi':40,201 'alway':65,629 'api':32,48,117,137 'apierr':91,96 'apierr.error':123 'apierr.statuscode':98,122 'appoint':1483 'array':411,716,764,807,830,927,935,1065,1189,1324,1443 'assign':203 'associ':1536 'assum':37 'asynchron':239 'authent':62 'auto':2012,2037,2067,2096,2123 'auto-respons':2011,2036,2066,2095,2122 'automat':185 'autoresp':2076,2105,2132 'autorespcfgid':2093,2144 'avail':1730,1838,1897,1919 'b3fc':1243 'b3fc-2c9600000000':1242 'backoff':158 'bash':9 'beyond':322 'block':231 'bodi':391,527,645,651,721,812 'boolean':560 'call':49 'callback':542,553 'cancel':1705 'carrier':229,251 'case':99,109 'caveat':196 'cfg':2077,2106,2133 'check':104,128,149 'choos':1153,1733,1841,1900,1922 'clean':1716,1801,2138 'click':2154,2157 'client':27,38 'client.alphanumericsenderids.delete':1794 'client.alphanumericsenderids.get':1771 'client.alphanumericsenderids.list':1726 'client.alphanumericsenderids.new':1746 'client.messages.cancelscheduled':1709 'client.messages.get':1687 'client.messages.getgroupmessages':1811 'client.messages.schedule':1412,1475 'client.messages.send':76,356,443 'client.messages.sendgroupmms':905,981 'client.messages.sendlongcode':1030,1111 'client.messages.sendnumberpool':1158,1235 'client.messages.sendshortcode':1289,1370 'client.messages.sendwhatsapp':1520,1581 'client.messages.sendwithalphanumericsender':488,574 'client.messaginghostednumbers.get':1854 'client.messaginghostednumbers.list':1834 'client.messaginghostednumbers.update':1877 'client.messagingoptouts.list':1893 'client.messagingprofilemetrics.list':1915 'client.messagingprofiles.actions.regeneratesecret':1934 'client.messagingprofiles.autorespconfigs.delete':2126 'client.messagingprofiles.autorespconfigs.get':2070 'client.messagingprofiles.autorespconfigs.list':2015 'client.messagingprofiles.autorespconfigs.new':2040 'client.messagingprofiles.autorespconfigs.update':2099 'client.messagingprofiles.getmetrics':1991 'client.messagingprofiles.listalphanumericsenderids':1967 'client.resource.listautopaging':188 'client.webhooks.unwrap':650 'close':878 'co':375,521,1063,1187,1322,1431 'code':70,134,175,219,288,1015,1021,1272,1278,1288 'common':132,480,886 'complet':222,2166 'connect':129 'content':393,723,814 'context':18 'context.background':77,444,575,982,1112,1236,1371,1476,1582 'control':1701,1785,1826,1868,1982,2006,2031,2089 'control-flow':1700,1784,1825,1867,1981,2005,2030,2088 'core':336,874,1612,1757,2054 'correct':206 'countri':174 'countrycod':2063,2117 'cover':1761,2058 'creat':1741,1749,1951,2035,2046 'ctx':189 'current':1693,1777,1818,1860,1974,1998,2023,2081 'd':119 'dash':178 'data.event':697,781,2149 'data.payload.completed':745 'data.payload.cost':760 'data.payload.direction':798 'data.payload.errors':763 'data.payload.id':708,791 'data.payload.media':829 'data.payload.sent':730 'data.payload.text':718,809 'data.payload.to':715,806 'data.payload.type':821 'data.record':832 'date':733,738,748,753 'date-tim':732,747 'decis':1703,1787,1828,1870,1984,2008,2033,2091 'default':115 'delet':1697,1710,1781,1789,1795,1822,1864,1978,2002,2027,2085,2121,2127 'deliv':707,790 'deliveri':236,252,352,545,556,692,1407 'delivery-rel':351 'descript':362,494,696,780,911,1036,1164,1295,1418,1526,2151 'destin':933 'detach':1714,1799,2136 'detail':1987 'differ':485 'direct':802 'e.164':166,365,369,378,382,497,511,515,914,919,1039,1044,1053,1057,1177,1181,1298,1303,1312,1316,1421,1425,1529,1534,1542,1547 'e.g':168 'ed25519':616,623 'els':124 'empti':398,728,819 'endpoint':1029,1679 'enum':261,270,699,783,799,822,834,1553 'err':75,88,95,442,455,458,573,593,596,649,654,980,995,998,1110,1123,1126,1234,1252,1255,1369,1382,1385,1474,1493,1496,1580,1591,1594 'error':45,54,59,63,67,73,103,118,127,133,148,767 'errors.as':94 'event':648,664,672,705,788,835,2147,2148 'event.data.eventtype':673 'exact':347,1623 'exampl':35,325 'exhaust':2159 'exist':1719,1735,1804,1843,1883,1902,1924,1947,2110,2141 'exponenti':157 'fail':51 'failov':552,963,1093,1217,1352 'fetch':1691,1775,1816,1858,1972,1996,2021,2079 'field':106,150,263,266,273,321,335,349,355,465,603,680,694,778,846,862,1005,1133,1262,1392,1503,1601,1675 'filter':234 'final':250,759 'first':1615 'flow':344,881,1702,1763,1786,1827,1869,1983,2007,2032,2060,2090 'fmt':19 'fmt.printf':116,459,597,999,1127,1256,1386,1497,1595 'fmt.println':101,111,125,670 'follow':890,1942 'follow-up':889,1941 'forc':1017,1274 'format':108,151,167,370,383,516,737,752,920,1045,1058,1182,1304,1317,1426,1535,1548 'found':145 'frequenc':1641 'full':1633,2162 'func':639 'futur':1406 'generic':1027 'get':11,1688,1727,1772,1812,1835,1855,1894,1916,1968,1986,1992,2016,2065,2071 'github.com':13,22,25 'github.com/team-telnyx/telnyx-go':12,21 'github.com/team-telnyx/telnyx-go/option':24 'go':4,7,10,16,71,440,571,634,978,1108,1232,1367,1472,1578 'group':895,1808 'guess':1673 'handl':46,66 'handler':638,866 'handlewebhook':640 'header':628 'heavili':233 'hello':84,451,587,991,1119,1248,1378 'high':1910 'high-level':1909 'host':1832,1852,1875 'http.error':656 'http.request':644 'http.responsewriter':642 'http.statusbadrequest':660 'http.statusok':675 'i.e':392,722,813 'id':479,503,535,1690,1704,1712,1721,1725,1745,1770,1774,1788,1793,1797,1806,1815,1857,1871,1880,1888,1937,1958,1962,1970,1985,1994,2009,2019,2044,2074,2078,2103,2107,2130,2134 'identifi':405,710,793,836,1170,1437 'immedi':1411 'import':17,72,159,867 'inbound':776,800 'includ':170,619 'index':1620 'indic':739,754 'initi':41 'inlin':279,324,682,851 'inspect':1729,1837,1896,1918 'instal':8 'instead':1024,1408,1517 'insuffici':140 'integr':690 'invalid':136,658 'invent':258 'io.readall':646 'iso':735,750 'item':193 'iter':186,187 'iter.current':194 'iter.next':192 'key':33,138 'keyword':2062,2116 'let':1146 'level':1911,1956 'limit':56,113,154 'link':2156 'list':415,850,931,939,1069,1193,1328,1447,1722,1830,1889,1908,1959,2010 'listautopag':183 'log.fatal':457,595,997,1125,1254,1384,1495,1593 'long':218,1014,1020 'long-cod':217,1019 'lower':1640 'lower-frequ':1639 'make':1699,1783,1824,1866,1980,2004,2029,2087 'match':319 'may':768 'media':417,941,1071,1195,1330,1449 'mediaurl':410,934,1064,1188,1323,1442 'messag':3,6,207,235,343,390,408,430,526,533,566,720,742,757,777,805,811,828,897,925,954,970,1016,1050,1084,1100,1142,1148,1173,1208,1224,1273,1309,1343,1359,1401,1404,1440,1462,1513,1556,1574,1686,1708,1810,1814,1831,1851,1874,1912,1931,1965,1988 'message.finalized':701 'message.link':2153 'message.received':784 'message.sent':700 'messageid':1829 'messagingprofileid':400,528,579,1165,1238,1432,1765 'method':1625,1678 'metric':1914,1990 'miss':1674 'mms':824,896,900,1809 'modifi':1881,2108 'multipl':903 'must':163,200,221,1284,1558 'mutat':1738,1846,1905,1927 'mycompani':578 'n':121,461,599,1001,1129,1258,1388,1499,1597 'need':275,346,844,884 'network':53,126 'new':1953 'nil':89,456,594,655,996,1124,1253,1383,1494,1592 'non':397,727,818 'non-empti':396,726,817 'none':1740,1848,1907,1929 'note':160 'null':762 'number':162,199,372,385,518,917,1042,1060,1144,1151,1184,1301,1319,1428,1532,1545,1833,1853,1876 'object':717,761,765,808,831,928,1550 'one':899 'op':2061,2115 'oper':195,292,295,869,1609,1617,1647,1676 'opt':1891 'opt-out':1890 'option':299,304,435,973,1103,1227,1362,1467,1634,1652,1657,2160 'option.withapikey':29 'optional-paramet':298,303,1651,1656 'os':20 'os.getenv':30 'out':1892 'outbound':342 'pagin':181 'param':190,436,974,1104,1228,1363,1468,1628,1635,1683 'paramet':260,269,300,305,359,491,908,1033,1161,1292,1415,1523,1653,1658,2161 'parenthes':180 'pars':667 'part':686 'patch':1878 'path':691,1023,1280 'payload':329,334,669,679,856,861,901,1643,2168 'permiss':141 'phone':161,371,384,517,916,1041,1059,1183,1300,1318,1427,1531,1544 'point':769 'pool':1145,1152 'post':357,489,906,1031,1159,1290,1413,1521,1747,1935,2041 'prefix':172 'primari':341,463,601,689,1003,1131,1260,1390,1501,1599 'product':69,226,633 'profil':208,409,534,567,1149,1174,1441,1913,1932,1966,1989,2018,2043,2073,2102,2129 'profileid':2034,2064,2092,2118,2143 'provis':1751,2048 'put':2100 'queue':1402 'r':643 'r.body':647 'r.header':652 'rate':55,112,153 'rather':1949 'read':283,296,317,326,853,1649 'receiv':367,513,671,1055,1179,1314,1423 'recipi':904 'recreat':1886,2113 'refer':253,330,773,857 'references/api-details.md':284,285,302,312,331,438,439,858,976,977,1106,1107,1230,1231,1365,1366,1470,1471,1630,1631,1655,1665,2170,2171 'regener':1930 'registr':224 'relat':353,427,951,967,1081,1097,1205,1221,1340,1356,1459,1571 'remind':1484 'remov':1713,1798,2135 'replac':2155 'replacedlinkclick':2152 'request':248,348,486,618 'requir':105,361,484,493,910,1035,1163,1294,1417,1525,1627,1682 'resourc':143,714,797,841,1720,1731,1736,1754,1805,1839,1844,1884,1898,1903,1920,1925,1957,2051,2111,2142 'respons':74,243,262,272,309,314,354,441,464,572,602,979,1004,1109,1132,1233,1261,1368,1391,1473,1502,1579,1600,1636,1662,1667,2013,2038,2068,2097,2124,2163 'response-schema':308,313,1661,1666 'response.data':462,600,1002,1130,1259,1389,1500,1598 'response.data.body':1607 'response.data.direction':1010,1138,1267,1397,1508,1606 'response.data.errors':471,609 'response.data.from':468,606,1008,1136,1265,1395,1506,1604 'response.data.id':466,604,1006,1134,1263,1393,1504,1602 'response.data.sentat':470,608 'response.data.text':469,607,1011,1139,1268,1398,1509 'response.data.to':467,605,1007,1135,1264,1394,1505,1603 'response.data.type':1009,1137,1266,1396,1507,1605 'retri':114,131,155 'retriev':1684,1766,1807,1849 'return':661 'rule':255 'schedul':1399,1707 'schema':310,315,1637,1663,1668,2164 'sdk':1624,1677 'secret':1933 'section':301,311,1654,1664 'see':2169 'send':198,211,227,242,338,380,472,893,898,923,1012,1022,1028,1048,1140,1269,1279,1307,1410,1510,1514 'sendat':1485 'sender':478,481,502,1155,1283,1724,1744,1769,1792,1961 'sent':433,744,957,1087,1211,1346,1465,1577 'set':570,1560,2014,2039,2069,2098,2125 'setup':15 'shape':487 'short':374,520,1062,1186,1271,1277,1287,1321,1430 'short-cod':1276 'shown':43,278 'sign':613 'signatur':622,631,659,662 'skill':282 'skill-telnyx-messaging-go' 'sms':340,474,823 'sms/mms':1519 'source-team-telnyx' 'space':177 'state':1694,1778,1819,1861,1975,1999,2024,2082 'status':546,557 'step':892 'string':364,377,388,399,401,412,420,496,510,523,529,539,549,719,729,810,820,913,936,944,959,987,1038,1052,1066,1074,1089,1166,1176,1190,1198,1213,1297,1311,1325,1333,1348,1420,1433,1444,1452,1528,1541,1564 'support':868 'switch':97 't15':1489 'task':337,875,1613,1758,2055 'telnyx':2,5,31,86,259,453,589,612,621,626,993,1121,1250,1380 'telnyx-messaging-go':1 'telnyx-signature-ed25519':620 'telnyx-timestamp':625 'telnyx.error':92 'telnyx.messagescheduleparams':1477 'telnyx.messagesendgroupmmsparams':983 'telnyx.messagesendlongcodeparams':1113 'telnyx.messagesendnumberpoolparams':1237 'telnyx.messagesendparams':78,445 'telnyx.messagesendshortcodeparams':1372 'telnyx.messagesendwhatsappparams':1583 'telnyx.messagesendwithalphanumericsenderparams':576 'telnyx.newclient':28 'telnyx.whatsappmessagecontentparam':1589 'text':83,387,450,522,586,990,1118,1247,1377,1482 'time':734,749 'timestamp':627 'top':1955 'top-level':1954 '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':212,220,1516 'treat':240 'trigger':1939 'true':563 'type':360,492,695,698,703,712,779,782,786,795,826,833,838,909,1034,1162,1293,1416,1524,1552,1557,2150 'uniqu':404,1169,1436 'unsuccessful/unconfirm':775 'updat':547,558,693,1696,1780,1821,1863,1872,1977,2001,2026,2084,2094 'url':418,421,424,540,543,550,554,942,945,948,960,964,1072,1075,1078,1090,1094,1196,1199,1202,1214,1218,1331,1334,1337,1349,1353,1450,1453,1456,1565,1568 'us':215 'use':182,254,290,537,564,870,921,1046,1143,1305,1610,1629,1645,1680 'useprofilewebhook':559 'user':506 'uuid':402,530,709,792,1167,1434 'v':460,598,1000,1128,1257,1387,1498,1596 'valid':58,102,147,500,663 'var':90 'variant':482 'variat':887 'verif':611 'verifi':630 'w':641,657 'w.writeheader':674 'webhook':237,265,320,328,333,426,569,610,614,637,668,676,678,845,855,860,950,966,1080,1096,1204,1220,1339,1355,1458,1570,1642,2146,2167 'webhook-payload-field':332,859 'webhookfailoverurl':548,958,1088,1212,1347 'webhookurl':419,538,943,1073,1197,1332,1451,1563 'whatsapp':1512,1515,1538,1554,1562 'whatsappmessag':1549,1588 'without':1885,2112 'workflow':1948 'write':287,864 'yes':366,379,389,498,512,524,531,915,929,1040,1054,1168,1178,1299,1313,1422,1530,1543,1551","prices":[{"id":"e420a046-4b77-4d67-aa70-950488f2900e","listingId":"ca6afbfc-ce0f-4d18-81a0-3c92f71b1765","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:37.989Z"}],"sources":[{"listingId":"ca6afbfc-ce0f-4d18-81a0-3c92f71b1765","source":"github","sourceId":"team-telnyx/ai/telnyx-messaging-go","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-messaging-go","isPrimary":false,"firstSeenAt":"2026-04-18T22:06:37.989Z","lastSeenAt":"2026-04-22T06:54:38.604Z"}],"details":{"listingId":"ca6afbfc-ce0f-4d18-81a0-3c92f71b1765","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-messaging-go","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":"da206419d0872420b8dbbd73f388682d24346f5c","skill_md_path":"skills/telnyx-messaging-go/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-messaging-go"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-messaging-go","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-messaging-go"},"updatedAt":"2026-04-22T06:54:38.604Z"}}