telnyx-messaging-hosted-javascript | Skill Performance & Reviews | TopRankSkills

TopRank Skills

Home / Skills / tools / telnyx-messaging-hosted-javasc...

telnyx-messaging-hosted-javascript

maintained by team-telnyx

star 116 account_tree 7 verified_user MIT License
bolt View GitHub

name: telnyx-messaging-hosted-javascript description: >- 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. metadata: author: telnyx product: messaging-hosted language: javascript generated_by: telnyx-ext-skills-generator

Telnyx Messaging Hosted - JavaScript

Installation

npm install telnyx

Setup

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.

Send an RCS message

POST /messages/rcs — Required: agent_id, to, messaging_profile_id, agent_message

Optional: mms_fallback (object), sms_fallback (object), type (enum: RCS), webhook_url (url)

const response = await client.messages.rcs.send({
  agent_id: 'Agent007',
  agent_message: {},
  messaging_profile_id: 'messaging_profile_id',
  to: '+13125551234',
});

console.log(response.data);

Returns: body (object), direction (string), encoding (string), from (object), id (string), messaging_profile_id (string), organization_id (string), received_at (date-time), record_type (string), to (array[object]), type (string), wait_seconds (float)

Generate RCS deeplink

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);

Returns: url (string)

List all RCS agents

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);
}

Returns: agent_id (string), agent_name (string), created_at (date-time), enabled (boolean), profile_id (uuid), updated_at (date-time), user_id (string), webhook_failover_url (url), webhook_url (url)

Retrieve an RCS agent

GET /messaging/rcs/agents/{id}

const rcsAgentResponse = await client.messaging.rcs.agents.retrieve('id');

console.log(rcsAgentResponse.data);

Returns: agent_id (string), agent_name (string), created_at (date-time), enabled (boolean), profile_id (uuid), updated_at (date-time), user_id (string), webhook_failover_url (url), webhook_url (url)

Modify an RCS agent

PATCH /messaging/rcs/agents/{id}

Optional: profile_id (uuid), webhook_failover_url (url), webhook_url (url)

const rcsAgentResponse = await client.messaging.rcs.agents.update('id');

console.log(rcsAgentResponse.data);

Returns: agent_id (string), agent_name (string), created_at (date-time), enabled (boolean), profile_id (uuid), updated_at (date-time), user_id (string), webhook_failover_url (url), webhook_url (url)

Check RCS capabilities (batch)

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);

Returns: agent_id (string), agent_name (string), features (array[string]), phone_number (string), record_type (enum: rcs.capabilities)

Check RCS capabilities

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);

Returns: agent_id (string), agent_name (string), features (array[string]), phone_number (string), record_type (enum: rcs.capabilities)

Add RCS test number

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);

Returns: agent_id (string), phone_number (string), record_type (enum: rcs.test_number_invite), status (string)

List messaging hosted number orders

GET /messaging_hosted_number_orders

// Automatically fetches more pages as needed.
for await (const messagingHostedNumberOrder of client.messagingHostedNumberOrders.list()) {
  console.log(messagingHostedNumberOrder.id);
}

Returns: id (uuid), messaging_profile_id (string | null), phone_numbers (array[object]), record_type (string), status (enum: carrier_rejected, compliance_review_failed, deleted, failed, incomplete_documentation, incorrect_billing_information, ineligible_carrier, loa_file_invalid, loa_file_successful, pending, provisioning, successful)

Create a messaging hosted number order

POST /messaging_hosted_number_orders

Optional: messaging_profile_id (string), phone_numbers (array[string])

const messagingHostedNumberOrder = await client.messagingHostedNumberOrders.create();

console.log(messagingHostedNumberOrder.data);

Returns: id (uuid), messaging_profile_id (string | null), phone_numbers (array[object]), record_type (string), status (enum: carrier_rejected, compliance_review_failed, deleted, failed, incomplete_documentation, incorrect_billing_information, ineligible_carrier, loa_file_invalid, loa_file_successful, pending, provisioning, successful)

Check hosted messaging eligibility

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);

Returns: phone_numbers (array[object])

Retrieve a messaging hosted number order

GET /messaging_hosted_number_orders/{id}

const messagingHostedNumberOrder = await client.messagingHostedNumberOrders.retrieve('id');

console.log(messagingHostedNumberOrder.data);

