{"id":"9621c8ef-8256-4d45-a5d8-8618cd417644","shortId":"Pc47EW","kind":"skill","title":"telnyx-voice-media-curl","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Voice Media - curl\n\n## Installation\n\n```text\n# curl is pre-installed on macOS, Linux, and Windows 10+\n```\n\n## Setup\n\n```bash\nexport TELNYX_API_KEY=\"YOUR_API_KEY_HERE\"\n```\n\nAll examples below use `$TELNYX_API_KEY` for authentication.\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```bash\n# Check HTTP status code in response\nresponse=$(curl -s -w \"\\n%{http_code}\" \\\n  -X POST \"https://api.telnyx.com/v2/messages\" \\\n  -H \"Authorization: Bearer $TELNYX_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"to\": \"+13125550001\", \"from\": \"+13125550002\", \"text\": \"Hello\"}')\n\nhttp_code=$(echo \"$response\" | tail -1)\nbody=$(echo \"$response\" | sed '$d')\n\ncase $http_code in\n  2*) echo \"Success: $body\" ;;\n  422) echo \"Validation error — check required fields and formats\" ;;\n  429) echo \"Rate limited — retry after delay\"; sleep 1 ;;\n  401) echo \"Authentication failed — check TELNYX_API_KEY\" ;;\n  *)   echo \"Error $http_code: $body\" ;;\nesac\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```bash\ncurl \\\n  -X POST \\\n  -H \"Authorization: Bearer $TELNYX_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n      \"audio_url\": \"https://example.com/audio.mp3\"\n  }' \\\n  \"https://api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ/actions/playback_start\"\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```bash\ncurl \\\n  -X POST \\\n  -H \"Authorization: Bearer $TELNYX_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ/actions/playback_stop\"\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```bash\ncurl \\\n  -X POST \\\n  -H \"Authorization: Bearer $TELNYX_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ/actions/record_pause\"\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```bash\ncurl \\\n  -X POST \\\n  -H \"Authorization: Bearer $TELNYX_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ/actions/record_resume\"\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```bash\ncurl \\\n  -X POST \\\n  -H \"Authorization: Bearer $TELNYX_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"format\": \"mp3\",\n  \"channels\": \"single\"\n}' \\\n  \"https://api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ/actions/record_start\"\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```bash\ncurl \\\n  -X POST \\\n  -H \"Authorization: Bearer $TELNYX_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  \"https://api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ/actions/record_stop\"\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```bash\ncurl \\\n  -X POST \\\n  -H \"Authorization: Bearer $TELNYX_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n      \"payload\": \"Say this on the call\",\n      \"voice\": \"Telnyx.KokoroTTS.af\",\n      \"language\": \"en-US\"\n  }' \\\n  \"https://api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ/actions/speak\"\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```bash\n# Telnyx signs webhooks with Ed25519 (asymmetric — NOT HMAC/Standard Webhooks).\n# Headers sent with each webhook:\n#   telnyx-signature-ed25519: base64-encoded Ed25519 signature\n#   telnyx-timestamp: Unix timestamp (reject if >5 minutes old for replay protection)\n#\n# Get your public key from: Telnyx Portal > Account Settings > Keys & Credentials\n# Use the Telnyx SDK in your language for verification (client.webhooks.unwrap).\n# Your endpoint MUST return 2xx within 2 seconds or Telnyx will retry (up to 3 attempts).\n# Configure a failover URL in Telnyx Portal for additional reliability.\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","curl","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm"],"capabilities":["skill","source-team-telnyx","skill-telnyx-voice-media-curl","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-curl","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,038 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.376Z","embedding":null,"createdAt":"2026-04-18T22:08:31.308Z","updatedAt":"2026-04-22T00:54:53.376Z","lastSeenAt":"2026-04-22T00:54:53.376Z","tsv":"'+13125550001':100 '+13125550002':102 '-1':110 '-419':694 '/actions/playback_start':228 '/actions/playback_stop':309 '/actions/record_pause':371 '/actions/record_resume':424 '/actions/record_start':489 '/actions/record_stop':1132 '/actions/speak':1205 '/audio.mp3':282 '/calls':224,305,367,420,485,1128,1201 '/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/playback_start':285 '/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/playback_stop':338 '/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/record_pause':399 '/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/record_resume':452 '/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/record_start':1114 '/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/record_stop':1160 '/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/speak':1357 '/v2/messages':86 '1':141 '10':22 '2':120,1450 '2xx':1448 '3':1458 '401':61,142,159 '403':163 '404':166 '422':57,124,170 '429':54,133,176 '5':1417 '8601':1572,1768,1941,2088,2164,2177,2233,2416,2548 'account':1430 'addit':1468 'ae':541 'af':530,532 'af-za':531 'al':968 'alway':62,1381 'am-et':535 'amd':1715,2505 'api':27,30,38,45,91,148,161,270,329,390,443,1100,1151,1335,1592,1788,1961,2253,2436,2568 'api.telnyx.com':85,284,337,398,451,1113,1159,1356 'api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/playback_start':283 'api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/playback_stop':336 'api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/record_pause':397 'api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/record_resume':450 'api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/record_start':1112 'api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/record_stop':1158 'api.telnyx.com/v2/calls/v3:550e8400-e29b-41d4-a716-446655440000_gru1ogrkyq/actions/speak':1355 'api.telnyx.com/v2/messages':84 'app':1598,1794,1967,2139,2259,2442,2574 'application/json':97,276,335,396,449,1106,1157,1341 'ar':538,540,543,546,549,552,555,558,561,564,567,570,573,576,579,582,585,588,697 'ar-a':539 'ar-bh':542 'ar-dz':545 'ar-eg':548 'ar-il':551 'ar-iq':554 'ar-jo':557 'ar-kw':560 'ar-lb':563 'ar-ma':566 'ar-mr':569 'ar-om':572 'ar-p':575 'ar-qa':578 'ar-sa':581 'ar-tn':584 'ar-y':587 'arb':1218 'associ':362,415 'asymmetr':1392 'attempt':1459 'au':646,1233 'audio':184,188,196,202,230,235,239,278,290,293,1186,1659,1665,1679,1698,1855,1861,1875,1893 'authent':41,59,144 'author':88,267,326,387,440,1097,1148,1332,2028 'auto':591 'await':210,1194 'az':593,595,596 'az-az':594 'b':525 'ba':597,615 'back':1173,1663,1684,1859,1880 'backend':2038 'backoff':182 'base64':1406 'base64-encoded':1405 'bash':24,68,262,321,382,435,1092,1143,1327,1386 'basic':1314 'bd':606 'bearer':89,268,327,388,441,1098,1149,1333 'beep':508 'bg':599,601,602 'bg-bg':600 'bh':544 'bn':603,605,608 'bn-bd':604 'bn-in':607 'bo':610,700 'bodi':111,123,154 'boolean':240,253,318,509,520,1082,1086,1694,1890 'br':611,934,1288 'bs':612,614 'bs-ba':613 'ca':616,618,649,781,1258 'ca-e':617 'cach':238 'call':46,192,225,298,306,347,368,408,421,461,466,486,1123,1129,1176,1202,1348,1504,1508,1512,1516,1520,1525,1529,1583,1590,1596,1607,1618,1637,1710,1779,1786,1792,1803,1814,1833,1952,1959,1965,1976,1987,2006,2050,2105,2124,2137,2148,2244,2251,2257,2268,2279,2298,2325,2427,2434,2440,2451,2462,2481,2502,2559,2566,2572,2583,2594,2613 'call.playback.ended':301,1552 'call.playback.started':1748 'call.recording.error':483,1921 'call.recording.saved':481,1126,2068 'call.recording.transcription.saved':482,2213 'call.speak.ended':303,1199,2396 'call.speak.started':1198,2528 'callplaybackend':1503,1535 'callplaybackstart':1507,1731 'callrecordingerror':1511,1904 'callrecordingsav':1515,2051 'callrecordingtranscriptionsav':1519,2196 'callspeakend':1524,2379 'callspeakstart':1528,2511 'cancel':1713,1714,2504 'case':116,1728 'ch':635,784,827 'channel':492,1110,2195 'check':69,128,146,173 'cl':703 'client':241,311,373,426,494,1134,1210 'client.webhooks.unwrap':1443,1498 'cmn':1220 'cmn-cn':1219 'cn':1221 'co':706 'code':67,72,81,106,118,153,158 'command':197,244,314,355,365,376,418,429,478,497,1137,1181,1213,1588,1654,1720,1784,1850,1957,2023,2156,2249,2315,2432,2498,2509,2564,2630 'common':156 'complet':1716,2369,2501 'configur':1460,1478 'connect':1602,1798,1971,2143,2263,2327,2446,2578 'consecut':200,1184 'content':95,255,274,333,394,447,1104,1155,1339 'content-typ':94,273,332,393,446,1103,1154,1338 'control':226,307,369,422,487,1130,1203,1580,1591,1597,1776,1787,1793,1949,1960,1966,2138,2241,2252,2258,2424,2435,2441,2556,2567,2573 'convert':1166 'correl':1624,1644,1820,1840,1993,2013,2111,2131,2285,2305,2344,2364,2468,2488,2600,2620 'count':1072,1077 'cr':709 'credenti':1433,2033,2035 'cs':620,622 'cs-cz':621 'curl':5,9,12,76,263,322,383,436,1093,1144,1328 'custom':500,2032 'cy':624,1223 'cy-gb':1222 'cz':623 'd':98,115,277,1107,1342 'da':625,627,1226 'da-dk':626,1225 'data.event':1549,1745,1918,2065,2210,2393,2525 'data.id':1559,1755,1928,2075,2220,2403,2535 'data.occurred':1566,1762,1935,2082,2227,2410,2542 'data.payload.call':1579,1608,1627,1775,1804,1823,1948,1977,1996,2095,2114,2240,2269,2288,2423,2452,2471,2555,2584,2603 'data.payload.calling':2316 'data.payload.channels':2183 'data.payload.client':1647,1843,2016,2149,2308,2491,2623 'data.payload.connection':1593,1789,1962,2134,2254,2437,2569 'data.payload.media':1655,1672,1851,1868 'data.payload.overlay':1693,1889 'data.payload.reason':2024 'data.payload.recording':2157,2170,2328,2347 'data.payload.status':1705,1722,2367,2499 'data.payload.transcription':2373 'data.record':1539,1735,1908,2055,2200,2383,2515 'date':1569,1765,1938,2085,2161,2174,2230,2413,2545 'date-tim':1568,1764,1937,2084,2160,2173,2229,2412,2544 'datetim':1573,1769,1942,2089,2165,2178,2234,2417,2549 'de':629,631,634,637,638,1229,1230 'de-at':630 'de-ch':633 'de-d':636,1228 'deepgram/nova-3':526 'delay':139 'deliv':1558,1754,1927,2074,2219,2402,2534 'descript':1502,1538,1734,1907,2054,2199,2382,2514 'detail':1723,1726 'detect':592 'diariz':1085 'dk':628,1227 'dual':2186,2194 'dz':547 'ec':715 'echo':107,112,121,125,134,143,150 'ed25519':1368,1375,1391,1404,1408,1491,1494 'ee':758 'eg':550 'el':639,641 'el-gr':640 'en':643,645,648,651,654,657,660,663,666,669,672,675,678,681,684,687,690,1232,1235,1238,1242,1245,1353 'en-au':644,1231 'en-ca':647 'en-gb':650,1234 'en-gb-wl':1237 'en-gh':653 'en-hk':656 'en-i':659 'en-in':662,1241 'en-k':665 'en-ng':668 'en-nz':671 'en-ph':674 'en-pk':677 'en-sg':680 'en-tz':683 'en-us':686,1244,1352 'en-za':689 'enabl':216 'encod':1407 'end':1506,1527,1721,2171,2182,2510 'endpoint':1445 'engin':522 'enum':232,512,523,529,1088,1217,1308,1313,1320,1541,1551,1706,1737,1747,1910,1920,2025,2057,2067,2184,2202,2212,2319,2368,2385,2395,2500,2517,2527 'error':42,51,56,60,64,127,151,157,172,1514,2041 'es':619,692,693,696,699,702,705,708,711,714,717,718,720,723,726,729,732,735,738,741,744,747,750,753,762,791,1248,1249,1251,1254 'es-':716,1247 'es-ar':695 'es-bo':698 'es-cl':701 'es-co':704 'es-cr':707 'es-do':710 'es-ec':713 'es-gt':719 'es-hn':722 'es-mx':725,1250 'es-ni':728 'es-p':734 'es-pa':731 'es-pi':740 'es-pr':737 'es-sv':743 'es-us':746,1253 'es-uy':749 'es-v':752 'esac':155 'et':537,755,757 'et-e':756 'eu':759,761 'eu-':760 'event':1473,1501,1542,1556,1577,1626,1646,1738,1752,1773,1822,1842,1911,1925,1946,1995,2015,2058,2072,2093,2113,2133,2203,2217,2238,2287,2307,2346,2366,2386,2400,2421,2470,2490,2518,2532,2553,2602,2622 'exampl':34 'example.com':281 'example.com/audio.mp3':280 'expect':299,356,409,479,1124,1196 'exponenti':181 'export':25 'fa':763,765 'fa-ir':764 'fail':48,145,1717,2026 'failov':1462 'failur':1730 'fi':767,769,770 'fi-fi':768 'field':130,174,1534,1536,1732,1905,2052,2197,2380,2512 'fil':772 'fil-ph':771 'file':189,203,501,1187,1681,1707,1877 'filter':1081 'fo':774 'follow':1471 'format':132,175,491,1108 'former':1600,1796,1969,2141,2261,2444,2576 'found':169,1709 'fr':775,777,780,783,786,787,1257,1260,1261 'fr-be':776 'fr-ca':779,1256 'fr-ch':782 'fr-fr':785,1259 'gb':652,1224,1236,1239 'ge':845 'get':1423 'gh':655 'gl':788,790 'gl-es':789 'go':1895 'gr':642 'gt':721 'gu':792,794 'gu-in':793 'guru':924 'h':87,93,266,272,325,331,386,392,439,445,1096,1102,1147,1153,1331,1337 'ha':796 'handl':43,63 'hang':468 'hang-up':467 'hangup':1711,2503 'hant':1060 'haw':797 'header':1380,1396,1492 'hello':104 'hi':799,801,1263 'hi-in':800,1262 'hk':658,1061 'hmac/standard':1394 'hn':724 'hr':803,805,806 'hr-hr':804 'ht':807 'http':70,80,105,117,152 'hu':808,810,811 'hu-hu':809 'hy':812,814 'hy-am':813 'id':227,245,308,315,370,377,380,423,430,433,488,498,816,818,819,840,983,1131,1138,1141,1204,1214,1581,1584,1594,1599,1603,1610,1612,1629,1631,1777,1780,1790,1795,1799,1806,1808,1825,1827,1950,1953,1963,1968,1972,1979,1981,1998,2000,2097,2099,2116,2118,2135,2140,2144,2242,2245,2255,2260,2264,2271,2273,2290,2292,2329,2331,2349,2351,2425,2428,2438,2443,2447,2454,2456,2473,2475,2557,2560,2570,2575,2579,2586,2588,2605,2607 'id-id':817 'identifi':1543,1561,1739,1757,1912,1930,2059,2077,2204,2222,2387,2405,2519,2537 'ie':661 'il':553,833 'inbound':514 'includ':1371,1483 'indic':2042 'initi':473 'instal':10,16 'insuffici':164 'int32':506,518,1073,1078 'intern':2039 'invalid':160,2034 'iq':556 'ir':766 'is-i':821,1265 'iso':1571,1767,1940,2087,2163,2176,2232,2415,2547 'issu':199,1183,1587,1783,1956,2248,2431,2563 'it-ch':825 'it-it':828,1268 'iw':832 'iw-il':831 'ja':834,836,1272 'ja-jp':835,1271 'jo':559 'jp':837,1273 'json':2036 'jv':839 'jv-id':838 'jw':841 'ka':842,844 'ka-g':843 'ke':667,991 'key':28,31,39,92,149,162,271,330,391,444,1101,1152,1336,1426,1432 'kh':853 'kk':846,848 'kk-kz':847 'km':850,852 'km-kh':851 'kn':854,856 'kn-in':855 'ko':858,860,1275 'ko-kr':859,1274 'kr':861,1276 'kw':562 'kz':849 'la':862,868 'languag':528,1216,1351,1440 'latn':975,1021 'lb':565,863 'leg':218,260,1319,1609,1805,1978,2096,2270,2453,2585 'length':505 'level':1312 'limit':53,136,178,220 'linux':19 'lk':954,1001 'ln':864 'lo':865,867 'lo-la':866 'loop':247,1304 'lt':869,871,872 'lt-lt':870 'lv':873,875,876 'lv-lv':874 'ma':568 'maco':18 'max':504,1070 'media':4,8,249,1680,1686,1876,1882 'mg':877 'mi':878 'min':1075 'minut':1418 'mk':879,881,882 'mk-mk':880 'ml':883,885 'ml-in':884 'mm':903 'mn':887,889,890 'mn-mn':888 'mode':1702,1901 'mp3':233,1109 'mr':571,891,893 'mr-in':892 'ms':895,897 'ms-mi':896 'mt':899 'multipl':194,1178 'must':1446 'mx':727,1252 'my-mm':901 'n':79 'name':250,502,1673,1676,1687,1869,1872,1883 'nb':1278 'nb-no':1277 'ne':904,906 'ne-np':905 'network':50 'ng':670 'ni':730 'nl':908,910,913,914,1281,1282 'nl-be':909 'nl-nl':912,1280 'nn':915 'no-no':917 'note':212 'np':907 'nz':673 'object':1326 'oc':920 'occur':1578,1774,1947,2094,2239,2422,2554 'old':1419 'om':574 'opposit':1322 'option':229,310,372,425,493,1133,1209 'outbound':515 'overlay':214,252,317,1701,1900 'pa':733,921,923 'pa-guru-in':922 'parti':2317,2326 'paus':343,344 'payload':1207,1306,1343,1533 'pe':736 'permiss':165 'ph':676,773 'pk':679,1041 'pl':926,928,929,1284,1285 'pl-pl':927,1283 'place':206,1190 'play':183,186,195,295,507,1171,1662,1683,1858,1879,1898 'playback':211,254,291,1195,1505,1509 'portal':1429,1466 'post':83,223,265,304,324,366,385,419,438,484,1095,1127,1146,1200,1330 'pr':739 'pre':15 'pre-instal':14 'premium':1315 'problem':2047 'process':2358 'product':66,1385 'profan':1080 'protect':1422 'provid':1725 'ps':577,930 'pstn':2320 'pt':931,933,936,937,1287,1290,1291 'pt-br':932,1286 'pt-pt':935,1289 'public':1425 'py':742 'qa':580 'queue':209,1193 'rate':52,135,177 'receiv':1651,1847,2020,2153,2312,2495,2627 'record':342,345,348,354,379,403,406,432,456,459,462,477,510,1118,1121,1140,1513,1517,1521,2048,2168,2181,2188,2190,2337 'reflect':1718,2506 'reject':1415 'reliabl':1469 'replay':1421 'request':1370 'requir':129,490,1206 'resourc':167,1548,1565,1744,1761,1917,1934,2064,2081,2209,2226,2392,2409,2524,2541 'respons':74,75,108,113 'result':287,340,401,454,1116,1162,1359 'resum':351,353,404,405 'retri':137,179,1455 'return':286,339,400,453,1115,1161,1358,1447 'ro':938,940,941,1293,1294 'ro-ro':939,1292 'rs':972 'ru':942,944,945,1296,1297 'ru-ru':943,1295 'rw':947,948 'rw-rw':946 'sa':583,949 'save':1518,1523 'say':1344 'sd':950 'sdk':1437 'se':987,1300 'sec':517 'second':1451 'sed':114 'self':222,1321 'sent':1397,1475 'server':2040 'servic':1311 'session':1628,1638,1824,1834,1997,2007,2115,2125,2289,2299,2338,2472,2482,2604,2614 'set':1325,1431 'setup':23 'sg':682,1007 'si':951,953,962 'si-lk':952 'sign':1365,1388 'signatur':1374,1383,1403,1409,1490,1495 'silenc':1091 'singl':1111,2185,2192 'sip':2321 'sk':955,957,958 'sk-sk':956 'skill' 'skill-telnyx-voice-media-curl' 'sl':959,961 'sl-si':960 'sleep':140 'sn':963 'source-team-telnyx' 'speak':1164,1179,1526,1530 'speaker':1071,1076,1084 'speech':1169 'sq':965,967 'sq-al':966 'sr':969,971 'sr-rs':970 'ss':974 'ss-latn-za':973 'ssml':1310 'st':978 'st-za':977 'start':457,458,1510,1531,1671,1692,1867,1888,2158,2169 'state':242,312,374,427,495,1135,1211,1648,1650,1844,1846,2017,2019,2150,2152,2309,2311,2492,2494,2624,2626 'status':71,2372 'stop':257,289,292,319,464,476,1119,1120,1316,1697 'storag':2030 'string':237,243,246,248,251,256,258,261,288,313,316,320,341,375,378,402,428,431,455,496,499,503,1117,1136,1139,1163,1212,1215,1305,1317,1360,1582,1595,1611,1630,1649,1657,1674,1724,1778,1791,1807,1826,1845,1853,1870,1951,1964,1980,1999,2018,2098,2117,2136,2151,2243,2256,2272,2291,2310,2330,2350,2375,2426,2439,2455,2474,2493,2558,2571,2587,2606,2625 'su':980,982 'su-id':981 'success':122 'sv':745,984,986,1299 'sv-se':985,1298 'sw':988,990,993 'sw-ke':989 'sw-tz':992 'ta':995,997,1000,1003,1006 'ta-in':996 'ta-lk':999 'ta-mi':1002 'ta-sg':1005 'tail':109 'target':217,259,1318 'te':1008,1010 'te-in':1009 'telnyx':2,6,26,37,90,147,269,328,389,442,1099,1150,1334,1364,1373,1378,1387,1402,1411,1428,1436,1453,1465,1485,1489,1601,1797,1970,2142,2262,2445,2577 'telnyx-signature-ed25519':1372,1401,1488 'telnyx-timestamp':1377,1410,1484 'telnyx-voice-media-curl':1 'telnyx.kokorotts.af':1350 'text':11,103,1165,1167,1180,1309,2374,2378 'tg':1012 'th':1013,1015,1016 'th-th':1014 'time':1570,1766,1939,2086,2162,2175,2231,2414,2546 'timeout':516 'timestamp':1379,1412,1414,1486 'tk':1017 'tl':1018 'tn':586,1020 'tn-latn-za':1019 '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':1023,1025,1026,1302,1303 'tr-tr':1024,1301 'track':511 'transcrib':2377 'transcript':519,521,527,1069,1074,1079,1083,1522,2348,2357,2371 'trim':1087,1090 'trim-sil':1089 'ts':1028 'ts-za':1027 'tt':1030 'tw':1065 'type':96,231,275,334,395,448,1105,1156,1307,1340,1537,1540,1545,1550,1554,1563,1733,1736,1741,1746,1750,1759,1906,1909,1914,1919,1923,1932,2053,2056,2061,2066,2070,2079,2198,2201,2206,2211,2215,2224,2318,2323,2381,2384,2389,2394,2398,2407,2513,2516,2521,2526,2530,2539 'tz':685,994 'ua':1034 'uk':1031,1033 'uk-ua':1032 'uniqu':1615,1634,1811,1830,1984,2003,2102,2121,2276,2295,2334,2354,2459,2478,2591,2610 'unix':1413 'unknown':1712 'unsupport':2037 'ur':1035,1037,1040 'ur-in':1036 'ur-pk':1039 'url':185,236,279,1463,1480,1656,1660,1666,1852,1856,1862 'us':688,748,1246,1255,1354 'use':36,1434,1497,1585,1604,1622,1642,1669,1690,1781,1800,1818,1838,1865,1886,1954,1973,1991,2011,2031,2109,2129,2145,2246,2265,2283,2303,2342,2362,2429,2448,2466,2486,2561,2580,2598,2618 'uuid':381,434,1142,1560,1756,1929,2076,2221,2404,2536 'uy':751 'uz':1042,1044,1045 'uz-uz':1043 'valid':55,126,171 've':754,1047 've-za':1046 'verif':1363,1442,1496 'verifi':1382,1500 'vi':1049,1051 'vi-vn':1050 'via':352,474,1589,1785,1958,2250,2433,2565 'vn':1052 'voic':3,7,1208,1324,1349 'w':78 'wav':234 'webhook':300,357,361,410,414,480,1125,1197,1361,1362,1366,1389,1395,1400,1472,1479,1482,1532,1625,1645,1821,1841,1994,2014,2112,2132,2286,2306,2345,2365,2469,2489,2601,2621 'whether':1695,1891,2187 'window':21 'within':1449 'wls':1240 'x':82,264,323,384,437,1094,1145,1329 'xh':1054 'xh-za':1053 'ye':589 'yi':1056 'yo':1057 'yue':1059 'yue-hant-hk':1058 'za':533,691,976,979,1022,1029,1048,1055,1068 'zh':1062,1064 'zh-tw':1063 'zu':1067 'zu-za':1066","prices":[{"id":"99719766-8fd5-465f-9d96-c5d9f63b4752","listingId":"9621c8ef-8256-4d45-a5d8-8618cd417644","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:31.308Z"}],"sources":[{"listingId":"9621c8ef-8256-4d45-a5d8-8618cd417644","source":"github","sourceId":"team-telnyx/ai/telnyx-voice-media-curl","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-media-curl","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:31.308Z","lastSeenAt":"2026-04-22T00:54:53.376Z"}],"details":{"listingId":"9621c8ef-8256-4d45-a5d8-8618cd417644","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-voice-media-curl","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":"2fcd0a68aad792f864c57c45ca3e21b6bdc28c9b","skill_md_path":"skills/telnyx-voice-media-curl/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-media-curl"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-voice-media-curl","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-voice-media-curl"},"updatedAt":"2026-04-22T00:54:53.376Z"}}