{"id":"b8d3bf74-9e04-4576-9851-b5ee705488ff","shortId":"Ycdm5r","kind":"skill","title":"telnyx-voice-media-go","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Voice Media - 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\nresult, err := client.Messages.Send(ctx, params)\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      // Rate limited — wait and retry with exponential backoff\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## Play audio URL\n\nPlay an audio file on the call. If multiple play audio commands are issued consecutively,\nthe audio files will be placed in a queue awaiting playback. *Notes:*\n\n- When `overlay` is enabled, `target_legs` is limited to `self`.\n\n`POST /calls/{call_control_id}/actions/playback_start`\n\nOptional: `audio_type` (enum: mp3, wav), `audio_url` (string), `cache_audio` (boolean), `client_state` (string), `command_id` (string), `loop` (string), `media_name` (string), `overlay` (boolean), `playback_content` (string), `stop` (string), `target_legs` (string)\n\n```go\n\tresponse, err := client.Calls.Actions.StartPlayback(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStartPlaybackParams{\n\t\tAudioURL: \"https://example.com/audio.mp3\",\n\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n```\n\nReturns: `result` (string)\n\n## Stop audio playback\n\nStop audio being played on the call. **Expected Webhooks:**\n\n- `call.playback.ended` or `call.speak.ended`\n\n`POST /calls/{call_control_id}/actions/playback_stop`\n\nOptional: `client_state` (string), `command_id` (string), `overlay` (boolean), `stop` (string)\n\n```go\n\tresponse, err := client.Calls.Actions.StopPlayback(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStopPlaybackParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n```\n\nReturns: `result` (string)\n\n## Record pause\n\nPause recording the call. Recording can be resumed via Resume recording command. **Expected Webhooks:**\n\nThere are no webhooks associated with this command.\n\n`POST /calls/{call_control_id}/actions/record_pause`\n\nOptional: `client_state` (string), `command_id` (string), `recording_id` (uuid)\n\n```go\n\tresponse, err := client.Calls.Actions.PauseRecording(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionPauseRecordingParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n```\n\nReturns: `result` (string)\n\n## Record resume\n\nResume recording the call. **Expected Webhooks:**\n\nThere are no webhooks associated with this command.\n\n`POST /calls/{call_control_id}/actions/record_resume`\n\nOptional: `client_state` (string), `command_id` (string), `recording_id` (uuid)\n\n```go\n\tresponse, err := client.Calls.Actions.ResumeRecording(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionResumeRecordingParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n```\n\nReturns: `result` (string)\n\n## Recording start\n\nStart recording the call. Recording will stop on call hang-up, or can be initiated via the Stop Recording command. **Expected Webhooks:**\n\n- `call.recording.saved`\n- `call.recording.transcription.saved`\n- `call.recording.error`\n\n`POST /calls/{call_control_id}/actions/record_start` — Required: `format`, `channels`\n\nOptional: `client_state` (string), `command_id` (string), `custom_file_name` (string), `max_length` (int32), `play_beep` (boolean), `recording_track` (enum: both, inbound, outbound), `timeout_secs` (int32), `transcription` (boolean), `transcription_engine` (enum: A, B, deepgram/nova-3), `transcription_language` (enum: af, af-ZA, am, am-ET, ar, ar-AE, ar-BH, ar-DZ, ar-EG, ar-IL, ar-IQ, ar-JO, ar-KW, ar-LB, ar-MA, ar-MR, ar-OM, ar-PS, ar-QA, ar-SA, ar-TN, ar-YE, as, auto_detect, az, az-AZ, ba, be, bg, bg-BG, bn, bn-BD, bn-IN, bo, br, bs, bs-BA, ca, ca-ES, cs, cs-CZ, cy, da, da-DK, de, de-AT, de-CH, de-DE, el, el-GR, en, en-AU, en-CA, en-GB, en-GH, en-HK, en-IE, en-IN, en-KE, en-NG, en-NZ, en-PH, en-PK, en-SG, en-TZ, en-US, en-ZA, es, es-419, es-AR, es-BO, es-CL, es-CO, es-CR, es-DO, es-EC, es-ES, es-GT, es-HN, es-MX, es-NI, es-PA, es-PE, es-PR, es-PY, es-SV, es-US, es-UY, es-VE, et, et-EE, eu, eu-ES, fa, fa-IR, fi, fi-FI, fil-PH, fo, fr, fr-BE, fr-CA, fr-CH, fr-FR, gl, gl-ES, gu, gu-IN, ha, haw, he, hi, hi-IN, hr, hr-HR, ht, hu, hu-HU, hy, hy-AM, id, id-ID, is, is-IS, it, it-CH, it-IT, iw-IL, ja, ja-JP, jv-ID, jw, ka, ka-GE, kk, kk-KZ, km, km-KH, kn, kn-IN, ko, ko-KR, la, lb, ln, lo, lo-LA, lt, lt-LT, lv, lv-LV, mg, mi, mk, mk-MK, ml, ml-IN, mn, mn-MN, mr, mr-IN, ms, ms-MY, mt, my, my-MM, ne, ne-NP, nl, nl-BE, nl-NL, nn, no, no-NO, oc, pa, pa-Guru-IN, pl, pl-PL, ps, pt, pt-BR, pt-PT, ro, ro-RO, ru, ru-RU, rw-RW, sa, sd, si, si-LK, sk, sk-SK, sl, sl-SI, sn, so, sq, sq-AL, sr, sr-RS, ss-latn-za, st-ZA, su, su-ID, sv, sv-SE, sw, sw-KE, sw-TZ, ta, ta-IN, ta-LK, ta-MY, ta-SG, te, te-IN, tg, th, th-TH, tk, tl, tn-latn-za, tr, tr-TR, ts-ZA, tt, uk, uk-UA, ur, ur-IN, ur-PK, uz, uz-UZ, ve-ZA, vi, vi-VN, xh-ZA, yi, yo, yue-Hant-HK, zh, zh-TW, zu-ZA), `transcription_max_speaker_count` (int32), `transcription_min_speaker_count` (int32), `transcription_profanity_filter` (boolean), `transcription_speaker_diarization` (boolean), `trim` (enum: trim-silence)\n\n```go\n\tresponse, err := client.Calls.Actions.StartRecording(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStartRecordingParams{\n\t\t\tChannels: telnyx.CallActionStartRecordingParamsChannelsSingle,\n\t\t\tFormat:   telnyx.CallActionStartRecordingParamsFormatWav,\n\t\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n```\n\nReturns: `result` (string)\n\n## Recording stop\n\nStop recording the call. **Expected Webhooks:**\n\n- `call.recording.saved`\n\n`POST /calls/{call_control_id}/actions/record_stop`\n\nOptional: `client_state` (string), `command_id` (string), `recording_id` (uuid)\n\n```go\n\tresponse, err := client.Calls.Actions.StopRecording(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStopRecordingParams{\n\t\t\tStopRecordingRequest: telnyx.StopRecordingRequestParam{},\n\t\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n```\n\nReturns: `result` (string)\n\n## Speak text\n\nConvert text to speech and play it back on the call. If multiple speak text commands are issued consecutively, the audio files will be placed in a queue awaiting playback. **Expected Webhooks:**\n\n- `call.speak.started`\n- `call.speak.ended`\n\n`POST /calls/{call_control_id}/actions/speak` — Required: `payload`, `voice`\n\nOptional: `client_state` (string), `command_id` (string), `language` (enum: arb, cmn-CN, cy-GB, da-DK, de-DE, en-AU, en-GB, en-GB-WLS, en-IN, en-US, es-ES, es-MX, es-US, fr-CA, fr-FR, hi-IN, is-IS, it-IT, ja-JP, ko-KR, nb-NO, nl-NL, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sv-SE, tr-TR), `loop` (string), `payload_type` (enum: text, ssml), `service_level` (enum: basic, premium), `stop` (string), `target_legs` (enum: self, opposite, both), `voice_settings` (object)\n\n```go\n\tresponse, err := client.Calls.Actions.Speak(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionSpeakParams{\n\t\t\tPayload: \"Say this on the call\",\n\t\t\tVoice:   \"female\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t\tLanguage: \"en-US\",\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n```\n\nReturns: `result` (string)\n\n---\n\n## Webhooks\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\nThe following webhook events are sent to your configured webhook URL.\nAll webhooks include `telnyx-timestamp` and `telnyx-signature-ed25519` headers for Ed25519 signature verification. Use `client.webhooks.unwrap()` to verify.\n\n| Event | Description |\n|-------|-------------|\n| `callPlaybackEnded` | Call Playback Ended |\n| `callPlaybackStarted` | Call Playback Started |\n| `callRecordingError` | Call Recording Error |\n| `callRecordingSaved` | Call Recording Saved |\n| `callRecordingTranscriptionSaved` | Call Recording Transcription Saved |\n| `callSpeakEnded` | Call Speak Ended |\n| `callSpeakStarted` | Call Speak Started |\n\n### Webhook payload fields\n\n**`callPlaybackEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.playback.ended | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n| `data.payload.call_control_id` | string | Call ID used to issue commands via Call Control API. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.media_url` | string | The audio URL being played back, if audio_url has been used to start. |\n| `data.payload.media_name` | string | The name of the audio media file being played back, if media_name has been used to start. |\n| `data.payload.overlay` | boolean | Whether the stopped audio was in overlay mode or not. |\n| `data.payload.status` | enum: file_not_found, call_hangup, unknown, cancelled, cancelled_amd, completed, failed | Reflects how command ended. |\n| `data.payload.status_detail` | string | Provides details in case of failure. |\n\n**`callPlaybackStarted`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.playback.started | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n| `data.payload.call_control_id` | string | Call ID used to issue commands via Call Control API. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.media_url` | string | The audio URL being played back, if audio_url has been used to start. |\n| `data.payload.media_name` | string | The name of the audio media file being played back, if media_name has been used to start. |\n| `data.payload.overlay` | boolean | Whether the audio is going to be played in overlay mode or not. |\n\n**`callRecordingError`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.recording.error | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n| `data.payload.call_control_id` | string | Call ID used to issue commands via Call Control API. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.reason` | enum: Failed to authorize with storage using custom credentials, Invalid credentials json, Unsupported backend, Internal server error | Indication that there was a problem recording the call. |\n\n**`callRecordingSaved`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.recording.saved | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.recording_started_at` | date-time | ISO 8601 datetime of when recording started. |\n| `data.payload.recording_ended_at` | date-time | ISO 8601 datetime of when recording ended. |\n| `data.payload.channels` | enum: single, dual | Whether recording was recorded in `single` or `dual` channel. |\n\n**`callRecordingTranscriptionSaved`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.recording.transcription.saved | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n| `data.payload.call_control_id` | string | Call ID used to issue commands via Call Control API. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.calling_party_type` | enum: pstn, sip | The type of calling party connection. |\n| `data.payload.recording_id` | string | ID that is unique to the recording session and can be used to correlate webhook events. |\n| `data.payload.recording_transcription_id` | string | ID that is unique to the transcription process and can be used to correlate webhook events. |\n| `data.payload.status` | enum: completed | The transcription status. |\n| `data.payload.transcription_text` | string | The transcribed text |\n\n**`callSpeakEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.speak.ended | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n| `data.payload.call_control_id` | string | Call ID used to issue commands via Call Control API. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.status` | enum: completed, call_hangup, cancelled_amd | Reflects how the command ended. |\n\n**`callSpeakStarted`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.speak.started | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n| `data.payload.call_control_id` | string | Call ID used to issue commands via Call Control API. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |","tags":["telnyx","voice","media","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-voice-media-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-voice-media-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 (18,003 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:53.457Z","embedding":null,"createdAt":"2026-04-18T22:08:32.095Z","updatedAt":"2026-04-22T00:54:53.457Z","lastSeenAt":"2026-04-22T00:54:53.457Z","tsv":"'-419':670 '/actions/playback_start':206 '/actions/playback_stop':285 '/actions/record_pause':347 '/actions/record_resume':400 '/actions/record_start':465 '/actions/record_stop':1107 '/actions/speak':1182 '/audio.mp3':252 '/calls':202,281,343,396,461,1103,1178 '/team-telnyx/telnyx-go':16,25 '/team-telnyx/telnyx-go/option':28 '401':66,137 '403':141 '404':144 '422':62,94,148 '429':59,104,154 '8601':1506,1702,1875,2022,2098,2111,2167,2350,2482 'ae':517 'af':506,508 'af-za':507 'al':944 'alreadi':42 'alway':67,1357 'am-et':511 'amd':1649,2439 'api':34,50,119,139,1526,1722,1895,2187,2370,2502 'apierr':85,90 'apierr.error':125 'apierr.statuscode':92,124 'app':1532,1728,1901,2073,2193,2376,2508 'ar':514,516,519,522,525,528,531,534,537,540,543,546,549,552,555,558,561,564,673 'ar-a':515 'ar-bh':518 'ar-dz':521 'ar-eg':524 'ar-il':527 'ar-iq':530 'ar-jo':533 'ar-kw':536 'ar-lb':539 'ar-ma':542 'ar-mr':545 'ar-om':548 'ar-p':551 'ar-qa':554 'ar-sa':557 'ar-tn':560 'ar-y':563 'arb':1195 'associ':338,391 'assum':39 'au':622,1210 'audio':162,166,174,180,208,213,217,266,269,1163,1593,1599,1613,1632,1789,1795,1809,1827 'audiourl':249 'authent':64 'author':1962 'auto':567 'await':188,1171 'az':569,571,572 'az-az':570 'b':501 'ba':573,591 'back':1150,1597,1618,1793,1814 'backend':1972 'backoff':112,160 'bash':11 'basic':1291 'bd':582 'beep':484 'bg':575,577,578 'bg-bg':576 'bh':520 'bn':579,581,584 'bn-bd':580 'bn-in':583 'bo':586,676 'bodi':1373,1379 'boolean':218,231,294,485,496,1058,1062,1628,1824 'br':587,910,1265 'bs':588,590 'bs-ba':589 'ca':592,594,625,757,1235 'ca-e':593 'cach':216 'call':51,170,203,245,274,282,302,323,344,363,384,397,416,437,442,462,1073,1098,1104,1123,1153,1179,1309,1318,1438,1442,1446,1450,1454,1459,1463,1517,1524,1530,1541,1552,1571,1644,1713,1720,1726,1737,1748,1767,1886,1893,1899,1910,1921,1940,1984,2039,2058,2071,2082,2178,2185,2191,2202,2213,2232,2259,2361,2368,2374,2385,2396,2415,2436,2493,2500,2506,2517,2528,2547 'call.playback.ended':277,1486 'call.playback.started':1682 'call.recording.error':459,1855 'call.recording.saved':457,1101,2002 'call.recording.transcription.saved':458,2147 'call.speak.ended':279,1176,2330 'call.speak.started':1175,2462 'callplaybackend':1437,1469 'callplaybackstart':1441,1665 'callrecordingerror':1445,1838 'callrecordingsav':1449,1985 'callrecordingtranscriptionsav':1453,2130 'callspeakend':1458,2313 'callspeakstart':1462,2445 'cancel':1647,1648,2438 'case':93,103,1662 'ch':611,760,803 'channel':468,1077,2129 'check':98,130,151 'cl':679 'client':29,40,219,287,349,402,470,1109,1187 'client.calls.actions.pauserecording':361 'client.calls.actions.resumerecording':414 'client.calls.actions.speak':1307 'client.calls.actions.startplayback':243 'client.calls.actions.startrecording':1071 'client.calls.actions.stopplayback':300 'client.calls.actions.stoprecording':1121 'client.messages.send':78 'client.webhooks.unwrap':1378,1432 'cmn':1197 'cmn-cn':1196 'cn':1198 'co':682 'code':72,136 'command':175,222,290,331,341,352,394,405,454,473,1112,1158,1190,1522,1588,1654,1718,1784,1891,1957,2090,2183,2249,2366,2432,2443,2498,2564 'common':134 'complet':1650,2303,2435 'configur':1412 'connect':131,1536,1732,1905,2077,2197,2261,2380,2512 'consecut':178,1161 'content':233 'context':20 'context.background':244,301,362,415,1072,1122,1308 'control':204,246,283,303,345,364,398,417,463,1074,1105,1124,1180,1310,1514,1525,1531,1710,1721,1727,1883,1894,1900,2072,2175,2186,2192,2358,2369,2375,2490,2501,2507 'convert':1143 'correl':1558,1578,1754,1774,1927,1947,2045,2065,2219,2239,2278,2298,2402,2422,2534,2554 'count':1048,1053 'cr':685 'credenti':1967,1969 'cs':596,598 'cs-cz':597 'ctx':79 'custom':476,1966 'cy':600,1200 'cy-gb':1199 'cz':599 'd':121 'da':601,603,1203 'da-dk':602,1202 'data.event':1483,1679,1852,1999,2144,2327,2459 'data.id':1493,1689,1862,2009,2154,2337,2469 'data.occurred':1500,1696,1869,2016,2161,2344,2476 'data.payload.call':1513,1542,1561,1709,1738,1757,1882,1911,1930,2029,2048,2174,2203,2222,2357,2386,2405,2489,2518,2537 'data.payload.calling':2250 'data.payload.channels':2117 'data.payload.client':1581,1777,1950,2083,2242,2425,2557 'data.payload.connection':1527,1723,1896,2068,2188,2371,2503 'data.payload.media':1589,1606,1785,1802 'data.payload.overlay':1627,1823 'data.payload.reason':1958 'data.payload.recording':2091,2104,2262,2281 'data.payload.status':1639,1656,2301,2433 'data.payload.transcription':2307 'data.record':1473,1669,1842,1989,2134,2317,2449 'date':1503,1699,1872,2019,2095,2108,2164,2347,2479 'date-tim':1502,1698,1871,2018,2094,2107,2163,2346,2478 'datetim':1507,1703,1876,2023,2099,2112,2168,2351,2483 'de':605,607,610,613,614,1206,1207 'de-at':606 'de-ch':609 'de-d':612,1205 'deepgram/nova-3':502 'default':117 'deliv':1492,1688,1861,2008,2153,2336,2468 'descript':1436,1472,1668,1841,1988,2133,2316,2448 'detail':1657,1660 'detect':568 'diariz':1061 'dk':604,1204 'dual':2120,2128 'dz':523 'ec':691 'ed25519':1344,1351,1425,1428 'ee':734 'eg':526 'el':615,617 'el-gr':616 'els':126 'en':619,621,624,627,630,633,636,639,642,645,648,651,654,657,660,663,666,1209,1212,1215,1219,1222,1328 'en-au':620,1208 'en-ca':623 'en-gb':626,1211 'en-gb-wl':1214 'en-gh':629 'en-hk':632 'en-i':635 'en-in':638,1218 'en-k':641 'en-ng':644 'en-nz':647 'en-ph':650 'en-pk':653 'en-sg':656 'en-tz':659 'en-us':662,1221,1327 'en-za':665 'enabl':194 'end':1440,1461,1655,2105,2116,2444 'engin':498 'enum':210,488,499,505,1064,1194,1285,1290,1297,1475,1485,1640,1671,1681,1844,1854,1959,1991,2001,2118,2136,2146,2253,2302,2319,2329,2434,2451,2461 'err':77,82,89,242,254,257,299,307,310,360,368,371,413,421,424,1070,1082,1085,1120,1130,1133,1306,1322,1325,1377,1382 'error':47,56,61,65,69,75,97,120,129,135,150,1448,1975 'errors.as':88 'es':595,668,669,672,675,678,681,684,687,690,693,694,696,699,702,705,708,711,714,717,720,723,726,729,738,767,1225,1226,1228,1231 'es-':692,1224 'es-ar':671 'es-bo':674 'es-cl':677 'es-co':680 'es-cr':683 'es-do':686 'es-ec':689 'es-gt':695 'es-hn':698 'es-mx':701,1227 'es-ni':704 'es-p':710 'es-pa':707 'es-pi':716 'es-pr':713 'es-sv':719 'es-us':722,1230 'es-uy':725 'es-v':728 'et':513,731,733 'et-e':732 'eu':735,737 'eu-':736 'event':1376,1392,1400,1407,1435,1476,1490,1511,1560,1580,1672,1686,1707,1756,1776,1845,1859,1880,1929,1949,1992,2006,2027,2047,2067,2137,2151,2172,2221,2241,2280,2300,2320,2334,2355,2404,2424,2452,2466,2487,2536,2556 'event.data.eventtype':1401 'exampl':37 'example.com':251 'example.com/audio.mp3':250 'expect':275,332,385,455,1099,1173 'exponenti':111,159 'fa':739,741 'fa-ir':740 'fail':53,1651,1960 'failur':1664 'femal':1320 'fi':743,745,746 'fi-fi':744 'field':100,152,1468,1470,1666,1839,1986,2131,2314,2446 'fil':748 'fil-ph':747 'file':167,181,477,1164,1615,1641,1811 'filter':1057 'fmt':21 'fmt.printf':118,258,311,372,425,1086,1134,1330 'fmt.println':95,113,127,1398 'fo':750 'follow':1405 'format':102,153,467,1079 'former':1534,1730,1903,2075,2195,2378,2510 'found':147,1643 'fr':751,753,756,759,762,763,1234,1237,1238 'fr-be':752 'fr-ca':755,1233 'fr-ch':758 'fr-fr':761,1236 'func':1367 'gb':628,1201,1213,1216 'ge':821 'get':13 'gh':631 'github.com':15,24,27 'github.com/team-telnyx/telnyx-go':14,23 'github.com/team-telnyx/telnyx-go/option':26 'gl':764,766 'gl-es':765 'go':5,9,12,18,73,240,297,358,411,1068,1118,1304,1362,1829 'gr':618 'gt':697 'gu':768,770 'gu-in':769 'guru':900 'ha':772 'handl':48,68 'handler':1366 'handlewebhook':1368 'hang':444 'hang-up':443 'hangup':1645,2437 'hant':1036 'haw':773 'header':1356,1426 'hi':775,777,1240 'hi-in':776,1239 'hk':634,1037 'hn':700 'hr':779,781,782 'hr-hr':780 'ht':783 'http.error':1384 'http.request':1372 'http.responsewriter':1370 'http.statusbadrequest':1388 'http.statusok':1403 'hu':784,786,787 'hu-hu':785 'hy':788,790 'hy-am':789 'id':205,223,247,284,291,304,346,353,356,365,399,406,409,418,464,474,792,794,795,816,959,1075,1106,1113,1116,1125,1181,1191,1311,1515,1518,1528,1533,1537,1544,1546,1563,1565,1711,1714,1724,1729,1733,1740,1742,1759,1761,1884,1887,1897,1902,1906,1913,1915,1932,1934,2031,2033,2050,2052,2069,2074,2078,2176,2179,2189,2194,2198,2205,2207,2224,2226,2263,2265,2283,2285,2359,2362,2372,2377,2381,2388,2390,2407,2409,2491,2494,2504,2509,2513,2520,2522,2539,2541 'id-id':793 'identifi':1477,1495,1673,1691,1846,1864,1993,2011,2138,2156,2321,2339,2453,2471 'ie':637 'il':529,809 'import':19,74 'inbound':490 'includ':1347,1417 'indic':1976 'initi':43,449 'instal':10 'insuffici':142 'int32':482,494,1049,1054 'intern':1973 'invalid':138,1386,1968 'io.readall':1374 'iq':532 'ir':742 'is-i':797,1242 'iso':1505,1701,1874,2021,2097,2110,2166,2349,2481 'issu':177,1160,1521,1717,1890,2182,2365,2497 'it-ch':801 'it-it':804,1245 'iw':808 'iw-il':807 'ja':810,812,1249 'ja-jp':811,1248 'jo':535 'jp':813,1250 'json':1970 'jv':815 'jv-id':814 'jw':817 'ka':818,820 'ka-g':819 'ke':643,967 'key':35,140 'kh':829 'kk':822,824 'kk-kz':823 'km':826,828 'km-kh':827 'kn':830,832 'kn-in':831 'ko':834,836,1252 'ko-kr':835,1251 'kr':837,1253 'kw':538 'kz':825 'la':838,844 'languag':504,1193,1326 'latn':951,997 'lb':541,839 'leg':196,238,1296,1543,1739,1912,2030,2204,2387,2519 'length':481 'level':1289 'limit':58,106,115,156,198 'lk':930,977 'ln':840 'lo':841,843 'lo-la':842 'log.fatal':256,309,370,423,1084,1132,1324 'loop':225,1281 'lt':845,847,848 'lt-lt':846 'lv':849,851,852 'lv-lv':850 'ma':544 'max':480,1046 'media':4,8,227,1614,1620,1810,1816 'mg':853 'mi':854 'min':1051 'mk':855,857,858 'mk-mk':856 'ml':859,861 'ml-in':860 'mm':879 'mn':863,865,866 'mn-mn':864 'mode':1636,1835 'mp3':211 'mr':547,867,869 'mr-in':868 'ms':871,873 'ms-mi':872 'mt':875 'multipl':172,1155 'mx':703,1229 'my-mm':877 'n':123,260,313,374,427,1088,1136,1332 'name':228,478,1607,1610,1621,1803,1806,1817 'nb':1255 'nb-no':1254 'ne':880,882 'ne-np':881 'network':55,128 'ng':646 'ni':706 'nil':83,255,308,369,422,1083,1131,1323,1383 'nl':884,886,889,890,1258,1259 'nl-be':885 'nl-nl':888,1257 'nn':891 'no-no':893 'note':190 'np':883 'nz':649 'object':1303 'oc':896 'occur':1512,1708,1881,2028,2173,2356,2488 'om':550 'opposit':1299 'option':207,286,348,401,469,1108,1186 'option.withapikey':31 'os':22 'os.getenv':32 'outbound':491 'overlay':192,230,293,1635,1834 'pa':709,897,899 'pa-guru-in':898 'param':80 'pars':1395 'parti':2251,2260 'paus':319,320 'payload':1184,1283,1313,1397,1467 'pe':712 'permiss':143 'ph':652,749 'pk':655,1017 'pl':902,904,905,1261,1262 'pl-pl':903,1260 'place':184,1167 'play':161,164,173,271,483,1148,1596,1617,1792,1813,1832 'playback':189,232,267,1172,1439,1443 'post':201,280,342,395,460,1102,1177 'pr':715 'premium':1292 'problem':1981 'process':2292 'product':71,1361 'profan':1056 'provid':1659 'ps':553,906 'pstn':2254 'pt':907,909,912,913,1264,1267,1268 'pt-br':908,1263 'pt-pt':911,1266 'py':718 'qa':556 'queue':187,1170 'r':1371 'r.body':1375 'r.header':1380 'rate':57,105,114,155 'receiv':1399,1585,1781,1954,2087,2246,2429,2561 'record':318,321,324,330,355,379,382,408,432,435,438,453,486,1093,1096,1115,1447,1451,1455,1982,2102,2115,2122,2124,2271 'reflect':1652,2440 'request':1346 'requir':99,466,1183 'resourc':145,1482,1499,1678,1695,1851,1868,1998,2015,2143,2160,2326,2343,2458,2475 'respons':241,298,359,412,1069,1119,1305 'response.data':261,314,375,428,1089,1137,1333 'result':76,263,316,377,430,1091,1139,1335 'resum':327,329,380,381 'retri':109,116,133,157 'return':262,315,376,429,1090,1138,1334,1389 'ro':914,916,917,1270,1271 'ro-ro':915,1269 'rs':948 'ru':918,920,921,1273,1274 'ru-ru':919,1272 'rw':923,924 'rw-rw':922 'sa':559,925 'save':1452,1457 'say':1314 'sd':926 'se':963,1277 'sec':493 'self':200,1298 'sent':1409 'server':1974 'servic':1288 'session':1562,1572,1758,1768,1931,1941,2049,2059,2223,2233,2272,2406,2416,2538,2548 'set':1302 'setup':17 'sg':658,983 'shown':45 'si':927,929,938 'si-lk':928 'sign':1341 'signatur':1350,1359,1387,1390,1424,1429 'silenc':1067 'singl':2119,2126 'sip':2255 'sk':931,933,934 'sk-sk':932 'skill' 'skill-telnyx-voice-media-go' 'sl':935,937 'sl-si':936 'sn':939 'source-team-telnyx' 'speak':1141,1156,1460,1464 'speaker':1047,1052,1060 'speech':1146 'sq':941,943 'sq-al':942 'sr':945,947 'sr-rs':946 'ss':950 'ss-latn-za':949 'ssml':1287 'st':954 'st-za':953 'start':433,434,1444,1465,1605,1626,1801,1822,2092,2103 'state':220,288,350,403,471,1110,1188,1582,1584,1778,1780,1951,1953,2084,2086,2243,2245,2426,2428,2558,2560 'status':2306 'stop':235,265,268,295,440,452,1094,1095,1293,1631 'stoprecordingrequest':1127 'storag':1964 'string':215,221,224,226,229,234,236,239,264,289,292,296,317,351,354,378,404,407,431,472,475,479,1092,1111,1114,1140,1189,1192,1282,1294,1336,1516,1529,1545,1564,1583,1591,1608,1658,1712,1725,1741,1760,1779,1787,1804,1885,1898,1914,1933,1952,2032,2051,2070,2085,2177,2190,2206,2225,2244,2264,2284,2309,2360,2373,2389,2408,2427,2492,2505,2521,2540,2559 'su':956,958 'su-id':957 'sv':721,960,962,1276 'sv-se':961,1275 'sw':964,966,969 'sw-ke':965 'sw-tz':968 'switch':91 'ta':971,973,976,979,982 'ta-in':972 'ta-lk':975 'ta-mi':978 'ta-sg':981 'target':195,237,1295 'te':984,986 'te-in':985 'telnyx':2,6,33,1340,1349,1354,1419,1423,1535,1731,1904,2076,2196,2379,2511 'telnyx-signature-ed25519':1348,1422 'telnyx-timestamp':1353,1418 'telnyx-voice-media-go':1 'telnyx.callactionpauserecordingparams':366 'telnyx.callactionresumerecordingparams':419 'telnyx.callactionspeakparams':1312 'telnyx.callactionstartplaybackparams':248 'telnyx.callactionstartrecordingparams':1076 'telnyx.callactionstartrecordingparamschannelssingle':1078 'telnyx.callactionstartrecordingparamsformatwav':1080 'telnyx.callactionstopplaybackparams':305 'telnyx.callactionstoprecordingparams':1126 'telnyx.error':86 'telnyx.newclient':30 'telnyx.stoprecordingrequestparam':1128 'text':1142,1144,1157,1286,2308,2312 'tg':988 'th':989,991,992 'th-th':990 'time':1504,1700,1873,2020,2096,2109,2165,2348,2480 'timeout':492 'timestamp':1355,1420 'tk':993 'tl':994 'tn':562,996 'tn-latn-za':995 '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' 'tr':999,1001,1002,1279,1280 'tr-tr':1000,1278 'track':487 'transcrib':2311 'transcript':495,497,503,1045,1050,1055,1059,1456,2282,2291,2305 'trim':1063,1066 'trim-sil':1065 'ts':1004 'ts-za':1003 'tt':1006 'tw':1041 'type':209,1284,1471,1474,1479,1484,1488,1497,1667,1670,1675,1680,1684,1693,1840,1843,1848,1853,1857,1866,1987,1990,1995,2000,2004,2013,2132,2135,2140,2145,2149,2158,2252,2257,2315,2318,2323,2328,2332,2341,2447,2450,2455,2460,2464,2473 'tz':661,970 'ua':1010 'uk':1007,1009 'uk-ua':1008 'uniqu':1549,1568,1745,1764,1918,1937,2036,2055,2210,2229,2268,2288,2393,2412,2525,2544 'unknown':1646 'unsupport':1971 'ur':1011,1013,1016 'ur-in':1012 'ur-pk':1015 'url':163,214,1414,1590,1594,1600,1786,1790,1796 'us':664,724,1223,1232,1329 'use':1431,1519,1538,1556,1576,1603,1624,1715,1734,1752,1772,1799,1820,1888,1907,1925,1945,1965,2043,2063,2079,2180,2199,2217,2237,2276,2296,2363,2382,2400,2420,2495,2514,2532,2552 'uuid':357,410,1117,1494,1690,1863,2010,2155,2338,2470 'uy':727 'uz':1018,1020,1021 'uz-uz':1019 'v':259,312,373,426,1087,1135,1331 'valid':60,96,149,1391 'var':84 've':730,1023 've-za':1022 'verif':1339,1430 'verifi':1358,1434 'vi':1025,1027 'vi-vn':1026 'via':328,450,1523,1719,1892,2184,2367,2499 'vn':1028 'voic':3,7,1185,1301,1319 'w':1369,1385 'w.writeheader':1402 'wait':107 'wav':212 'webhook':276,333,337,386,390,456,1100,1174,1337,1338,1342,1365,1396,1406,1413,1416,1466,1559,1579,1755,1775,1928,1948,2046,2066,2220,2240,2279,2299,2403,2423,2535,2555 'whether':1629,1825,2121 'wls':1217 'xh':1030 'xh-za':1029 'ye':565 'yi':1032 'yo':1033 'yue':1035 'yue-hant-hk':1034 'za':509,667,952,955,998,1005,1024,1031,1044 'zh':1038,1040 'zh-tw':1039 'zu':1043 'zu-za':1042","prices":[{"id":"ba36e64c-01a2-4eda-9fad-51759be41404","listingId":"b8d3bf74-9e04-4576-9851-b5ee705488ff","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:32.095Z"}],"sources":[{"listingId":"b8d3bf74-9e04-4576-9851-b5ee705488ff","source":"github","sourceId":"team-telnyx/ai/telnyx-voice-media-go","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-media-go","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:32.095Z","lastSeenAt":"2026-04-22T00:54:53.457Z"}],"details":{"listingId":"b8d3bf74-9e04-4576-9851-b5ee705488ff","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-voice-media-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":"b6832395b29275f04980d459c7f004418b49d2b5","skill_md_path":"skills/telnyx-voice-media-go/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-media-go"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-voice-media-go","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-voice-media-go"},"updatedAt":"2026-04-22T00:54:53.457Z"}}