Loading...
Loading...
Port phone numbers into Telnyx. Check portability, create port orders, upload LOA documents, and track porting status. This skill provides JavaScript SDK examples.
npx skill4agent add team-telnyx/skills telnyx-porting-in-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');
}
}
}401403404422429+13125550001+for await (const item of result) { ... }POST /portability_checksphone_numbersconst response = await client.portabilityChecks.run({
phoneNumbers: ["+18005550101"],
});
console.log(response.data);fast_portablenot_portable_reasonphone_numberportablerecord_typeGET /porting/events// Automatically fetches more pages as needed.
for await (const eventListResponse of client.porting.events.list()) {
console.log(eventListResponse);
}available_notification_methodsevent_typeidpayloadpayload_statusporting_order_idGET /porting/events/{id}const event = await client.porting.events.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(event.data);available_notification_methodsevent_typeidpayloadpayload_statusporting_order_idPOST /porting/events/{id}/republishawait client.porting.events.republish('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');GET /porting/loa_configurations// Automatically fetches more pages as needed.
for await (const portingLoaConfiguration of client.porting.loaConfigurations.list()) {
console.log(portingLoaConfiguration.id);
}addresscompany_namecontactcreated_atidlogonameorganization_idrecord_typeupdated_atPOST /porting/loa_configurationsconst loaConfiguration = await client.porting.loaConfigurations.create({
address: {
city: 'Austin',
country_code: 'US',
state: 'TX',
street_address: '600 Congress Avenue',
zip_code: '78701',
},
company_name: 'Telnyx',
contact: { email: 'testing@telnyx.com', phone_number: '+12003270001' },
logo: { document_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
name: 'My LOA Configuration',
});
console.log(loaConfiguration.data);addresscompany_namecontactcreated_atidlogonameorganization_idrecord_typeupdated_atPOST /porting/loa_configurations/previewconst response = await client.porting.loaConfigurations.preview({
address: {
city: 'Austin',
country_code: 'US',
state: 'TX',
street_address: '600 Congress Avenue',
zip_code: '78701',
},
company_name: 'Telnyx',
contact: { email: 'testing@telnyx.com', phone_number: '+12003270001' },
logo: { document_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
name: 'My LOA Configuration',
});
console.log(response);
const content = await response.blob();
console.log(content);GET /porting/loa_configurations/{id}const loaConfiguration = await client.porting.loaConfigurations.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(loaConfiguration.data);addresscompany_namecontactcreated_atidlogonameorganization_idrecord_typeupdated_atPATCH /porting/loa_configurations/{id}const loaConfiguration = await client.porting.loaConfigurations.update(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{
address: {
city: 'Austin',
country_code: 'US',
state: 'TX',
street_address: '600 Congress Avenue',
zip_code: '78701',
},
company_name: 'Telnyx',
contact: { email: 'testing@telnyx.com', phone_number: '+12003270001' },
logo: { document_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
name: 'My LOA Configuration',
},
);
console.log(loaConfiguration.data);addresscompany_namecontactcreated_atidlogonameorganization_idrecord_typeupdated_atDELETE /porting/loa_configurations/{id}await client.porting.loaConfigurations.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');GET /porting/loa_configurations/{id}/previewconst response = await client.porting.loaConfigurations.preview1(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(response);
const content = await response.blob();
console.log(content);GET /porting/reports// Automatically fetches more pages as needed.
for await (const portingReport of client.porting.reports.list()) {
console.log(portingReport.id);
}created_atdocument_ididparamsrecord_typereport_typestatusupdated_atPOST /porting/reportsconst report = await client.porting.reports.create({
params: { filters: {} },
report_type: 'export_porting_orders_csv',
});
console.log(report.data);created_atdocument_ididparamsrecord_typereport_typestatusupdated_atGET /porting/reports/{id}const report = await client.porting.reports.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(report.data);created_atdocument_ididparamsrecord_typereport_typestatusupdated_atGET /porting/uk_carriersconst response = await client.porting.listUkCarriers();
console.log(response.data);alternative_cupidscreated_atcupididnamerecord_typeupdated_atGET /porting_orders// Automatically fetches more pages as needed.
for await (const portingOrder of client.portingOrders.list()) {
console.log(portingOrder.id);
}activation_settingsadditional_stepscreated_atcustomer_group_referencecustomer_referencedescriptiondocumentsend_useridmessagingmiscold_service_provider_ocnparent_support_keyphone_number_configurationphone_number_typephone_numbersporting_phone_numbers_countrecord_typerequirementsrequirements_metstatussupport_keyupdated_atuser_feedbackuser_idwebhook_urlPOST /porting_ordersphone_numberscustomer_group_referencecustomer_referenceconst portingOrder = await client.portingOrders.create({
phone_numbers: ['+13035550000', '+13035550001', '+13035550002'],
});
console.log(portingOrder.data);activation_settingsadditional_stepscreated_atcustomer_group_referencecustomer_referencedescriptiondocumentsend_useridmessagingmiscold_service_provider_ocnparent_support_keyphone_number_configurationphone_number_typephone_numbersporting_phone_numbers_countrecord_typerequirementsrequirements_metstatussupport_keyupdated_atuser_feedbackuser_idwebhook_urlGET /porting_orders/exception_typesconst response = await client.portingOrders.retrieveExceptionTypes();
console.log(response.data);codedescriptionGET /porting_orders/phone_number_configurations// Automatically fetches more pages as needed.
for await (const phoneNumberConfigurationListResponse of client.portingOrders.phoneNumberConfigurations.list()) {
console.log(phoneNumberConfigurationListResponse.id);
}created_atidporting_phone_number_idrecord_typeupdated_atuser_bundle_idPOST /porting_orders/phone_number_configurationsconst phoneNumberConfiguration = await client.portingOrders.phoneNumberConfigurations.create();
console.log(phoneNumberConfiguration.data);created_atidporting_phone_number_idrecord_typeupdated_atuser_bundle_idGET /porting_orders/{id}const portingOrder = await client.portingOrders.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(portingOrder.data);activation_settingsadditional_stepscreated_atcustomer_group_referencecustomer_referencedescriptiondocumentsend_useridmessagingmiscold_service_provider_ocnparent_support_keyphone_number_configurationphone_number_typephone_numbersporting_phone_numbers_countrecord_typerequirementsrequirements_metstatussupport_keyupdated_atuser_feedbackuser_idwebhook_urlPATCH /porting_orders/{id}activation_settingscustomer_group_referencecustomer_referencedocumentsend_usermessagingmiscphone_number_configurationrequirement_group_idrequirementsuser_feedbackwebhook_urlconst portingOrder = await client.portingOrders.update('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(portingOrder.data);activation_settingsadditional_stepscreated_atcustomer_group_referencecustomer_referencedescriptiondocumentsend_useridmessagingmiscold_service_provider_ocnparent_support_keyphone_number_configurationphone_number_typephone_numbersporting_phone_numbers_countrecord_typerequirementsrequirements_metstatussupport_keyupdated_atuser_feedbackuser_idwebhook_urlDELETE /porting_orders/{id}await client.portingOrders.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');POST /porting_orders/{id}/actions/activateconst response = await client.portingOrders.actions.activate(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(response.data);activate_atactivation_typeactivation_windowscreated_atidrecord_typestatusupdated_atPOST /porting_orders/{id}/actions/cancelconst response = await client.portingOrders.actions.cancel('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(response.data);activation_settingsadditional_stepscreated_atcustomer_group_referencecustomer_referencedescriptiondocumentsend_useridmessagingmiscold_service_provider_ocnparent_support_keyphone_number_configurationphone_number_typephone_numbersporting_phone_numbers_countrecord_typerequirementsrequirements_metstatussupport_keyupdated_atuser_feedbackuser_idwebhook_urlPOST /porting_orders/{id}/actions/confirmconst response = await client.portingOrders.actions.confirm('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(response.data);activation_settingsadditional_stepscreated_atcustomer_group_referencecustomer_referencedescriptiondocumentsend_useridmessagingmiscold_service_provider_ocnparent_support_keyphone_number_configurationphone_number_typephone_numbersporting_phone_numbers_countrecord_typerequirementsrequirements_metstatussupport_keyupdated_atuser_feedbackuser_idwebhook_urlPOST /porting_orders/{id}/actions/shareconst response = await client.portingOrders.actions.share('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(response.data);created_atexpires_atexpires_in_secondsidpermissionsporting_order_idrecord_typetokenGET /porting_orders/{id}/activation_jobs// Automatically fetches more pages as needed.
for await (const portingOrdersActivationJob of client.portingOrders.activationJobs.list(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
console.log(portingOrdersActivationJob.id);
}activate_atactivation_typeactivation_windowscreated_atidrecord_typestatusupdated_atGET /porting_orders/{id}/activation_jobs/{activationJobId}const activationJob = await client.portingOrders.activationJobs.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);
console.log(activationJob.data);activate_atactivation_typeactivation_windowscreated_atidrecord_typestatusupdated_atPATCH /porting_orders/{id}/activation_jobs/{activationJobId}const activationJob = await client.portingOrders.activationJobs.update(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);
console.log(activationJob.data);activate_atactivation_typeactivation_windowscreated_atidrecord_typestatusupdated_atGET /porting_orders/{id}/additional_documents// Automatically fetches more pages as needed.
for await (const additionalDocumentListResponse of client.portingOrders.additionalDocuments.list(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
console.log(additionalDocumentListResponse.id);
}content_typecreated_atdocument_iddocument_typefilenameidporting_order_idrecord_typeupdated_atPOST /porting_orders/{id}/additional_documentsconst additionalDocument = await client.portingOrders.additionalDocuments.create(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(additionalDocument.data);content_typecreated_atdocument_iddocument_typefilenameidporting_order_idrecord_typeupdated_atDELETE /porting_orders/{id}/additional_documents/{additional_document_id}await client.portingOrders.additionalDocuments.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
});GET /porting_orders/{id}/allowed_foc_windowsconst response = await client.portingOrders.retrieveAllowedFocWindows(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(response.data);ended_atrecord_typestarted_atGET /porting_orders/{id}/comments// Automatically fetches more pages as needed.
for await (const commentListResponse of client.portingOrders.comments.list(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
console.log(commentListResponse.id);
}bodycreated_atidporting_order_idrecord_typeuser_typePOST /porting_orders/{id}/commentsbodyconst comment = await client.portingOrders.comments.create('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(comment.data);bodycreated_atidporting_order_idrecord_typeuser_typeGET /porting_orders/{id}/loa_templateconst response = await client.portingOrders.retrieveLoaTemplate(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(response);
const content = await response.blob();
console.log(content);GET /porting_orders/{id}/requirements// Automatically fetches more pages as needed.
for await (const portingOrderRetrieveRequirementsResponse of client.portingOrders.retrieveRequirements(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
console.log(portingOrderRetrieveRequirementsResponse.field_type);
}field_typefield_valuerecord_typerequirement_statusrequirement_typeGET /porting_orders/{id}/sub_requestconst response = await client.portingOrders.retrieveSubRequest(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(response.data);port_request_idsub_request_idGET /porting_orders/{id}/verification_codes// Automatically fetches more pages as needed.
for await (const verificationCodeListResponse of client.portingOrders.verificationCodes.list(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
console.log(verificationCodeListResponse.id);
}created_atidphone_numberporting_order_idrecord_typeupdated_atverifiedPOST /porting_orders/{id}/verification_codes/sendawait client.portingOrders.verificationCodes.send('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');POST /porting_orders/{id}/verification_codes/verifyconst response = await client.portingOrders.verificationCodes.verify(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(response.data);created_atidphone_numberporting_order_idrecord_typeupdated_atverifiedGET /porting_orders/{porting_order_id}/action_requirements// Automatically fetches more pages as needed.
for await (const actionRequirementListResponse of client.portingOrders.actionRequirements.list(
'porting_order_id',
)) {
console.log(actionRequirementListResponse.id);
}action_typeaction_urlcancel_reasoncreated_atidporting_order_idrecord_typerequirement_type_idstatusupdated_atPOST /porting_orders/{porting_order_id}/action_requirements/{id}/initiateconst response = await client.portingOrders.actionRequirements.initiate('id', {
porting_order_id: '550e8400-e29b-41d4-a716-446655440000',
params: { first_name: 'John', last_name: 'Doe' },
});
console.log(response.data);action_typeaction_urlcancel_reasoncreated_atidporting_order_idrecord_typerequirement_type_idstatusupdated_atGET /porting_orders/{porting_order_id}/associated_phone_numbers// Automatically fetches more pages as needed.
for await (const portingAssociatedPhoneNumber of client.portingOrders.associatedPhoneNumbers.list(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
console.log(portingAssociatedPhoneNumber.id);
}actioncountry_codecreated_atidphone_number_rangephone_number_typeporting_order_idrecord_typeupdated_atPOST /porting_orders/{porting_order_id}/associated_phone_numbersconst associatedPhoneNumber = await client.portingOrders.associatedPhoneNumbers.create(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{
action: 'keep',
phone_number_range: {},
},
);
console.log(associatedPhoneNumber.data);actioncountry_codecreated_atidphone_number_rangephone_number_typeporting_order_idrecord_typeupdated_atDELETE /porting_orders/{porting_order_id}/associated_phone_numbers/{id}const associatedPhoneNumber = await client.portingOrders.associatedPhoneNumbers.delete(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ porting_order_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);
console.log(associatedPhoneNumber.data);actioncountry_codecreated_atidphone_number_rangephone_number_typeporting_order_idrecord_typeupdated_atGET /porting_orders/{porting_order_id}/phone_number_blocks// Automatically fetches more pages as needed.
for await (const portingPhoneNumberBlock of client.portingOrders.phoneNumberBlocks.list(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
console.log(portingPhoneNumberBlock.id);
}activation_rangescountry_codecreated_atidphone_number_rangephone_number_typerecord_typeupdated_atPOST /porting_orders/{porting_order_id}/phone_number_blocksconst phoneNumberBlock = await client.portingOrders.phoneNumberBlocks.create(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{
activation_ranges: [{ end_at: '+4930244999910', start_at: '+4930244999901' }],
phone_number_range: { end_at: '+4930244999910', start_at: '+4930244999901' },
},
);
console.log(phoneNumberBlock.data);activation_rangescountry_codecreated_atidphone_number_rangephone_number_typerecord_typeupdated_atDELETE /porting_orders/{porting_order_id}/phone_number_blocks/{id}const phoneNumberBlock = await client.portingOrders.phoneNumberBlocks.delete(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ porting_order_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);
console.log(phoneNumberBlock.data);activation_rangescountry_codecreated_atidphone_number_rangephone_number_typerecord_typeupdated_atGET /porting_orders/{porting_order_id}/phone_number_extensions// Automatically fetches more pages as needed.
for await (const portingPhoneNumberExtension of client.portingOrders.phoneNumberExtensions.list(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
console.log(portingPhoneNumberExtension.id);
}activation_rangescreated_atextension_rangeidporting_phone_number_idrecord_typeupdated_atPOST /porting_orders/{porting_order_id}/phone_number_extensionsconst phoneNumberExtension = await client.portingOrders.phoneNumberExtensions.create(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{
activation_ranges: [{ end_at: 10, start_at: 1 }],
extension_range: { end_at: 10, start_at: 1 },
porting_phone_number_id: 'f24151b6-3389-41d3-8747-7dd8c681e5e2',
},
);
console.log(phoneNumberExtension.data);activation_rangescreated_atextension_rangeidporting_phone_number_idrecord_typeupdated_atDELETE /porting_orders/{porting_order_id}/phone_number_extensions/{id}const phoneNumberExtension = await client.portingOrders.phoneNumberExtensions.delete(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ porting_order_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);
console.log(phoneNumberExtension.data);activation_rangescreated_atextension_rangeidporting_phone_number_idrecord_typeupdated_atGET /porting_phone_numbers// Automatically fetches more pages as needed.
for await (const portingPhoneNumberListResponse of client.portingPhoneNumbers.list()) {
console.log(portingPhoneNumberListResponse.porting_order_id);
}activation_statusphone_numberphone_number_typeportability_statusporting_order_idporting_order_statusrecord_typerequirements_statussupport_key