api/javascript/telnyx-iot-javascript/SKILL.md
Manage IoT SIM cards, eSIMs, data plans, and wireless connectivity. Use when building IoT/M2M solutions. This skill provides JavaScript SDK examples.
npx skillsauth add team-telnyx/telnyx-toolkit telnyx-iot-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.
Retrieve all wireless regions for the given product.
GET /wireless/regions
const response = await client.wireless.retrieveRegions({ product: 'public_ips' });
console.log(response.data);
Get all SIM cards belonging to the user that match the given filters.
GET /sim_cards
// Automatically fetches more pages as needed.
for await (const simpleSimCard of client.simCards.list()) {
console.log(simpleSimCard.id);
}
Returns the details regarding a specific SIM card.
GET /sim_cards/{id}
const simCard = await client.simCards.retrieve('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(simCard.data);
Updates SIM card data
PATCH /sim_cards/{id}
const simCard = await client.simCards.update('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(simCard.data);
The SIM card will be decommissioned, removed from your account and you will stop being charged.<br />The SIM card won't be able to connect to the network after the deletion is completed, thus makin...
DELETE /sim_cards/{id}
const simCard = await client.simCards.delete('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(simCard.data);
It returns the activation code for an eSIM.<br/><br/> This API is only available for eSIMs.
GET /sim_cards/{id}/activation_code
const response = await client.simCards.getActivationCode('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(response.data);
It returns the device details where a SIM card is currently being used.
GET /sim_cards/{id}/device_details
const response = await client.simCards.getDeviceDetails('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(response.data);
It returns the public IP requested for a SIM card.
GET /sim_cards/{id}/public_ip
const response = await client.simCards.getPublicIP('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(response.data);
This API allows listing a paginated collection of Wireless Connectivity Logs associated with a SIM Card, for troubleshooting purposes.
GET /sim_cards/{id}/wireless_connectivity_logs
// Automatically fetches more pages as needed.
for await (const simCardListWirelessConnectivityLogsResponse of client.simCards.listWirelessConnectivityLogs(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
)) {
console.log(simCardListWirelessConnectivityLogsResponse.id);
}
This API disables a SIM card, disconnecting it from the network and making it impossible to consume data.<br/> The API will trigger an asynchronous operation called a SIM Card Action.
POST /sim_cards/{id}/actions/disable
const response = await client.simCards.actions.disable('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(response.data);
This API enables a SIM card, connecting it to the network and making it possible to consume data.<br/> To enable a SIM card, it must be associated with a SIM card group.<br/> The API will trigger a...
POST /sim_cards/{id}/actions/enable
const response = await client.simCards.actions.enable('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(response.data);
This API removes an existing public IP from a SIM card.
POST /sim_cards/{id}/actions/remove_public_ip
const response = await client.simCards.actions.removePublicIP(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
);
console.log(response.data);
This API makes a SIM card reachable on the public internet by mapping a random public IP to the SIM card.
POST /sim_cards/{id}/actions/set_public_ip
const response = await client.simCards.actions.setPublicIP('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(response.data);
The SIM card will be able to connect to the network once the process to set it to standby has been completed, thus making it possible to consume data.<br/> To set a SIM card to standby, it must be ...
POST /sim_cards/{id}/actions/set_standby
const response = await client.simCards.actions.setStandby('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(response.data);
This API triggers an asynchronous operation to set a public IP for each of the specified SIM cards.<br/> For each SIM Card a SIM Card Action will be generated.
POST /sim_cards/actions/bulk_set_public_ips — Required: sim_card_ids
const response = await client.simCards.actions.bulkSetPublicIPs({
sim_card_ids: ['6b14e151-8493-4fa1-8664-1cc4e6d14158'],
});
console.log(response.data);
It validates whether SIM card registration codes are valid or not.
POST /sim_cards/actions/validate_registration_codes
const response = await client.simCards.actions.validateRegistrationCodes();
console.log(response.data);
This API lists a paginated collection of SIM card actions.
GET /sim_card_actions
// Automatically fetches more pages as needed.
for await (const simCardAction of client.simCards.actions.list()) {
console.log(simCardAction.id);
}
This API fetches detailed information about a SIM card action to follow-up on an existing asynchronous operation.
GET /sim_card_actions/{id}
const action = await client.simCards.actions.retrieve('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(action.data);
This API lists a paginated collection of bulk SIM card actions.
GET /bulk_sim_card_actions
// Automatically fetches more pages as needed.
for await (const bulkSimCardActionListResponse of client.bulkSimCardActions.list()) {
console.log(bulkSimCardActionListResponse.id);
}
This API fetches information about a bulk SIM card action.
GET /bulk_sim_card_actions/{id}
const bulkSimCardAction = await client.bulkSimCardActions.retrieve(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
);
console.log(bulkSimCardAction.data);
Get all SIM card groups belonging to the user that match the given filters.
GET /sim_card_groups
// Automatically fetches more pages as needed.
for await (const simCardGroupListResponse of client.simCardGroups.list()) {
console.log(simCardGroupListResponse.id);
}
Creates a new SIM card group object
POST /sim_card_groups — Required: name
const simCardGroup = await client.simCardGroups.create({ name: 'My Test Group' });
console.log(simCardGroup.data);
Returns the details regarding a specific SIM card group
GET /sim_card_groups/{id}
const simCardGroup = await client.simCardGroups.retrieve('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(simCardGroup.data);
Updates a SIM card group
PATCH /sim_card_groups/{id}
const simCardGroup = await client.simCardGroups.update('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(simCardGroup.data);
Permanently deletes a SIM card group
DELETE /sim_card_groups/{id}
const simCardGroup = await client.simCardGroups.delete('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(simCardGroup.data);
This action will asynchronously remove an existing Private Wireless Gateway definition from a SIM card group.
POST /sim_card_groups/{id}/actions/remove_private_wireless_gateway
const response = await client.simCardGroups.actions.removePrivateWirelessGateway(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
);
console.log(response.data);
This action will asynchronously remove an existing Wireless Blocklist to all the SIMs in the SIM card group.
POST /sim_card_groups/{id}/actions/remove_wireless_blocklist
const response = await client.simCardGroups.actions.removeWirelessBlocklist(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
);
console.log(response.data);
This action will asynchronously assign a provisioned Private Wireless Gateway to the SIM card group.
POST /sim_card_groups/{id}/actions/set_private_wireless_gateway — Required: private_wireless_gateway_id
const response = await client.simCardGroups.actions.setPrivateWirelessGateway(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
{ private_wireless_gateway_id: '6a09cdc3-8948-47f0-aa62-74ac943d6c58' },
);
console.log(response.data);
This action will asynchronously assign a Wireless Blocklist to all the SIMs in the SIM card group.
POST /sim_card_groups/{id}/actions/set_wireless_blocklist — Required: wireless_blocklist_id
const response = await client.simCardGroups.actions.setWirelessBlocklist(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
{ wireless_blocklist_id: '6a09cdc3-8948-47f0-aa62-74ac943d6c58' },
);
console.log(response.data);
This API allows listing a paginated collection a SIM card group actions.
GET /sim_card_group_actions
// Automatically fetches more pages as needed.
for await (const simCardGroupAction of client.simCardGroups.actions.list()) {
console.log(simCardGroupAction.id);
}
This API allows fetching detailed information about a SIM card group action resource to make follow-ups in an existing asynchronous operation.
GET /sim_card_group_actions/{id}
const action = await client.simCardGroups.actions.retrieve('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(action.data);
Get all SIM card orders according to filters.
GET /sim_card_orders
// Automatically fetches more pages as needed.
for await (const simCardOrder of client.simCardOrders.list()) {
console.log(simCardOrder.id);
}
Creates a new order for SIM cards.
POST /sim_card_orders — Required: address_id, quantity
const simCardOrder = await client.simCardOrders.create({
address_id: '1293384261075731499',
quantity: 23,
});
console.log(simCardOrder.data);
Get a single SIM card order by its ID.
GET /sim_card_orders/{id}
const simCardOrder = await client.simCardOrders.retrieve('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(simCardOrder.data);
Preview SIM card order purchases.
POST /sim_card_order_preview — Required: quantity, address_id
const response = await client.simCardOrderPreview.preview({
address_id: '1293384261075731499',
quantity: 21,
});
console.log(response.data);
Lists a paginated collection of SIM card data usage notifications.
GET /sim_card_data_usage_notifications
// Automatically fetches more pages as needed.
for await (const simCardDataUsageNotification of client.simCardDataUsageNotifications.list()) {
console.log(simCardDataUsageNotification.id);
}
Creates a new SIM card data usage notification.
POST /sim_card_data_usage_notifications — Required: sim_card_id, threshold
const simCardDataUsageNotification = await client.simCardDataUsageNotifications.create({
sim_card_id: '6a09cdc3-8948-47f0-aa62-74ac943d6c58',
threshold: {},
});
console.log(simCardDataUsageNotification.data);
Get a single SIM Card Data Usage Notification.
GET /sim_card_data_usage_notifications/{id}
const simCardDataUsageNotification = await client.simCardDataUsageNotifications.retrieve(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
);
console.log(simCardDataUsageNotification.data);
Updates information for a SIM Card Data Usage Notification.
PATCH /sim_card_data_usage_notifications/{id}
const simCardDataUsageNotification = await client.simCardDataUsageNotifications.update(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
);
console.log(simCardDataUsageNotification.data);
Delete the SIM Card Data Usage Notification.
DELETE /sim_card_data_usage_notifications/{id}
const simCardDataUsageNotification = await client.simCardDataUsageNotifications.delete(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
);
console.log(simCardDataUsageNotification.data);
Purchases and registers the specified amount of eSIMs to the current user's account.<br/><br/> If <code>sim_card_group_id</code> is provided, the eSIMs will be associated with that group.
POST /actions/purchase/esims — Required: amount
const purchase = await client.actions.purchase.create({ amount: 10 });
console.log(purchase.data);
Register the SIM cards associated with the provided registration codes to the current user's account.<br/><br/> If <code>sim_card_group_id</code> is provided, the SIM cards will be associated with ...
POST /actions/register/sim_cards — Required: registration_codes
const register = await client.actions.register.create({
registration_codes: ['0000000001', '0000000002', '0000000003'],
});
console.log(register.data);
GET /ota_updates
// Automatically fetches more pages as needed.
for await (const otaUpdateListResponse of client.otaUpdates.list()) {
console.log(otaUpdateListResponse.id);
}
This API returns the details of an Over the Air (OTA) update.
GET /ota_updates/{id}
const otaUpdate = await client.otaUpdates.retrieve('6a09cdc3-8948-47f0-aa62-74ac943d6c58');
console.log(otaUpdate.data);
Get all Private Wireless Gateways belonging to the user.
GET /private_wireless_gateways
// Automatically fetches more pages as needed.
for await (const privateWirelessGateway of client.privateWirelessGateways.list()) {
console.log(privateWirelessGateway.id);
}
Asynchronously create a Private Wireless Gateway for SIM cards for a previously created network.
POST /private_wireless_gateways — Required: network_id, name
const privateWirelessGateway = await client.privateWirelessGateways.create({
name: 'My private wireless gateway',
network_id: '6a09cdc3-8948-47f0-aa62-74ac943d6c58',
});
console.log(privateWirelessGateway.data);
Retrieve information about a Private Wireless Gateway.
GET /private_wireless_gateways/{id}
const privateWirelessGateway = await client.privateWirelessGateways.retrieve(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
);
console.log(privateWirelessGateway.data);
Deletes the Private Wireless Gateway.
DELETE /private_wireless_gateways/{id}
const privateWirelessGateway = await client.privateWirelessGateways.delete(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
);
console.log(privateWirelessGateway.data);
Get all Wireless Blocklists belonging to the user.
GET /wireless_blocklists
// Automatically fetches more pages as needed.
for await (const wirelessBlocklist of client.wirelessBlocklists.list()) {
console.log(wirelessBlocklist.id);
}
Create a Wireless Blocklist to prevent SIMs from connecting to certain networks.
POST /wireless_blocklists — Required: name, type, values
const wirelessBlocklist = await client.wirelessBlocklists.create({
name: 'My Wireless Blocklist',
type: 'country',
values: ['CA', 'US'],
});
console.log(wirelessBlocklist.data);
Update a Wireless Blocklist.
PATCH /wireless_blocklists
const wirelessBlocklist = await client.wirelessBlocklists.update();
console.log(wirelessBlocklist.data);
Retrieve information about a Wireless Blocklist.
GET /wireless_blocklists/{id}
const wirelessBlocklist = await client.wirelessBlocklists.retrieve(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
);
console.log(wirelessBlocklist.data);
Deletes the Wireless Blocklist.
DELETE /wireless_blocklists/{id}
const wirelessBlocklist = await client.wirelessBlocklists.delete(
'6a09cdc3-8948-47f0-aa62-74ac943d6c58',
);
console.log(wirelessBlocklist.data);
Retrieve all wireless blocklist values for a given blocklist type.
GET /wireless_blocklist_values
const wirelessBlocklistValues = await client.wirelessBlocklistValues.list({ type: 'country' });
console.log(wirelessBlocklistValues.data);
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.