{"id":"57215daf-47b7-44a6-8042-07d3c6d904e4","shortId":"sHve9J","kind":"skill","title":"telnyx-voice-java","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Voice - 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.models.calls.CallDialParams;\nimport com.telnyx.sdk.models.calls.CallDialResponse;\nCallDialParams params = CallDialParams.builder()\n    .connectionId(\"7267xxxxxxxxxxxxxx\")\n    .from(\"+18005550101\")\n    .to(\"+18005550100\")\n    .build();\nCallDialResponse response = client.calls().dial(params);\n```\n\nCommon error codes: `401` invalid API key, `403` insufficient permissions,\n`404` resource not found, `422` validation error (check field formats),\n`429` rate limited (retry with exponential backoff).\n\n## Important Notes\n\n- **Phone numbers** must be in E.164 format (e.g., `+13125550001`). Include the `+` prefix and country code. No spaces, dashes, or parentheses.\n- **Pagination:** List methods return a page. Use `.autoPager()` for automatic iteration: `for (var item : page.autoPager()) { ... }`. For manual control, use `.hasNextPage()` and `.nextPage()`.\n\n## Operational Caveats\n\n- Call Control is event-driven. After `dial()` or an inbound webhook, issue follow-up commands from webhook handlers using the `call_control_id` in the event payload.\n- Outbound and inbound flows are different: outbound calls start with `dial()`, while inbound calls must be answered from the incoming webhook before other commands run.\n- A publicly reachable webhook endpoint is required for real call control. Without it, calls may connect but your application cannot drive the live call state.\n\n## Reference Use Rules\n\nDo not invent Telnyx parameters, enums, response fields, or webhook fields.\n\n- If the parameter, enum, or response field you need is not shown inline in this skill, read [references/api-details.md](references/api-details.md) before writing code.\n- Before using any operation in `## Additional Operations`, read [the optional-parameters section](references/api-details.md#optional-parameters) and [the response-schemas section](references/api-details.md#response-schemas).\n- Before reading or matching webhook fields beyond the inline examples, read [the webhook payload reference](references/api-details.md#webhook-payload-fields).\n\n## Core Tasks\n\n### Dial an outbound call\n\nPrimary voice entrypoint. Agents need the async call-control identifiers returned here.\n\n`client.calls().dial()` — `POST /calls`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `to` | string (E.164) | Yes | The DID or SIP URI to dial out to. |\n| `from` | string (E.164) | Yes | The `from` number to be used as the caller id presented to t... |\n| `connectionId` | string (UUID) | Yes | The ID of the Call Control App (formerly ID of the connectio... |\n| `timeoutSecs` | integer | No | The number of seconds that Telnyx will wait for the call to ... |\n| `billingGroupId` | string (UUID) | No | Use this field to set the Billing Group ID for the call. |\n| `clientState` | string | No | Use this field to add state to every subsequent webhook. |\n| ... | | | +48 optional params in [references/api-details.md](references/api-details.md) |\n\n```java\nimport com.telnyx.sdk.models.calls.CallDialParams;\nimport com.telnyx.sdk.models.calls.CallDialResponse;\n\nCallDialParams params = CallDialParams.builder()\n    .connectionId(\"7267xxxxxxxxxxxxxx\")\n    .from(\"+18005550101\")\n    .to(\"+18005550100\")\n    .build();\nCallDialResponse response = client.calls().dial(params);\n```\n\nPrimary response fields:\n- `response.data.callControlId`\n- `response.data.callLegId`\n- `response.data.callSessionId`\n- `response.data.isAlive`\n- `response.data.recordingId`\n- `response.data.callDuration`\n\n### Answer an inbound call\n\nPrimary inbound call-control command.\n\n`client.calls().actions().answer()` — `POST /calls/{call_control_id}/actions/answer`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `callControlId` | string (UUID) | Yes | Unique identifier and token for controlling the call |\n| `billingGroupId` | string (UUID) | No | Use this field to set the Billing Group ID for the call. |\n| `clientState` | string | No | Use this field to add state to every subsequent webhook. |\n| `webhookUrl` | string (URL) | No | Use this field to override the URL for which Telnyx will sen... |\n| ... | | | +26 optional params in [references/api-details.md](references/api-details.md) |\n\n```java\nimport com.telnyx.sdk.models.calls.actions.ActionAnswerParams;\nimport com.telnyx.sdk.models.calls.actions.ActionAnswerResponse;\n\nActionAnswerResponse response = client.calls().actions().answer(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\");\n```\n\nPrimary response fields:\n- `response.data.result`\n- `response.data.recordingId`\n\n### Transfer a live call\n\nCommon post-answer control path with downstream webhook implications.\n\n`client.calls().actions().transfer()` — `POST /calls/{call_control_id}/actions/transfer`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `to` | string (E.164) | Yes | The DID or SIP URI to dial out to. |\n| `callControlId` | string (UUID) | Yes | Unique identifier and token for controlling the call |\n| `timeoutSecs` | integer | No | The number of seconds that Telnyx will wait for the call to ... |\n| `clientState` | string | No | Use this field to add state to every subsequent webhook. |\n| `webhookUrl` | string (URL) | No | Use this field to override the URL for which Telnyx will sen... |\n| ... | | | +33 optional params in [references/api-details.md](references/api-details.md) |\n\n```java\nimport com.telnyx.sdk.models.calls.actions.ActionTransferParams;\nimport com.telnyx.sdk.models.calls.actions.ActionTransferResponse;\n\nActionTransferParams params = ActionTransferParams.builder()\n    .callControlId(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\")\n    .to(\"+18005550100\")\n    .build();\nActionTransferResponse response = client.calls().actions().transfer(params);\n```\n\nPrimary response fields:\n- `response.data.result`\n\n---\n\n### Webhook Verification\n\nTelnyx signs webhooks with Ed25519. Each request includes `telnyx-signature-ed25519`\nand `telnyx-timestamp` headers. Always verify signatures in production:\n\n```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\n## Webhooks\n\nThese webhook payload fields are inline because they are part of the primary integration path.\n\n### Call Answered\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.answered | 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 ev... |\n\n### Call Hangup\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.hangup | 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 ev... |\n\n### Call Initiated\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.initiated | 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.connection_codecs` | string | The list of comma-separated codecs enabled for the connection. |\n| `data.payload.offered_codecs` | string | The list of comma-separated codecs offered by caller. |\n\nIf you need webhook fields that are not listed inline here, read [the webhook payload reference](references/api-details.md#webhook-payload-fields) before writing the handler.\n\n---\n\n## Important Supporting Operations\n\nUse these when the core tasks above are close to your flow, but you need a common variation or follow-up step.\n\n### Hangup call\n\nEnd a live call from your webhook-driven control flow.\n\n`client.calls().actions().hangup()` — `POST /calls/{call_control_id}/actions/hangup`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `callControlId` | string (UUID) | Yes | Unique identifier and token for controlling the call |\n| `clientState` | string | No | Use this field to add state to every subsequent webhook. |\n| `commandId` | string (UUID) | No | Use this field to avoid duplicate commands. |\n| `customHeaders` | array[object] | No | Custom headers to be added to the SIP BYE message. |\n\n```java\nimport com.telnyx.sdk.models.calls.actions.ActionHangupParams;\nimport com.telnyx.sdk.models.calls.actions.ActionHangupResponse;\n\nActionHangupResponse response = client.calls().actions().hangup(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\");\n```\n\nPrimary response fields:\n- `response.data.result`\n\n### Bridge calls\n\nTrigger a follow-up action in an existing workflow rather than creating a new top-level resource.\n\n`client.calls().actions().bridge()` — `POST /calls/{call_control_id}/actions/bridge`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `callControlId` | string (UUID) | Yes | The Call Control ID of the call you want to bridge with, can... |\n| `callControlId` | string (UUID) | Yes | Unique identifier and token for controlling the call |\n| `clientState` | string | No | Use this field to add state to every subsequent webhook. |\n| `commandId` | string (UUID) | No | Use this field to avoid duplicate commands. |\n| `videoRoomId` | string (UUID) | No | The ID of the video room you want to bridge with, can't be u... |\n| ... | | | +16 optional params in [references/api-details.md](references/api-details.md) |\n\n```java\nimport com.telnyx.sdk.models.calls.actions.ActionBridgeParams;\nimport com.telnyx.sdk.models.calls.actions.ActionBridgeResponse;\n\nActionBridgeParams params = ActionBridgeParams.builder()\n    .callControlIdToBridge(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\")\n    .callControlId(\"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg\")\n    .build();\nActionBridgeResponse response = client.calls().actions().bridge(params);\n```\n\nPrimary response fields:\n- `response.data.result`\n\n### Reject a call\n\nTrigger a follow-up action in an existing workflow rather than creating a new top-level resource.\n\n`client.calls().actions().reject()` — `POST /calls/{call_control_id}/actions/reject`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `cause` | enum (CALL_REJECTED, USER_BUSY) | Yes | Cause for call rejection. |\n| `callControlId` | string (UUID) | Yes | Unique identifier and token for controlling the call |\n| `clientState` | string | No | Use this field to add state to every subsequent webhook. |\n| `commandId` | string (UUID) | No | Use this field to avoid duplicate commands. |\n\n```java\nimport com.telnyx.sdk.models.calls.actions.ActionRejectParams;\nimport com.telnyx.sdk.models.calls.actions.ActionRejectResponse;\n\nActionRejectParams params = ActionRejectParams.builder()\n    .callControlId(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\")\n    .cause(ActionRejectParams.Cause.USER_BUSY)\n    .build();\nActionRejectResponse response = client.calls().actions().reject(params);\n```\n\nPrimary response fields:\n- `response.data.result`\n\n### Retrieve a call status\n\nFetch the current state before updating, deleting, or making control-flow decisions.\n\n`client.calls().retrieveStatus()` — `GET /calls/{call_control_id}`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `callControlId` | string (UUID) | Yes | Unique identifier and token for controlling the call |\n\n```java\nimport com.telnyx.sdk.models.calls.CallRetrieveStatusParams;\nimport com.telnyx.sdk.models.calls.CallRetrieveStatusResponse;\n\nCallRetrieveStatusResponse response = client.calls().retrieveStatus(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\");\n```\n\nPrimary response fields:\n- `response.data.callControlId`\n- `response.data.callDuration`\n- `response.data.callLegId`\n- `response.data.callSessionId`\n- `response.data.clientState`\n- `response.data.endTime`\n\n### List all active calls for given connection\n\nFetch the current state before updating, deleting, or making control-flow decisions.\n\n`client.connections().listActiveCalls()` — `GET /connections/{connection_id}/active_calls`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `connectionId` | string (UUID) | Yes | Telnyx connection id |\n| `page` | object | No | Consolidated page parameter (deepObject style). |\n\n```java\nimport com.telnyx.sdk.models.connections.ConnectionListActiveCallsPage;\nimport com.telnyx.sdk.models.connections.ConnectionListActiveCallsParams;\n\nConnectionListActiveCallsPage page = client.connections().listActiveCalls(\"1293384261075731461\");\n```\n\nResponse wrapper:\n- items: `page.data`\n- pagination: `page.meta`\n\nPrimary item fields:\n- `callControlId`\n- `callDuration`\n- `callLegId`\n- `callSessionId`\n- `clientState`\n- `recordType`\n\n### List call control applications\n\nInspect available resources or choose an existing resource before mutating it.\n\n`client.callControlApplications().list()` — `GET /call_control_applications`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `sort` | enum (created_at, connection_name, active) | No | Specifies the sort order for results. |\n| `filter` | object | No | Consolidated filter parameter (deepObject style). |\n| `page` | object | No | Consolidated page parameter (deepObject style). |\n\n```java\nimport com.telnyx.sdk.models.callcontrolapplications.CallControlApplicationListPage;\nimport com.telnyx.sdk.models.callcontrolapplications.CallControlApplicationListParams;\n\nCallControlApplicationListPage page = client.callControlApplications().list();\n```\n\nResponse wrapper:\n- items: `page.data`\n- pagination: `page.meta`\n\nPrimary item fields:\n- `id`\n- `createdAt`\n- `updatedAt`\n- `active`\n- `anchorsiteOverride`\n- `applicationName`\n\n---\n\n## Additional Operations\n\nUse the core tasks above first. The operations below are indexed here with exact SDK methods and required params; use [references/api-details.md](references/api-details.md) for full optional params, response schemas, and lower-frequency webhook payloads.\nBefore using any operation below, read [the optional-parameters section](references/api-details.md#optional-parameters) and [the response-schemas section](references/api-details.md#response-schemas) so you do not guess missing fields.\n\n| Operation | SDK method | Endpoint | Use when | Required params |\n|-----------|------------|----------|----------|-----------------|\n| Create a call control application | `client.callControlApplications().create()` | `POST /call_control_applications` | Create or provision an additional resource when the core tasks do not cover this flow. | `applicationName`, `webhookEventUrl` |\n| Retrieve a call control application | `client.callControlApplications().retrieve()` | `GET /call_control_applications/{id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `id` |\n| Update a call control application | `client.callControlApplications().update()` | `PATCH /call_control_applications/{id}` | Modify an existing resource without recreating it. | `applicationName`, `webhookEventUrl`, `id` |\n| Delete a call control application | `client.callControlApplications().delete()` | `DELETE /call_control_applications/{id}` | Remove, detach, or clean up an existing resource. | `id` |\n| SIP Refer a call | `client.calls().actions().refer()` | `POST /calls/{call_control_id}/actions/refer` | Trigger a follow-up action in an existing workflow rather than creating a new top-level resource. | `sipAddress`, `callControlId` |\n| Send SIP info | `client.calls().actions().sendSipInfo()` | `POST /calls/{call_control_id}/actions/send_sip_info` | Trigger a follow-up action in an existing workflow rather than creating a new top-level resource. | `contentType`, `body`, `callControlId` |\n\n### Other Webhook Events\n\n| Event | `data.event_type` | Description |\n|-------|-------------------|-------------|\n| `callBridged` | `call.bridged` | Call Bridged |\n\n---\n\nFor exhaustive optional parameters, full response schemas, and complete webhook payloads, see [references/api-details.md](references/api-details.md).","tags":["telnyx","voice","java","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-voice-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-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,188 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.180Z","embedding":null,"createdAt":"2026-04-18T22:08:29.635Z","updatedAt":"2026-04-22T00:54:53.180Z","lastSeenAt":"2026-04-22T00:54:53.180Z","tsv":"'+13125550001':121 '+16':1416 '+18005550100':77,455,700 '+18005550101':75,453 '+26':551 '+33':676 '+48':436 '/actions/answer':489 '/actions/bridge':1339 '/actions/hangup':1233 '/actions/refer':1958 '/actions/reject':1484 '/actions/send_sip_info':1991 '/actions/transfer':602 '/active_calls':1659 '/call_control_applications':1722,1865,1891,1915,1935 '/calls':341,485,598,1229,1335,1480,1587,1954,1987 '/connections':1656 '/webhooks':751 '1293384261075731461':1688 '401':57,87 '403':91 '404':94 '41d4':571,695,1302,1435,1549,1620 '422':53,98 '429':50,104 '446655440000':573,697,1304,1437,1551,1622 '550e8400':568,692,1299,1432,1546,1617 '6.36.0':12,17 '7267xxxxxxxxxxxxxx':73,451 '8601':872,985,1098 'a716':572,696,1303,1436,1550,1621 'action':482,565,595,705,1226,1296,1317,1332,1447,1462,1477,1560,1951,1964,1984,1997 'actionanswerrespons':562 'actionbridgeparam':1427 'actionbridgeparams.builder':1429 'actionbridgerespons':1444 'actionhanguprespons':1293 'actionrejectparam':1541 'actionrejectparams.builder':1543 'actionrejectparams.cause.user':1554 'actionrejectrespons':1557 'actiontransferparam':687 'actiontransferparams.builder':689 'actiontransferrespons':702 'activ':1635,1733,1778 'ad':1282 'add':430,529,654,1257,1380,1519 'addit':277,1781,1870 'agent':328 'alreadi':33 'alway':58,731 'anchorsiteoverrid':1779 'answer':202,471,483,566,587,835 'api':41,89,892,1005,1118 'app':386,898,1011,1124 'applic':229,1707,1861,1887,1911,1931 'applicationnam':1780,1881,1924 'array':1275 'assum':30 'async':331 'authent':55 'automat':142 'autopag':140 'avail':1709 'avoid':1271,1394,1533 'backoff':110 'beyond':305 'bill':417,516 'billinggroupid':407,506 'bodi':749,788,815,2012 'bridg':1310,1333,1358,1410,1448,2024 'build':78,456,701,782,792,1443,1556 'busi':1494,1555 'bye':1286 'call':42,157,179,193,199,220,224,234,324,333,384,405,422,474,478,486,505,521,583,599,631,645,834,883,890,896,907,918,937,947,996,1003,1009,1020,1031,1050,1060,1109,1116,1122,1133,1213,1217,1230,1249,1311,1336,1349,1354,1372,1456,1481,1491,1498,1511,1569,1588,1606,1636,1705,1859,1885,1909,1929,1949,1955,1988,2023 'call-control':332,477 'call.answered':852 'call.bridged':2022 'call.hangup':965 'call.initiated':1078 'callbridg':2021 'callcontrolapplicationlistpag':1762 'callcontrolid':494,620,690,1238,1344,1361,1439,1500,1544,1595,1698,1979,2013 'callcontrolidtobridg':1430 'calldialparam':69,447 'calldialparams.builder':71,449 'calldialrespons':79,457 'calldur':1699 'caller':371,1160 'calllegid':1700 'callretrievestatusrespons':1612 'callsessionid':1701 'cannot':230 'catch':805 'caus':1489,1496,1553 'caveat':156 'check':101 'choos':1712 'clean':1940 'client':25,31 'client.callcontrolapplications':1719,1764,1862,1888,1912,1932 'client.calls':81,338,459,481,564,594,704,1225,1295,1331,1446,1476,1559,1584,1614,1950,1983 'client.connections':1653,1686 'client.webhooks':785 'clientstat':423,522,647,1250,1373,1512,1702 'close':1197 'code':63,86,127,271 'codec':1135,1143,1149,1157 'com.telnyx.sdk':10,15 'com.telnyx.sdk.client.okhttp.telnyxokhttpclient':23 'com.telnyx.sdk.client.telnyxclient':21 'com.telnyx.sdk.core.http.headers':740 'com.telnyx.sdk.core.unwrapwebhookparams':738 'com.telnyx.sdk.models.callcontrolapplications.callcontrolapplicationlistpage':1759 'com.telnyx.sdk.models.callcontrolapplications.callcontrolapplicationlistparams':1761 'com.telnyx.sdk.models.calls.actions.actionanswerparams':559 'com.telnyx.sdk.models.calls.actions.actionanswerresponse':561 'com.telnyx.sdk.models.calls.actions.actionbridgeparams':1424 'com.telnyx.sdk.models.calls.actions.actionbridgeresponse':1426 'com.telnyx.sdk.models.calls.actions.actionhangupparams':1290 'com.telnyx.sdk.models.calls.actions.actionhangupresponse':1292 'com.telnyx.sdk.models.calls.actions.actionrejectparams':1538 'com.telnyx.sdk.models.calls.actions.actionrejectresponse':1540 'com.telnyx.sdk.models.calls.actions.actiontransferparams':684 'com.telnyx.sdk.models.calls.actions.actiontransferresponse':686 'com.telnyx.sdk.models.calls.calldialparams':66,444 'com.telnyx.sdk.models.calls.calldialresponse':68,446 'com.telnyx.sdk.models.calls.callretrievestatusparams':1609 'com.telnyx.sdk.models.calls.callretrievestatusresponse':1611 'com.telnyx.sdk.models.connections.connectionlistactivecallspage':1681 'com.telnyx.sdk.models.connections.connectionlistactivecallsparams':1683 'comma':1141,1155 'comma-separ':1140,1154 'command':173,209,480,888,1001,1114,1273,1396,1535 'commandid':1263,1386,1525 'common':84,584,1205 'complet':2033 'connect':226,902,1015,1128,1147,1639,1657,1669,1731 'connectio':391 'connectionid':72,376,450,1664 'connectionlistactivecallspag':1684 'consolid':1674,1744,1752 'contenttyp':2011 'control':150,158,180,221,334,385,479,487,503,588,600,629,880,891,897,993,1004,1010,1106,1117,1123,1223,1231,1247,1337,1350,1370,1482,1509,1581,1589,1604,1650,1706,1860,1886,1903,1910,1930,1956,1989 'control-flow':1580,1649,1902 'core':319,1193,1785,1874 'correl':924,944,1037,1057 'countri':126 'cover':1878 'creat':1324,1469,1729,1857,1863,1866,1971,2004 'createdat':1776 'current':1573,1642,1895 'custom':1278 'customhead':1274 'dash':130 'data.event':849,962,1075,2018 'data.id':859,972,1085 'data.occurred':866,979,1092 'data.payload.call':879,908,927,992,1021,1040,1105 'data.payload.connection':893,1006,1119,1134 'data.payload.offered':1148 'data.record':839,952,1065 'date':869,982,1095 'date-tim':868,981,1094 'datetim':873,986,1099 'decis':1583,1652,1905 'deepobject':1677,1747,1755 'delet':1577,1646,1899,1927,1933,1934 'deliv':858,971,1084 'descript':345,493,606,838,951,1064,1237,1343,1488,1594,1663,1726,2020 'detach':1938 'dial':82,164,196,321,339,356,460,617 'differ':191 'downstream':591 'drive':231 'driven':162,1222 'duplic':1272,1395,1534 'e':807 'e.164':118,348,361,609 'e.g':120,745 'e.getmessage':812 'e29b':570,694,1301,1434,1548,1619 'e29b-41d4-a716':569,693,1300,1433,1547,1618 'ed25519':718,725,768,773 'enabl':1144 'end':1214 'endpoint':215,1852 'entrypoint':327 'enum':244,253,841,851,954,964,1067,1077,1490,1728 'error':38,47,52,56,60,85,100 'ev':946,1059 'event':161,184,784,797,801,842,856,877,926,955,969,990,1039,1068,1082,1103,2016,2017 'event-driven':160 'everi':433,532,657,1260,1383,1522 'exact':1796 'exampl':28,308 'except':806 'exhaust':2026 'exist':1320,1465,1714,1919,1943,1967,2000 'exponenti':109 'fail':44,811 'fetch':1571,1640,1893 'field':102,246,249,256,304,318,413,428,464,512,527,541,577,652,666,710,822,836,949,1062,1165,1181,1255,1269,1308,1378,1392,1452,1517,1531,1565,1626,1697,1774,1848 'filter':1741,1745 'first':1788 'flow':189,1200,1224,1582,1651,1880,1904 'follow':171,1209,1315,1460,1962,1995 'follow-up':170,1208,1314,1459,1961,1994 'format':103,119 'former':387,900,1013,1126 'found':97 'frequenc':1814 'full':1806,2029 'get':1586,1655,1721,1890 'given':1638 'gradl':13 'group':418,517 'gru1ogrkyq':574,698,1305,1438,1552,1623 'guess':1846 'handl':39,59 'handler':176,744,1185 'handlewebhook':754 'hangup':948,1212,1227,1297 'hasnextpag':152 'header':730,761,762,790,791,1279 'headers.builder':763 'httpservletrequest':758 'id':181,372,381,388,419,488,518,601,881,884,894,899,903,910,912,929,931,994,997,1007,1012,1016,1023,1025,1042,1044,1107,1110,1120,1125,1129,1232,1338,1351,1402,1483,1590,1658,1670,1775,1892,1906,1916,1926,1936,1945,1957,1990 'identifi':335,499,625,843,861,956,974,1069,1087,1243,1366,1505,1600 'iie4pqg':1442 'implement':14 'implic':593 'import':20,22,65,67,111,443,445,558,560,683,685,737,739,1186,1289,1291,1423,1425,1537,1539,1608,1610,1680,1682,1758,1760 'inbound':167,188,198,473,476 'includ':122,721 'incom':205 'index':1793 'info':1982 'initi':34,1061 'inlin':262,307,824,1170 'inspect':1708 'instal':8 'insuffici':92 'integ':393,633 'integr':832 'invalid':88,816 'invent':241 'iso':871,984,1097 'issu':169,887,1000,1113 'item':146,1691,1696,1768,1773 'iter':143 'java':4,7,19,64,442,557,682,736,1288,1422,1536,1607,1679,1757 'key':90 'leg':909,1022 'level':1329,1474,1976,2009 'limit':49,106 'list':134,1138,1152,1169,1633,1704,1720,1765 'listactivecal':1654,1687 'live':233,582,1216 'lower':1813 'lower-frequ':1812 'make':1579,1648,1901 'manual':149 'match':302 'may':225 'mdi91x4lwfes7igbbeot9m4aigoy08m0wwzfist1yw2axz':1441 'messag':1287 'method':135,1798,1851 'miss':1847 'modifi':1917 'must':115,200 'mutat':1717 'name':1732 'need':258,329,1163,1203 'network':46 'new':1326,1471,1973,2006 'nextpag':154 'note':112 'number':114,365,396,636 'object':1276,1672,1742,1750 'occur':878,991,1104 'offer':1158 'ok':804 'oper':155,275,278,1188,1782,1790,1820,1849 'option':282,287,437,552,677,1417,1807,1825,1830,2027 'optional-paramet':281,286,1824,1829 'order':1738 'outbound':186,192,323 'overrid':543,668 'page':138,1671,1675,1685,1749,1753,1763 'page.autopager':147 'page.data':1692,1769 'page.meta':1694,1771 'pagin':133,1693,1770 'param':70,83,438,448,461,553,678,688,707,1418,1428,1449,1542,1562,1801,1808,1856 'paramet':243,252,283,288,342,490,603,1234,1340,1485,1591,1660,1676,1723,1746,1754,1826,1831,2028 'parenthes':132 'part':828 'patch':1914 'path':589,833 'payload':185,312,317,757,789,821,1175,1180,1816,2035 'permiss':93 'phone':113 'post':340,484,586,597,1228,1334,1479,1864,1953,1986 'post-answ':585 'postmap':750 'prefix':124 'present':373 'primari':325,462,475,575,708,831,1306,1450,1563,1624,1695,1772 'process':795 'product':62,735 'provis':1868 'public':212,752 'put':764,774 'rate':48,105 'rather':1322,1467,1969,2002 'raw':748 'reachabl':213 'read':266,279,300,309,1172,1822 'real':219 'receiv':799 'recordtyp':1703 'recreat':1922 'refer':236,313,1176,1947,1952 'references/api-details.md':267,268,285,295,314,440,441,555,556,680,681,1177,1420,1421,1803,1804,1828,1838,2037,2038 'reject':1454,1478,1492,1499,1561 'remov':1937 'request':720,759 'request.getheader':769,778 'requestbodi':755 'requir':217,344,492,605,1236,1342,1487,1593,1662,1725,1800,1855 'resourc':95,848,865,961,978,1074,1091,1330,1475,1710,1715,1871,1920,1944,1977,2010 'respons':80,245,255,292,297,458,463,563,576,703,709,1294,1307,1445,1451,1558,1564,1613,1625,1689,1766,1809,1835,1840,2030 'response-schema':291,296,1834,1839 'response.data.callcontrolid':465,1627 'response.data.callduration':470,1628 'response.data.calllegid':466,1629 'response.data.callsessionid':467,1630 'response.data.clientstate':1631 'response.data.endtime':1632 'response.data.isalive':468 'response.data.recordingid':469,579 'response.data.result':578,711,1309,1453,1566 'responseent':753 'responseentity.badrequest':814 'responseentity.ok':803 'result':1740 'retri':107 'retriev':1567,1883,1889 'retrievestatus':1585,1615 'return':136,336,802,813 'room':1406 'rule':238 'run':210 'schema':293,298,1810,1836,1841,2031 'sdk':1797,1850 'second':398,638 'section':284,294,1827,1837 'see':2036 'sen':550,675 'send':1980 'sendsipinfo':1985 'separ':1142,1156 'session':928,938,1041,1051 'set':415,514 'setup':18 'shown':36,261 'sign':715 'signatur':724,733,767,772,793,817 'sip':353,614,1285,1946,1981 'sipaddress':1978 'skill':265 'skill-telnyx-voice-java' 'sort':1727,1737 'source-team-telnyx' 'space':129 'specifi':1735 'spring':746 'start':194 'state':235,431,530,655,1258,1381,1520,1574,1643,1896 'status':1570 'step':1211 'string':347,360,377,408,424,495,507,523,536,608,621,648,661,756,882,895,911,930,995,1008,1024,1043,1108,1121,1136,1150,1239,1251,1264,1345,1362,1374,1387,1398,1501,1513,1526,1596,1665 'style':1678,1748,1756 'subsequ':434,533,658,1261,1384,1523 'support':1187 'system.err.println':808 'system.out.println':798 'task':320,1194,1786,1875 'telnyx':2,5,11,16,242,400,548,640,673,714,723,728,766,771,776,780,901,1014,1127,1668 'telnyx-signature-ed25519':722,765,770 'telnyx-timestamp':727,775,779 'telnyx-voice-java':1 'telnyxcli':24 'telnyxokhttpclient.fromenv':26 'text':9 'time':870,983,1096 'timeoutsec':392,632 'timestamp':729,777,781 'token':501,627,1245,1368,1507,1602 'top':1328,1473,1975,2008 'top-level':1327,1472,1974,2007 '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' 'transfer':580,596,706 'tri':760 'trigger':1312,1457,1959,1992 'type':343,491,604,837,840,845,850,854,863,950,953,958,963,967,976,1063,1066,1071,1076,1080,1089,1235,1341,1486,1592,1661,1724,2019 'u':1415 'uniqu':498,624,915,934,1028,1047,1242,1365,1504,1599 'unwrap':786 'unwrapwebhookparams.builder':787 'updat':1576,1645,1898,1907,1913 'updatedat':1777 'uri':354,615 'url':537,545,662,670 'use':139,151,177,237,273,368,411,426,510,525,539,650,664,747,885,904,922,942,998,1017,1035,1055,1111,1130,1189,1253,1267,1376,1390,1515,1529,1783,1802,1818,1853 'user':1493 'uuid':378,409,496,508,622,860,973,1086,1240,1265,1346,1363,1388,1399,1502,1527,1597,1666 'v3':567,691,1298,1431,1440,1545,1616 'valid':51,99,794 'var':145,783 'variat':1206 'verif':713,810 'verifi':732 'via':889,1002,1115 'video':1405 'videoroomid':1397 'voic':3,6,326 'wait':402,642 'want':1356,1408 'webhook':168,175,206,214,248,303,311,316,435,534,592,659,712,716,743,800,809,818,820,925,945,1038,1058,1164,1174,1179,1221,1262,1385,1524,1815,2015,2034 'webhook-driven':1220 'webhook-payload-field':315,1178 'webhookeventurl':1882,1925 'webhookurl':535,660 'without':222,1921 'workflow':1321,1466,1968,2001 'wrapper':1690,1767 'write':270,1183 'yes':349,362,379,497,610,623,1241,1347,1364,1495,1503,1598,1667","prices":[{"id":"76d98125-051b-4a45-9027-9ef7771f1b50","listingId":"57215daf-47b7-44a6-8042-07d3c6d904e4","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:29.635Z"}],"sources":[{"listingId":"57215daf-47b7-44a6-8042-07d3c6d904e4","source":"github","sourceId":"team-telnyx/ai/telnyx-voice-java","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-java","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:29.635Z","lastSeenAt":"2026-04-22T00:54:53.180Z"}],"details":{"listingId":"57215daf-47b7-44a6-8042-07d3c6d904e4","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-voice-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":"6aaf276fe5161052bf5b0e5abf6271a9bbb2b312","skill_md_path":"skills/telnyx-voice-java/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-java"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-voice-java","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-voice-java"},"updatedAt":"2026-04-22T00:54:53.180Z"}}