{"id":"c749d0ab-a010-4972-ac0b-92ed98fa398e","shortId":"dJ8Uzy","kind":"skill","title":"telnyx-webrtc-go","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Webrtc - 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## Important Notes\n\n- **Pagination:** Use `ListAutoPaging()` for automatic iteration: `iter := client.Resource.ListAutoPaging(ctx, params); for iter.Next() { item := iter.Current() }`.\n\n## List mobile push credentials\n\n`GET /mobile_push_credentials`\n\n```go\n\tpage, err := client.MobilePushCredentials.List(context.Background(), telnyx.MobilePushCredentialListParams{})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", page)\n```\n\nReturns: `alias` (string), `certificate` (string), `created_at` (date-time), `id` (string), `private_key` (string), `project_account_json_file` (object), `record_type` (string), `type` (string), `updated_at` (date-time)\n\n## Creates a new mobile push credential\n\n`POST /mobile_push_credentials` — Required: `type`, `certificate`, `private_key`, `alias`\n\n```go\n\tpushCredentialResponse, err := client.MobilePushCredentials.New(context.Background(), telnyx.MobilePushCredentialNewParams{\n\t\tOfIos: &telnyx.MobilePushCredentialNewParamsCreateMobilePushCredentialRequestIos{\n\t\t\tAlias:       \"LucyIosCredential\",\n\t\t\tCertificate: \"-----BEGIN CERTIFICATE----- MIIGVDCCBTKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END CERTIFICATE-----\",\n\t\t\tPrivateKey:  \"-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END RSA PRIVATE KEY-----\",\n\t\t},\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", pushCredentialResponse.Data)\n```\n\nReturns: `alias` (string), `certificate` (string), `created_at` (date-time), `id` (string), `private_key` (string), `project_account_json_file` (object), `record_type` (string), `type` (string), `updated_at` (date-time)\n\n## Retrieves a mobile push credential\n\nRetrieves mobile push credential based on the given `push_credential_id`\n\n`GET /mobile_push_credentials/{push_credential_id}`\n\n```go\n\tpushCredentialResponse, err := client.MobilePushCredentials.Get(context.Background(), \"0ccc7b76-4df3-4bca-a05a-3da1ecc389f0\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", pushCredentialResponse.Data)\n```\n\nReturns: `alias` (string), `certificate` (string), `created_at` (date-time), `id` (string), `private_key` (string), `project_account_json_file` (object), `record_type` (string), `type` (string), `updated_at` (date-time)\n\n## Deletes a mobile push credential\n\nDeletes a mobile push credential based on the given `push_credential_id`\n\n`DELETE /mobile_push_credentials/{push_credential_id}`\n\n```go\n\terr := client.MobilePushCredentials.Delete(context.Background(), \"0ccc7b76-4df3-4bca-a05a-3da1ecc389f0\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n```\n\n## List all credentials\n\nList all On-demand Credentials.\n\n`GET /telephony_credentials`\n\n```go\n\tpage, err := client.TelephonyCredentials.List(context.Background(), telnyx.TelephonyCredentialListParams{})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", page)\n```\n\nReturns: `created_at` (string), `expired` (boolean), `expires_at` (string), `id` (string), `name` (string), `record_type` (string), `resource_id` (string), `sip_password` (string), `sip_username` (string), `updated_at` (string), `user_id` (string)\n\n## Create a credential\n\nCreate a credential.\n\n`POST /telephony_credentials` — Required: `connection_id`\n\nOptional: `expires_at` (string), `name` (string), `tag` (string)\n\n```go\n\ttelephonyCredential, err := client.TelephonyCredentials.New(context.Background(), telnyx.TelephonyCredentialNewParams{\n\t\tConnectionID: \"1234567890\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", telephonyCredential.Data)\n```\n\nReturns: `created_at` (string), `expired` (boolean), `expires_at` (string), `id` (string), `name` (string), `record_type` (string), `resource_id` (string), `sip_password` (string), `sip_username` (string), `updated_at` (string), `user_id` (string)\n\n## Get a credential\n\nGet the details of an existing On-demand Credential.\n\n`GET /telephony_credentials/{id}`\n\n```go\n\ttelephonyCredential, err := client.TelephonyCredentials.Get(context.Background(), \"id\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", telephonyCredential.Data)\n```\n\nReturns: `created_at` (string), `expired` (boolean), `expires_at` (string), `id` (string), `name` (string), `record_type` (string), `resource_id` (string), `sip_password` (string), `sip_username` (string), `updated_at` (string), `user_id` (string)\n\n## Update a credential\n\nUpdate an existing credential.\n\n`PATCH /telephony_credentials/{id}`\n\nOptional: `connection_id` (string), `expires_at` (string), `name` (string), `tag` (string)\n\n```go\n\ttelephonyCredential, err := client.TelephonyCredentials.Update(\n\t\tcontext.Background(),\n\t\t\"id\",\n\t\ttelnyx.TelephonyCredentialUpdateParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", telephonyCredential.Data)\n```\n\nReturns: `created_at` (string), `expired` (boolean), `expires_at` (string), `id` (string), `name` (string), `record_type` (string), `resource_id` (string), `sip_password` (string), `sip_username` (string), `updated_at` (string), `user_id` (string)\n\n## Delete a credential\n\nDelete an existing credential.\n\n`DELETE /telephony_credentials/{id}`\n\n```go\n\ttelephonyCredential, err := client.TelephonyCredentials.Delete(context.Background(), \"id\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", telephonyCredential.Data)\n```\n\nReturns: `created_at` (string), `expired` (boolean), `expires_at` (string), `id` (string), `name` (string), `record_type` (string), `resource_id` (string), `sip_password` (string), `sip_username` (string), `updated_at` (string), `user_id` (string)","tags":["telnyx","webrtc","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk","sip"],"capabilities":["skill","source-team-telnyx","skill-telnyx-webrtc-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-webrtc-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 (6,874 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:55.921Z","embedding":null,"createdAt":"2026-04-18T22:08:47.160Z","updatedAt":"2026-04-22T00:54:55.921Z","lastSeenAt":"2026-04-22T00:54:55.921Z","tsv":"'/mobile_push_credentials':180,233,322,394 '/team-telnyx/telnyx-go':14,23 '/team-telnyx/telnyx-go/option':26 '/telephony_credentials':423,477,551,607,675 '0ccc7b76':332,403 '0ccc7b76-4df3-4bca-a05a-3da1ecc389f0':331,402 '1234567890':496 '3da1ecc389f0':336,407 '401':64,135 '403':139 '404':142 '422':60,92,146 '429':57,102,152 '4bca':334,405 '4df3':333,404 'a05a':335,406 'account':212,291,362 'alia':197,239,248,276,347 'alreadi':40 'alway':65 'api':32,48,117,137 'apierr':83,88 'apierr.error':123 'apierr.statuscode':90,122 'assum':37 'authent':62 'automat':165 'backoff':110,158 'base':314,386 'bash':9 'begin':251,257 'boolean':444,511,573,641,697 'call':49 'case':91,101 'certif':199,236,250,252,255,278,349 'check':96,128,149 'client':27,38 'client.messages.send':76 'client.mobilepushcredentials.delete':400 'client.mobilepushcredentials.get':329 'client.mobilepushcredentials.list':184 'client.mobilepushcredentials.new':243 'client.resource.listautopaging':168 'client.telephonycredentials.delete':680 'client.telephonycredentials.get':556 'client.telephonycredentials.list':427 'client.telephonycredentials.new':492 'client.telephonycredentials.update':623 'code':70,134 'common':132 'connect':129,479,610 'connectionid':495 'context':18 'context.background':185,244,330,401,428,493,557,624,681 'creat':201,226,280,351,440,470,473,507,569,637,693 'credenti':178,231,309,313,319,324,380,385,391,396,415,421,472,475,539,549,601,605,669,673 'ctx':77,169 'd':119 'date':204,224,283,303,354,374 'date-tim':203,223,282,302,353,373 'default':115 'delet':376,381,393,667,670,674 'demand':420,548 'detail':542 'els':124 'end':254,262 'err':75,80,87,183,188,191,242,267,270,328,338,341,399,409,412,426,431,434,491,498,501,555,560,563,622,628,631,679,684,687 'error':45,54,59,63,67,73,95,118,127,133,148 'errors.as':86 'exampl':35 'exist':545,604,672 'expir':443,445,482,510,512,572,574,613,640,642,696,698 'exponenti':109,157 'fail':51 'field':98,150 'file':214,293,364 'fmt':19 'fmt.printf':116,192,271,342,435,502,564,632,688 'fmt.println':93,111,125 'format':100,151 'found':145 'get':11,179,321,422,537,540,550 'github.com':13,22,25 'github.com/team-telnyx/telnyx-go':12,21 'github.com/team-telnyx/telnyx-go/option':24 'given':317,389 'go':4,7,10,16,71,181,240,326,398,424,489,553,620,677 'handl':46,66 'id':206,285,320,325,356,392,397,448,456,468,480,515,523,535,552,558,577,585,597,608,611,625,645,653,665,676,682,701,709,721 'import':17,72,159 'initi':41 'instal':8 'insuffici':140 'invalid':136 'item':173 'iter':166,167 'iter.current':174 'iter.next':172 'json':213,292,363 'key':33,138,209,238,260,265,288,359 'limit':56,104,113,154 'list':175,413,416 'listautopag':163 'log.fatal':190,269,340,411,433,500,562,630,686 'lucyioscredenti':249 'miiepqibaakcaqeasnlrjvzn9zvxcecqm65czs':261 'miigvdccbtkcaqeasnlrjvzn9zvxcecqm65czs':253 'mobil':176,229,307,311,378,383 'n':121,194,273,344,437,504,566,634,690 'name':450,485,517,579,616,647,703 'network':53,126 'new':228 'nil':81,189,268,339,410,432,499,561,629,685 'note':160 'object':215,294,365 'ofio':246 'on-demand':418,546 'option':481,609 'option.withapikey':29 'os':20 'os.getenv':30 'page':182,195,425,438 'pagin':161 'param':78,170 'password':459,526,588,656,712 'patch':606 'permiss':141 'post':232,476 'privat':208,237,259,264,287,358 'privatekey':256 'product':69 'project':211,290,361 'push':177,230,308,312,318,323,379,384,390,395 'pushcredentialrespons':241,327 'pushcredentialresponse.data':274,345 'rate':55,103,112,153 'record':216,295,366,452,519,581,649,705 'requir':97,234,478 'resourc':143,455,522,584,652,708 'result':74 'retri':107,114,131,155 'retriev':305,310 'return':196,275,346,439,506,568,636,692 'rsa':258,263 'setup':15 'shown':43 'sip':458,461,525,528,587,590,655,658,711,714 'skill' 'skill-telnyx-webrtc-go' 'source-team-telnyx' 'string':198,200,207,210,218,220,277,279,286,289,297,299,348,350,357,360,368,370,442,447,449,451,454,457,460,463,466,469,484,486,488,509,514,516,518,521,524,527,530,533,536,571,576,578,580,583,586,589,592,595,598,612,615,617,619,639,644,646,648,651,654,657,660,663,666,695,700,702,704,707,710,713,716,719,722 'switch':89 'tag':487,618 'telephonycredenti':490,554,621,678 'telephonycredential.data':505,567,635,691 'telnyx':2,5,31 'telnyx-webrtc-go':1 'telnyx.error':84 'telnyx.mobilepushcredentiallistparams':186 'telnyx.mobilepushcredentialnewparams':245 'telnyx.mobilepushcredentialnewparamscreatemobilepushcredentialrequestios':247 'telnyx.newclient':28 'telnyx.telephonycredentiallistparams':429 'telnyx.telephonycredentialnewparams':494 'telnyx.telephonycredentialupdateparams':626 'time':205,225,284,304,355,375 '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' 'type':217,219,235,296,298,367,369,453,520,582,650,706 'updat':221,300,371,464,531,593,599,602,661,717 'use':162 'user':467,534,596,664,720 'usernam':462,529,591,659,715 'v':193,272,343,436,503,565,633,689 'valid':58,94,147 'var':82 'wait':105 'webrtc':3,6","prices":[{"id":"a1cb4e8d-63e8-485f-98c9-417dcb81f966","listingId":"c749d0ab-a010-4972-ac0b-92ed98fa398e","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:47.160Z"}],"sources":[{"listingId":"c749d0ab-a010-4972-ac0b-92ed98fa398e","source":"github","sourceId":"team-telnyx/ai/telnyx-webrtc-go","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-webrtc-go","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:47.160Z","lastSeenAt":"2026-04-22T00:54:55.921Z"}],"details":{"listingId":"c749d0ab-a010-4972-ac0b-92ed98fa398e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-webrtc-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":"dcc1afbea6b6ae7617e5caf72005cf5600370a99","skill_md_path":"skills/telnyx-webrtc-go/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-webrtc-go"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-webrtc-go","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-webrtc-go"},"updatedAt":"2026-04-22T00:54:55.921Z"}}