{"id":"d04d64e3-94f5-48a4-b12b-e1f55decfe66","shortId":"RLTsbL","kind":"skill","title":"telnyx-webrtc-javascript","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Webrtc - JavaScript\n\n## Installation\n\n```bash\nnpm install telnyx\n```\n\n## Setup\n\n```javascript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n  apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\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```javascript\ntry {\n  const result = await client.messages.send({ to: '+13125550001', from: '+13125550002', text: 'Hello' });\n} catch (err) {\n  if (err instanceof Telnyx.APIConnectionError) {\n    console.error('Network error — check connectivity and retry');\n  } else if (err instanceof Telnyx.RateLimitError) {\n    // 429: rate limited — wait and retry with exponential backoff\n    const retryAfter = err.headers?.['retry-after'] || 1;\n    await new Promise(r => setTimeout(r, retryAfter * 1000));\n  } else if (err instanceof Telnyx.APIError) {\n    console.error(`API error ${err.status}: ${err.message}`);\n    if (err.status === 422) {\n      console.error('Validation error — check required fields and formats');\n    }\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:** List methods return an auto-paginating iterator. Use `for await (const item of result) { ... }` to iterate through all pages automatically.\n\n## List mobile push credentials\n\n`GET /mobile_push_credentials`\n\n```javascript\n// Automatically fetches more pages as needed.\nfor await (const pushCredential of client.mobilePushCredentials.list()) {\n  console.log(pushCredential.id);\n}\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```javascript\nconst pushCredentialResponse = await client.mobilePushCredentials.create({\n  createMobilePushCredentialRequest: {\n    alias: 'LucyIosCredential',\n    certificate:\n      '-----BEGIN CERTIFICATE----- MIIGVDCCBTKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END CERTIFICATE-----',\n    private_key:\n      '-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END RSA PRIVATE KEY-----',\n    type: 'ios',\n  },\n});\n\nconsole.log(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```javascript\nconst pushCredentialResponse = await client.mobilePushCredentials.retrieve(\n  '0ccc7b76-4df3-4bca-a05a-3da1ecc389f0',\n);\n\nconsole.log(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```javascript\nawait client.mobilePushCredentials.delete('0ccc7b76-4df3-4bca-a05a-3da1ecc389f0');\n```\n\n## List all credentials\n\nList all On-demand Credentials.\n\n`GET /telephony_credentials`\n\n```javascript\n// Automatically fetches more pages as needed.\nfor await (const telephonyCredential of client.telephonyCredentials.list()) {\n  console.log(telephonyCredential.id);\n}\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```javascript\nconst telephonyCredential = await client.telephonyCredentials.create({\n  connection_id: '1234567890',\n});\n\nconsole.log(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```javascript\nconst telephonyCredential = await client.telephonyCredentials.retrieve('550e8400-e29b-41d4-a716-446655440000');\n\nconsole.log(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```javascript\nconst telephonyCredential = await client.telephonyCredentials.update('550e8400-e29b-41d4-a716-446655440000');\n\nconsole.log(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```javascript\nconst telephonyCredential = await client.telephonyCredentials.delete('550e8400-e29b-41d4-a716-446655440000');\n\nconsole.log(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","javascript","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-webrtc-javascript","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-javascript","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,576 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:56.172Z","embedding":null,"createdAt":"2026-04-18T22:08:48.707Z","updatedAt":"2026-04-22T00:54:56.172Z","lastSeenAt":"2026-04-22T00:54:56.172Z","tsv":"'+13125550001':80 '+13125550002':82 '/mobile_push_credentials':204,257,340,405 '/telephony_credentials':428,482,549,603,668 '0ccc7b76':350,413 '0ccc7b76-4df3-4bca-a05a-3da1ecc389f0':349,412 '1':118 '1000':126 '1234567890':501 '3da1ecc389f0':354,417 '401':66,151 '403':155 '404':158 '41d4':559,624,678 '422':62,139,162 '429':59,103,168 '446655440000':561,626,680 '4bca':352,415 '4df3':351,414 '550e8400':556,621,675 'a05a':353,416 'a716':560,625,679 'account':236,309,373 'alia':221,263,270,294,358 'alreadi':42 'alway':67 'api':26,50,133,153 'apikey':23 'assum':39 'authent':64 'auto':183 'auto-pagin':182 'automat':198,206,430 'await':77,119,188,213,267,347,410,437,497,554,619,673 'backoff':111,174 'base':332,397 'bash':9 'begin':273,280 'boolean':449,509,569,634,688 'call':51 'catch':85 'certif':223,260,272,274,277,296,360 'check':94,143,165 'client':20,40 'client.messages.send':78 'client.mobilepushcredentials.create':268 'client.mobilepushcredentials.delete':411 'client.mobilepushcredentials.list':217 'client.mobilepushcredentials.retrieve':348 'client.telephonycredentials.create':498 'client.telephonycredentials.delete':674 'client.telephonycredentials.list':441 'client.telephonycredentials.retrieve':555 'client.telephonycredentials.update':620 'code':72,150 'common':148 'connect':95,484,499,606 'console.error':91,132,140 'console.log':218,291,355,442,502,562,627,681 'const':19,75,112,189,214,265,345,438,495,552,617,671 'creat':225,250,298,362,445,475,478,505,565,630,684 'createmobilepushcredentialrequest':269 'credenti':202,255,327,331,337,342,391,396,402,407,420,426,477,480,537,547,597,601,662,666 'date':228,248,301,321,365,385 'date-tim':227,247,300,320,364,384 'default':31 'delet':387,392,404,660,663,667 'demand':425,546 'detail':540 'e29b':558,623,677 'e29b-41d4-a716':557,622,676 'els':98,127 'end':276,285 'err':86,88,100,129 'err.headers':114 'err.message':136 'err.status':135,138 'error':47,56,61,65,69,93,134,142,149,164 'exampl':37 'exist':543,600,665 'expir':448,450,487,508,510,568,570,609,633,635,687,689 'exponenti':110,173 'fail':53 'fetch':207,431 'field':145,166 'file':238,311,375 'format':147,167 'found':161 'get':203,339,427,535,538,548 'given':335,400 'handl':48,68 'hello':84 'id':230,303,338,343,367,403,408,453,461,473,485,500,513,521,533,550,573,581,593,604,607,638,646,658,669,692,700,712 'import':15,175 'initi':43 'instal':8,11 'instanceof':89,101,130 'insuffici':156 'invalid':152 'io':290 'item':190 'iter':185,194 'javascript':4,7,14,73,205,264,344,409,429,494,551,616,670 'json':237,310,374 'key':27,154,233,262,279,283,288,306,370 'limit':58,105,170 'list':178,199,418,421 'lucyioscredenti':271 'method':179 'miiepqibaakcaqeasnlrjvzn9zvxcecqm65czs':284 'miigvdccbtkcaqeasnlrjvzn9zvxcecqm65czs':275 'mobil':200,253,325,329,389,394 'name':455,490,515,575,612,640,694 'need':211,435 'network':55,92 'new':21,120,252 'note':176 'npm':10 'object':239,312,376 'omit':35 'on-demand':423,544 'option':486,605 'page':197,209,433 'pagin':177,184 'password':464,524,584,649,703 'patch':602 'permiss':157 'post':256,481 'privat':232,261,278,282,287,305,369 'process.env':24 'product':71 'project':235,308,372 'promis':121 'push':201,254,326,330,336,341,390,395,401,406 'pushcredenti':215 'pushcredential.id':219 'pushcredentialrespons':266,346 'pushcredentialresponse.data':292,356 'r':122,124 'rate':57,104,169 'record':240,313,377,457,517,577,642,696 'requir':144,258,483 'resourc':159,460,520,580,645,699 'result':76,192 'retri':97,108,116,171 'retriev':323,328 'retry-aft':115 'retryaft':113,125 'return':180,220,293,357,444,504,564,629,683 'rsa':281,286 'settimeout':123 'setup':13 'shown':45 'sip':463,466,523,526,583,586,648,651,702,705 'skill' 'skill-telnyx-webrtc-javascript' 'source-team-telnyx' 'string':222,224,231,234,242,244,295,297,304,307,315,317,359,361,368,371,379,381,447,452,454,456,459,462,465,468,471,474,489,491,493,507,512,514,516,519,522,525,528,531,534,567,572,574,576,579,582,585,588,591,594,608,611,613,615,632,637,639,641,644,647,650,653,656,659,686,691,693,695,698,701,704,707,710,713 'tag':492,614 'telephonycredenti':439,496,553,618,672 'telephonycredential.data':503,563,628,682 'telephonycredential.id':443 'telnyx':2,5,12,16,18,22,25 'telnyx-webrtc-javascript':1 'telnyx.apiconnectionerror':90 'telnyx.apierror':131 'telnyx.ratelimiterror':102 'text':83 'time':229,249,302,322,366,386 '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' 'tri':74 'type':241,243,259,289,314,316,378,380,458,518,578,643,697 'updat':245,318,382,469,529,589,595,598,654,708 'use':186 'user':472,532,592,657,711 'usernam':467,527,587,652,706 'valid':60,141,163 'wait':106 'webrtc':3,6","prices":[{"id":"c90755d6-70ee-4f49-bfe5-ed331e1f6618","listingId":"d04d64e3-94f5-48a4-b12b-e1f55decfe66","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:48.707Z"}],"sources":[{"listingId":"d04d64e3-94f5-48a4-b12b-e1f55decfe66","source":"github","sourceId":"team-telnyx/ai/telnyx-webrtc-javascript","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-webrtc-javascript","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:48.707Z","lastSeenAt":"2026-04-22T00:54:56.172Z"}],"details":{"listingId":"d04d64e3-94f5-48a4-b12b-e1f55decfe66","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-webrtc-javascript","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":"24fdc125523c8aece5bb657ea46ad81d48c85990","skill_md_path":"skills/telnyx-webrtc-javascript/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-webrtc-javascript"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-webrtc-javascript","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-webrtc-javascript"},"updatedAt":"2026-04-22T00:54:56.172Z"}}