Loading...
Loading...
Manage port-out requests when numbers are being ported away from Telnyx. List, view, and update port-out status. This skill provides JavaScript SDK examples.
npx skill4agent add team-telnyx/skills telnyx-porting-out-javascriptnpm install telnyximport Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});clienttry {
const result = await client.messages.send({ to: '+13125550001', from: '+13125550002', text: 'Hello' });
} catch (err) {
if (err instanceof Telnyx.APIConnectionError) {
console.error('Network error — check connectivity and retry');
} else if (err instanceof Telnyx.RateLimitError) {
// 429: rate limited — wait and retry with exponential backoff
const retryAfter = err.headers?.['retry-after'] || 1;
await new Promise(r => setTimeout(r, retryAfter * 1000));
} else if (err instanceof Telnyx.APIError) {
console.error(`API error ${err.status}: ${err.message}`);
if (err.status === 422) {
console.error('Validation error — check required fields and formats');
}
}
}401403404422429for await (const item of result) { ... }GET /portouts// Automatically fetches more pages as needed.
for await (const portoutDetails of client.portouts.list()) {
console.log(portoutDetails.id);
}already_portedauthorized_namecarrier_namecitycreated_atcurrent_carrierend_user_namefoc_datehost_messagingidinserted_atlsrphone_numbersponreasonrecord_typerejection_coderequested_foc_dateservice_addressspidstatestatussupport_keyupdated_atuser_idvendorzipGET /portouts/events// Automatically fetches more pages as needed.
for await (const eventListResponse of client.portouts.events.list()) {
console.log(eventListResponse);
}available_notification_methodscreated_atevent_typeidpayloadpayload_statusportout_idrecord_typeupdated_atGET /portouts/events/{id}const event = await client.portouts.events.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(event.data);available_notification_methodscreated_atevent_typeidpayloadpayload_statusportout_idrecord_typeupdated_atPOST /portouts/events/{id}/republishawait client.portouts.events.republish('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');GET /portouts/rejections/{portout_id}const response = await client.portouts.listRejectionCodes('329d6658-8f93-405d-862f-648776e8afd7');
console.log(response.data);codedescriptionreason_requiredGET /portouts/reports// Automatically fetches more pages as needed.
for await (const portoutReport of client.portouts.reports.list()) {
console.log(portoutReport.id);
}created_atdocument_ididparamsrecord_typereport_typestatusupdated_atPOST /portouts/reportsconst report = await client.portouts.reports.create({
params: { filters: {} },
report_type: 'export_portouts_csv',
});
console.log(report.data);created_atdocument_ididparamsrecord_typereport_typestatusupdated_atGET /portouts/reports/{id}const report = await client.portouts.reports.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(report.data);created_atdocument_ididparamsrecord_typereport_typestatusupdated_atGET /portouts/{id}const portout = await client.portouts.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(portout.data);already_portedauthorized_namecarrier_namecitycreated_atcurrent_carrierend_user_namefoc_datehost_messagingidinserted_atlsrphone_numbersponreasonrecord_typerejection_coderequested_foc_dateservice_addressspidstatestatussupport_keyupdated_atuser_idvendorzipGET /portouts/{id}/commentsconst comments = await client.portouts.comments.list('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(comments.data);bodycreated_atidportout_idrecord_typeuser_idPOST /portouts/{id}/commentsbodyconst comment = await client.portouts.comments.create('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(comment.data);bodycreated_atidportout_idrecord_typeuser_idGET /portouts/{id}/supporting_documentsconst supportingDocuments = await client.portouts.supportingDocuments.list(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(supportingDocuments.data);created_atdocument_ididportout_idrecord_typetypeupdated_atPOST /portouts/{id}/supporting_documentsdocumentsconst supportingDocument = await client.portouts.supportingDocuments.create(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(supportingDocument.data);created_atdocument_ididportout_idrecord_typetypeupdated_atPATCH /portouts/{id}/{status}reasonhost_messagingconst response = await client.portouts.updateStatus('authorized', {
id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
reason: 'I do not recognize this transaction',
});
console.log(response.data);already_portedauthorized_namecarrier_namecitycreated_atcurrent_carrierend_user_namefoc_datehost_messagingidinserted_atlsrphone_numbersponreasonrecord_typerejection_coderequested_foc_dateservice_addressspidstatestatussupport_keyupdated_atuser_idvendorzip