Returns: id (uuid), messaging_profile_id (string | null), phone_numbers (array[object]), record_type (string), status (enum: carrier_rejected, compliance_review_failed, deleted, failed, incomplete_documentation, incorrect_billing_information, ineligible_carrier, loa_file_invalid, loa_file_successful, pending, provisioning, successful)

Delete a messaging hosted number order

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);

Returns: id (uuid), messaging_profile_id (string | null), phone_numbers (array[object]), record_type (string), status (enum: carrier_rejected, compliance_review_failed, deleted, failed, incomplete_documentation, incorrect_billing_information, ineligible_carrier, loa_file_invalid, loa_file_successful, pending, provisioning, successful)

Upload hosted number document

POST /messaging_hosted_number_orders/{id}/actions/file_upload

const response = await client.messagingHostedNumberOrders.actions.uploadFile('id');

console.log(response.data);

Returns: id (uuid), messaging_profile_id (string | null), phone_numbers (array[object]), record_type (string), status (enum: carrier_rejected, compliance_review_failed, deleted, failed, incomplete_documentation, incorrect_billing_information, ineligible_carrier, loa_file_invalid, loa_file_successful, pending, provisioning, successful)

Validate hosted number codes

Validate the verification codes sent to the numbers of the hosted order. The verification codes must be created in the verification codes endpoint.

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);

Returns: order_id (uuid), phone_numbers (array[object])

Create hosted number verification codes

Create verification codes to validate numbers of the hosted order. The verification codes will be sent to the 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);

Returns: error (string), phone_number (string), type (enum: sms, call), verification_code_id (uuid)

Delete a messaging hosted number

DELETE /messaging_hosted_numbers/{id}

const messagingHostedNumber = await client.messagingHostedNumbers.delete('id');

console.log(messagingHostedNumber.data);

Returns: id (uuid), messaging_profile_id (string | null), phone_numbers (array[object]), record_type (string), status (enum: carrier_rejected, compliance_review_failed, deleted, failed, incomplete_documentation, incorrect_billing_information, ineligible_carrier, loa_file_invalid, loa_file_successful, pending, provisioning, successful)

List Verification Requests

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);
}

Returns: records (array[object]), total_records (integer)

Submit Verification Request

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

Optional: ageGatedContent (boolean), businessAddr2 (string), businessRegistrationCountry (string | null), businessRegistrationNumber (string | null), businessRegistrationType (string | null), campaignVerifyAuthorizationToken (string | null), doingBusinessAs (string | null), entityType (object), helpMessageResponse (string | null), isvReseller (string | null), optInConfirmationResponse (string | null), optInKeywords (string | null), privacyPolicyURL (string | null), termsAndConditionURL (string | null), webhookUrl (string)

const verificationRequestEgress = await client.messagingTollfree.verification.requests.create({
  additionalInformation: 'additionalInformation',
  businessAddr1: '600 Congress Avenue',
  businessCity: 'Austin',
  businessContactEmail: 'email@example.com',
  businessContactFirstName: 'John',
  businessContactLastName: 'Doe',
  businessContactPhone: '+18005550100',
  businessName: 'Telnyx LLC',
  businessState: 'Texas',
  businessZip: '78701',
  corporateWebsite: 'http://example.com',
  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);

Returns: additionalInformation (string), ageGatedContent (boolean), businessAddr1 (string), businessAddr2 (string), businessCity (string), businessContactEmail (string), businessContactFirstName (string), businessContactLastName (string), businessContactPhone (string), businessName (string), businessRegistrationCountry (string), businessRegistrationNumber (string), businessRegistrationType (string), businessState (string), businessZip (string), campaignVerifyAuthorizationToken (string | null), corporateWebsite (string), doingBusinessAs (string), entityType (object), helpMessageResponse (string), id (uuid), isvReseller (string), messageVolume (object), optInConfirmationResponse (string), optInKeywords (string), optInWorkflow (string), optInWorkflowImageURLs (array[object]), phoneNumbers (array[object]), privacyPolicyURL (string), productionMessageContent (string), termsAndConditionURL (string), useCase (object), useCaseSummary (string), verificationRequestId (string), verificationStatus (object), webhookUrl (string)

Get Verification Request

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);

