{"id":"8779ea8a-fa35-4a05-b724-147ab79ec9db","shortId":"sht8UV","kind":"skill","title":"telnyx-voice-streaming-go","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Voice Streaming - Go\n\n## Installation\n\n```bash\ngo get github.com/team-telnyx/telnyx-go\n```\n\n## Setup\n\n```go\nimport (\n  \"context\"\n  \"fmt\"\n  \"os\"\n\n  \"github.com/team-telnyx/telnyx-go\"\n  \"github.com/team-telnyx/telnyx-go/option\"\n)\n\nclient := telnyx.NewClient(\n  option.WithAPIKey(os.Getenv(\"TELNYX_API_KEY\")),\n)\n```\n\nAll examples below assume `client` is already initialized as shown above.\n\n## Error Handling\n\nAll API calls can fail with network errors, rate limits (429), validation errors (422),\nor authentication errors (401). Always handle errors in production code:\n\n```go\nimport \"errors\"\n\nresult, err := client.Messages.Send(ctx, params)\nif err != nil {\n  var apiErr *telnyx.Error\n  if errors.As(err, &apiErr) {\n    switch apiErr.StatusCode {\n    case 422:\n      fmt.Println(\"Validation error — check required fields and formats\")\n    case 429:\n      // Rate limited — wait and retry with exponential backoff\n      fmt.Println(\"Rate limited, retrying...\")\n    default:\n      fmt.Printf(\"API error %d: %s\\n\", apiErr.StatusCode, apiErr.Error())\n    }\n  } else {\n    fmt.Println(\"Network error — check connectivity and retry\")\n  }\n}\n```\n\nCommon error codes: `401` invalid API key, `403` insufficient permissions,\n`404` resource not found, `422` validation error (check field formats),\n`429` rate limited (retry with exponential backoff).\n\n## 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```go\n\tresponse, err := client.Calls.Actions.StartForking(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStartForkingParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n```\n\nReturns: `result` (string)\n\n## 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```go\n\tresponse, err := client.Calls.Actions.StopForking(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStopForkingParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n```\n\nReturns: `result` (string)\n\n## 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```go\n\tresponse, err := client.Calls.Actions.StartStreaming(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStartStreamingParams{\n\t\tStreamURL: \"wss://example.com/audio-stream\",\n\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n```\n\nReturns: `result` (string)\n\n## 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```go\n\tresponse, err := client.Calls.Actions.StopStreaming(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStopStreamingParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n```\n\nReturns: `result` (string)\n\n## 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```go\n\tresponse, err := client.Calls.Actions.StartTranscription(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStartTranscriptionParams{\n\t\t\tTranscriptionStartRequest: telnyx.TranscriptionStartRequestParam{},\n\t\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n```\n\nReturns: `result` (string)\n\n## 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```go\n\tresponse, err := client.Calls.Actions.StopTranscription(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStopTranscriptionParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n```\n\nReturns: `result` (string)\n\n---\n\n## Webhooks\n\n### Webhook Verification\n\nTelnyx signs webhooks with Ed25519. Each request includes `telnyx-signature-ed25519`\nand `telnyx-timestamp` headers. Always verify signatures in production:\n\n```go\n// In your webhook handler:\nfunc handleWebhook(w http.ResponseWriter, r *http.Request) {\n  body, _ := io.ReadAll(r.Body)\n  event, err := client.Webhooks.Unwrap(body, r.Header)\n  if err != nil {\n    http.Error(w, \"Invalid signature\", http.StatusBadRequest)\n    return\n  }\n  // Signature valid — event is the parsed webhook payload\n  fmt.Println(\"Received event:\", event.Data.EventType)\n  w.WriteHeader(http.StatusOK)\n}\n```\n\nThe following webhook events are sent to your configured webhook URL.\nAll webhooks include `telnyx-timestamp` and `telnyx-signature-ed25519` headers for Ed25519 signature verification. Use `client.webhooks.unwrap()` to verify.\n\n| Event | Description |\n|-------|-------------|\n| `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","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-voice-streaming-go","topic-agent-skills","topic-ai-coding-agent","topic-claude-code","topic-cpaas","topic-cursor","topic-iot","topic-llm","topic-sdk","topic-sip","topic-sms","topic-speech-to-text","topic-telephony"],"categories":["ai"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/team-telnyx/ai/telnyx-voice-streaming-go","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add team-telnyx/ai","source_repo":"https://github.com/team-telnyx/ai","install_from":"skills.sh"}},"qualityScore":"0.533","qualityRationale":"deterministic score 0.53 from registry signals: · indexed on github topic:agent-skills · 167 github stars · SKILL.md body (13,169 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.384Z","embedding":null,"createdAt":"2026-04-18T22:08:38.471Z","updatedAt":"2026-04-22T00:54:54.384Z","lastSeenAt":"2026-04-22T00:54:54.384Z","tsv":"'/actions/fork_start':227 '/actions/fork_stop':278 '/actions/streaming_start':369 '/actions/streaming_stop':493 '/actions/transcription_start':557 '/actions/transcription_stop':616 '/audio-stream':463 '/calls':223,274,365,489,553,612 '/docs/voice/programmable-voice/media-streaming).':363 '/team-telnyx/telnyx-go':16,25 '/team-telnyx/telnyx-go/option':28 '16000':415 '22050':416 '24000':417 '401':66,137 '403':141 '404':144 '422':62,94,148 '429':59,104,154 '48000':418 '8000':414 '8601':807,931,1052,1204,1338,1472 'add':1537 'address':325,1292,1426 'ai':205 'ai-gener':204 'allow':165 'alreadi':42 'alway':67,665 'amr':400,435 'amr-wb':399,434 'analysi':189 'api':34,50,119,139,1072,1224,1358 'apierr':85,90 'apierr.error':125 'apierr.statuscode':92,124 'app':819,943,1078,1230,1364,1548 'array':379 'assum':39 'attribut':215,221 'audio':188,207,333,344 'auth':388 'authent':64 'azur':571 'b':573 'backoff':112,160 'base64':339 'base64-encoded':338 'bash':11 'bidirect':392,404,410,420 'bodi':681,687 'boolean':386 'call':51,163,173,224,248,269,275,296,320,366,456,481,490,509,536,554,586,613,629,746,750,754,758,762,817,828,838,849,868,941,952,962,973,992,1063,1070,1076,1087,1098,1117,1215,1222,1228,1239,1250,1269,1349,1356,1362,1373,1384,1403,1490,1501,1520,1546,1557 'call.fork.started':787 'call.fork.stopped':272,911 'call.transcription':551,1452 'callforkstart':745,770 'callforkstop':749,894 'callstreamingfail':753,1018 'callstreamingstart':757,1167 'callstreamingstop':761,1301 'case':93,103,196 'check':98,130,151 'client':29,40,229,280,371,495,559,618 'client.calls.actions.startforking':246 'client.calls.actions.startstreaming':454 'client.calls.actions.starttranscription':584 'client.calls.actions.stopforking':294 'client.calls.actions.stopstreaming':507 'client.calls.actions.stoptranscription':627 'client.messages.send':78 'client.webhooks.unwrap':686,740 'code':72,136 'codec':393,428 'command':232,283,374,498,548,562,621,885,1009,1068,1134,1220,1286,1354,1420 'common':134 'config':382,576 'configur':720 'connect':131,328,823,947,1082,1162,1234,1368,1552 'context':20 'context.background':247,295,455,508,585,628 'control':225,249,276,297,367,457,491,510,555,587,614,630,818,830,836,942,954,960,1060,1071,1077,1212,1223,1229,1346,1357,1363,1480,1488,1547 'correl':855,875,979,999,1104,1124,1256,1276,1390,1410,1507,1527 'creation':202 'ctx':79 'custom':377 'd':121 'data.event':784,908,1029,1181,1315,1449 'data.id':794,918,1039,1191,1325,1459 'data.occurred':801,925,1046,1198,1332,1466 'data.payload.call':829,839,858,953,963,982,1059,1088,1107,1211,1240,1259,1345,1374,1393,1479,1491,1510 'data.payload.client':878,1002,1127,1279,1413,1530 'data.payload.connection':814,938,1073,1225,1359,1543 'data.payload.failure':1135 'data.payload.stream':886,1010,1147,1153,1287,1421 'data.record':774,898,1022,1171,1305,1439 'date':804,928,1049,1201,1335,1469 'date-tim':803,927,1048,1200,1334,1468 'datetim':808,932,1053,1205,1339,1473 'decrypt':240,290,889,1013 'deepgram':570 'default':117,438 'deliv':336,793,917,1038,1190,1300,1324,1434,1458 'descript':744,773,897,1021,1140,1170,1304,1438 'destin':1290,1424 'detail':352 'detect':199 'developers.telnyx.com':362 'developers.telnyx.com/docs/voice/programmable-voice/media-streaming).':361 'dialogflow':327,381,385,1157 'ed25519':652,659,733,736 'either':212 'els':126 'enabl':186,384 'encod':340 'engin':566,575 'enum':239,288,394,406,413,423,429,441,567,776,786,888,900,910,1012,1024,1031,1155,1173,1183,1307,1317,1441,1451 'err':77,82,89,245,253,256,293,301,304,453,465,468,506,514,517,583,593,596,626,634,637,685,690 'error':47,56,61,65,69,75,97,120,129,135,150 'errors.as':88 'event':684,700,708,715,743,777,791,812,857,877,901,915,936,981,1001,1025,1036,1057,1106,1126,1174,1188,1209,1258,1278,1308,1322,1343,1392,1412,1442,1456,1477,1509,1529 'event.data.eventtype':709 'everi':1540 'exampl':37 'example.com':462 'example.com/audio-stream':461 'expect':270,485,549 'explan':1141 'exponenti':111,159 'fail':53,756,1146 'field':100,152,769,771,895,1019,1168,1302,1436,1535 'find':350 'fmt':21 'fmt.printf':118,257,305,469,518,597,638 'fmt.println':95,113,127,706 'follow':713 'fork':161,164,264,267,747,751 'format':102,153 'former':821,945,1080,1232,1366,1550 'found':147 'fraud':198 'func':675 'g722':397,432 'generat':206 'get':13 'github.com':15,24,27 'github.com/team-telnyx/telnyx-go':14,23 'github.com/team-telnyx/telnyx-go/option':26 'go':5,9,12,18,73,243,291,451,504,581,624,670,1297,1431 'googl':568 'handl':48,68 'handler':674 'handlewebhook':676 'hang':538 'hang-up':537 'header':664,734 'http.error':692 'http.request':680 'http.responsewriter':678 'http.statusbadrequest':696 'http.statusok':711 'id':226,233,250,277,284,298,368,375,458,492,499,502,511,556,563,588,615,622,631,815,820,824,831,834,841,843,860,862,939,944,948,955,958,965,967,984,986,1061,1064,1074,1079,1083,1090,1092,1109,1111,1148,1213,1216,1226,1231,1235,1242,1244,1261,1263,1347,1350,1360,1365,1369,1376,1378,1395,1397,1481,1493,1495,1512,1514,1544,1549,1553 'identifi':778,796,902,920,1026,1041,1150,1175,1193,1309,1327,1443,1461,1484 'import':19,74 'inbound':442 'includ':197,655,725 'initi':43,543 'instal':10 'insuffici':142 'invalid':138,694 'io.readall':682 'iso':806,930,1051,1203,1337,1471 'issu':1067,1219,1353 'json':347 'key':35,140 'l16':402,437 'leg':422,840,964,1089,1241,1375,1492 'limit':58,106,115,156 'link':360 'log.fatal':255,303,467,516,595,636 'media':170,317,354,892,1016,1144 'messag':356 'mode':405 'mp3':407 'must':210 'n':123,259,307,471,520,599,640 'near':331 'near-realtim':330 'network':55,128 'nil':83,254,302,466,515,594,635,691 'object':380,383,577 'occur':813,937,1058,1210,1344,1478 'opposit':426 'option':228,279,370,494,558,617 'option.withapikey':31 'opus':398,433 'os':22 'os.getenv':32 'outbound':444 'param':80 'paramet':378 'pars':703 'payload':342,348,705,768 'pcma':396,431 'pcmu':395,430 'perform':1166 'permiss':143 'pleas':349 'post':222,273,364,488,552,611 'product':71,669 'r':679 'r.body':683 'r.header':688 'rate':57,105,114,155,412 'raw':289,343 'real':529,608 'real-tim':528,607 'realtim':179,187,332 'reason':1136 'receiv':707,882,1006,1131,1283,1417 'request':209,654 'requir':99 'resourc':145,783,800,907,924,1028,1045,1180,1197,1314,1331,1448,1465 'respons':208,244,292,452,505,582,625 'response.data':260,308,472,521,600,641 'result':76,262,310,474,523,602,643 'retri':109,116,133,157 'return':261,309,473,522,601,642,697 'rtp':341,408 'rx':218,235 'sampl':411 'self':425 'sent':717 'session':859,869,983,993,1108,1118,1260,1270,1394,1404,1511,1521 'setup':17 'short':1139 'shown':45 'sign':649 'signatur':658,667,695,698,732,737 'skill' 'skill-telnyx-voice-streaming-go' 'source-team-telnyx' 'specif':176,323,357 'specifi':211 'start':162,313,314,526,527,748,760 'state':230,281,372,496,560,619,879,881,1003,1005,1128,1130,1280,1282,1414,1416,1531,1538 'stop':265,266,477,478,534,547,605,606,752,764 'stream':4,8,168,181,237,286,312,315,355,387,391,403,409,419,427,439,448,476,479,501,755,759,763,893,1017,1145,1152,1161,1164,1295,1429 'streaming.failed':1032 'streaming.started':1184 'streaming.stopped':487,1318 'streamurl':460 'string':231,234,236,242,263,282,285,311,373,376,390,450,475,497,500,524,561,564,580,603,620,623,644,816,832,842,861,880,940,956,966,985,1004,1062,1075,1091,1110,1129,1137,1214,1227,1243,1262,1281,1289,1348,1361,1377,1396,1415,1423,1482,1494,1513,1532,1545 'subsequ':1541 'support':191 'switch':91 'target':177,214,421 'telnyx':2,6,33,569,648,657,662,727,731,822,946,1081,1233,1367,1551 'telnyx-signature-ed25519':656,730 'telnyx-timestamp':661,726 'telnyx-voice-streaming-go':1 'telnyx.callactionstartforkingparams':251 'telnyx.callactionstartstreamingparams':459 'telnyx.callactionstarttranscriptionparams':589 'telnyx.callactionstopforkingparams':299 'telnyx.callactionstopstreamingparams':512 'telnyx.callactionstoptranscriptionparams':632 'telnyx.error':86 'telnyx.newclient':30 'telnyx.transcriptionstartrequestparam':591 'time':530,609,805,929,1050,1202,1336,1470 'timestamp':663,728 'token':389,1486 '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':440,443,445,447,579 'transcript':525,531,532,546,565,574,578,604,610,765,766,1435 'transcriptionstartrequest':590 'tx':220,241 'type':238,287,772,775,780,785,789,798,887,890,896,899,904,909,913,922,1011,1014,1020,1023,1030,1034,1043,1154,1159,1169,1172,1177,1182,1186,1195,1303,1306,1311,1316,1320,1329,1437,1440,1445,1450,1454,1463 'uniqu':833,846,865,957,970,989,1095,1114,1247,1266,1381,1400,1483,1498,1517 'url':449,722,1288,1422 'use':184,195,739,825,853,873,949,977,997,1065,1084,1102,1122,1217,1236,1254,1274,1351,1370,1388,1408,1505,1525,1533,1554 'uuid':503,795,919,1040,1149,1192,1326,1460 'v':258,306,470,519,598,639 'valid':60,96,149,699 'var':84 'varieti':193 'verif':647,738 'verifi':666,742 'via':544,1069,1221,1355 'voic':3,7 'w':677,693 'w.writeheader':710 'wait':107 'wb':401,436 'webhook':271,486,550,645,646,650,673,704,714,721,724,767,856,876,980,1000,1105,1125,1257,1277,1391,1411,1508,1528,1542 'websocket':324,484,1156,1291,1425 'wrap':345","prices":[{"id":"72d8146c-6671-45a9-b29f-968b1429b3e8","listingId":"8779ea8a-fa35-4a05-b724-147ab79ec9db","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:38.471Z"}],"sources":[{"listingId":"8779ea8a-fa35-4a05-b724-147ab79ec9db","source":"github","sourceId":"team-telnyx/ai/telnyx-voice-streaming-go","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-streaming-go","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:38.471Z","lastSeenAt":"2026-04-22T00:54:54.384Z"}],"details":{"listingId":"8779ea8a-fa35-4a05-b724-147ab79ec9db","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-voice-streaming-go","github":{"repo":"team-telnyx/ai","stars":167,"topics":["agent-skills","ai","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk","sip","sms","speech-to-text","telephony","telnyx","tts","twilio-migration","voice-agents","voice-ai","webrtc","windsurf"],"license":"mit","html_url":"https://github.com/team-telnyx/ai","pushed_at":"2026-04-21T22:09:49Z","description":"Official one-stop shop for AI Agents and developers building with Telnyx.","skill_md_sha":"5292913ade1670e55d59ed58cec6cee9fde839f2","skill_md_path":"skills/telnyx-voice-streaming-go/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-streaming-go"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-voice-streaming-go","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-voice-streaming-go"},"updatedAt":"2026-04-22T00:54:54.384Z"}}