{"id":"82e34f43-b00d-44e8-ae16-2408dad88645","shortId":"88K3ct","kind":"skill","title":"telnyx-voice-streaming-java","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Voice Streaming - 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## Forking start\n\nCall forking allows you to stream the media from a call to a specific target in realtime. This stream can be used to enable realtime audio analysis to support a \nvariety of use cases, including fraud detection, or the creation of AI-generated audio responses. Requests must specify either the `target` attribute or the `rx` and `tx` attributes.\n\n`POST /calls/{call_control_id}/actions/fork_start`\n\nOptional: `client_state` (string), `command_id` (string), `rx` (string), `stream_type` (enum: decrypted), `tx` (string)\n\n```java\nimport com.telnyx.sdk.models.calls.actions.ActionStartForkingParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStartForkingResponse;\n\nActionStartForkingResponse response = client.calls().actions().startForking(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\");\n```\n\nReturns: `result` (string)\n\n## Forking stop\n\nStop forking a call. **Expected Webhooks:**\n\n- `call.fork.stopped`\n\n`POST /calls/{call_control_id}/actions/fork_stop`\n\nOptional: `client_state` (string), `command_id` (string), `stream_type` (enum: raw, decrypted)\n\n```java\nimport com.telnyx.sdk.models.calls.actions.ActionStopForkingParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStopForkingResponse;\n\nActionStopForkingResponse response = client.calls().actions().stopForking(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\");\n```\n\nReturns: `result` (string)\n\n## Streaming start\n\nStart streaming the media from a call to a specific WebSocket address or Dialogflow connection in near-realtime. Audio will be delivered as base64-encoded RTP payload (raw audio), wrapped in JSON payloads. Please find more details about media streaming messages specification under the [link](https://developers.telnyx.com/docs/voice/programmable-voice/media-streaming).\n\n`POST /calls/{call_control_id}/actions/streaming_start`\n\nOptional: `client_state` (string), `command_id` (string), `custom_parameters` (array[object]), `dialogflow_config` (object), `enable_dialogflow` (boolean), `stream_auth_token` (string), `stream_bidirectional_codec` (enum: PCMU, PCMA, G722, OPUS, AMR-WB, L16), `stream_bidirectional_mode` (enum: mp3, rtp), `stream_bidirectional_sampling_rate` (enum: 8000, 16000, 22050, 24000, 48000), `stream_bidirectional_target_legs` (enum: both, self, opposite), `stream_codec` (enum: PCMU, PCMA, G722, OPUS, AMR-WB, L16, default), `stream_track` (enum: inbound_track, outbound_track, both_tracks), `stream_url` (string)\n\n```java\nimport com.telnyx.sdk.models.calls.actions.ActionStartStreamingParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStartStreamingResponse;\n\nActionStartStreamingResponse response = client.calls().actions().startStreaming(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\");\n```\n\nReturns: `result` (string)\n\n## Streaming stop\n\nStop streaming a call to a WebSocket. **Expected Webhooks:**\n\n- `streaming.stopped`\n\n`POST /calls/{call_control_id}/actions/streaming_stop`\n\nOptional: `client_state` (string), `command_id` (string), `stream_id` (uuid)\n\n```java\nimport com.telnyx.sdk.models.calls.actions.ActionStopStreamingParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStopStreamingResponse;\n\nActionStopStreamingResponse response = client.calls().actions().stopStreaming(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\");\n```\n\nReturns: `result` (string)\n\n## Transcription start\n\nStart real-time transcription. Transcription will stop on call hang-up, or can be initiated via the Transcription stop command. **Expected Webhooks:**\n\n- `call.transcription`\n\n`POST /calls/{call_control_id}/actions/transcription_start`\n\nOptional: `client_state` (string), `command_id` (string), `transcription_engine` (enum: Google, Telnyx, Deepgram, Azure, A, B), `transcription_engine_config` (object), `transcription_tracks` (string)\n\n```java\nimport com.telnyx.sdk.models.calls.actions.ActionStartTranscriptionParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStartTranscriptionResponse;\nimport com.telnyx.sdk.models.calls.actions.TranscriptionStartRequest;\n\nActionStartTranscriptionParams params = ActionStartTranscriptionParams.builder()\n    .callControlId(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\")\n    .transcriptionStartRequest(TranscriptionStartRequest.builder().build())\n    .build();\nActionStartTranscriptionResponse response = client.calls().actions().startTranscription(params);\n```\n\nReturns: `result` (string)\n\n## Transcription stop\n\nStop real-time transcription.\n\n`POST /calls/{call_control_id}/actions/transcription_stop`\n\nOptional: `client_state` (string), `command_id` (string)\n\n```java\nimport com.telnyx.sdk.models.calls.actions.ActionStopTranscriptionParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStopTranscriptionResponse;\n\nActionStopTranscriptionResponse response = client.calls().actions().stopTranscription(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\");\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| `callForkStarted` | Call Fork Started |\n| `callForkStopped` | Call Fork Stopped |\n| `callStreamingFailed` | Call Streaming Failed |\n| `callStreamingStarted` | Call Streaming Started |\n| `callStreamingStopped` | Call Streaming Stopped |\n| `transcription` | Transcription |\n\n### Webhook payload fields\n\n**`callForkStarted`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.fork.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.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_control_id` | string | Unique ID for controlling 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.stream_type` | enum: decrypted | Type of media streamed. |\n\n**`callForkStopped`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.fork.stopped | 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.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_control_id` | string | Unique ID for controlling 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.stream_type` | enum: decrypted | Type of media streamed. |\n\n**`callStreamingFailed`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the resource. |\n| `data.event_type` | enum: streaming.failed | 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.failure_reason` | string | A short description explaning why the media streaming failed. |\n| `data.payload.stream_id` | uuid | Identifies the streaming. |\n| `data.payload.stream_type` | enum: websocket, dialogflow | The type of stream connection the stream is performing. |\n\n**`callStreamingStarted`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: streaming.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.stream_url` | string | Destination WebSocket address where the stream is going to be delivered. |\n\n**`callStreamingStopped`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: streaming.stopped | 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.stream_url` | string | Destination WebSocket address where the stream is going to be delivered. |\n\n**`transcription`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.transcription | 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 | Unique identifier and token for controlling 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 | Use this field to add state to every subsequent webhook. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |","tags":["telnyx","voice","streaming","java","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm"],"capabilities":["skill","source-team-telnyx","skill-telnyx-voice-streaming-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-streaming-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 (14,298 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:54.472Z","embedding":null,"createdAt":"2026-04-18T22:08:39.242Z","updatedAt":"2026-04-22T00:54:54.472Z","lastSeenAt":"2026-04-22T00:54:54.472Z","tsv":"'/actions/fork_start':201 '/actions/fork_stop':252 '/actions/streaming_start':343 '/actions/streaming_stop':463 '/actions/transcription_start':527 '/actions/transcription_stop':595 '/calls':197,248,339,459,523,591 '/docs/voice/programmable-voice/media-streaming).':337 '/webhooks':664 '1000':107 '16000':389 '22050':390 '24000':391 '401':59,111 '403':115 '404':118 '41d4':231,279,439,488,566,617 '422':55,85,122 '429':52,97,128 '446655440000':233,281,441,490,568,619 '48000':392 '550e8400':228,276,436,485,563,614 '6.36.0':14,19 '8000':388 '8601':826,950,1071,1223,1357,1491 'a716':232,280,440,489,567,618 'action':225,273,433,482,577,611 'actionstartforkingrespons':222 'actionstartstreamingrespons':430 'actionstarttranscriptionparam':558 'actionstarttranscriptionparams.builder':560 'actionstarttranscriptionrespons':574 'actionstopforkingrespons':270 'actionstopstreamingrespons':479 'actionstoptranscriptionrespons':608 'add':1556 'address':299,1311,1445 'ai':179 'ai-gener':178 'allow':139 'alreadi':35 'alway':60,644 'amr':374,409 'amr-wb':373,408 'analysi':163 'api':43,79,113,1091,1243,1377 'app':838,962,1097,1249,1383,1567 'array':353 'assum':32 'attribut':189,195 'audio':162,181,307,318 'auth':362 'authent':57 'azur':541 'b':543 'backoff':105,134 'base64':313 'base64-encoded':312 'bidirect':366,378,384,394 'bodi':662,701,728 'boolean':360 'build':572,573,695,705 'call':44,137,147,198,243,249,294,340,451,460,506,524,592,765,769,773,777,781,836,847,857,868,887,960,971,981,992,1011,1082,1089,1095,1106,1117,1136,1234,1241,1247,1258,1269,1288,1368,1375,1381,1392,1403,1422,1509,1520,1539,1565,1576 'call.fork.started':806 'call.fork.stopped':246,930 'call.transcription':521,1471 'callcontrolid':561 'callforkstart':764,789 'callforkstop':768,913 'callstreamingfail':772,1037 'callstreamingstart':776,1186 'callstreamingstop':780,1320 'case':170 'catch':75,718 'check':89,125 'client':27,33,203,254,345,465,529,597 'client.calls':224,272,432,481,576,610 'client.messages':72 'client.webhooks':698 'client.webhooks.unwrap':759 'code':65,110 'codec':367,402 'com.telnyx.sdk':12,17 'com.telnyx.sdk.client.okhttp.telnyxokhttpclient':25 'com.telnyx.sdk.client.telnyxclient':23 'com.telnyx.sdk.core.http.headers':653 'com.telnyx.sdk.core.unwrapwebhookparams':651 'com.telnyx.sdk.errors.telnyxserviceexception':68 'com.telnyx.sdk.models.calls.actions.actionstartforkingparams':219 'com.telnyx.sdk.models.calls.actions.actionstartforkingresponse':221 'com.telnyx.sdk.models.calls.actions.actionstartstreamingparams':427 'com.telnyx.sdk.models.calls.actions.actionstartstreamingresponse':429 'com.telnyx.sdk.models.calls.actions.actionstarttranscriptionparams':553 'com.telnyx.sdk.models.calls.actions.actionstarttranscriptionresponse':555 'com.telnyx.sdk.models.calls.actions.actionstopforkingparams':267 'com.telnyx.sdk.models.calls.actions.actionstopforkingresponse':269 'com.telnyx.sdk.models.calls.actions.actionstopstreamingparams':476 'com.telnyx.sdk.models.calls.actions.actionstopstreamingresponse':478 'com.telnyx.sdk.models.calls.actions.actionstoptranscriptionparams':605 'com.telnyx.sdk.models.calls.actions.actionstoptranscriptionresponse':607 'com.telnyx.sdk.models.calls.actions.transcriptionstartrequest':557 'command':206,257,348,468,518,532,600,904,1028,1087,1153,1239,1305,1373,1439 'common':108 'config':356,546 'configur':739 'connect':302,842,966,1101,1181,1253,1387,1571 'control':199,250,341,461,525,593,837,849,855,961,973,979,1079,1090,1096,1231,1242,1248,1365,1376,1382,1499,1507,1566 'correl':874,894,998,1018,1123,1143,1275,1295,1409,1429,1526,1546 'creation':176 'custom':351 'data.event':803,927,1048,1200,1334,1468 'data.id':813,937,1058,1210,1344,1478 'data.occurred':820,944,1065,1217,1351,1485 'data.payload.call':848,858,877,972,982,1001,1078,1107,1126,1230,1259,1278,1364,1393,1412,1498,1510,1529 'data.payload.client':897,1021,1146,1298,1432,1549 'data.payload.connection':833,957,1092,1244,1378,1562 'data.payload.failure':1154 'data.payload.stream':905,1029,1166,1172,1306,1440 'data.record':793,917,1041,1190,1324,1458 'date':823,947,1068,1220,1354,1488 'date-tim':822,946,1067,1219,1353,1487 'datetim':827,951,1072,1224,1358,1492 'decrypt':214,264,908,1032 'deepgram':540 'default':412 'deliv':310,812,936,1057,1209,1319,1343,1453,1477 'descript':763,792,916,1040,1159,1189,1323,1457 'destin':1309,1443 'detail':326 'detect':173 'developers.telnyx.com':336 'developers.telnyx.com/docs/voice/programmable-voice/media-streaming).':335 'dialogflow':301,355,359,1176 'e':77,720 'e.g':658 'e.getmessage':82,725 'e.statuscode':81,84,96 'e29b':230,278,438,487,565,616 'e29b-41d4-a716':229,277,437,486,564,615 'ed25519':631,638,681,686,752,755 'either':186 'els':94 'enabl':160,358 'encod':314 'engin':536,545 'enum':213,262,368,380,387,397,403,415,537,795,805,907,919,929,1031,1043,1050,1174,1192,1202,1326,1336,1460,1470 'error':40,49,54,58,62,80,88,109,124 'event':697,710,714,734,762,796,810,831,876,896,920,934,955,1000,1020,1044,1055,1076,1125,1145,1193,1207,1228,1277,1297,1327,1341,1362,1411,1431,1461,1475,1496,1528,1548 'everi':1559 'exampl':30 'except':719 'expect':244,455,519 'explan':1160 'exponenti':104,133 'fail':46,724,775,1165 'field':91,126,788,790,914,1038,1187,1321,1455,1554 'find':324 'follow':732 'fork':135,138,238,241,766,770 'format':93,127 'former':840,964,1099,1251,1385,1569 'found':121 'fraud':172 'g722':371,406 'generat':180 'go':1316,1450 'googl':538 'gradl':15 'gru1ogrkyq':234,282,442,491,569,620 'handl':41,61 'handler':657 'handlewebhook':667 'hang':508 'hang-up':507 'header':643,674,675,703,704,753 'headers.builder':676 'httpservletrequest':671 'id':200,207,251,258,342,349,462,469,472,526,533,594,601,834,839,843,850,853,860,862,879,881,958,963,967,974,977,984,986,1003,1005,1080,1083,1093,1098,1102,1109,1111,1128,1130,1167,1232,1235,1245,1250,1254,1261,1263,1280,1282,1366,1369,1379,1384,1388,1395,1397,1414,1416,1500,1512,1514,1531,1533,1563,1568,1572 'identifi':797,815,921,939,1045,1060,1169,1194,1212,1328,1346,1462,1480,1503 'implement':16 'import':22,24,67,218,220,266,268,426,428,475,477,552,554,556,604,606,650,652 'inbound':416 'includ':171,634,744 'initi':36,513 'instal':10 'insuffici':116 'invalid':112,729 'iso':825,949,1070,1222,1356,1490 'issu':1086,1238,1372 'java':5,9,21,66,217,265,425,474,551,603,649 'json':321 'key':114 'l16':376,411 'leg':396,859,983,1108,1260,1394,1511 'limit':51,99,130 'link':334 'media':144,291,328,911,1035,1163 'messag':330 'mode':379 'mp3':381 'must':184 'near':305 'near-realtim':304 'network':48 'object':354,357,547 'occur':832,956,1077,1229,1363,1497 'ok':717 'opposit':400 'option':202,253,344,464,528,596 'opus':372,407 'outbound':418 'param':74,559,579 'paramet':352 'payload':316,322,670,702,787 'pcma':370,405 'pcmu':369,404 'perform':1185 'permiss':117 'pleas':323 'post':196,247,338,458,522,590 'postmap':663 'process':708 'product':64,648 'public':665 'put':677,687 'rate':50,98,129,386 'raw':263,317,661 'real':499,587 'real-tim':498,586 'realtim':153,161,306 'reason':1155 'receiv':712,901,1025,1150,1302,1436 'request':183,633,672 'request.getheader':682,691 'requestbodi':668 'requir':90 'resourc':119,802,819,926,943,1047,1064,1199,1216,1333,1350,1467,1484 'respons':182,223,271,431,480,575,609 'responseent':666 'responseentity.badrequest':727 'responseentity.ok':716 'result':71,236,284,444,493,581,622 'retri':102,131 'return':235,283,443,492,580,621,715,726 'rtp':315,382 'rx':192,209 'sampl':385 'self':399 'send':73 'sent':736 'session':878,888,1002,1012,1127,1137,1279,1289,1413,1423,1530,1540 'setup':20 'short':1158 'shown':38 'sign':628 'signatur':637,646,680,685,706,730,751,756 'skill' 'skill-telnyx-voice-streaming-java' 'source-team-telnyx' 'specif':150,297,331 'specifi':185 'spring':659 'start':136,287,288,496,497,767,779 'startfork':226 'startstream':434 'starttranscript':578 'state':204,255,346,466,530,598,898,900,1022,1024,1147,1149,1299,1301,1433,1435,1550,1557 'stop':239,240,447,448,504,517,584,585,771,783 'stopfork':274 'stopstream':483 'stoptranscript':612 'stream':4,8,142,155,211,260,286,289,329,361,365,377,383,393,401,413,422,446,449,471,774,778,782,912,1036,1164,1171,1180,1183,1314,1448 'streaming.failed':1051 'streaming.started':1203 'streaming.stopped':457,1337 'string':205,208,210,216,237,256,259,285,347,350,364,424,445,467,470,494,531,534,550,582,599,602,623,669,835,851,861,880,899,959,975,985,1004,1023,1081,1094,1110,1129,1148,1156,1233,1246,1262,1281,1300,1308,1367,1380,1396,1415,1434,1442,1501,1513,1532,1551,1564 'subsequ':1560 'support':165 'system.err.println':78,86,721 'system.out.println':711 'target':151,188,395 'telnyx':2,6,13,18,539,627,636,641,679,684,689,693,746,750,841,965,1100,1252,1386,1570 'telnyx-signature-ed25519':635,678,683,749 'telnyx-timestamp':640,688,692,745 'telnyx-voice-streaming-java':1 'telnyxcli':26 'telnyxokhttpclient.fromenv':28 'telnyxserviceexcept':76 'text':11 'thread.sleep':106 'time':500,588,824,948,1069,1221,1355,1489 'timestamp':642,690,694,747 'token':363,1505 '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' 'track':414,417,419,421,549 'transcript':495,501,502,516,535,544,548,583,589,784,785,1454 'transcriptionstartrequest':570 'transcriptionstartrequest.builder':571 'tri':69,673 'tx':194,215 'type':212,261,791,794,799,804,808,817,906,909,915,918,923,928,932,941,1030,1033,1039,1042,1049,1053,1062,1173,1178,1188,1191,1196,1201,1205,1214,1322,1325,1330,1335,1339,1348,1456,1459,1464,1469,1473,1482 'uniqu':852,865,884,976,989,1008,1114,1133,1266,1285,1400,1419,1502,1517,1536 'unwrap':699 'unwrapwebhookparams.builder':700 'url':423,741,1307,1441 'use':158,169,660,758,844,872,892,968,996,1016,1084,1103,1121,1141,1236,1255,1273,1293,1370,1389,1407,1427,1524,1544,1552,1573 'uuid':473,814,938,1059,1168,1211,1345,1479 'v3':227,275,435,484,562,613 'valid':53,87,123,707 'var':70,696 'varieti':167 'verif':626,723,757 'verifi':645,761 'via':514,1088,1240,1374 'voic':3,7 'wait':100 'wb':375,410 'webhook':245,456,520,624,625,629,656,713,722,733,740,743,786,875,895,999,1019,1124,1144,1276,1296,1410,1430,1527,1547,1561 'websocket':298,454,1175,1310,1444 'wrap':319","prices":[{"id":"082a11f8-4a17-42ab-9f08-9e4bbd6ee065","listingId":"82e34f43-b00d-44e8-ae16-2408dad88645","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:39.242Z"}],"sources":[{"listingId":"82e34f43-b00d-44e8-ae16-2408dad88645","source":"github","sourceId":"team-telnyx/ai/telnyx-voice-streaming-java","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-streaming-java","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:39.242Z","lastSeenAt":"2026-04-22T00:54:54.472Z"}],"details":{"listingId":"82e34f43-b00d-44e8-ae16-2408dad88645","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-voice-streaming-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":"c12fbc2465c61253b1b99f226c0e3bff78d1c0ec","skill_md_path":"skills/telnyx-voice-streaming-java/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-streaming-java"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-voice-streaming-java","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-voice-streaming-java"},"updatedAt":"2026-04-22T00:54:54.472Z"}}