Returns: additionalInformation (string), ageGatedContent (boolean), businessAddr1 (string), businessAddr2 (string), businessCity (string), businessContactEmail (string), businessContactFirstName (string), businessContactLastName (string), businessContactPhone (string), businessName (string), businessRegistrationCountry (string), businessRegistrationNumber (string), businessRegistrationType (string), businessState (string), businessZip (string), campaignVerifyAuthorizationToken (string | null), corporateWebsite (string), createdAt (date-time), doingBusinessAs (string), entityType (object), helpMessageResponse (string), id (uuid), isvReseller (string), messageVolume (object), optInConfirmationResponse (string), optInKeywords (string), optInWorkflow (string), optInWorkflowImageURLs (array[object]), phoneNumbers (array[object]), privacyPolicyURL (string), productionMessageContent (string), reason (string), termsAndConditionURL (string), updatedAt (date-time), useCase (object), useCaseSummary (string), verificationStatus (object), webhookUrl (string)

Update Verification Request

Update an existing tollfree verification request. This is particularly useful when there are pending customer actions to be taken.

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

Optional: ageGatedContent (boolean), businessAddr2 (string), businessRegistrationCountry (string | null), businessRegistrationNumber (string | null), businessRegistrationType (string | null), campaignVerifyAuthorizationToken (string | null), doingBusinessAs (string | null), entityType (object), helpMessageResponse (string | null), isvReseller (string | null), optInConfirmationResponse (string | null), optInKeywords (string | null), privacyPolicyURL (string | null), termsAndConditionURL (string | null), webhookUrl (string)

const verificationRequestEgress = await client.messagingTollfree.verification.requests.update(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
  {
    additionalInformation: 'additionalInformation',
    businessAddr1: '600 Congress Avenue',
    businessCity: 'Austin',
    businessContactEmail: 'email@example.com',
    businessContactFirstName: 'John',
    businessContactLastName: 'Doe',
    businessContactPhone: '+18005550100',
    businessName: 'Telnyx LLC',
    businessState: 'Texas',
    businessZip: '78701',
    corporateWebsite: 'http://example.com',
    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);

Returns: additionalInformation (string), ageGatedContent (boolean), businessAddr1 (string), businessAddr2 (string), businessCity (string), businessContactEmail (string), businessContactFirstName (string), businessContactLastName (string), businessContactPhone (string), businessName (string), businessRegistrationCountry (string), businessRegistrationNumber (string), businessRegistrationType (string), businessState (string), businessZip (string), campaignVerifyAuthorizationToken (string | null), corporateWebsite (string), doingBusinessAs (string), entityType (object), helpMessageResponse (string), id (uuid), isvReseller (string), messageVolume (object), optInConfirmationResponse (string), optInKeywords (string), optInWorkflow (string), optInWorkflowImageURLs (array[object]), phoneNumbers (array[object]), privacyPolicyURL (string), productionMessageContent (string), termsAndConditionURL (string), useCase (object), useCaseSummary (string), verificationRequestId (string), verificationStatus (object), webhookUrl (string)

Delete Verification Request

Delete a verification request

A request may only be deleted when when the request is in the "rejected" state. * HTTP 200: request successfully deleted

  • HTTP 400: request exists but can't be deleted (i.e. not rejected)
  • HTTP 404: request unknown or already deleted

DELETE /messaging_tollfree/verification/requests/{id}

await client.messagingTollfree.verification.requests.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');

Get Verification Request Status History

Get the history of status changes for a verification request. Returns a paginated list of historical status changes including the reason for each change and when it occurred.

GET /messaging_tollfree/verification/requests/{id}/status_history

const response = await client.messagingTollfree.verification.requests.retrieveStatusHistory(
  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
  { 'page[number]': 1, 'page[size]': 1 },
);

console.log(response.records);

Returns: records (array[object]), total_records (integer)

List messaging URL domains

GET /messaging_url_domains

// Automatically fetches more pages as needed.
for await (const messagingURLDomainListResponse of client.messagingURLDomains.list()) {
  console.log(messagingURLDomainListResponse.id);
}

Returns: id (string), record_type (string), url_domain (string), use_case (string)

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!

Skill Details

GitHub Stars 116
GitHub Forks 7
Created Mar 2026
Last Updated 3 months ago
tools tools system admin

Related Skills

docker-expert
chevron_right
telnyx-network
chevron_right
plex

plex

openclaw
star 2.4k
chevron_right
discord-governance
chevron_right
hetzner-provisioner
chevron_right

Build your own?

Join 12,000+ developers contributing to the Claude ecosystem.