{"id":"8a16d458-fa1f-46e1-a2a0-38bc97ee3f9e","shortId":"rzAene","kind":"skill","title":"telnyx-10dlc-javascript","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx 10DLC - JavaScript\n\n## Installation\n\n```bash\nnpm install telnyx\n```\n\n## Setup\n\n```javascript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n  apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n```\n\nAll examples below assume `client` is already initialized as shown above.\n\n## Error Handling\n\nAll API calls can fail with network errors, rate limits (429), validation errors (422),\nor authentication errors (401). Always handle errors in production code:\n\n```javascript\ntry {\n  const telnyxBrand = await client.messaging10dlc.brand.create({\n    country: 'US',\n    displayName: 'ABC Mobile',\n    email: 'support@example.com',\n    entityType: 'PRIVATE_PROFIT',\n    vertical: 'TECHNOLOGY',\n  });\n} catch (err) {\n  if (err instanceof Telnyx.APIConnectionError) {\n    console.error('Network error — check connectivity and retry');\n  } else if (err instanceof Telnyx.RateLimitError) {\n    const retryAfter = err.headers?.['retry-after'] || 1;\n    await new Promise(r => setTimeout(r, retryAfter * 1000));\n  } else if (err instanceof Telnyx.APIError) {\n    console.error(`API error ${err.status}: ${err.message}`);\n    if (err.status === 422) {\n      console.error('Validation error — check required fields and formats');\n    }\n  }\n}\n```\n\nCommon error codes: `401` invalid API key, `403` insufficient permissions,\n`404` resource not found, `422` validation error (check field formats),\n`429` rate limited (retry with exponential backoff).\n\n## Important Notes\n\n- **Pagination:** List methods return an auto-paginating iterator. Use `for await (const item of result) { ... }` to iterate through all pages automatically.\n\n## Operational Caveats\n\n- 10DLC is sequential: create the brand first, then submit the campaign, then attach messaging infrastructure such as the messaging profile.\n- Registration calls are not enough by themselves. Messaging cannot use the campaign until the assignment step completes successfully.\n- Treat registration status fields as part of the control flow. Do not assume the campaign is send-ready until the returned status fields confirm it.\n\n## Reference Use Rules\n\nDo not invent Telnyx parameters, enums, response fields, or webhook fields.\n\n- If the parameter, enum, or response field you need is not shown inline in this skill, read [references/api-details.md](references/api-details.md) before writing code.\n- Before using any operation in `## Additional Operations`, read [the optional-parameters section](references/api-details.md#optional-parameters) and [the response-schemas section](references/api-details.md#response-schemas).\n- Before reading or matching webhook fields beyond the inline examples, read [the webhook payload reference](references/api-details.md#webhook-payload-fields).\n\n## Core Tasks\n\n### Create a brand\n\nBrand registration is the entrypoint for any US A2P 10DLC campaign flow.\n\n`client.messaging10dlc.brand.create()` — `POST /10dlc/brand`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `entityType` | object | Yes | Entity type behind the brand. |\n| `displayName` | string | Yes | Display name, marketing name, or DBA name of the brand. |\n| `country` | string | Yes | ISO2 2 characters country code. |\n| `email` | string | Yes | Valid email address of brand support contact. |\n| `vertical` | object | Yes | Vertical or industry segment of the brand. |\n| `companyName` | string | No | (Required for Non-profit/private/public) Legal company name. |\n| `firstName` | string | No | First name of business contact. |\n| `lastName` | string | No | Last name of business contact. |\n| ... | | | +16 optional params in [references/api-details.md](references/api-details.md) |\n\n```javascript\nconst telnyxBrand = await client.messaging10dlc.brand.create({\n  country: 'US',\n  displayName: 'ABC Mobile',\n  email: 'support@example.com',\n  entityType: 'PRIVATE_PROFIT',\n  vertical: 'TECHNOLOGY',\n});\n\nconsole.log(telnyxBrand.identityStatus);\n```\n\nPrimary response fields:\n- `telnyxBrand.brandId`\n- `telnyxBrand.identityStatus`\n- `telnyxBrand.status`\n- `telnyxBrand.displayName`\n- `telnyxBrand.state`\n- `telnyxBrand.altBusinessId`\n\n### Submit a campaign\n\nCampaign submission is the compliance-critical step that determines whether traffic can be provisioned.\n\n`client.messaging10dlc.campaignBuilder.submit()` — `POST /10dlc/campaignBuilder`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `brandId` | string (UUID) | Yes | Alphanumeric identifier of the brand associated with this ca... |\n| `description` | string | Yes | Summary description of this campaign. |\n| `usecase` | string | Yes | Campaign usecase. |\n| `ageGated` | boolean | No | Age gated message content in campaign. |\n| `autoRenewal` | boolean | No | Campaign subscription auto-renewal option. |\n| `directLending` | boolean | No | Direct lending or loan arrangement |\n| ... | | | +29 optional params in [references/api-details.md](references/api-details.md) |\n\n```javascript\nconst telnyxCampaignCsp = await client.messaging10dlc.campaignBuilder.submit({\n  brandId: 'BXXXXXX',\n  description: 'Two-factor authentication messages',\n  usecase: '2FA',\n    sampleMessages: [\"Your verification code is {{code}}\"],\n});\n\nconsole.log(telnyxCampaignCsp.brandId);\n```\n\nPrimary response fields:\n- `telnyxCampaignCsp.campaignId`\n- `telnyxCampaignCsp.brandId`\n- `telnyxCampaignCsp.campaignStatus`\n- `telnyxCampaignCsp.submissionStatus`\n- `telnyxCampaignCsp.failureReasons`\n- `telnyxCampaignCsp.status`\n\n### Assign a messaging profile to a campaign\n\nMessaging profile assignment is the practical handoff from registration to send-ready messaging infrastructure.\n\n`client.messaging10dlc.phoneNumberAssignmentByProfile.assign()` — `POST /10dlc/phoneNumberAssignmentByProfile`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `messagingProfileId` | string (UUID) | Yes | The ID of the messaging profile that you want to link to the... |\n| `campaignId` | string (UUID) | Yes | The ID of the campaign you want to link to the specified mes... |\n| `tcrCampaignId` | string (UUID) | No | The TCR ID of the shared campaign you want to link to the sp... |\n\n```javascript\nconst response = await client.messaging10dlc.phoneNumberAssignmentByProfile.assign({\n  messagingProfileId: '4001767e-ce0f-4cae-9d5f-0d5e636e7809',\n    campaignId: 'CXXX001',\n});\n\nconsole.log(response.messagingProfileId);\n```\n\nPrimary response fields:\n- `response.messagingProfileId`\n- `response.campaignId`\n- `response.taskId`\n- `response.tcrCampaignId`\n\n---\n\n### Webhook Verification\n\nTelnyx signs webhooks with Ed25519. Each request includes `telnyx-signature-ed25519`\nand `telnyx-timestamp` headers. Always verify signatures in production:\n\n```javascript\n// In your webhook handler (e.g., Express — use raw body, not parsed JSON):\napp.post('/webhooks', express.raw({ type: 'application/json' }), async (req, res) => {\n  try {\n    const event = await client.webhooks.unwrap(req.body.toString(), {\n      headers: req.headers,\n    });\n    // Signature valid — event is the parsed webhook payload\n    console.log('Received event:', event.data.event_type);\n    res.status(200).send('OK');\n  } catch (err) {\n    console.error('Webhook verification failed:', err.message);\n    res.status(400).send('Invalid signature');\n  }\n});\n```\n\n## Webhooks\n\nThese webhook payload fields are inline because they are part of the primary integration path.\n\n### Campaign Status Update\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `brandId` | string | Brand ID associated with the campaign. |\n| `campaignId` | string | The ID of the campaign. |\n| `createDate` | string | Unix timestamp when campaign was created. |\n| `cspId` | string | Alphanumeric identifier of the CSP associated with this campaign. |\n| `isTMobileRegistered` | boolean | Indicates whether the campaign is registered with T-Mobile. |\n| `type` | enum: TELNYX_EVENT, REGISTRATION, MNO_REVIEW, TELNYX_REVIEW, NUMBER_POOL_PROVISIONED, NUMBER_POOL_DEPROVISIONED, TCR_EVENT, VERIFIED |  |\n| `description` | string | Description of the event. |\n| `status` | enum: ACCEPTED, REJECTED, DORMANT, success, failed | The status of the campaign. |\n\nIf you need webhook fields that are not listed inline here, read [the webhook payload reference](references/api-details.md#webhook-payload-fields) before writing the handler.\n\n---\n\n## Important Supporting Operations\n\nUse these when the core tasks above are close to your flow, but you need a common variation or follow-up step.\n\n### Get Brand\n\nInspect the current state of an existing brand registration.\n\n`client.messaging10dlc.brand.retrieve()` — `GET /10dlc/brand/{brandId}`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `brandId` | string (UUID) | Yes |  |\n\n```javascript\nconst brand = await client.messaging10dlc.brand.retrieve('BXXX001');\n\nconsole.log(brand);\n```\n\nPrimary response fields:\n- `brand.status`\n- `brand.state`\n- `brand.altBusinessId`\n- `brand.altBusinessIdType`\n- `brand.assignedCampaignsCount`\n- `brand.brandId`\n\n### Qualify By Usecase\n\nFetch the current state before updating, deleting, or making control-flow decisions.\n\n`client.messaging10dlc.campaignBuilder.brand.qualifyByUsecase()` — `GET /10dlc/campaignBuilder/brand/{brandId}/usecase/{usecase}`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `usecase` | string | Yes |  |\n| `brandId` | string (UUID) | Yes |  |\n\n```javascript\nconst response = await client.messaging10dlc.campaignBuilder.brand.qualifyByUsecase('usecase', {\n  brandId: 'BXXX001',\n});\n\nconsole.log(response.annualFee);\n```\n\nPrimary response fields:\n- `response.annualFee`\n- `response.maxSubUsecases`\n- `response.minSubUsecases`\n- `response.mnoMetadata`\n- `response.monthlyFee`\n- `response.quarterlyFee`\n\n### Create New Phone Number Campaign\n\nCreate or provision an additional resource when the core tasks do not cover this flow.\n\n`client.messaging10dlc.phoneNumberCampaigns.create()` — `POST /10dlc/phone_number_campaigns`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phoneNumber` | string (E.164) | Yes | The phone number you want to link to a specified campaign. |\n| `campaignId` | string (UUID) | Yes | The ID of the campaign you want to link to the specified pho... |\n\n```javascript\nconst phoneNumberCampaign = await client.messaging10dlc.phoneNumberCampaigns.create({\n  campaignId: '4b300178-131c-d902-d54e-72d90ba1620j',\n  phoneNumber: '+18005550199',\n});\n\nconsole.log(phoneNumberCampaign.campaignId);\n```\n\nPrimary response fields:\n- `phoneNumberCampaign.assignmentStatus`\n- `phoneNumberCampaign.brandId`\n- `phoneNumberCampaign.campaignId`\n- `phoneNumberCampaign.createdAt`\n- `phoneNumberCampaign.failureReasons`\n- `phoneNumberCampaign.phoneNumber`\n\n### Get campaign\n\nInspect the current state of an existing campaign registration.\n\n`client.messaging10dlc.campaign.retrieve()` — `GET /10dlc/campaign/{campaignId}`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `campaignId` | string (UUID) | Yes |  |\n\n```javascript\nconst telnyxCampaignCsp = await client.messaging10dlc.campaign.retrieve('CXXX001');\n\nconsole.log(telnyxCampaignCsp.brandId);\n```\n\nPrimary response fields:\n- `telnyxCampaignCsp.status`\n- `telnyxCampaignCsp.ageGated`\n- `telnyxCampaignCsp.autoRenewal`\n- `telnyxCampaignCsp.billedDate`\n- `telnyxCampaignCsp.brandDisplayName`\n- `telnyxCampaignCsp.brandId`\n\n### List Brands\n\nInspect available resources or choose an existing resource before mutating it.\n\n`client.messaging10dlc.brand.list()` — `GET /10dlc/brand`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `sort` | enum (assignedCampaignsCount, -assignedCampaignsCount, brandId, -brandId, createdAt, ...) | No | Specifies the sort order for results. |\n| `page` | integer | No |  |\n| `recordsPerPage` | integer | No | number of records per page. |\n| ... | | | +6 optional params in [references/api-details.md](references/api-details.md) |\n\n```javascript\n// Automatically fetches more pages as needed.\nfor await (const brandListResponse of client.messaging10dlc.brand.list()) {\n  console.log(brandListResponse.identityStatus);\n}\n```\n\nPrimary response fields:\n- `brandListResponse.page`\n- `brandListResponse.records`\n- `brandListResponse.totalRecords`\n\n### Get Brand Feedback By Id\n\nFetch the current state before updating, deleting, or making control-flow decisions.\n\n`client.messaging10dlc.brand.getFeedback()` — `GET /10dlc/brand/feedback/{brandId}`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `brandId` | string (UUID) | Yes |  |\n\n```javascript\nconst response = await client.messaging10dlc.brand.getFeedback('BXXX001');\n\nconsole.log(response.brandId);\n```\n\nPrimary response fields:\n- `response.brandId`\n- `response.category`\n\n---\n\n## Additional Operations\n\nUse the core tasks above first. The operations below are indexed here with exact SDK methods and required params; use [references/api-details.md](references/api-details.md) for full optional params, response schemas, and lower-frequency webhook payloads.\nBefore using any operation below, read [the optional-parameters section](references/api-details.md#optional-parameters) and [the response-schemas section](references/api-details.md#response-schemas) so you do not guess missing fields.\n\n| Operation | SDK method | Endpoint | Use when | Required params |\n|-----------|------------|----------|----------|-----------------|\n| Get Brand SMS OTP Status | `client.messaging10dlc.brand.getSMSOtpByReference()` | `GET /10dlc/brand/smsOtp/{referenceId}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `referenceId` |\n| Update Brand | `client.messaging10dlc.brand.update()` | `PUT /10dlc/brand/{brandId}` | Inspect the current state of an existing brand registration. | `entityType`, `displayName`, `country`, `email`, +2 more |\n| Delete Brand | `client.messaging10dlc.brand.delete()` | `DELETE /10dlc/brand/{brandId}` | Inspect the current state of an existing brand registration. | `brandId` |\n| Resend brand 2FA email | `client.messaging10dlc.brand.resend2faEmail()` | `POST /10dlc/brand/{brandId}/2faEmail` | Create or provision an additional resource when the core tasks do not cover this flow. | `brandId` |\n| List External Vettings | `client.messaging10dlc.brand.externalVetting.list()` | `GET /10dlc/brand/{brandId}/externalVetting` | Fetch the current state before updating, deleting, or making control-flow decisions. | `brandId` |\n| Order Brand External Vetting | `client.messaging10dlc.brand.externalVetting.order()` | `POST /10dlc/brand/{brandId}/externalVetting` | Create or provision an additional resource when the core tasks do not cover this flow. | `evpId`, `vettingClass`, `brandId` |\n| Import External Vetting Record | `client.messaging10dlc.brand.externalVetting.imports()` | `PUT /10dlc/brand/{brandId}/externalVetting` | Modify an existing resource without recreating it. | `evpId`, `vettingId`, `brandId` |\n| Revet Brand | `client.messaging10dlc.brand.revet()` | `PUT /10dlc/brand/{brandId}/revet` | Modify an existing resource without recreating it. | `brandId` |\n| Get Brand SMS OTP Status by Brand ID | `client.messaging10dlc.brand.retrieveSMSOtpStatus()` | `GET /10dlc/brand/{brandId}/smsOtp` | Fetch the current state before updating, deleting, or making control-flow decisions. | `brandId` |\n| Trigger Brand SMS OTP | `client.messaging10dlc.brand.triggerSMSOtp()` | `POST /10dlc/brand/{brandId}/smsOtp` | Create or provision an additional resource when the core tasks do not cover this flow. | `pinSms`, `successSms`, `brandId` |\n| Verify Brand SMS OTP | `client.messaging10dlc.brand.verifySMSOtp()` | `PUT /10dlc/brand/{brandId}/smsOtp` | Modify an existing resource without recreating it. | `otpPin`, `brandId` |\n| List Campaigns | `client.messaging10dlc.campaign.list()` | `GET /10dlc/campaign` | Inspect available resources or choose an existing resource before mutating it. | None |\n| Accept Shared Campaign | `client.messaging10dlc.campaign.acceptSharing()` | `POST /10dlc/campaign/acceptSharing/{campaignId}` | Create or provision an additional resource when the core tasks do not cover this flow. | `campaignId` |\n| Get Campaign Cost | `client.messaging10dlc.campaign.usecase.getCost()` | `GET /10dlc/campaign/usecase/cost` | Inspect available resources or choose an existing resource before mutating it. | None |\n| Update campaign | `client.messaging10dlc.campaign.update()` | `PUT /10dlc/campaign/{campaignId}` | Inspect the current state of an existing campaign registration. | `campaignId` |\n| Deactivate campaign | `client.messaging10dlc.campaign.deactivate()` | `DELETE /10dlc/campaign/{campaignId}` | Inspect the current state of an existing campaign registration. | `campaignId` |\n| Submit campaign appeal for manual review | `client.messaging10dlc.campaign.submitAppeal()` | `POST /10dlc/campaign/{campaignId}/appeal` | Create or provision an additional resource when the core tasks do not cover this flow. | `appealReason`, `campaignId` |\n| Get Campaign Mno Metadata | `client.messaging10dlc.campaign.getMnoMetadata()` | `GET /10dlc/campaign/{campaignId}/mnoMetadata` | Fetch the current state before updating, deleting, or making control-flow decisions. | `campaignId` |\n| Get campaign operation status | `client.messaging10dlc.campaign.getOperationStatus()` | `GET /10dlc/campaign/{campaignId}/operationStatus` | Fetch the current state before updating, deleting, or making control-flow decisions. | `campaignId` |\n| Get OSR campaign attributes | `client.messaging10dlc.campaign.osr.getAttributes()` | `GET /10dlc/campaign/{campaignId}/osr/attributes` | Fetch the current state before updating, deleting, or making control-flow decisions. | `campaignId` |\n| Get Sharing Status | `client.messaging10dlc.campaign.getSharingStatus()` | `GET /10dlc/campaign/{campaignId}/sharing` | Fetch the current state before updating, deleting, or making control-flow decisions. | `campaignId` |\n| List shared partner campaigns | `client.messaging10dlc.partnerCampaigns.listSharedByMe()` | `GET /10dlc/partnerCampaign/sharedByMe` | Inspect available resources or choose an existing resource before mutating it. | None |\n| Get Sharing Status | `client.messaging10dlc.partnerCampaigns.retrieveSharingStatus()` | `GET /10dlc/partnerCampaign/{campaignId}/sharing` | Fetch the current state before updating, deleting, or making control-flow decisions. | `campaignId` |\n| List Shared Campaigns | `client.messaging10dlc.partnerCampaigns.list()` | `GET /10dlc/partner_campaigns` | Inspect available resources or choose an existing resource before mutating it. | None |\n| Get Single Shared Campaign | `client.messaging10dlc.partnerCampaigns.retrieve()` | `GET /10dlc/partner_campaigns/{campaignId}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `campaignId` |\n| Update Single Shared Campaign | `client.messaging10dlc.partnerCampaigns.update()` | `PATCH /10dlc/partner_campaigns/{campaignId}` | Modify an existing resource without recreating it. | `campaignId` |\n| Get Assignment Task Status | `client.messaging10dlc.phoneNumberAssignmentByProfile.retrieveStatus()` | `GET /10dlc/phoneNumberAssignmentByProfile/{taskId}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `taskId` |\n| Get Phone Number Status | `client.messaging10dlc.phoneNumberAssignmentByProfile.listPhoneNumberStatus()` | `GET /10dlc/phoneNumberAssignmentByProfile/{taskId}/phoneNumbers` | Fetch the current state before updating, deleting, or making control-flow decisions. | `taskId` |\n| List phone number campaigns | `client.messaging10dlc.phoneNumberCampaigns.list()` | `GET /10dlc/phone_number_campaigns` | Inspect available resources or choose an existing resource before mutating it. | None |\n| Get Single Phone Number Campaign | `client.messaging10dlc.phoneNumberCampaigns.retrieve()` | `GET /10dlc/phone_number_campaigns/{phoneNumber}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `phoneNumber` |\n| Create New Phone Number Campaign | `client.messaging10dlc.phoneNumberCampaigns.update()` | `PUT /10dlc/phone_number_campaigns/{phoneNumber}` | Modify an existing resource without recreating it. | `phoneNumber`, `campaignId`, `phoneNumber` |\n| Delete Phone Number Campaign | `client.messaging10dlc.phoneNumberCampaigns.delete()` | `DELETE /10dlc/phone_number_campaigns/{phoneNumber}` | Remove, detach, or clean up an existing resource. | `phoneNumber` |\n\n---\n\nFor exhaustive optional parameters, full response schemas, and complete webhook payloads, see [references/api-details.md](references/api-details.md).","tags":["telnyx","10dlc","javascript","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-10dlc-javascript","topic-agent-skills","topic-ai-coding-agent","topic-claude-code","topic-cpaas","topic-cursor","topic-iot","topic-llm","topic-sdk","topic-sip","topic-sms","topic-speech-to-text","topic-telephony"],"categories":["ai"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/team-telnyx/ai/telnyx-10dlc-javascript","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add team-telnyx/ai","source_repo":"https://github.com/team-telnyx/ai","install_from":"skills.sh"}},"qualityScore":"0.533","qualityRationale":"deterministic score 0.53 from registry signals: · indexed on github topic:agent-skills · 167 github stars · SKILL.md body (20,939 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T12:54:38.718Z","embedding":null,"createdAt":"2026-04-18T22:05:45.493Z","updatedAt":"2026-04-22T12:54:38.718Z","lastSeenAt":"2026-04-22T12:54:38.718Z","tsv":"'+16':446 '+18005550199':1100 '+2':1385 '+29':557 '+6':1197 '/10dlc/brand':364,949,1167,1370,1391,1410,1434,1457,1484,1501,1522,1545,1572 '/10dlc/brand/feedback':1244 '/10dlc/brand/smsotp':1350 '/10dlc/campaign':1125,1588,1646,1662,1682,1708,1731,1754,1776 '/10dlc/campaign/acceptsharing':1606 '/10dlc/campaign/usecase/cost':1629 '/10dlc/campaignbuilder':500 '/10dlc/campaignbuilder/brand':994 '/10dlc/partner_campaigns':1839,1858,1880 '/10dlc/partnercampaign':1817 '/10dlc/partnercampaign/sharedbyme':1799 '/10dlc/phone_number_campaigns':1050,1941,1961,1984,2002 '/10dlc/phonenumberassignmentbyprofile':619,1896,1918 '/2faemail':1412 '/appeal':1684 '/externalvetting':1436,1459,1486 '/mnometadata':1710 '/operationstatus':1733 '/osr/attributes':1756 '/phonenumbers':1920 '/private/public':426 '/revet':1503 '/sharing':1778,1819 '/smsotp':1524,1547,1574 '/usecase':996 '/webhooks':737 '0d5e636e7809':687 '1':115 '1000':123 '10dlc':3,6,198,359 '131c':1095 '2':394 '200':766 '2fa':577,1405 '400':777 '4001767e':683 '4001767e-ce0f-4cae-9d5f-0d5e636e7809':682 '401':66,148 '403':152 '404':155 '422':62,136,159 '429':59,165 '4b300178':1094 '4b300178-131c-d902-d54e-72d90ba1620j':1093 '4cae':685 '72d90ba1620j':1098 '9d5f':686 'a2p':358 'abc':82,460 'accept':875,1601 'addit':303,1037,1267,1417,1464,1552,1612,1689 'address':403 'age':534 'ageg':531 'alphanumer':509,828 'alreadi':42 'alway':67,718 'api':26,50,130,150 'apikey':23 'app.post':736 'appeal':1676 'appealreason':1700 'application/json':740 'arrang':556 'assign':232,595,604,1891 'assignedcampaignscount':1174,1175 'associ':514,807,833 'assum':39,248 'async':741 'attach':210 'attribut':1751 'authent':64,574 'auto':180,546 'auto-pagin':179 'auto-renew':545 'automat':195,1204 'autorenew':540 'avail':1155,1590,1631,1801,1841,1943 'await':77,116,185,455,566,679,747,962,1012,1090,1138,1211,1257 'backoff':171 'bash':9 'behind':374 'beyond':331 'bodi':732 'boolean':532,541,550,838 'brand':203,349,350,376,389,405,417,513,805,937,945,961,966,1153,1225,1344,1367,1379,1388,1400,1404,1452,1498,1513,1518,1540,1567 'brand.altbusinessid':972 'brand.altbusinessidtype':973 'brand.assignedcampaignscount':974 'brand.brandid':975 'brand.state':971 'brand.status':970 'brandid':505,568,803,950,955,995,1005,1015,1176,1177,1245,1250,1371,1392,1402,1411,1428,1435,1450,1458,1477,1485,1496,1502,1511,1523,1538,1546,1565,1573,1583 'brandlistrespons':1213 'brandlistresponse.identitystatus':1217 'brandlistresponse.page':1221 'brandlistresponse.records':1222 'brandlistresponse.totalrecords':1223 'busi':436,444 'bxxx001':964,1016,1259 'bxxxxxx':569 'ca':517 'call':51,219 'campaign':208,229,250,360,482,483,525,529,539,543,601,649,668,797,810,817,823,836,842,884,1032,1069,1078,1113,1121,1585,1603,1625,1643,1655,1659,1671,1675,1703,1726,1750,1796,1836,1855,1877,1938,1958,1981,1999 'campaignid':641,688,811,1070,1092,1126,1131,1607,1623,1647,1657,1663,1673,1683,1701,1709,1724,1732,1747,1755,1770,1777,1792,1818,1833,1859,1873,1881,1889,1994 'cannot':226 'catch':91,769 'caveat':197 'ce0f':684 'charact':395 'check':100,140,162 'choos':1158,1593,1634,1804,1844,1946 'clean':2007 'client':20,40 'client.messaging10dlc.brand':1407 'client.messaging10dlc.brand.create':78,362,456 'client.messaging10dlc.brand.delete':1389 'client.messaging10dlc.brand.externalvetting.imports':1482 'client.messaging10dlc.brand.externalvetting.list':1432 'client.messaging10dlc.brand.externalvetting.order':1455 'client.messaging10dlc.brand.getfeedback':1242,1258 'client.messaging10dlc.brand.getsmsotpbyreference':1348 'client.messaging10dlc.brand.list':1165,1215 'client.messaging10dlc.brand.retrieve':947,963 'client.messaging10dlc.brand.retrievesmsotpstatus':1520 'client.messaging10dlc.brand.revet':1499 'client.messaging10dlc.brand.triggersmsotp':1543 'client.messaging10dlc.brand.update':1368 'client.messaging10dlc.brand.verifysmsotp':1570 'client.messaging10dlc.campaign.acceptsharing':1604 'client.messaging10dlc.campaign.deactivate':1660 'client.messaging10dlc.campaign.getmnometadata':1706 'client.messaging10dlc.campaign.getoperationstatus':1729 'client.messaging10dlc.campaign.getsharingstatus':1774 'client.messaging10dlc.campaign.list':1586 'client.messaging10dlc.campaign.osr.getattributes':1752 'client.messaging10dlc.campaign.retrieve':1123,1139 'client.messaging10dlc.campaign.submitappeal':1680 'client.messaging10dlc.campaign.update':1644 'client.messaging10dlc.campaign.usecase.getcost':1627 'client.messaging10dlc.campaignbuilder.brand.qualifybyusecase':992,1013 'client.messaging10dlc.campaignbuilder.submit':498,567 'client.messaging10dlc.partnercampaigns.list':1837 'client.messaging10dlc.partnercampaigns.listsharedbyme':1797 'client.messaging10dlc.partnercampaigns.retrieve':1856 'client.messaging10dlc.partnercampaigns.retrievesharingstatus':1815 'client.messaging10dlc.partnercampaigns.update':1878 'client.messaging10dlc.phonenumberassignmentbyprofile.assign':617,680 'client.messaging10dlc.phonenumberassignmentbyprofile.listphonenumberstatus':1916 'client.messaging10dlc.phonenumberassignmentbyprofile.retrievestatus':1894 'client.messaging10dlc.phonenumbercampaigns.create':1048,1091 'client.messaging10dlc.phonenumbercampaigns.delete':2000 'client.messaging10dlc.phonenumbercampaigns.list':1939 'client.messaging10dlc.phonenumbercampaigns.retrieve':1959 'client.messaging10dlc.phonenumbercampaigns.update':1982 'client.webhooks.unwrap':748 'close':921 'code':72,147,297,397,581,583 'common':145,929 'compani':428 'companynam':418 'complet':234,2021 'complianc':488 'compliance-crit':487 'confirm':260 'connect':101 'console.error':97,129,137,771 'console.log':469,584,690,760,965,1017,1101,1141,1216,1260 'const':19,75,109,186,453,564,677,745,960,1010,1088,1136,1212,1255 'contact':407,437,445 'content':537 'control':244,989,1239,1362,1447,1535,1721,1744,1767,1789,1830,1870,1908,1931,1973 'control-flow':988,1238,1361,1446,1534,1720,1743,1766,1788,1829,1869,1907,1930,1972 'core':345,917,1041,1271,1421,1468,1556,1616,1693 'cost':1626 'countri':79,390,396,457,1383 'cover':1045,1425,1472,1560,1620,1697 'creat':201,347,825,1028,1033,1413,1460,1548,1608,1685,1977 'created':818 'createdat':1178 'critic':489 'csp':832 'cspid':826 'current':940,981,1116,1231,1354,1374,1395,1439,1527,1650,1666,1713,1736,1759,1781,1822,1862,1900,1923,1965 'cxxx001':689,1140 'd54e':1097 'd902':1096 'dba':385 'deactiv':1658 'decis':991,1241,1364,1449,1537,1723,1746,1769,1791,1832,1872,1910,1933,1975 'default':31 'delet':985,1235,1358,1387,1390,1443,1531,1661,1717,1740,1763,1785,1826,1866,1904,1927,1969,1996,2001 'deprovis':863 'descript':368,504,518,522,570,623,802,867,869,954,1001,1054,1130,1171,1249 'detach':2005 'determin':492 'direct':552 'directlend':549 'display':380 'displaynam':81,377,459,1382 'dormant':877 'e.164':1057 'e.g':728 'ed25519':705,712 'els':104,124 'email':84,398,402,462,1384,1406 'endpoint':1338 'enough':222 'entiti':372 'entitytyp':86,369,464,1381 'entrypoint':354 'enum':270,279,850,874,1173 'err':92,94,106,126,770 'err.headers':111 'err.message':133,775 'err.status':132,135 'error':47,56,61,65,69,99,131,139,146,161 'event':746,754,762,852,865,872 'event.data.event':763 'evpid':1475,1494 'exact':1282 'exampl':37,334 'exhaust':2014 'exist':944,1120,1160,1378,1399,1489,1506,1577,1595,1636,1654,1670,1806,1846,1884,1948,1988,2010 'exponenti':170 'express':729 'express.raw':738 'extern':1430,1453,1479 'factor':573 'fail':53,774,879 'feedback':1226 'fetch':979,1205,1229,1352,1437,1525,1711,1734,1757,1779,1820,1860,1898,1921,1963 'field':142,163,239,259,272,275,282,330,344,473,588,694,785,800,889,905,969,1021,1105,1145,1220,1264,1334 'first':204,433,1274 'firstnam':430 'flow':245,361,924,990,1047,1240,1363,1427,1448,1474,1536,1562,1622,1699,1722,1745,1768,1790,1831,1871,1909,1932,1974 'follow':933 'follow-up':932 'format':144,164 'found':158 'frequenc':1300 'full':1292,2017 'gate':535 'get':936,948,993,1112,1124,1166,1224,1243,1343,1349,1433,1512,1521,1587,1624,1628,1702,1707,1725,1730,1748,1753,1771,1775,1798,1812,1816,1838,1852,1857,1890,1895,1912,1917,1940,1954,1960 'guess':1332 'handl':48,68 'handler':727,909 'handoff':608 'header':717,750 'id':629,646,664,806,814,1075,1228,1519 'identifi':510,829 'import':15,172,910,1478 'includ':708 'index':1279 'indic':839 'industri':413 'infrastructur':212,616 'initi':43 'inlin':288,333,787,894 'inspect':938,1114,1154,1372,1393,1589,1630,1648,1664,1800,1840,1942 'instal':8,11 'instanceof':95,107,127 'insuffici':153 'integ':1187,1190 'integr':795 'invalid':149,779 'invent':267 'iso2':393 'istmobileregist':837 'item':187 'iter':182,191 'javascript':4,7,14,73,452,563,676,723,959,1009,1087,1135,1203,1254 'json':735 'key':27,151 'last':441 'lastnam':438 'legal':427 'lend':553 'limit':58,167 'link':638,653,672,1065,1082 'list':175,893,1152,1429,1584,1793,1834,1935 'loan':555 'lower':1299 'lower-frequ':1298 'make':987,1237,1360,1445,1533,1719,1742,1765,1787,1828,1868,1906,1929,1971 'manual':1678 'market':382 'match':328 'mes':657 'messag':211,216,225,536,575,597,602,615,632 'messagingprofileid':624,681 'metadata':1705 'method':176,1284,1337 'miss':1333 'mno':854,1704 'mobil':83,461,848 'modifi':1487,1504,1575,1882,1986 'mutat':1163,1598,1639,1809,1849,1951 'name':381,383,386,429,434,442 'need':284,887,927,1209 'network':55,98 'new':21,117,1029,1978 'non':424 'non-profit':423 'none':1600,1641,1811,1851,1953 'note':173 'npm':10 'number':858,861,1031,1061,1192,1914,1937,1957,1980,1998 'object':370,409 'ok':768 'omit':35 'oper':196,301,304,912,1268,1276,1306,1335,1727 'option':308,313,447,548,558,1198,1293,1311,1316,2015 'optional-paramet':307,312,1310,1315 'order':1183,1451 'osr':1749 'otp':1346,1515,1542,1569 'otppin':1582 'page':194,1186,1196,1207 'pagin':174,181 'param':448,559,1199,1287,1294,1342 'paramet':269,278,309,314,365,501,620,951,998,1051,1127,1168,1246,1312,1317,2016 'pars':734,757 'part':241,791 'partner':1795 'patch':1879 'path':796 'payload':338,343,759,784,899,904,1302,2023 'per':1195 'permiss':154 'pho':1086 'phone':1030,1060,1913,1936,1956,1979,1997 'phonenumb':1055,1099,1962,1976,1985,1993,1995,2003,2012 'phonenumbercampaign':1089 'phonenumbercampaign.assignmentstatus':1106 'phonenumbercampaign.brandid':1107 'phonenumbercampaign.campaignid':1102,1108 'phonenumbercampaign.createdat':1109 'phonenumbercampaign.failurereasons':1110 'phonenumbercampaign.phonenumber':1111 'pinsm':1563 'pool':859,862 'post':363,499,618,1049,1409,1456,1544,1605,1681 'practic':607 'primari':471,586,692,794,967,1019,1103,1143,1218,1262 'privat':87,465 'process.env':24 'product':71,722 'profil':217,598,603,633 'profit':88,425,466 'promis':118 'provis':497,860,1035,1415,1462,1550,1610,1687 'put':1369,1483,1500,1571,1645,1983 'qualifi':976 'r':119,121 'rate':57,166 'raw':731 'read':292,305,326,335,896,1308 'readi':254,614 'receiv':761 'record':1194,1481 'recordsperpag':1189 'recreat':1492,1509,1580,1887,1991 'refer':262,339,900 'referenceid':1351,1365 'references/api-details.md':293,294,311,321,340,450,451,561,562,901,1201,1202,1289,1290,1314,1324,2025,2026 'regist':844 'registr':218,237,351,610,853,946,1122,1380,1401,1656,1672 'reject':876 'remov':2004 'renew':547 'req':742 'req.body.tostring':749 'req.headers':751 'request':707 'requir':141,367,421,503,622,953,1000,1053,1129,1170,1248,1286,1341 'res':743 'res.status':765,776 'resend':1403 'resend2faemail':1408 'resourc':156,1038,1156,1161,1418,1465,1490,1507,1553,1578,1591,1596,1613,1632,1637,1690,1802,1807,1842,1847,1885,1944,1949,1989,2011 'respons':271,281,318,323,472,587,678,693,968,1011,1020,1104,1144,1219,1256,1263,1295,1321,1326,2018 'response-schema':317,322,1320,1325 'response.annualfee':1018,1022 'response.brandid':1261,1265 'response.campaignid':696 'response.category':1266 'response.maxsubusecases':1023 'response.messagingprofileid':691,695 'response.minsubusecases':1024 'response.mnometadata':1025 'response.monthlyfee':1026 'response.quarterlyfee':1027 'response.taskid':697 'response.tcrcampaignid':698 'result':189,1185 'retri':103,113,168 'retry-aft':112 'retryaft':110,122 'return':177,257 'revet':1497 'review':855,857,1679 'rule':264 'samplemessag':578 'schema':319,324,1296,1322,1327,2019 'sdk':1283,1336 'section':310,320,1313,1323 'see':2024 'segment':414 'send':253,613,767,778 'send-readi':252,612 'sequenti':200 'settimeout':120 'setup':13 'share':667,1602,1772,1794,1813,1835,1854,1876 'shown':45,287 'sign':702 'signatur':711,720,752,780 'singl':1853,1875,1955 'skill':291 'skill-telnyx-10dlc-javascript' 'sms':1345,1514,1541,1568 'sort':1172,1182 'source-team-telnyx' 'sp':675 'specifi':656,1068,1085,1180 'state':941,982,1117,1232,1355,1375,1396,1440,1528,1651,1667,1714,1737,1760,1782,1823,1863,1901,1924,1966 'status':238,258,798,873,881,1347,1516,1728,1773,1814,1893,1915 'step':233,490,935 'string':378,391,399,419,431,439,506,519,527,625,642,659,804,812,819,827,868,956,1003,1006,1056,1071,1132,1251 'submiss':484 'submit':206,480,1674 'subscript':544 'success':235,878 'successsm':1564 'summari':521 'support':406,911 'support@example.com':85,463 't-mobil':846 'task':346,918,1042,1272,1422,1469,1557,1617,1694,1892 'taskid':1897,1911,1919,1934 'tcr':663,864 'tcrcampaignid':658 'technolog':90,468 'telnyx':2,5,12,16,18,22,25,268,701,710,715,851,856 'telnyx-10dlc-javascript':1 'telnyx-signature-ed25519':709 'telnyx-timestamp':714 'telnyx.apiconnectionerror':96 'telnyx.apierror':128 'telnyx.ratelimiterror':108 'telnyxbrand':76,454 'telnyxbrand.altbusinessid':479 'telnyxbrand.brandid':474 'telnyxbrand.displayname':477 'telnyxbrand.identitystatus':470,475 'telnyxbrand.state':478 'telnyxbrand.status':476 'telnyxcampaigncsp':565,1137 'telnyxcampaigncsp.agegated':1147 'telnyxcampaigncsp.autorenewal':1148 'telnyxcampaigncsp.billeddate':1149 'telnyxcampaigncsp.branddisplayname':1150 'telnyxcampaigncsp.brandid':585,590,1142,1151 'telnyxcampaigncsp.campaignid':589 'telnyxcampaigncsp.campaignstatus':591 'telnyxcampaigncsp.failurereasons':593 'telnyxcampaigncsp.status':594,1146 'telnyxcampaigncsp.submissionstatus':592 'timestamp':716,821 'topic-agent-skills' 'topic-ai-coding-agent' 'topic-claude-code' 'topic-cpaas' 'topic-cursor' 'topic-iot' 'topic-llm' 'topic-sdk' 'topic-sip' 'topic-sms' 'topic-speech-to-text' 'topic-telephony' 'traffic':494 'treat':236 'tri':74,744 'trigger':1539 'two':572 'two-factor':571 'type':366,373,502,621,739,764,801,849,952,999,1052,1128,1169,1247 'unix':820 'updat':799,984,1234,1357,1366,1442,1530,1642,1716,1739,1762,1784,1825,1865,1874,1903,1926,1968 'us':80,357,458 'use':183,227,263,299,730,913,1269,1288,1304,1339 'usecas':526,530,576,978,997,1002,1014 'uuid':507,626,643,660,957,1007,1072,1133,1252 'valid':60,138,160,401,753 'variat':930 'verif':580,700,773 'verifi':719,866,1566 'vertic':89,408,411,467 'vet':1431,1454,1480 'vettingclass':1476 'vettingid':1495 'want':636,651,670,1063,1080 'webhook':274,329,337,342,699,703,726,758,772,781,783,888,898,903,1301,2022 'webhook-payload-field':341,902 'whether':493,840 'without':1491,1508,1579,1886,1990 'write':296,907 'yes':371,379,392,400,410,508,520,528,627,644,958,1004,1008,1058,1073,1134,1253","prices":[{"id":"674328f6-d188-4b4f-8a5f-fb1beb5dc7ff","listingId":"8a16d458-fa1f-46e1-a2a0-38bc97ee3f9e","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"team-telnyx","category":"ai","install_from":"skills.sh"},"createdAt":"2026-04-18T22:05:45.493Z"}],"sources":[{"listingId":"8a16d458-fa1f-46e1-a2a0-38bc97ee3f9e","source":"github","sourceId":"team-telnyx/ai/telnyx-10dlc-javascript","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-10dlc-javascript","isPrimary":false,"firstSeenAt":"2026-04-18T22:05:45.493Z","lastSeenAt":"2026-04-22T12:54:38.718Z"}],"details":{"listingId":"8a16d458-fa1f-46e1-a2a0-38bc97ee3f9e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-10dlc-javascript","github":{"repo":"team-telnyx/ai","stars":167,"topics":["agent-skills","ai","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk","sip","sms","speech-to-text","telephony","telnyx","tts","twilio-migration","voice-agents","voice-ai","webrtc","windsurf"],"license":"mit","html_url":"https://github.com/team-telnyx/ai","pushed_at":"2026-04-21T22:09:49Z","description":"Official one-stop shop for AI Agents and developers building with Telnyx.","skill_md_sha":"a3929be0b3da4d808a6853d5301a12b0d1a79602","skill_md_path":"skills/telnyx-10dlc-javascript/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-10dlc-javascript"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-10dlc-javascript","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-10dlc-javascript"},"updatedAt":"2026-04-22T12:54:38.718Z"}}