{"id":"282d52f8-0908-4c0f-a492-1d85884dde7b","shortId":"xezd9j","kind":"skill","title":"telnyx-porting-out-javascript","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Porting Out - 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 portout requests\n\nReturns the portout requests according to filters\n\n`GET /portouts`\n\n```javascript\n// Automatically fetches more pages as needed.\nfor await (const portoutDetails of client.portouts.list()) {\n  console.log(portoutDetails.id);\n}\n```\n\nReturns: `already_ported` (boolean), `authorized_name` (string), `carrier_name` (string), `city` (string), `created_at` (string), `current_carrier` (string), `end_user_name` (string), `foc_date` (string), `host_messaging` (boolean), `id` (string), `inserted_at` (string), `lsr` (array[string]), `phone_numbers` (array[string]), `pon` (string), `reason` (string | null), `record_type` (string), `rejection_code` (integer), `requested_foc_date` (string), `service_address` (string), `spid` (string), `state` (string), `status` (enum: pending, authorized, ported, rejected, rejected-pending, canceled), `support_key` (string), `updated_at` (string), `user_id` (uuid), `vendor` (uuid), `zip` (string)\n\n## List all port-out events\n\nReturns a list of all port-out events.\n\n`GET /portouts/events`\n\n```javascript\n// Automatically fetches more pages as needed.\nfor await (const eventListResponse of client.portouts.events.list()) {\n  console.log(eventListResponse);\n}\n```\n\nReturns: `available_notification_methods` (array[string]), `created_at` (date-time), `event_type` (enum: portout.status_changed, portout.foc_date_changed, portout.new_comment), `id` (uuid), `payload` (object), `payload_status` (enum: created, completed), `portout_id` (uuid), `record_type` (string), `updated_at` (date-time)\n\n## Show a port-out event\n\nShow a specific port-out event.\n\n`GET /portouts/events/{id}`\n\n```javascript\nconst event = await client.portouts.events.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(event.data);\n```\n\nReturns: `available_notification_methods` (array[string]), `created_at` (date-time), `event_type` (enum: portout.status_changed, portout.foc_date_changed, portout.new_comment), `id` (uuid), `payload` (object), `payload_status` (enum: created, completed), `portout_id` (uuid), `record_type` (string), `updated_at` (date-time)\n\n## Republish a port-out event\n\nRepublish a specific port-out event.\n\n`POST /portouts/events/{id}/republish`\n\n```javascript\nawait client.portouts.events.republish('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n```\n\n## List eligible port-out rejection codes for a specific order\n\nGiven a port-out ID, list rejection codes that are eligible for that port-out\n\n`GET /portouts/rejections/{portout_id}`\n\n```javascript\nconst response = await client.portouts.listRejectionCodes('329d6658-8f93-405d-862f-648776e8afd7');\n\nconsole.log(response.data);\n```\n\nReturns: `code` (integer), `description` (string), `reason_required` (boolean)\n\n## List port-out related reports\n\nList the reports generated about port-out operations.\n\n`GET /portouts/reports`\n\n```javascript\n// Automatically fetches more pages as needed.\nfor await (const portoutReport of client.portouts.reports.list()) {\n  console.log(portoutReport.id);\n}\n```\n\nReturns: `created_at` (date-time), `document_id` (uuid), `id` (uuid), `params` (object), `record_type` (string), `report_type` (enum: export_portouts_csv), `status` (enum: pending, completed), `updated_at` (date-time)\n\n## Create a port-out related report\n\nGenerate reports about port-out operations.\n\n`POST /portouts/reports`\n\n```javascript\nconst report = await client.portouts.reports.create({\n  params: { filters: {} },\n  report_type: 'export_portouts_csv',\n});\n\nconsole.log(report.data);\n```\n\nReturns: `created_at` (date-time), `document_id` (uuid), `id` (uuid), `params` (object), `record_type` (string), `report_type` (enum: export_portouts_csv), `status` (enum: pending, completed), `updated_at` (date-time)\n\n## Retrieve a report\n\nRetrieve a specific report generated.\n\n`GET /portouts/reports/{id}`\n\n```javascript\nconst report = await client.portouts.reports.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(report.data);\n```\n\nReturns: `created_at` (date-time), `document_id` (uuid), `id` (uuid), `params` (object), `record_type` (string), `report_type` (enum: export_portouts_csv), `status` (enum: pending, completed), `updated_at` (date-time)\n\n## Get a portout request\n\nReturns the portout request based on the ID provided\n\n`GET /portouts/{id}`\n\n```javascript\nconst portout = await client.portouts.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(portout.data);\n```\n\nReturns: `already_ported` (boolean), `authorized_name` (string), `carrier_name` (string), `city` (string), `created_at` (string), `current_carrier` (string), `end_user_name` (string), `foc_date` (string), `host_messaging` (boolean), `id` (string), `inserted_at` (string), `lsr` (array[string]), `phone_numbers` (array[string]), `pon` (string), `reason` (string | null), `record_type` (string), `rejection_code` (integer), `requested_foc_date` (string), `service_address` (string), `spid` (string), `state` (string), `status` (enum: pending, authorized, ported, rejected, rejected-pending, canceled), `support_key` (string), `updated_at` (string), `user_id` (uuid), `vendor` (uuid), `zip` (string)\n\n## List all comments for a portout request\n\nReturns a list of comments for a portout request.\n\n`GET /portouts/{id}/comments`\n\n```javascript\nconst comments = await client.portouts.comments.list('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(comments.data);\n```\n\nReturns: `body` (string), `created_at` (string), `id` (string), `portout_id` (string), `record_type` (string), `user_id` (string)\n\n## Create a comment on a portout request\n\nCreates a comment on a portout request.\n\n`POST /portouts/{id}/comments`\n\nOptional: `body` (string)\n\n```javascript\nconst comment = await client.portouts.comments.create('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(comment.data);\n```\n\nReturns: `body` (string), `created_at` (string), `id` (string), `portout_id` (string), `record_type` (string), `user_id` (string)\n\n## List supporting documents on a portout request\n\nList every supporting documents for a portout request.\n\n`GET /portouts/{id}/supporting_documents`\n\n```javascript\nconst supportingDocuments = await client.portouts.supportingDocuments.list(\n  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n);\n\nconsole.log(supportingDocuments.data);\n```\n\nReturns: `created_at` (string), `document_id` (uuid), `id` (uuid), `portout_id` (uuid), `record_type` (string), `type` (enum: loa, invoice), `updated_at` (string)\n\n## Create a list of supporting documents on a portout request\n\nCreates a list of supporting documents on a portout request.\n\n`POST /portouts/{id}/supporting_documents`\n\nOptional: `documents` (array[object])\n\n```javascript\nconst supportingDocument = await client.portouts.supportingDocuments.create(\n  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n);\n\nconsole.log(supportingDocument.data);\n```\n\nReturns: `created_at` (string), `document_id` (uuid), `id` (uuid), `portout_id` (uuid), `record_type` (string), `type` (enum: loa, invoice), `updated_at` (string)\n\n## Update Status\n\nAuthorize or reject portout request\n\n`PATCH /portouts/{id}/{status}` — Required: `reason`\n\nOptional: `host_messaging` (boolean)\n\n```javascript\nconst response = await client.portouts.updateStatus('authorized', {\n  id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n  reason: 'I do not recognize this transaction',\n});\n\nconsole.log(response.data);\n```\n\nReturns: `already_ported` (boolean), `authorized_name` (string), `carrier_name` (string), `city` (string), `created_at` (string), `current_carrier` (string), `end_user_name` (string), `foc_date` (string), `host_messaging` (boolean), `id` (string), `inserted_at` (string), `lsr` (array[string]), `phone_numbers` (array[string]), `pon` (string), `reason` (string | null), `record_type` (string), `rejection_code` (integer), `requested_foc_date` (string), `service_address` (string), `spid` (string), `state` (string), `status` (enum: pending, authorized, ported, rejected, rejected-pending, canceled), `support_key` (string), `updated_at` (string), `user_id` (uuid), `vendor` (uuid), `zip` (string)","tags":["telnyx","porting","out","javascript","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm"],"capabilities":["skill","source-team-telnyx","skill-telnyx-porting-out-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-porting-out-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 (9,711 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:46.417Z","embedding":null,"createdAt":"2026-04-18T22:07:34.857Z","updatedAt":"2026-04-22T06:54:46.417Z","lastSeenAt":"2026-04-22T06:54:46.417Z","tsv":"'+13125550001':82 '+13125550002':84 '/comments':847,895 '/portouts':212,728,845,893,945,1004,1054 '/portouts/events':329,400,470 '/portouts/rejections':511 '/portouts/reports':551,613,668 '/republish':472 '/supporting_documents':947,1006 '1':120 '1000':128 '182bd5e5':408,477,676,736,854,905,954,1017,1071 '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e':407,476,675,735,853,904,953,1016,1070 '329d6658':520 '329d6658-8f93-405d-862f-648776e8afd7':519 '401':68,153 '403':157 '404':160 '405d':522 '422':64,141,164 '429':61,105,170 '4fe4':410,479,678,738,856,907,956,1019,1073 '648776e8afd7':524 '6e1a':409,478,677,737,855,906,955,1018,1072 '862f':523 '8f93':521 'a799':411,480,679,739,857,908,957,1020,1074 'aa6d9a6ab26e':412,481,680,740,858,909,958,1021,1075 'accord':208 'address':284,799,1141 'alreadi':44,229,744,1086 'alway':69 'api':28,52,135,155 'apikey':25 'array':262,266,349,419,777,781,1009,1119,1123 'assum':41 'authent':66 'author':232,293,747,808,1048,1068,1089,1150 'auto':185 'auto-pagin':184 'automat':200,214,331,553 'avail':346,416 'await':79,121,190,221,338,405,474,517,560,617,673,733,851,902,951,1014,1066 'backoff':113,176 'base':722 'bash':11 'bodi':862,897,913 'boolean':231,255,534,746,770,1062,1088,1112 'call':53 'cancel':299,814,1156 'carrier':235,244,750,759,1092,1101 'catch':87 'chang':360,363,430,433 'check':96,145,167 'citi':238,753,1095 'client':22,42 'client.messages.send':80 'client.portouts.comments.create':903 'client.portouts.comments.list':852 'client.portouts.events.list':342 'client.portouts.events.republish':475 'client.portouts.events.retrieve':406 'client.portouts.list':225 'client.portouts.listrejectioncodes':518 'client.portouts.reports.create':618 'client.portouts.reports.list':564 'client.portouts.reports.retrieve':674 'client.portouts.retrieve':734 'client.portouts.supportingdocuments.create':1015 'client.portouts.supportingdocuments.list':952 'client.portouts.updatestatus':1067 'code':74,152,277,488,501,528,792,1134 'comment':365,435,830,839,850,880,887,901 'comment.data':911 'comments.data':860 'common':150 'complet':374,444,592,653,708 'connect':97 'console.error':93,134,142 'console.log':226,343,413,525,565,626,681,741,859,910,959,1022,1083 'const':21,77,114,191,222,339,403,515,561,615,671,731,849,900,949,1012,1064 'creat':240,351,373,421,443,568,598,629,684,755,864,878,885,915,962,983,993,1025,1097 'csv':588,625,649,704 'current':243,758,1100 'date':251,281,354,362,384,424,432,454,571,596,632,657,687,712,766,796,1108,1138 'date-tim':353,383,423,453,570,595,631,656,686,711 'default':33 'descript':530 'document':573,634,689,931,939,965,988,998,1008,1028 'elig':483,504 'els':100,129 'end':246,761,1103 'enum':291,358,372,428,442,585,590,646,651,701,706,806,977,1040,1148 'err':88,90,102,131 'err.headers':116 'err.message':138 'err.status':137,140 'error':49,58,63,67,71,95,136,144,151,166 'event':318,327,356,391,398,404,426,461,468 'event.data':414 'eventlistrespons':340,344 'everi':937 'exampl':39 'exponenti':112,175 'export':586,623,647,702 'fail':55 'fetch':215,332,554 'field':147,168 'filter':210,620 'foc':250,280,765,795,1107,1137 'format':149,169 'found':163 'generat':544,605,666 'get':211,328,399,510,550,667,714,727,844,944 'given':493 'handl':50,70 'hello':86 'host':253,768,1060,1110 'id':256,307,366,376,401,436,446,471,498,513,574,576,635,637,669,690,692,725,729,771,822,846,867,870,876,894,918,921,927,946,966,968,971,1005,1029,1031,1034,1055,1069,1113,1164 'import':17,177 'initi':45 'insert':258,773,1115 'instal':10,13 'instanceof':91,103,132 'insuffici':158 'integ':278,529,793,1135 'invalid':154 'invoic':979,1042 'item':192 'iter':187,196 'javascript':5,9,16,75,213,330,402,473,514,552,614,670,730,848,899,948,1011,1063 'key':29,156,301,816,1158 'limit':60,107,172 'list':180,201,313,321,482,499,535,541,828,837,929,936,985,995 'loa':978,1041 'lsr':261,776,1118 'messag':254,769,1061,1111 'method':181,348,418 'name':233,236,248,748,751,763,1090,1093,1105 'need':219,336,558 'network':57,94 'new':23,122 'note':178 'notif':347,417 'npm':12 'null':272,787,1129 'number':265,780,1122 'object':369,439,579,640,695,1010 'omit':37 'oper':549,611 'option':896,1007,1059 'order':492 'page':199,217,334,556 'pagin':179,186 'param':578,619,639,694 'patch':1053 'payload':368,370,438,440 'pend':292,298,591,652,707,807,813,1149,1155 'permiss':159 'phone':264,779,1121 'pon':268,783,1125 'port':3,7,230,294,316,325,389,396,459,466,485,496,508,537,547,601,609,745,809,1087,1151 'port-out':315,324,388,395,458,465,484,495,507,536,546,600,608 'portout':202,206,375,445,512,587,624,648,703,716,720,732,833,842,869,883,890,920,934,942,970,991,1001,1033,1051 'portout.data':742 'portout.foc':361,431 'portout.new':364,434 'portout.status':359,429 'portoutdetail':223 'portoutdetails.id':227 'portoutreport':562 'portoutreport.id':566 'post':469,612,892,1003 'process.env':26 'product':73 'promis':123 'provid':726 'r':124,126 'rate':59,106,171 'reason':270,532,785,1058,1076,1127 'recogn':1080 'record':273,378,448,580,641,696,788,872,923,973,1036,1130 'reject':276,295,297,487,500,791,810,812,1050,1133,1152,1154 'rejected-pend':296,811,1153 'relat':539,603 'report':540,543,583,604,606,616,621,644,661,665,672,699 'report.data':627,682 'republish':456,462 'request':203,207,279,717,721,794,834,843,884,891,935,943,992,1002,1052,1136 'requir':146,533,1057 'resourc':161 'respons':516,1065 'response.data':526,1084 'result':78,194 'retri':99,110,118,173 'retriev':659,662 'retry-aft':117 'retryaft':115,127 'return':182,204,228,319,345,415,527,567,628,683,718,743,835,861,912,961,1024,1085 'servic':283,798,1140 'settimeout':125 'setup':15 'show':386,392 'shown':47 'skill' 'skill-telnyx-porting-out-javascript' 'source-team-telnyx' 'specif':394,464,491,664 'spid':286,801,1143 'state':288,803,1145 'status':290,371,441,589,650,705,805,1047,1056,1147 'string':234,237,239,242,245,249,252,257,260,263,267,269,271,275,282,285,287,289,302,305,312,350,380,420,450,531,582,643,698,749,752,754,757,760,764,767,772,775,778,782,784,786,790,797,800,802,804,817,820,827,863,866,868,871,874,877,898,914,917,919,922,925,928,964,975,982,1027,1038,1045,1091,1094,1096,1099,1102,1106,1109,1114,1117,1120,1124,1126,1128,1132,1139,1142,1144,1146,1159,1162,1169 'support':300,815,930,938,987,997,1157 'supportingdocu':950,1013 'supportingdocument.data':1023 'supportingdocuments.data':960 'telnyx':2,6,14,18,20,24,27 'telnyx-porting-out-javascript':1 'telnyx.apiconnectionerror':92 'telnyx.apierror':133 'telnyx.ratelimiterror':104 'text':85 'time':355,385,425,455,572,597,633,658,688,713 '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' 'transact':1082 'tri':76 'type':274,357,379,427,449,581,584,622,642,645,697,700,789,873,924,974,976,1037,1039,1131 'updat':303,381,451,593,654,709,818,980,1043,1046,1160 'use':188 'user':247,306,762,821,875,926,1104,1163 'uuid':308,310,367,377,437,447,575,577,636,638,691,693,823,825,967,969,972,1030,1032,1035,1165,1167 'valid':62,143,165 'vendor':309,824,1166 'wait':108 'zip':311,826,1168","prices":[{"id":"158a08d6-e254-44e4-b60b-ec530f08969f","listingId":"282d52f8-0908-4c0f-a492-1d85884dde7b","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:34.857Z"}],"sources":[{"listingId":"282d52f8-0908-4c0f-a492-1d85884dde7b","source":"github","sourceId":"team-telnyx/ai/telnyx-porting-out-javascript","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-porting-out-javascript","isPrimary":false,"firstSeenAt":"2026-04-18T22:07:34.857Z","lastSeenAt":"2026-04-22T06:54:46.417Z"}],"details":{"listingId":"282d52f8-0908-4c0f-a492-1d85884dde7b","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-porting-out-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":"791ce8fb7875543f8b6d4a0f0ccecac647c0be20","skill_md_path":"skills/telnyx-porting-out-javascript/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-porting-out-javascript"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-porting-out-javascript","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-porting-out-javascript"},"updatedAt":"2026-04-22T06:54:46.417Z"}}