{"id":"c52cc36b-c811-4157-bcf3-129731bf5ce2","shortId":"f9XCmg","kind":"skill","title":"telnyx-oauth-javascript","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Oauth - 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## Authorization server metadata\n\nOAuth 2.0 Authorization Server Metadata (RFC 8414)\n\n`GET /.well-known/oauth-authorization-server`\n\n```javascript\nconst response = await client.wellKnown.retrieveAuthorizationServerMetadata();\n\nconsole.log(response.authorization_endpoint);\n```\n\nReturns: `authorization_endpoint` (uri), `code_challenge_methods_supported` (array[string]), `grant_types_supported` (array[string]), `introspection_endpoint` (uri), `issuer` (uri), `jwks_uri` (uri), `registration_endpoint` (uri), `response_types_supported` (array[string]), `scopes_supported` (array[string]), `token_endpoint` (uri), `token_endpoint_auth_methods_supported` (array[string])\n\n## Protected resource metadata\n\nOAuth 2.0 Protected Resource Metadata for resource discovery\n\n`GET /.well-known/oauth-protected-resource`\n\n```javascript\nconst response = await client.wellKnown.retrieveProtectedResourceMetadata();\n\nconsole.log(response.authorization_servers);\n```\n\nReturns: `authorization_servers` (array[string]), `resource` (uri)\n\n## OAuth authorization endpoint\n\nOAuth 2.0 authorization endpoint for the authorization code flow\n\n`GET /oauth/authorize`\n\n```javascript\nawait client.oauth.retrieveAuthorize({\n  client_id: '550e8400-e29b-41d4-a716-446655440000',\n  redirect_uri: 'https://example.com',\n  response_type: 'code',\n});\n```\n\n## Get OAuth consent token\n\nRetrieve details about an OAuth consent token\n\n`GET /oauth/consent/{consent_token}`\n\n```javascript\nconst oauth = await client.oauth.retrieve('consent_token');\n\nconsole.log(oauth.data);\n```\n\nReturns: `client_id` (string), `logo_uri` (uri), `name` (string), `policy_uri` (uri), `redirect_uri` (uri), `requested_scopes` (array[object]), `tos_uri` (uri), `verified` (boolean)\n\n## Create OAuth grant\n\nCreate an OAuth authorization grant\n\n`POST /oauth/grants` — Required: `allowed`, `consent_token`\n\n```javascript\nconst response = await client.oauth.grants({ allowed: true, consent_token: 'consent_token' });\n\nconsole.log(response.redirect_uri);\n```\n\nReturns: `redirect_uri` (uri)\n\n## Token introspection\n\nIntrospect an OAuth access token to check its validity and metadata\n\n`POST /oauth/introspect` — Required: `token`\n\n```javascript\nconst response = await client.oauth.introspect({ token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.example' });\n\nconsole.log(response.client_id);\n```\n\nReturns: `active` (boolean), `aud` (string), `client_id` (string), `exp` (integer), `iat` (integer), `iss` (string), `scope` (string)\n\n## JSON Web Key Set\n\nRetrieve the JSON Web Key Set for token verification\n\n`GET /oauth/jwks`\n\n```javascript\nconst response = await client.oauth.retrieveJwks();\n\nconsole.log(response.keys);\n```\n\nReturns: `keys` (array[object])\n\n## Dynamic client registration\n\nRegister a new OAuth client dynamically (RFC 7591)\n\n`POST /oauth/register`\n\nOptional: `client_name` (string), `grant_types` (array[string]), `logo_uri` (uri), `policy_uri` (uri), `redirect_uris` (array[string]), `response_types` (array[string]), `scope` (string), `token_endpoint_auth_method` (enum: none, client_secret_basic, client_secret_post), `tos_uri` (uri)\n\n```javascript\nconst response = await client.oauth.register();\n\nconsole.log(response.client_id);\n```\n\nReturns: `client_id` (string), `client_id_issued_at` (integer), `client_name` (string), `client_secret` (string), `grant_types` (array[string]), `logo_uri` (uri), `policy_uri` (uri), `redirect_uris` (array[string]), `response_types` (array[string]), `scope` (string), `token_endpoint_auth_method` (string), `tos_uri` (uri)\n\n## OAuth token endpoint\n\nExchange authorization code, client credentials, or refresh token for access token\n\n`POST /oauth/token` — Required: `grant_type`\n\nOptional: `client_id` (string), `client_secret` (string), `code` (string), `code_verifier` (string), `redirect_uri` (uri), `refresh_token` (string), `scope` (string)\n\n```javascript\nconst response = await client.oauth.token({ grant_type: 'client_credentials' });\n\nconsole.log(response.access_token);\n```\n\nReturns: `access_token` (string), `expires_in` (integer), `refresh_token` (string), `scope` (string), `token_type` (enum: Bearer)\n\n## List OAuth clients\n\nRetrieve a paginated list of OAuth clients for the authenticated user\n\n`GET /oauth_clients`\n\n```javascript\n// Automatically fetches more pages as needed.\nfor await (const oauthClient of client.oauthClients.list()) {\n  console.log(oauthClient.client_id);\n}\n```\n\nReturns: `allowed_grant_types` (array[string]), `allowed_scopes` (array[string]), `client_id` (string), `client_secret` (string | null), `client_type` (enum: public, confidential), `created_at` (date-time), `logo_uri` (uri), `name` (string), `org_id` (string), `policy_uri` (uri), `record_type` (enum: oauth_client), `redirect_uris` (array[string]), `require_pkce` (boolean), `tos_uri` (uri), `updated_at` (date-time), `user_id` (string)\n\n## Create OAuth client\n\nCreate a new OAuth client\n\n`POST /oauth_clients` — Required: `name`, `allowed_scopes`, `client_type`, `allowed_grant_types`\n\nOptional: `logo_uri` (uri), `policy_uri` (uri), `redirect_uris` (array[string]), `require_pkce` (boolean), `tos_uri` (uri)\n\n```javascript\nconst oauthClient = await client.oauthClients.create({\n  allowed_grant_types: ['client_credentials'],\n  allowed_scopes: ['admin'],\n  client_type: 'public',\n  name: 'My OAuth client',\n});\n\nconsole.log(oauthClient.data);\n```\n\nReturns: `allowed_grant_types` (array[string]), `allowed_scopes` (array[string]), `client_id` (string), `client_secret` (string | null), `client_type` (enum: public, confidential), `created_at` (date-time), `logo_uri` (uri), `name` (string), `org_id` (string), `policy_uri` (uri), `record_type` (enum: oauth_client), `redirect_uris` (array[string]), `require_pkce` (boolean), `tos_uri` (uri), `updated_at` (date-time), `user_id` (string)\n\n## Get OAuth client\n\nRetrieve a single OAuth client by ID\n\n`GET /oauth_clients/{id}`\n\n```javascript\nconst oauthClient = await client.oauthClients.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(oauthClient.data);\n```\n\nReturns: `allowed_grant_types` (array[string]), `allowed_scopes` (array[string]), `client_id` (string), `client_secret` (string | null), `client_type` (enum: public, confidential), `created_at` (date-time), `logo_uri` (uri), `name` (string), `org_id` (string), `policy_uri` (uri), `record_type` (enum: oauth_client), `redirect_uris` (array[string]), `require_pkce` (boolean), `tos_uri` (uri), `updated_at` (date-time), `user_id` (string)\n\n## Update OAuth client\n\nUpdate an existing OAuth client\n\n`PUT /oauth_clients/{id}`\n\nOptional: `allowed_grant_types` (array[string]), `allowed_scopes` (array[string]), `logo_uri` (uri), `name` (string), `policy_uri` (uri), `redirect_uris` (array[string]), `require_pkce` (boolean), `tos_uri` (uri)\n\n```javascript\nconst oauthClient = await client.oauthClients.update('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(oauthClient.data);\n```\n\nReturns: `allowed_grant_types` (array[string]), `allowed_scopes` (array[string]), `client_id` (string), `client_secret` (string | null), `client_type` (enum: public, confidential), `created_at` (date-time), `logo_uri` (uri), `name` (string), `org_id` (string), `policy_uri` (uri), `record_type` (enum: oauth_client), `redirect_uris` (array[string]), `require_pkce` (boolean), `tos_uri` (uri), `updated_at` (date-time), `user_id` (string)\n\n## Delete OAuth client\n\nDelete an OAuth client\n\n`DELETE /oauth_clients/{id}`\n\n```javascript\nawait client.oauthClients.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n```\n\n## List OAuth grants\n\nRetrieve a paginated list of OAuth grants for the authenticated user\n\n`GET /oauth_grants`\n\n```javascript\n// Automatically fetches more pages as needed.\nfor await (const oauthGrant of client.oauthGrants.list()) {\n  console.log(oauthGrant.id);\n}\n```\n\nReturns: `client_id` (string), `created_at` (date-time), `id` (uuid), `last_used_at` (date-time), `record_type` (enum: oauth_grant), `scopes` (array[string])\n\n## Get OAuth grant\n\nRetrieve a single OAuth grant by ID\n\n`GET /oauth_grants/{id}`\n\n```javascript\nconst oauthGrant = await client.oauthGrants.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(oauthGrant.data);\n```\n\nReturns: `client_id` (string), `created_at` (date-time), `id` (uuid), `last_used_at` (date-time), `record_type` (enum: oauth_grant), `scopes` (array[string])\n\n## Revoke OAuth grant\n\nRevoke an OAuth grant\n\n`DELETE /oauth_grants/{id}`\n\n```javascript\nconst oauthGrant = await client.oauthGrants.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(oauthGrant.data);\n```\n\nReturns: `client_id` (string), `created_at` (date-time), `id` (uuid), `last_used_at` (date-time), `record_type` (enum: oauth_grant), `scopes` (array[string])","tags":["telnyx","oauth","javascript","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-oauth-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-oauth-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 (10,371 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-22T06:54:44.831Z","embedding":null,"createdAt":"2026-04-18T22:07:25.131Z","updatedAt":"2026-04-22T06:54:44.831Z","lastSeenAt":"2026-04-22T06:54:44.831Z","tsv":"'+13125550001':80 '+13125550002':82 '/.well-known/oauth-authorization-server':210 '/.well-known/oauth-protected-resource':276 '/oauth/authorize':305 '/oauth/consent':335 '/oauth/grants':380 '/oauth/introspect':417 '/oauth/jwks':460 '/oauth/register':484 '/oauth/token':590 '/oauth_clients':657,744,865,950,1062 '/oauth_grants':1088,1140,1188 '1':118 '1000':126 '182bd5e5':873,986,1068,1148,1196 '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e':872,985,1067,1147,1195 '2.0':203,268,296 '401':66,151 '403':155 '404':158 '41d4':314 '422':62,139,162 '429':59,103,168 '446655440000':316 '4fe4':875,988,1070,1150,1198 '550e8400':311 '6e1a':874,987,1069,1149,1197 '7591':482 '8414':208 'a716':315 'a799':876,989,1071,1151,1199 'aa6d9a6ab26e':877,990,1072,1152,1200 'access':408,587,627 'activ':431 'admin':783 'allow':382,390,675,680,747,751,776,781,794,799,881,886,953,958,994,999 'alreadi':42 'alway':67 'api':26,50,133,153 'apikey':23 'array':227,232,248,252,262,288,364,470,491,501,505,549,559,563,678,682,719,763,797,801,838,884,888,925,956,960,972,997,1001,1038,1127,1178,1226 'assum':39 'aud':433 'auth':259,511,569 'authent':64,654,1085 'author':199,204,220,286,293,297,301,377,579 'auto':183 'auto-pagin':182 'automat':198,659,1090 'await':77,119,188,214,280,307,341,388,423,464,527,617,666,774,870,983,1065,1097,1145,1193 'backoff':111,174 'bash':9 'basic':517 'bearer':641 'boolean':370,432,723,767,842,929,976,1042 'call':51 'catch':85 'challeng':224 'check':94,143,165,411 'client':20,40,309,348,435,473,479,486,515,518,533,536,541,544,581,595,598,621,644,651,684,687,691,716,737,742,749,779,784,790,803,806,810,835,856,861,890,893,897,922,943,948,1003,1006,1010,1035,1056,1060,1105,1156,1204 'client.messages.send':78 'client.oauth.grants':389 'client.oauth.introspect':424 'client.oauth.register':528 'client.oauth.retrieve':342 'client.oauth.retrieveauthorize':308 'client.oauth.retrievejwks':465 'client.oauth.token':618 'client.oauthclients.create':775 'client.oauthclients.delete':1066 'client.oauthclients.list':670 'client.oauthclients.retrieve':871 'client.oauthclients.update':984 'client.oauthgrants.delete':1194 'client.oauthgrants.list':1101 'client.oauthgrants.retrieve':1146 'client.wellknown.retrieveauthorizationservermetadata':215 'client.wellknown.retrieveprotectedresourcemetadata':281 'code':72,150,223,302,322,580,601,603 'common':148 'confidenti':695,814,901,1014 'connect':95 'consent':325,332,336,343,383,392,394 'console.error':91,132,140 'console.log':216,282,345,396,427,466,529,623,671,791,878,991,1102,1153,1201 'const':19,75,112,189,212,278,339,386,421,462,525,615,667,772,868,981,1098,1143,1191 'creat':371,374,696,735,738,815,902,1015,1108,1159,1207 'credenti':582,622,780 'date':699,730,818,849,905,936,1018,1049,1111,1119,1162,1170,1210,1218 'date-tim':698,729,817,848,904,935,1017,1048,1110,1118,1161,1169,1209,1217 'default':31 'delet':1054,1057,1061,1187 'detail':328 'discoveri':274 'dynam':472,480 'e29b':313 'e29b-41d4-a716':312 'els':98,127 'endpoint':218,221,235,243,255,258,294,298,510,568,577 'enum':513,640,693,714,812,833,899,920,1012,1033,1123,1174,1222 '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 'example.com':319 'exchang':578 'exist':946 'exp':438 'expir':630 'exponenti':110,173 'eyj0exaioijkv1qilcjhbgcioijiuzi1nij9.example':426 'fail':53 'fetch':660,1091 'field':145,166 'flow':303 'format':147,167 'found':161 'get':209,275,304,323,334,459,656,854,864,1087,1129,1139 'grant':229,373,378,489,547,592,619,676,752,777,795,882,954,995,1075,1082,1125,1131,1136,1176,1182,1186,1224 'handl':48,68 'hello':84 'iat':440 'id':310,349,429,436,531,534,537,596,673,685,707,733,804,826,852,863,866,891,913,939,951,1004,1026,1052,1063,1106,1113,1138,1141,1157,1164,1189,1205,1212 'import':15,175 'initi':43 'instal':8,11 'instanceof':89,101,130 'insuffici':156 'integ':439,441,540,632 'introspect':234,404,405 'invalid':152 'iss':442 'issu':538 'issuer':237 'item':190 'iter':185,194 'javascript':4,7,14,73,211,277,306,338,385,420,461,524,614,658,771,867,980,1064,1089,1142,1190 'json':446,452 'jwks':239 'key':27,154,448,454,469 'last':1115,1166,1214 'limit':58,105,170 'list':178,642,648,1073,1079 'logo':351,493,551,701,755,820,907,962,1020 'metadata':201,206,266,271,415 'method':179,225,260,512,570 'name':354,487,542,704,746,787,823,910,965,1023 'need':664,1095 'network':55,92 'new':21,120,477,740 'none':514 'note':176 'npm':10 'null':690,809,896,1009 'oauth':3,6,202,267,292,295,324,331,340,372,376,407,478,575,643,650,715,736,741,789,834,855,860,921,942,947,1034,1055,1059,1074,1081,1124,1130,1135,1175,1181,1185,1223 'oauth.data':346 'oauthclient':668,773,869,982 'oauthclient.client':672 'oauthclient.data':792,879,992 'oauthgrant':1099,1144,1192 'oauthgrant.data':1154,1202 'oauthgrant.id':1103 'object':365,471 'omit':35 'option':485,594,754,952 'org':706,825,912,1025 'page':197,662,1093 'pagin':177,184,647,1078 'permiss':157 'pkce':722,766,841,928,975,1041 'polici':356,496,554,709,758,828,915,967,1028 'post':379,416,483,520,589,743 'process.env':24 'product':71 'promis':121 'protect':264,269 'public':694,786,813,900,1013 'put':949 'r':122,124 'rate':57,104,169 'record':712,831,918,1031,1121,1172,1220 'redirect':317,359,400,499,557,606,717,761,836,923,970,1036 'refresh':584,609,633 'regist':475 'registr':242,474 'request':362 'requir':144,381,418,591,721,745,765,840,927,974,1040 'resourc':159,265,270,273,290 'respons':213,245,279,320,387,422,463,503,526,561,616 'response.access':624 'response.authorization':217,283 'response.client':428,530 'response.keys':467 'response.redirect':397 'result':76,192 'retri':97,108,116,171 'retriev':327,450,645,857,1076,1132 'retry-aft':115 'retryaft':113,125 'return':180,219,285,347,399,430,468,532,626,674,793,880,993,1104,1155,1203 'revok':1180,1183 'rfc':207,481 'scope':250,363,444,507,565,612,636,681,748,782,800,887,959,1000,1126,1177,1225 'secret':516,519,545,599,688,807,894,1007 'server':200,205,284,287 'set':449,455 'settimeout':123 'setup':13 'shown':45 'singl':859,1134 'skill' 'skill-telnyx-oauth-javascript' 'source-team-telnyx' 'string':228,233,249,253,263,289,350,355,434,437,443,445,488,492,502,506,508,535,543,546,550,560,564,566,571,597,600,602,605,611,613,629,635,637,679,683,686,689,705,708,720,734,764,798,802,805,808,824,827,839,853,885,889,892,895,911,914,926,940,957,961,966,973,998,1002,1005,1008,1024,1027,1039,1053,1107,1128,1158,1179,1206,1227 'support':226,231,247,251,261 'telnyx':2,5,12,16,18,22,25 'telnyx-oauth-javascript':1 'telnyx.apiconnectionerror':90 'telnyx.apierror':131 'telnyx.ratelimiterror':102 'text':83 'time':700,731,819,850,906,937,1019,1050,1112,1120,1163,1171,1211,1219 'token':254,257,326,333,337,344,384,393,395,403,409,419,425,457,509,567,576,585,588,610,625,628,634,638 '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' 'tos':366,521,572,724,768,843,930,977,1043 'tri':74 'true':391 'type':230,246,321,490,504,548,562,593,620,639,677,692,713,750,753,778,785,796,811,832,883,898,919,955,996,1011,1032,1122,1173,1221 'updat':727,846,933,941,944,1046 'uri':222,236,238,240,241,244,256,291,318,352,353,357,358,360,361,367,368,398,401,402,494,495,497,498,500,522,523,552,553,555,556,558,573,574,607,608,702,703,710,711,718,725,726,756,757,759,760,762,769,770,821,822,829,830,837,844,845,908,909,916,917,924,931,932,963,964,968,969,971,978,979,1021,1022,1029,1030,1037,1044,1045 'use':186,1116,1167,1215 'user':655,732,851,938,1051,1086 'uuid':1114,1165,1213 'valid':60,141,163,413 'verif':458 'verifi':369,604 'wait':106 'web':447,453","prices":[{"id":"3746cb7b-2445-428f-9f94-8258cc86b177","listingId":"c52cc36b-c811-4157-bcf3-129731bf5ce2","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:07:25.131Z"}],"sources":[{"listingId":"c52cc36b-c811-4157-bcf3-129731bf5ce2","source":"github","sourceId":"team-telnyx/ai/telnyx-oauth-javascript","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-oauth-javascript","isPrimary":false,"firstSeenAt":"2026-04-18T22:07:25.131Z","lastSeenAt":"2026-04-22T06:54:44.831Z"}],"details":{"listingId":"c52cc36b-c811-4157-bcf3-129731bf5ce2","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-oauth-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":"3ee5ec67c078b127ac9d3a315361c4f9ac99212f","skill_md_path":"skills/telnyx-oauth-javascript/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-oauth-javascript"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-oauth-javascript","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-oauth-javascript"},"updatedAt":"2026-04-22T06:54:44.831Z"}}