api/javascript/telnyx-messaging-hosted-javascript/SKILL.md
Set up hosted SMS numbers, toll-free verification, and RCS messaging. Use when migrating numbers or enabling rich messaging features. This skill provides JavaScript SDK examples.
npx skillsauth add team-telnyx/telnyx-toolkit telnyx-messaging-hosted-javascriptInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
npm install telnyx
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
All examples below assume client is already initialized as shown above.
GET /messaging_hosted_number_orders
// Automatically fetches more pages as needed.
for await (const messagingHostedNumberOrder of client.messagingHostedNumberOrders.list()) {
console.log(messagingHostedNumberOrder.id);
}
POST /messaging_hosted_number_orders
const messagingHostedNumberOrder = await client.messagingHostedNumberOrders.create();
console.log(messagingHostedNumberOrder.data);
GET /messaging_hosted_number_orders/{id}
const messagingHostedNumberOrder = await client.messagingHostedNumberOrders.retrieve('id');
console.log(messagingHostedNumberOrder.data);
Delete a messaging hosted number order and all associated phone numbers.
DELETE /messaging_hosted_number_orders/{id}
const messagingHostedNumberOrder = await client.messagingHostedNumberOrders.delete('id');
console.log(messagingHostedNumberOrder.data);
POST /messaging_hosted_number_orders/{id}/actions/file_upload
const response = await client.messagingHostedNumberOrders.actions.uploadFile('id');
console.log(response.data);
Validate the verification codes sent to the numbers of the hosted order.
POST /messaging_hosted_number_orders/{id}/validation_codes — Required: verification_codes
const response = await client.messagingHostedNumberOrders.validateCodes('id', {
verification_codes: [{ code: 'code', phone_number: 'phone_number' }],
});
console.log(response.data);
Create verification codes to validate numbers of the hosted order.
POST /messaging_hosted_number_orders/{id}/verification_codes — Required: phone_numbers, verification_method
const response = await client.messagingHostedNumberOrders.createVerificationCodes('id', {
phone_numbers: ['string'],
verification_method: 'sms',
});
console.log(response.data);
POST /messaging_hosted_number_orders/eligibility_numbers_check — Required: phone_numbers
const response = await client.messagingHostedNumberOrders.checkEligibility({
phone_numbers: ['string'],
});
console.log(response.phone_numbers);
DELETE /messaging_hosted_numbers/{id}
const messagingHostedNumber = await client.messagingHostedNumbers.delete('id');
console.log(messagingHostedNumber.data);
POST /messages/rcs — Required: agent_id, to, messaging_profile_id, agent_message
const response = await client.messages.rcs.send({
agent_id: 'Agent007',
agent_message: {},
messaging_profile_id: 'messaging_profile_id',
to: '+13125551234',
});
console.log(response.data);
GET /messaging/rcs/agents
// Automatically fetches more pages as needed.
for await (const rcsAgent of client.messaging.rcs.agents.list()) {
console.log(rcsAgent.agent_id);
}
GET /messaging/rcs/agents/{id}
const rcsAgentResponse = await client.messaging.rcs.agents.retrieve('id');
console.log(rcsAgentResponse.data);
PATCH /messaging/rcs/agents/{id}
const rcsAgentResponse = await client.messaging.rcs.agents.update('id');
console.log(rcsAgentResponse.data);
POST /messaging/rcs/bulk_capabilities — Required: agent_id, phone_numbers
const response = await client.messaging.rcs.listBulkCapabilities({
agent_id: 'TestAgent',
phone_numbers: ['+13125551234'],
});
console.log(response.data);
GET /messaging/rcs/capabilities/{agent_id}/{phone_number}
const response = await client.messaging.rcs.retrieveCapabilities('phone_number', {
agent_id: 'agent_id',
});
console.log(response.data);
Adds a test phone number to an RCS agent for testing purposes.
PUT /messaging/rcs/test_number_invite/{id}/{phone_number}
const response = await client.messaging.rcs.inviteTestNumber('phone_number', { id: 'id' });
console.log(response.data);
Generate a deeplink URL that can be used to start an RCS conversation with a specific agent.
GET /messages/rcs_deeplinks/{agent_id}
const response = await client.messages.rcs.generateDeeplink('agent_id');
console.log(response.data);
Get a list of previously-submitted tollfree verification requests
GET /messaging_tollfree/verification/requests
// Automatically fetches more pages as needed.
for await (const verificationRequestStatus of client.messagingTollfree.verification.requests.list({
page: 1,
page_size: 1,
})) {
console.log(verificationRequestStatus.id);
}
Submit a new tollfree verification request
POST /messaging_tollfree/verification/requests — Required: businessName, corporateWebsite, businessAddr1, businessCity, businessState, businessZip, businessContactFirstName, businessContactLastName, businessContactEmail, businessContactPhone, messageVolume, phoneNumbers, useCase, useCaseSummary, productionMessageContent, optInWorkflow, optInWorkflowImageURLs, additionalInformation, isvReseller
const verificationRequestEgress = await client.messagingTollfree.verification.requests.create({
additionalInformation: 'additionalInformation',
businessAddr1: '600 Congress Avenue',
businessCity: 'Austin',
businessContactEmail: '[email protected]',
businessContactFirstName: 'John',
businessContactLastName: 'Doe',
businessContactPhone: '+18005550100',
businessName: 'Telnyx LLC',
businessState: 'Texas',
businessZip: '78701',
corporateWebsite: 'http://example.com',
isvReseller: 'isvReseller',
messageVolume: '100,000',
optInWorkflow:
"User signs into the Telnyx portal, enters a number and is prompted to select whether they want to use 2FA verification for security purposes. If they've opted in a confirmation message is sent out to the handset",
optInWorkflowImageURLs: [
{ url: 'https://telnyx.com/sign-up' },
{ url: 'https://telnyx.com/company/data-privacy' },
],
phoneNumbers: [{ phoneNumber: '+18773554398' }, { phoneNumber: '+18773554399' }],
productionMessageContent: 'Your Telnyx OTP is XXXX',
useCase: '2FA',
useCaseSummary:
'This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to sign into the portal',
});
console.log(verificationRequestEgress.id);
Get a single verification request by its ID.
GET /messaging_tollfree/verification/requests/{id}
const verificationRequestStatus = await client.messagingTollfree.verification.requests.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(verificationRequestStatus.id);
Update an existing tollfree verification request.
PATCH /messaging_tollfree/verification/requests/{id} — Required: businessName, corporateWebsite, businessAddr1, businessCity, businessState, businessZip, businessContactFirstName, businessContactLastName, businessContactEmail, businessContactPhone, messageVolume, phoneNumbers, useCase, useCaseSummary, productionMessageContent, optInWorkflow, optInWorkflowImageURLs, additionalInformation, isvReseller
const verificationRequestEgress = await client.messagingTollfree.verification.requests.update(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{
additionalInformation: 'additionalInformation',
businessAddr1: '600 Congress Avenue',
businessCity: 'Austin',
businessContactEmail: '[email protected]',
businessContactFirstName: 'John',
businessContactLastName: 'Doe',
businessContactPhone: '+18005550100',
businessName: 'Telnyx LLC',
businessState: 'Texas',
businessZip: '78701',
corporateWebsite: 'http://example.com',
isvReseller: 'isvReseller',
messageVolume: '100,000',
optInWorkflow:
"User signs into the Telnyx portal, enters a number and is prompted to select whether they want to use 2FA verification for security purposes. If they've opted in a confirmation message is sent out to the handset",
optInWorkflowImageURLs: [
{ url: 'https://telnyx.com/sign-up' },
{ url: 'https://telnyx.com/company/data-privacy' },
],
phoneNumbers: [{ phoneNumber: '+18773554398' }, { phoneNumber: '+18773554399' }],
productionMessageContent: 'Your Telnyx OTP is XXXX',
useCase: '2FA',
useCaseSummary:
'This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to sign into the portal',
},
);
console.log(verificationRequestEgress.id);
Delete a verification request
A request may only be deleted when when the request is in the "rejected" state.
DELETE /messaging_tollfree/verification/requests/{id}
await client.messagingTollfree.verification.requests.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
tools
Build cross-platform VoIP calling apps with React Native using Telnyx Voice SDK. High-level reactive API with automatic lifecycle management, CallKit/ConnectionService integration, and push notifications. Use for mobile VoIP apps with minimal setup.
tools
Build browser-based VoIP calling apps using Telnyx WebRTC JavaScript SDK. Covers authentication, voice calls, events, debugging, call quality metrics, and AI Agent integration. Use for web-based real-time communication.
tools
Build VoIP calling apps on iOS using Telnyx WebRTC SDK. Covers authentication, making/receiving calls, CallKit integration, PushKit/APNS push notifications, call quality metrics, and AI Agent integration. Use when implementing real-time voice communication on iOS.
tools
Build cross-platform VoIP calling apps with Flutter using Telnyx WebRTC SDK. Covers authentication, making/receiving calls, push notifications (FCM + APNS), call quality metrics, and AI Agent integration. Works on Android, iOS, and Web.