Loading...
Loading...
Manage regulatory requirements, number bundles, supporting documents, and verified numbers for compliance. This skill provides JavaScript SDK examples.
npx skill4agent add team-telnyx/skills telnyx-numbers-compliance-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) { ... }GET /bundle_pricing/billing_bundles// Automatically fetches more pages as needed.
for await (const billingBundleSummary of client.bundlePricing.billingBundles.list()) {
console.log(billingBundleSummary.id);
}cost_codecreated_atcurrencyidis_publicmrc_pricenameslugspecsGET /bundle_pricing/billing_bundles/{bundle_id}const billingBundle = await client.bundlePricing.billingBundles.retrieve(
'8661948c-a386-4385-837f-af00f40f111a',
);
console.log(billingBundle.data);activebundle_limitscost_codecreated_atidis_publicnameslugGET /bundle_pricing/user_bundles// Automatically fetches more pages as needed.
for await (const userBundle of client.bundlePricing.userBundles.list()) {
console.log(userBundle.id);
}activebilling_bundlecreated_atidresourcesupdated_atuser_idPOST /bundle_pricing/user_bundles/bulkidempotency_keyitemsconst userBundle = await client.bundlePricing.userBundles.create();
console.log(userBundle.data);activebilling_bundlecreated_atidresourcesupdated_atuser_idGET /bundle_pricing/user_bundles/unusedconst response = await client.bundlePricing.userBundles.listUnused();
console.log(response.data);billing_bundleuser_bundle_idsGET /bundle_pricing/user_bundles/{user_bundle_id}const userBundle = await client.bundlePricing.userBundles.retrieve(
'ca1d2263-d1f1-43ac-ba53-248e7a4bb26a',
);
console.log(userBundle.data);activebilling_bundlecreated_atidresourcesupdated_atuser_idDELETE /bundle_pricing/user_bundles/{user_bundle_id}const response = await client.bundlePricing.userBundles.deactivate(
'ca1d2263-d1f1-43ac-ba53-248e7a4bb26a',
);
console.log(response.data);activebilling_bundlecreated_atidresourcesupdated_atuser_idGET /bundle_pricing/user_bundles/{user_bundle_id}/resourcesconst response = await client.bundlePricing.userBundles.listResources(
'ca1d2263-d1f1-43ac-ba53-248e7a4bb26a',
);
console.log(response.data);created_atidresourceresource_typeupdated_atGET /document_links// Automatically fetches more pages as needed.
for await (const documentLinkListResponse of client.documentLinks.list()) {
console.log(documentLinkListResponse.id);
}created_atdocument_ididlinked_record_typelinked_resource_idrecord_typeupdated_atGET /documents// Automatically fetches more pages as needed.
for await (const docServiceDocument of client.documents.list()) {
console.log(docServiceDocument.id);
}av_scan_statuscontent_typecreated_atcustomer_referencefilenameidrecord_typesha256sizestatusupdated_atPOST /documentscustomer_referencefilefilenameurlconst response = await client.documents.uploadJson({ document: {} });
console.log(response.data);av_scan_statuscontent_typecreated_atcustomer_referencefilenameidrecord_typesha256sizestatusupdated_atGET /documents/{id}const document = await client.documents.retrieve('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(document.data);av_scan_statuscontent_typecreated_atcustomer_referencefilenameidrecord_typesha256sizestatusupdated_atPATCH /documents/{id}av_scan_statuscontent_typecreated_atcustomer_referencefilenameidrecord_typesha256sizestatusupdated_atconst document = await client.documents.update('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(document.data);av_scan_statuscontent_typecreated_atcustomer_referencefilenameidrecord_typesha256sizestatusupdated_atDELETE /documents/{id}const document = await client.documents.delete('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(document.data);av_scan_statuscontent_typecreated_atcustomer_referencefilenameidrecord_typesha256sizestatusupdated_atGET /documents/{id}/downloadconst response = await client.documents.download('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(response);
const content = await response.blob();
console.log(content);GET /documents/{id}/download_linkconst response = await client.documents.generateDownloadLink(
'550e8400-e29b-41d4-a716-446655440000',
);
console.log(response.data);urlPOST /number_order_phone_numbers/{id}/requirement_grouprequirement_group_idconst response = await client.numberOrderPhoneNumbers.updateRequirementGroup(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ requirement_group_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);
console.log(response.data);bundle_idcountry_codedeadlineidis_block_numberlocalityorder_request_idphone_numberphone_number_typerecord_typeregulatory_requirementsrequirements_metrequirements_statusstatussub_number_order_idGET /phone_numbers_regulatory_requirementsconst phoneNumbersRegulatoryRequirement =
await client.phoneNumbersRegulatoryRequirements.retrieve();
console.log(phoneNumbersRegulatoryRequirement.data);phone_numberphone_number_typerecord_typeregion_informationregulatory_requirementsGET /regulatory_requirementsconst regulatoryRequirement = await client.regulatoryRequirements.retrieve();
console.log(regulatoryRequirement.data);actioncountry_codephone_number_typeregulatory_requirementsGET /requirement_groupsconst requirementGroups = await client.requirementGroups.list();
console.log(requirementGroups);POST /requirement_groupscountry_codephone_number_typeactioncustomer_referenceregulatory_requirementsconst requirementGroup = await client.requirementGroups.create({
action: 'ordering',
country_code: 'US',
phone_number_type: 'local',
});
console.log(requirementGroup.id);actioncountry_codecreated_atcustomer_referenceidphone_number_typerecord_typeregulatory_requirementsstatusupdated_atGET /requirement_groups/{id}const requirementGroup = await client.requirementGroups.retrieve('550e8400-e29b-41d4-a716-446655440000');
console.log(requirementGroup.id);actioncountry_codecreated_atcustomer_referenceidphone_number_typerecord_typeregulatory_requirementsstatusupdated_atPATCH /requirement_groups/{id}customer_referenceregulatory_requirementsconst requirementGroup = await client.requirementGroups.update('550e8400-e29b-41d4-a716-446655440000');
console.log(requirementGroup.id);actioncountry_codecreated_atcustomer_referenceidphone_number_typerecord_typeregulatory_requirementsstatusupdated_atDELETE /requirement_groups/{id}const requirementGroup = await client.requirementGroups.delete('550e8400-e29b-41d4-a716-446655440000');
console.log(requirementGroup.id);actioncountry_codecreated_atcustomer_referenceidphone_number_typerecord_typeregulatory_requirementsstatusupdated_atPOST /requirement_groups/{id}/submit_for_approvalconst requirementGroup = await client.requirementGroups.submitForApproval('550e8400-e29b-41d4-a716-446655440000');
console.log(requirementGroup.id);actioncountry_codecreated_atcustomer_referenceidphone_number_typerecord_typeregulatory_requirementsstatusupdated_atGET /requirement_typesconst requirementTypes = await client.requirementTypes.list();
console.log(requirementTypes.data);acceptance_criteriacreated_atdescriptionexampleidnamerecord_typetypeupdated_atGET /requirement_types/{id}const requirementType = await client.requirementTypes.retrieve(
'a38c217a-8019-48f8-bff6-0fdd9939075b',
);
console.log(requirementType.data);acceptance_criteriacreated_atdescriptionexampleidnamerecord_typetypeupdated_atGET /requirements// Automatically fetches more pages as needed.
for await (const requirementListResponse of client.requirements.list()) {
console.log(requirementListResponse.id);
}actioncountry_codecreated_atidlocalityphone_number_typerecord_typerequirements_typesupdated_atGET /requirements/{id}const requirement = await client.requirements.retrieve('a9dad8d5-fdbd-49d7-aa23-39bb08a5ebaa');
console.log(requirement.data);actioncountry_codecreated_atidlocalityphone_number_typerecord_typerequirements_typesupdated_atPOST /sub_number_orders/{id}/requirement_grouprequirement_group_idconst response = await client.subNumberOrders.updateRequirementGroup(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ requirement_group_id: 'a4b201f9-8646-4e54-a7d2-b2e403eeaf8c' },
);
console.log(response.data);country_codecreated_atcustomer_referenceidis_block_sub_number_orderorder_request_idphone_number_typephone_numbersphone_numbers_countrecord_typeregulatory_requirementsrequirements_metstatusupdated_atGET /user_addresses// Automatically fetches more pages as needed.
for await (const userAddress of client.userAddresses.list()) {
console.log(userAddress.id);
}administrative_areaboroughbusiness_namecountry_codecreated_atcustomer_referenceextended_addressfirst_nameidlast_namelocalityneighborhoodphone_numberpostal_coderecord_typestreet_addressupdated_atPOST /user_addressesfirst_namelast_namebusiness_namestreet_addresslocalitycountry_codeadministrative_areaboroughcustomer_referenceextended_addressneighborhoodphone_numberpostal_codeskip_address_verificationconst userAddress = await client.userAddresses.create({
business_name: "Toy-O'Kon",
country_code: 'US',
first_name: 'Alfred',
last_name: 'Foster',
locality: 'Austin',
street_address: '600 Congress Avenue',
});
console.log(userAddress.data);administrative_areaboroughbusiness_namecountry_codecreated_atcustomer_referenceextended_addressfirst_nameidlast_namelocalityneighborhoodphone_numberpostal_coderecord_typestreet_addressupdated_atGET /user_addresses/{id}const userAddress = await client.userAddresses.retrieve('550e8400-e29b-41d4-a716-446655440000');
console.log(userAddress.data);administrative_areaboroughbusiness_namecountry_codecreated_atcustomer_referenceextended_addressfirst_nameidlast_namelocalityneighborhoodphone_numberpostal_coderecord_typestreet_addressupdated_atGET /verified_numbers// Automatically fetches more pages as needed.
for await (const verifiedNumber of client.verifiedNumbers.list()) {
console.log(verifiedNumber.phone_number);
}phone_numberrecord_typeverified_atPOST /verified_numbersphone_numberverification_methodextensionconst verifiedNumber = await client.verifiedNumbers.create({
phone_number: '+15551234567',
verification_method: 'sms',
});
console.log(verifiedNumber.phone_number);phone_numberverification_methodGET /verified_numbers/{phone_number}const verifiedNumberDataWrapper = await client.verifiedNumbers.retrieve('+15551234567');
console.log(verifiedNumberDataWrapper.data);phone_numberrecord_typeverified_atDELETE /verified_numbers/{phone_number}const verifiedNumberDataWrapper = await client.verifiedNumbers.delete('+15551234567');
console.log(verifiedNumberDataWrapper.data);phone_numberrecord_typeverified_atPOST /verified_numbers/{phone_number}/actions/verifyverification_codeconst verifiedNumberDataWrapper = await client.verifiedNumbers.actions.submitVerificationCode(
'+15551234567',
{ verification_code: '123456' },
);
console.log(verifiedNumberDataWrapper.data);phone_numberrecord_typeverified_at