{"id":"86c1aa00-3cfe-4186-92a4-d462c8fdc673","shortId":"KaNNEL","kind":"skill","title":"telnyx-voice-media-java","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Voice Media - Java\n\n## Installation\n\n```text\n<!-- Maven -->\n<dependency>\n    <groupId>com.telnyx.sdk</groupId>\n    <artifactId>telnyx</artifactId>\n    <version>6.36.0</version>\n</dependency>\n\n// Gradle\nimplementation(\"com.telnyx.sdk:telnyx:6.36.0\")\n```\n\n## Setup\n\n```java\nimport com.telnyx.sdk.client.TelnyxClient;\nimport com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;\n\nTelnyxClient client = TelnyxOkHttpClient.fromEnv();\n```\n\nAll examples below assume `client` is already initialized as shown above.\n\n## Error Handling\n\nAll API calls can fail with network errors, rate limits (429), validation errors (422),\nor authentication errors (401). Always handle errors in production code:\n\n```java\nimport com.telnyx.sdk.errors.TelnyxServiceException;\n\ntry {\n    var result = client.messages().send(params);\n} catch (TelnyxServiceException e) {\n    System.err.println(\"API error \" + e.statusCode() + \": \" + e.getMessage());\n    if (e.statusCode() == 422) {\n        System.err.println(\"Validation error — check required fields and formats\");\n    } else if (e.statusCode() == 429) {\n        // Rate limited — wait and retry with exponential backoff\n        Thread.sleep(1000);\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```java\nimport com.telnyx.sdk.models.calls.actions.ActionStartPlaybackParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStartPlaybackResponse;\n\nActionStartPlaybackResponse response = client.calls().actions().startPlayback(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\");\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```java\nimport com.telnyx.sdk.models.calls.actions.ActionStopPlaybackParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStopPlaybackResponse;\n\nActionStopPlaybackResponse response = client.calls().actions().stopPlayback(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\");\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```java\nimport com.telnyx.sdk.models.calls.actions.ActionPauseRecordingParams;\nimport com.telnyx.sdk.models.calls.actions.ActionPauseRecordingResponse;\n\nActionPauseRecordingResponse response = client.calls().actions().pauseRecording(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\");\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```java\nimport com.telnyx.sdk.models.calls.actions.ActionResumeRecordingParams;\nimport com.telnyx.sdk.models.calls.actions.ActionResumeRecordingResponse;\n\nActionResumeRecordingResponse response = client.calls().actions().resumeRecording(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\");\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```java\nimport com.telnyx.sdk.models.calls.actions.ActionStartRecordingParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStartRecordingResponse;\n\nActionStartRecordingParams params = ActionStartRecordingParams.builder()\n    .callControlId(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\")\n    .channels(ActionStartRecordingParams.Channels.SINGLE)\n    .format(ActionStartRecordingParams.Format.WAV)\n    .build();\nActionStartRecordingResponse response = client.calls().actions().startRecording(params);\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```java\nimport com.telnyx.sdk.models.calls.actions.ActionStopRecordingParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStopRecordingResponse;\nimport com.telnyx.sdk.models.calls.actions.StopRecordingRequest;\n\nActionStopRecordingParams params = ActionStopRecordingParams.builder()\n    .callControlId(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\")\n    .stopRecordingRequest(StopRecordingRequest.builder().build())\n    .build();\nActionStopRecordingResponse response = client.calls().actions().stopRecording(params);\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```java\nimport com.telnyx.sdk.models.calls.actions.ActionSpeakParams;\nimport com.telnyx.sdk.models.calls.actions.ActionSpeakResponse;\n\nActionSpeakParams params = ActionSpeakParams.builder()\n    .callControlId(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\")\n    .payload(\"Say this on the call\")\n    .voice(\"female\")\n    .language(\"en-US\")\n    .build();\nActionSpeakResponse response = client.calls().actions().speak(params);\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```java\nimport com.telnyx.sdk.core.UnwrapWebhookParams;\nimport com.telnyx.sdk.core.http.Headers;\n\n// In your webhook handler (e.g., Spring — use raw body):\n@PostMapping(\"/webhooks\")\npublic ResponseEntity<String> handleWebhook(\n    @RequestBody String payload,\n    HttpServletRequest request) {\n  try {\n    Headers headers = Headers.builder()\n        .put(\"telnyx-signature-ed25519\", request.getHeader(\"telnyx-signature-ed25519\"))\n        .put(\"telnyx-timestamp\", request.getHeader(\"telnyx-timestamp\"))\n        .build();\n    var event = client.webhooks().unwrap(\n        UnwrapWebhookParams.builder()\n            .body(payload)\n            .headers(headers)\n            .build());\n    // Signature valid — process the event\n    System.out.println(\"Received webhook event\");\n    return ResponseEntity.ok(\"OK\");\n  } catch (Exception e) {\n    System.err.println(\"Webhook verification failed: \" + e.getMessage());\n    return ResponseEntity.badRequest().body(\"Invalid signature\");\n  }\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","java","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm"],"capabilities":["skill","source-team-telnyx","skill-telnyx-voice-media-java","topic-agent-skills","topic-ai-coding-agent","topic-claude-code","topic-cpaas","topic-cursor","topic-iot","topic-llm","topic-sdk","topic-sip","topic-sms","topic-speech-to-text","topic-telephony"],"categories":["ai"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/team-telnyx/ai/telnyx-voice-media-java","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add team-telnyx/ai","source_repo":"https://github.com/team-telnyx/ai","install_from":"skills.sh"}},"qualityScore":"0.533","qualityRationale":"deterministic score 0.53 from registry signals: · indexed on github topic:agent-skills · 167 github stars · SKILL.md body (19,344 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.545Z","embedding":null,"createdAt":"2026-04-18T22:08:32.877Z","updatedAt":"2026-04-22T00:54:53.545Z","lastSeenAt":"2026-04-22T00:54:53.545Z","tsv":"'-419':640 '/actions/playback_start':180 '/actions/playback_stop':255 '/actions/record_pause':317 '/actions/record_resume':370 '/actions/record_start':435 '/actions/record_stop':1083 '/actions/speak':1167 '/calls':176,251,313,366,431,1079,1163 '/webhooks':1368 '1000':107 '401':59,111 '403':115 '404':118 '41d4':228,281,342,395,1051,1109,1302 '422':55,85,122 '429':52,97,128 '446655440000':230,283,344,397,1053,1111,1304 '550e8400':225,278,339,392,1048,1106,1299 '6.36.0':14,19 '8601':1537,1733,1906,2053,2129,2142,2198,2381,2513 'a716':229,282,343,396,1052,1110,1303 'action':222,275,336,389,1063,1120,1322 'actionpauserecordingrespons':333 'actionresumerecordingrespons':386 'actionspeakparam':1294 'actionspeakparams.builder':1296 'actionspeakrespons':1319 'actionstartplaybackrespons':219 'actionstartrecordingparam':1043 'actionstartrecordingparams.builder':1045 'actionstartrecordingparams.channels.single':1056 'actionstartrecordingparams.format.wav':1058 'actionstartrecordingrespons':1060 'actionstopplaybackrespons':272 'actionstoprecordingparam':1101 'actionstoprecordingparams.builder':1103 'actionstoprecordingrespons':1117 'ae':487 'af':476,478 'af-za':477 'al':914 'alreadi':35 'alway':60,1348 'am-et':481 'amd':1680,2470 'api':43,79,113,1557,1753,1926,2218,2401,2533 'app':1563,1759,1932,2104,2224,2407,2539 'ar':484,486,489,492,495,498,501,504,507,510,513,516,519,522,525,528,531,534,643 'ar-a':485 'ar-bh':488 'ar-dz':491 'ar-eg':494 'ar-il':497 'ar-iq':500 'ar-jo':503 'ar-kw':506 'ar-lb':509 'ar-ma':512 'ar-mr':515 'ar-om':518 'ar-p':521 'ar-qa':524 'ar-sa':527 'ar-tn':530 'ar-y':533 'arb':1180 'associ':308,361 'assum':32 'au':592,1195 'audio':136,140,148,154,182,187,191,236,239,1148,1624,1630,1644,1663,1820,1826,1840,1858 'authent':57 'author':1993 'auto':537 'await':162,1156 'az':539,541,542 'az-az':540 'b':471 'ba':543,561 'back':1135,1628,1649,1824,1845 'backend':2003 'backoff':105,134 'basic':1276 'bd':552 'beep':454 'bg':545,547,548 'bg-bg':546 'bh':490 'bn':549,551,554 'bn-bd':550 'bn-in':553 'bo':556,646 'bodi':1366,1405,1432 'boolean':192,205,264,455,466,1028,1032,1659,1855 'br':557,880,1250 'bs':558,560 'bs-ba':559 'build':1059,1115,1116,1318,1399,1409 'ca':562,564,595,727,1220 'ca-e':563 'cach':190 'call':44,144,177,244,252,293,314,354,367,407,412,432,1074,1080,1138,1164,1311,1469,1473,1477,1481,1485,1490,1494,1548,1555,1561,1572,1583,1602,1675,1744,1751,1757,1768,1779,1798,1917,1924,1930,1941,1952,1971,2015,2070,2089,2102,2113,2209,2216,2222,2233,2244,2263,2290,2392,2399,2405,2416,2427,2446,2467,2524,2531,2537,2548,2559,2578 'call.playback.ended':247,1517 'call.playback.started':1713 'call.recording.error':429,1886 'call.recording.saved':427,1077,2033 'call.recording.transcription.saved':428,2178 'call.speak.ended':249,1161,2361 'call.speak.started':1160,2493 'callcontrolid':1046,1104,1297 'callplaybackend':1468,1500 'callplaybackstart':1472,1696 'callrecordingerror':1476,1869 'callrecordingsav':1480,2016 'callrecordingtranscriptionsav':1484,2161 'callspeakend':1489,2344 'callspeakstart':1493,2476 'cancel':1678,1679,2469 'case':1693 'catch':75,1422 'ch':581,730,773 'channel':438,1055,2160 'check':89,125 'cl':649 'client':27,33,193,257,319,372,440,1085,1172 'client.calls':221,274,335,388,1062,1119,1321 'client.messages':72 'client.webhooks':1402 'client.webhooks.unwrap':1463 'cmn':1182 'cmn-cn':1181 'cn':1183 'co':652 'code':65,110 'com.telnyx.sdk':12,17 'com.telnyx.sdk.client.okhttp.telnyxokhttpclient':25 'com.telnyx.sdk.client.telnyxclient':23 'com.telnyx.sdk.core.http.headers':1357 'com.telnyx.sdk.core.unwrapwebhookparams':1355 'com.telnyx.sdk.errors.telnyxserviceexception':68 'com.telnyx.sdk.models.calls.actions.actionpauserecordingparams':330 'com.telnyx.sdk.models.calls.actions.actionpauserecordingresponse':332 'com.telnyx.sdk.models.calls.actions.actionresumerecordingparams':383 'com.telnyx.sdk.models.calls.actions.actionresumerecordingresponse':385 'com.telnyx.sdk.models.calls.actions.actionspeakparams':1291 'com.telnyx.sdk.models.calls.actions.actionspeakresponse':1293 'com.telnyx.sdk.models.calls.actions.actionstartplaybackparams':216 'com.telnyx.sdk.models.calls.actions.actionstartplaybackresponse':218 'com.telnyx.sdk.models.calls.actions.actionstartrecordingparams':1040 'com.telnyx.sdk.models.calls.actions.actionstartrecordingresponse':1042 'com.telnyx.sdk.models.calls.actions.actionstopplaybackparams':269 'com.telnyx.sdk.models.calls.actions.actionstopplaybackresponse':271 'com.telnyx.sdk.models.calls.actions.actionstoprecordingparams':1096 'com.telnyx.sdk.models.calls.actions.actionstoprecordingresponse':1098 'com.telnyx.sdk.models.calls.actions.stoprecordingrequest':1100 'command':149,196,260,301,311,322,364,375,424,443,1088,1143,1175,1553,1619,1685,1749,1815,1922,1988,2121,2214,2280,2397,2463,2474,2529,2595 'common':108 'complet':1681,2334,2466 'configur':1443 'connect':1567,1763,1936,2108,2228,2292,2411,2543 'consecut':152,1146 'content':207 'control':178,253,315,368,433,1081,1165,1545,1556,1562,1741,1752,1758,1914,1925,1931,2103,2206,2217,2223,2389,2400,2406,2521,2532,2538 'convert':1128 'correl':1589,1609,1785,1805,1958,1978,2076,2096,2250,2270,2309,2329,2433,2453,2565,2585 'count':1018,1023 'cr':655 'credenti':1998,2000 'cs':566,568 'cs-cz':567 'custom':446,1997 'cy':570,1185 'cy-gb':1184 'cz':569 'da':571,573,1188 'da-dk':572,1187 'data.event':1514,1710,1883,2030,2175,2358,2490 'data.id':1524,1720,1893,2040,2185,2368,2500 'data.occurred':1531,1727,1900,2047,2192,2375,2507 'data.payload.call':1544,1573,1592,1740,1769,1788,1913,1942,1961,2060,2079,2205,2234,2253,2388,2417,2436,2520,2549,2568 'data.payload.calling':2281 'data.payload.channels':2148 'data.payload.client':1612,1808,1981,2114,2273,2456,2588 'data.payload.connection':1558,1754,1927,2099,2219,2402,2534 'data.payload.media':1620,1637,1816,1833 'data.payload.overlay':1658,1854 'data.payload.reason':1989 'data.payload.recording':2122,2135,2293,2312 'data.payload.status':1670,1687,2332,2464 'data.payload.transcription':2338 'data.record':1504,1700,1873,2020,2165,2348,2480 'date':1534,1730,1903,2050,2126,2139,2195,2378,2510 'date-tim':1533,1729,1902,2049,2125,2138,2194,2377,2509 'datetim':1538,1734,1907,2054,2130,2143,2199,2382,2514 'de':575,577,580,583,584,1191,1192 'de-at':576 'de-ch':579 'de-d':582,1190 'deepgram/nova-3':472 'deliv':1523,1719,1892,2039,2184,2367,2499 'descript':1467,1503,1699,1872,2019,2164,2347,2479 'detail':1688,1691 'detect':538 'diariz':1031 'dk':574,1189 'dual':2151,2159 'dz':493 'e':77,1424 'e.g':1362 'e.getmessage':82,1429 'e.statuscode':81,84,96 'e29b':227,280,341,394,1050,1108,1301 'e29b-41d4-a716':226,279,340,393,1049,1107,1300 'ec':661 'ed25519':1335,1342,1385,1390,1456,1459 'ee':704 'eg':496 'el':585,587 'el-gr':586 'els':94 'en':589,591,594,597,600,603,606,609,612,615,618,621,624,627,630,633,636,1194,1197,1200,1204,1207,1316 'en-au':590,1193 'en-ca':593 'en-gb':596,1196 'en-gb-wl':1199 'en-gh':599 'en-hk':602 'en-i':605 'en-in':608,1203 'en-k':611 'en-ng':614 'en-nz':617 'en-ph':620 'en-pk':623 'en-sg':626 'en-tz':629 'en-us':632,1206,1315 'en-za':635 'enabl':168 'end':1471,1492,1686,2136,2147,2475 'engin':468 'enum':184,458,469,475,1034,1179,1270,1275,1282,1506,1516,1671,1702,1712,1875,1885,1990,2022,2032,2149,2167,2177,2284,2333,2350,2360,2465,2482,2492 'error':40,49,54,58,62,80,88,109,124,1479,2006 'es':565,638,639,642,645,648,651,654,657,660,663,664,666,669,672,675,678,681,684,687,690,693,696,699,708,737,1210,1211,1213,1216 'es-':662,1209 'es-ar':641 'es-bo':644 'es-cl':647 'es-co':650 'es-cr':653 'es-do':656 'es-ec':659 'es-gt':665 'es-hn':668 'es-mx':671,1212 'es-ni':674 'es-p':680 'es-pa':677 'es-pi':686 'es-pr':683 'es-sv':689 'es-us':692,1215 'es-uy':695 'es-v':698 'et':483,701,703 'et-e':702 'eu':705,707 'eu-':706 'event':1401,1414,1418,1438,1466,1507,1521,1542,1591,1611,1703,1717,1738,1787,1807,1876,1890,1911,1960,1980,2023,2037,2058,2078,2098,2168,2182,2203,2252,2272,2311,2331,2351,2365,2386,2435,2455,2483,2497,2518,2567,2587 'exampl':30 'except':1423 'expect':245,302,355,425,1075,1158 'exponenti':104,133 'fa':709,711 'fa-ir':710 'fail':46,1428,1682,1991 'failur':1695 'femal':1313 'fi':713,715,716 'fi-fi':714 'field':91,126,1499,1501,1697,1870,2017,2162,2345,2477 'fil':718 'fil-ph':717 'file':141,155,447,1149,1646,1672,1842 'filter':1027 'fo':720 'follow':1436 'format':93,127,437,1057 'former':1565,1761,1934,2106,2226,2409,2541 'found':121,1674 'fr':721,723,726,729,732,733,1219,1222,1223 'fr-be':722 'fr-ca':725,1218 'fr-ch':728 'fr-fr':731,1221 'gb':598,1186,1198,1201 'ge':791 'gh':601 'gl':734,736 'gl-es':735 'go':1860 'gr':588 'gradl':15 'gru1ogrkyq':231,284,345,398,1054,1112,1305 'gt':667 'gu':738,740 'gu-in':739 'guru':870 'ha':742 'handl':41,61 'handler':1361 'handlewebhook':1371 'hang':414 'hang-up':413 'hangup':1676,2468 'hant':1006 'haw':743 'header':1347,1378,1379,1407,1408,1457 'headers.builder':1380 'hi':745,747,1225 'hi-in':746,1224 'hk':604,1007 'hn':670 'hr':749,751,752 'hr-hr':750 'ht':753 'httpservletrequest':1375 'hu':754,756,757 'hu-hu':755 'hy':758,760 'hy-am':759 'id':179,197,254,261,316,323,326,369,376,379,434,444,762,764,765,786,929,1082,1089,1092,1166,1176,1546,1549,1559,1564,1568,1575,1577,1594,1596,1742,1745,1755,1760,1764,1771,1773,1790,1792,1915,1918,1928,1933,1937,1944,1946,1963,1965,2062,2064,2081,2083,2100,2105,2109,2207,2210,2220,2225,2229,2236,2238,2255,2257,2294,2296,2314,2316,2390,2393,2403,2408,2412,2419,2421,2438,2440,2522,2525,2535,2540,2544,2551,2553,2570,2572 'id-id':763 'identifi':1508,1526,1704,1722,1877,1895,2024,2042,2169,2187,2352,2370,2484,2502 'ie':607 'il':499,779 'implement':16 'import':22,24,67,215,217,268,270,329,331,382,384,1039,1041,1095,1097,1099,1290,1292,1354,1356 'inbound':460 'includ':1338,1448 'indic':2007 'initi':36,419 'instal':10 'insuffici':116 'int32':452,464,1019,1024 'intern':2004 'invalid':112,1433,1999 'iq':502 'ir':712 'is-i':767,1227 'iso':1536,1732,1905,2052,2128,2141,2197,2380,2512 'issu':151,1145,1552,1748,1921,2213,2396,2528 'it-ch':771 'it-it':774,1230 'iw':778 'iw-il':777 'ja':780,782,1234 'ja-jp':781,1233 'java':5,9,21,66,214,267,328,381,1038,1094,1289,1353 'jo':505 'jp':783,1235 'json':2001 'jv':785 'jv-id':784 'jw':787 'ka':788,790 'ka-g':789 'ke':613,937 'key':114 'kh':799 'kk':792,794 'kk-kz':793 'km':796,798 'km-kh':797 'kn':800,802 'kn-in':801 'ko':804,806,1237 'ko-kr':805,1236 'kr':807,1238 'kw':508 'kz':795 'la':808,814 'languag':474,1178,1314 'latn':921,967 'lb':511,809 'leg':170,212,1281,1574,1770,1943,2061,2235,2418,2550 'length':451 'level':1274 'limit':51,99,130,172 'lk':900,947 'ln':810 'lo':811,813 'lo-la':812 'loop':199,1266 'lt':815,817,818 'lt-lt':816 'lv':819,821,822 'lv-lv':820 'ma':514 'max':450,1016 'media':4,8,201,1645,1651,1841,1847 'mg':823 'mi':824 'min':1021 'mk':825,827,828 'mk-mk':826 'ml':829,831 'ml-in':830 'mm':849 'mn':833,835,836 'mn-mn':834 'mode':1667,1866 'mp3':185 'mr':517,837,839 'mr-in':838 'ms':841,843 'ms-mi':842 'mt':845 'multipl':146,1140 'mx':673,1214 'my-mm':847 'name':202,448,1638,1641,1652,1834,1837,1848 'nb':1240 'nb-no':1239 'ne':850,852 'ne-np':851 'network':48 'ng':616 'ni':676 'nl':854,856,859,860,1243,1244 'nl-be':855 'nl-nl':858,1242 'nn':861 'no-no':863 'note':164 'np':853 'nz':619 'object':1288 'oc':866 'occur':1543,1739,1912,2059,2204,2387,2519 'ok':1421 'om':520 'opposit':1284 'option':181,256,318,371,439,1084,1171 'outbound':461 'overlay':166,204,263,1666,1865 'pa':679,867,869 'pa-guru-in':868 'param':74,1044,1065,1102,1122,1295,1324 'parti':2282,2291 'paus':289,290 'pauserecord':337 'payload':1169,1268,1306,1374,1406,1498 'pe':682 'permiss':117 'ph':622,719 'pk':625,987 'pl':872,874,875,1246,1247 'pl-pl':873,1245 'place':158,1152 'play':135,138,147,241,453,1133,1627,1648,1823,1844,1863 'playback':163,206,237,1157,1470,1474 'post':175,250,312,365,430,1078,1162 'postmap':1367 'pr':685 'premium':1277 'problem':2012 'process':1412,2323 'product':64,1352 'profan':1026 'provid':1690 'ps':523,876 'pstn':2285 'pt':877,879,882,883,1249,1252,1253 'pt-br':878,1248 'pt-pt':881,1251 'public':1369 'put':1381,1391 'py':688 'qa':526 'queue':161,1155 'rate':50,98,129 'raw':1365 'receiv':1416,1616,1812,1985,2118,2277,2460,2592 'record':288,291,294,300,325,349,352,378,402,405,408,423,456,1069,1072,1091,1478,1482,1486,2013,2133,2146,2153,2155,2302 'reflect':1683,2471 'request':1337,1376 'request.getheader':1386,1395 'requestbodi':1372 'requir':90,436,1168 'resourc':119,1513,1530,1709,1726,1882,1899,2029,2046,2174,2191,2357,2374,2489,2506 'respons':220,273,334,387,1061,1118,1320 'responseent':1370 'responseentity.badrequest':1431 'responseentity.ok':1420 'result':71,233,286,347,400,1067,1124,1326 'resum':297,299,350,351 'resumerecord':390 'retri':102,131 'return':232,285,346,399,1066,1123,1325,1419,1430 'ro':884,886,887,1255,1256 'ro-ro':885,1254 'rs':918 'ru':888,890,891,1258,1259 'ru-ru':889,1257 'rw':893,894 'rw-rw':892 'sa':529,895 'save':1483,1488 'say':1307 'sd':896 'se':933,1262 'sec':463 'self':174,1283 'send':73 'sent':1440 'server':2005 'servic':1273 'session':1593,1603,1789,1799,1962,1972,2080,2090,2254,2264,2303,2437,2447,2569,2579 'set':1287 'setup':20 'sg':628,953 'shown':38 'si':897,899,908 'si-lk':898 'sign':1332 'signatur':1341,1350,1384,1389,1410,1434,1455,1460 'silenc':1037 'singl':2150,2157 'sip':2286 'sk':901,903,904 'sk-sk':902 'skill' 'skill-telnyx-voice-media-java' 'sl':905,907 'sl-si':906 'sn':909 'source-team-telnyx' 'speak':1126,1141,1323,1491,1495 'speaker':1017,1022,1030 'speech':1131 'spring':1363 'sq':911,913 'sq-al':912 'sr':915,917 'sr-rs':916 'ss':920 'ss-latn-za':919 'ssml':1272 'st':924 'st-za':923 'start':403,404,1475,1496,1636,1657,1832,1853,2123,2134 'startplayback':223 'startrecord':1064 'state':194,258,320,373,441,1086,1173,1613,1615,1809,1811,1982,1984,2115,2117,2274,2276,2457,2459,2589,2591 'status':2337 'stop':209,235,238,265,410,422,1070,1071,1278,1662 'stopplayback':276 'stoprecord':1121 'stoprecordingrequest':1113 'stoprecordingrequest.builder':1114 'storag':1995 'string':189,195,198,200,203,208,210,213,234,259,262,266,287,321,324,348,374,377,401,442,445,449,1068,1087,1090,1125,1174,1177,1267,1279,1327,1373,1547,1560,1576,1595,1614,1622,1639,1689,1743,1756,1772,1791,1810,1818,1835,1916,1929,1945,1964,1983,2063,2082,2101,2116,2208,2221,2237,2256,2275,2295,2315,2340,2391,2404,2420,2439,2458,2523,2536,2552,2571,2590 'su':926,928 'su-id':927 'sv':691,930,932,1261 'sv-se':931,1260 'sw':934,936,939 'sw-ke':935 'sw-tz':938 'system.err.println':78,86,1425 'system.out.println':1415 'ta':941,943,946,949,952 'ta-in':942 'ta-lk':945 'ta-mi':948 'ta-sg':951 'target':169,211,1280 'te':954,956 'te-in':955 'telnyx':2,6,13,18,1331,1340,1345,1383,1388,1393,1397,1450,1454,1566,1762,1935,2107,2227,2410,2542 'telnyx-signature-ed25519':1339,1382,1387,1453 'telnyx-timestamp':1344,1392,1396,1449 'telnyx-voice-media-java':1 'telnyxcli':26 'telnyxokhttpclient.fromenv':28 'telnyxserviceexcept':76 'text':11,1127,1129,1142,1271,2339,2343 'tg':958 'th':959,961,962 'th-th':960 'thread.sleep':106 'time':1535,1731,1904,2051,2127,2140,2196,2379,2511 'timeout':462 'timestamp':1346,1394,1398,1451 'tk':963 'tl':964 'tn':532,966 'tn-latn-za':965 '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':969,971,972,1264,1265 'tr-tr':970,1263 'track':457 'transcrib':2342 'transcript':465,467,473,1015,1020,1025,1029,1487,2313,2322,2336 'tri':69,1377 'trim':1033,1036 'trim-sil':1035 'ts':974 'ts-za':973 'tt':976 'tw':1011 'type':183,1269,1502,1505,1510,1515,1519,1528,1698,1701,1706,1711,1715,1724,1871,1874,1879,1884,1888,1897,2018,2021,2026,2031,2035,2044,2163,2166,2171,2176,2180,2189,2283,2288,2346,2349,2354,2359,2363,2372,2478,2481,2486,2491,2495,2504 'tz':631,940 'ua':980 'uk':977,979 'uk-ua':978 'uniqu':1580,1599,1776,1795,1949,1968,2067,2086,2241,2260,2299,2319,2424,2443,2556,2575 'unknown':1677 'unsupport':2002 'unwrap':1403 'unwrapwebhookparams.builder':1404 'ur':981,983,986 'ur-in':982 'ur-pk':985 'url':137,188,1445,1621,1625,1631,1817,1821,1827 'us':634,694,1208,1217,1317 'use':1364,1462,1550,1569,1587,1607,1634,1655,1746,1765,1783,1803,1830,1851,1919,1938,1956,1976,1996,2074,2094,2110,2211,2230,2248,2268,2307,2327,2394,2413,2431,2451,2526,2545,2563,2583 'uuid':327,380,1093,1525,1721,1894,2041,2186,2369,2501 'uy':697 'uz':988,990,991 'uz-uz':989 'v3':224,277,338,391,1047,1105,1298 'valid':53,87,123,1411 'var':70,1400 've':700,993 've-za':992 'verif':1330,1427,1461 'verifi':1349,1465 'vi':995,997 'vi-vn':996 'via':298,420,1554,1750,1923,2215,2398,2530 'vn':998 'voic':3,7,1170,1286,1312 'wait':100 'wav':186 'webhook':246,303,307,356,360,426,1076,1159,1328,1329,1333,1360,1417,1426,1437,1444,1447,1497,1590,1610,1786,1806,1959,1979,2077,2097,2251,2271,2310,2330,2434,2454,2566,2586 'whether':1660,1856,2152 'wls':1202 'xh':1000 'xh-za':999 'ye':535 'yi':1002 'yo':1003 'yue':1005 'yue-hant-hk':1004 'za':479,637,922,925,968,975,994,1001,1014 'zh':1008,1010 'zh-tw':1009 'zu':1013 'zu-za':1012","prices":[{"id":"a2ae2b7e-9e53-4e9d-8487-f83805745cb4","listingId":"86c1aa00-3cfe-4186-92a4-d462c8fdc673","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.877Z"}],"sources":[{"listingId":"86c1aa00-3cfe-4186-92a4-d462c8fdc673","source":"github","sourceId":"team-telnyx/ai/telnyx-voice-media-java","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-media-java","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:32.877Z","lastSeenAt":"2026-04-22T00:54:53.545Z"}],"details":{"listingId":"86c1aa00-3cfe-4186-92a4-d462c8fdc673","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-voice-media-java","github":{"repo":"team-telnyx/ai","stars":167,"topics":["agent-skills","ai","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk","sip","sms","speech-to-text","telephony","telnyx","tts","twilio-migration","voice-agents","voice-ai","webrtc","windsurf"],"license":"mit","html_url":"https://github.com/team-telnyx/ai","pushed_at":"2026-04-21T22:09:49Z","description":"Official one-stop shop for AI Agents and developers building with Telnyx.","skill_md_sha":"4e4878b2aaf057dd6ee455f3b4c58cf67db12299","skill_md_path":"skills/telnyx-voice-media-java/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-media-java"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-voice-media-java","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-voice-media-java"},"updatedAt":"2026-04-22T00:54:53.545Z"}}