{"id":"ce3111a8-093f-440a-b366-bab6bc93a1a4","shortId":"sbmkpw","kind":"skill","title":"telnyx-10dlc-java","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx 10DLC - Java\n\n## Installation\n\n```text\n<!-- Maven -->\n<dependency>\n    <groupId>com.telnyx.sdk</groupId>\n    <artifactId>telnyx</artifactId>\n    <version>6.36.0</version>\n</dependency>\n\n// Gradle\nimplementation(\"com.telnyx.sdk:telnyx:6.36.0\")\n```\n\n## Setup\n\n```java\nimport com.telnyx.sdk.client.TelnyxClient;\nimport com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;\n\nTelnyxClient client = TelnyxOkHttpClient.fromEnv();\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```java\nimport com.telnyx.sdk.models.messaging10dlc.brand.BrandCreateParams;\nimport com.telnyx.sdk.models.messaging10dlc.brand.EntityType;\nimport com.telnyx.sdk.models.messaging10dlc.brand.TelnyxBrand;\nimport com.telnyx.sdk.models.messaging10dlc.brand.Vertical;\nBrandCreateParams params = BrandCreateParams.builder()\n    .country(\"US\")\n    .displayName(\"ABC Mobile\")\n    .email(\"support@example.com\")\n    .entityType(EntityType.PRIVATE_PROFIT)\n    .vertical(Vertical.TECHNOLOGY)\n    .build();\nTelnyxBrand telnyxBrand = client.messaging10dlc().brand().create(params);\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 a page. Use `.autoPager()` for automatic iteration: `for (var item : page.autoPager()) { ... }`. For manual control, use `.hasNextPage()` and `.nextPage()`.\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```java\nimport com.telnyx.sdk.models.messaging10dlc.brand.BrandCreateParams;\nimport com.telnyx.sdk.models.messaging10dlc.brand.EntityType;\nimport com.telnyx.sdk.models.messaging10dlc.brand.TelnyxBrand;\nimport com.telnyx.sdk.models.messaging10dlc.brand.Vertical;\n\nBrandCreateParams params = BrandCreateParams.builder()\n    .country(\"US\")\n    .displayName(\"ABC Mobile\")\n    .email(\"support@example.com\")\n    .entityType(EntityType.PRIVATE_PROFIT)\n    .vertical(Vertical.TECHNOLOGY)\n    .build();\nTelnyxBrand telnyxBrand = client.messaging10dlc().brand().create(params);\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```java\nimport com.telnyx.sdk.models.messaging10dlc.campaign.TelnyxCampaignCsp;\nimport com.telnyx.sdk.models.messaging10dlc.campaignbuilder.CampaignBuilderSubmitParams;\n\nCampaignBuilderSubmitParams params = CampaignBuilderSubmitParams.builder()\n    .brandId(\"BXXXXXX\")\n    .description(\"Two-factor authentication messages\")\n    .usecase(\"2FA\")\n    .sampleMessages(java.util.List.of(\"Your verification code is {{code}}\"))\n    .build();\nTelnyxCampaignCsp telnyxCampaignCsp = client.messaging10dlc().campaignBuilder().submit(params);\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```java\nimport com.telnyx.sdk.models.messaging10dlc.phonenumberassignmentbyprofile.PhoneNumberAssignmentByProfileAssignParams;\nimport com.telnyx.sdk.models.messaging10dlc.phonenumberassignmentbyprofile.PhoneNumberAssignmentByProfileAssignResponse;\n\nPhoneNumberAssignmentByProfileAssignParams params = PhoneNumberAssignmentByProfileAssignParams.builder()\n    .messagingProfileId(\"4001767e-ce0f-4cae-9d5f-0d5e636e7809\")\n    .campaignId(\"CXXX001\")\n    .build();\nPhoneNumberAssignmentByProfileAssignResponse response = client.messaging10dlc().phoneNumberAssignmentByProfile().assign(params);\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```java\nimport com.telnyx.sdk.core.UnwrapWebhookParams;\nimport com.telnyx.sdk.core.http.Headers;\n\n// In your webhook handler (e.g., Spring — use raw body):\n@PostMapping(\"/webhooks\")\npublic ResponseEntity<String> handleWebhook(\n    @RequestBody String payload,\n    HttpServletRequest request) {\n  try {\n    Headers headers = Headers.builder()\n        .put(\"telnyx-signature-ed25519\", request.getHeader(\"telnyx-signature-ed25519\"))\n        .put(\"telnyx-timestamp\", request.getHeader(\"telnyx-timestamp\"))\n        .build();\n    var event = client.webhooks().unwrap(\n        UnwrapWebhookParams.builder()\n            .body(payload)\n            .headers(headers)\n            .build());\n    // Signature valid — process the event\n    System.out.println(\"Received webhook event\");\n    return ResponseEntity.ok(\"OK\");\n  } catch (Exception e) {\n    System.err.println(\"Webhook verification failed: \" + e.getMessage());\n    return ResponseEntity.badRequest().body(\"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```java\nimport com.telnyx.sdk.models.messaging10dlc.brand.BrandRetrieveParams;\nimport com.telnyx.sdk.models.messaging10dlc.brand.BrandRetrieveResponse;\n\nBrandRetrieveResponse brand = client.messaging10dlc().brand().retrieve(\"BXXX001\");\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```java\nimport com.telnyx.sdk.models.messaging10dlc.campaignbuilder.brand.BrandQualifyByUsecaseParams;\nimport com.telnyx.sdk.models.messaging10dlc.campaignbuilder.brand.BrandQualifyByUsecaseResponse;\n\nBrandQualifyByUsecaseParams params = BrandQualifyByUsecaseParams.builder()\n    .brandId(\"BXXX001\")\n    .usecase(\"CUSTOMER_CARE\")\n    .build();\nBrandQualifyByUsecaseResponse response = client.messaging10dlc().campaignBuilder().brand().qualifyByUsecase(params);\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```java\nimport com.telnyx.sdk.models.messaging10dlc.phonenumbercampaigns.PhoneNumberCampaign;\nimport com.telnyx.sdk.models.messaging10dlc.phonenumbercampaigns.PhoneNumberCampaignCreate;\nimport com.telnyx.sdk.models.messaging10dlc.phonenumbercampaigns.PhoneNumberCampaignCreateParams;\n\nPhoneNumberCampaignCreate params = PhoneNumberCampaignCreate.builder()\n    .campaignId(\"4b300178-131c-d902-d54e-72d90ba1620j\")\n    .phoneNumber(\"+18005550199\")\n    .build();\nPhoneNumberCampaign phoneNumberCampaign = client.messaging10dlc().phoneNumberCampaigns().create(params);\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```java\nimport com.telnyx.sdk.models.messaging10dlc.campaign.CampaignRetrieveParams;\nimport com.telnyx.sdk.models.messaging10dlc.campaign.TelnyxCampaignCsp;\n\nTelnyxCampaignCsp telnyxCampaignCsp = client.messaging10dlc().campaign().retrieve(\"CXXX001\");\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```java\nimport com.telnyx.sdk.models.messaging10dlc.brand.BrandListPage;\nimport com.telnyx.sdk.models.messaging10dlc.brand.BrandListParams;\n\nBrandListPage page = client.messaging10dlc().brand().list();\n```\n\nPrimary response fields:\n- `page.page`\n- `page.records`\n- `page.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```java\nimport com.telnyx.sdk.models.messaging10dlc.brand.BrandGetFeedbackParams;\nimport com.telnyx.sdk.models.messaging10dlc.brand.BrandGetFeedbackResponse;\n\nBrandGetFeedbackResponse response = client.messaging10dlc().brand().getFeedback(\"BXXX001\");\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","java","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-10dlc-java","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-java","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 (23,400 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.645Z","embedding":null,"createdAt":"2026-04-18T22:05:44.498Z","updatedAt":"2026-04-22T12:54:38.645Z","lastSeenAt":"2026-04-22T12:54:38.645Z","tsv":"'+16':398 '+18005550199':1135 '+2':1436 '+29':523 '+6':1244 '/10dlc/brand':316,960,1214,1421,1444,1464,1491,1517,1547,1566,1589,1614,1643 '/10dlc/brand/feedback':1288 '/10dlc/brand/smsotp':1399 '/10dlc/campaign':1167,1661,1726,1744,1766,1794,1819,1845,1869 '/10dlc/campaign/acceptsharing':1681 '/10dlc/campaign/usecase/cost':1707 '/10dlc/campaignbuilder':466 '/10dlc/campaignbuilder/brand':1011 '/10dlc/partner_campaigns':1938,1959,1983 '/10dlc/partnercampaign':1914 '/10dlc/partnercampaign/sharedbyme':1894 '/10dlc/phone_number_campaigns':1080,2050,2072,2097,2117 '/10dlc/phonenumberassignmentbyprofile':596,2001,2025 '/2faemail':1466 '/appeal':1768 '/externalvetting':1493,1519,1549 '/mnometadata':1796 '/operationstatus':1821 '/osr/attributes':1847 '/phonenumbers':2027 '/private/public':378 '/revet':1568 '/sharing':1871,1916 '/smsotp':1591,1616,1645 '/usecase':1013 '/webhooks':723 '0d5e636e7809':667 '10dlc':3,6,148,309 '131c':1130 '2':346 '2fa':546,1458 '4001767e':663 '4001767e-ce0f-4cae-9d5f-0d5e636e7809':662 '401':57,98 '403':102 '404':105 '422':53,109 '429':50,115 '4b300178':1129 '4b300178-131c-d902-d54e-72d90ba1620j':1128 '4cae':665 '6.36.0':12,17 '72d90ba1620j':1133 '9d5f':666 'a2p':308 'abc':79,419 'accept':884,1674 'acceptshar':1679 'addit':253,1065,1314,1471,1524,1621,1687,1773 'address':355 'age':500 'ageg':497 'alphanumer':475,837 'alreadi':33 'alway':58,703 'api':41,100 'appeal':1758 'appealreason':1784 'arrang':522 'assign':182,570,579,594,675,1994 'assignedcampaignscount':1221,1222 'associ':480,816,842 'assum':30,198 'attach':160 'attribut':1839 'authent':55,543 'auto':512 'auto-renew':511 'automat':133 'autopag':131 'autorenew':506 'avail':1200,1663,1709,1896,1940,2052 'backoff':121 'behind':326 'beyond':281 'bodi':721,760,787 'boolean':498,507,516,847 'brand':92,153,299,300,313,328,341,357,369,432,479,814,946,954,957,976,978,1008,1044,1198,1211,1258,1267,1285,1306,1391,1396,1416,1418,1430,1439,1441,1453,1457,1461,1487,1509,1513,1543,1561,1563,1578,1583,1586,1607,1611,1636,1640 'brand.altbusinessid':986 'brand.altbusinessidtype':987 'brand.assignedcampaignscount':988 'brand.brandid':989 'brand.state':985 'brand.status':984 'brandcreateparam':73,413 'brandcreateparams.builder':75,415 'brandgetfeedbackrespons':1303 'brandid':471,537,812,961,966,1012,1022,1034,1223,1224,1289,1294,1422,1445,1455,1465,1482,1492,1507,1518,1537,1548,1559,1567,1576,1590,1605,1615,1634,1644,1654 'brandlistpag':1255 'brandqualifybyusecaseparam':1031 'brandqualifybyusecaseparams.builder':1033 'brandqualifybyusecaserespons':1040 'brandretrieverespons':975 'build':88,428,554,670,754,764,1039,1136 'busi':388,396 'bxxx001':980,1035,1308 'bxxxxxx':538 'ca':483 'call':42,169 'campaign':158,179,200,310,446,447,491,495,505,509,576,626,645,806,819,826,832,845,851,893,1060,1099,1108,1153,1161,1164,1185,1656,1658,1676,1678,1700,1703,1721,1723,1735,1739,1741,1753,1757,1763,1787,1791,1812,1816,1838,1841,1866,1889,1933,1954,1978,2045,2067,2092,2112 'campaignbuild':463,558,1007,1043 'campaignbuildersubmitparam':534 'campaignbuildersubmitparams.builder':536 'campaignid':618,668,820,1100,1127,1168,1173,1682,1698,1727,1737,1745,1755,1767,1785,1795,1810,1820,1835,1846,1861,1870,1885,1915,1930,1960,1974,1984,1992,2107 'cannot':176 'care':1038 'catch':777 'caveat':147 'ce0f':664 'charact':347 'check':112 'choos':1203,1666,1712,1899,1943,2055 'clean':2122 'client':25,31 'client.messaging10dlc':91,312,431,462,557,592,673,956,977,1006,1042,1076,1139,1163,1184,1210,1257,1284,1305,1395,1417,1440,1460,1486,1512,1542,1562,1585,1610,1639,1657,1677,1702,1722,1740,1762,1790,1815,1840,1865,1890,1910,1934,1955,1979,1997,2021,2046,2068,2093,2113 'client.webhooks':757 'close':930 'code':63,97,247,349,551,553 'com.telnyx.sdk':10,15 'com.telnyx.sdk.client.okhttp.telnyxokhttpclient':23 'com.telnyx.sdk.client.telnyxclient':21 'com.telnyx.sdk.core.http.headers':712 'com.telnyx.sdk.core.unwrapwebhookparams':710 'com.telnyx.sdk.models.messaging10dlc.brand.brandcreateparams':66,406 'com.telnyx.sdk.models.messaging10dlc.brand.brandgetfeedbackparams':1300 'com.telnyx.sdk.models.messaging10dlc.brand.brandgetfeedbackresponse':1302 'com.telnyx.sdk.models.messaging10dlc.brand.brandlistpage':1252 'com.telnyx.sdk.models.messaging10dlc.brand.brandlistparams':1254 'com.telnyx.sdk.models.messaging10dlc.brand.brandretrieveparams':972 'com.telnyx.sdk.models.messaging10dlc.brand.brandretrieveresponse':974 'com.telnyx.sdk.models.messaging10dlc.brand.entitytype':68,408 'com.telnyx.sdk.models.messaging10dlc.brand.telnyxbrand':70,410 'com.telnyx.sdk.models.messaging10dlc.brand.vertical':72,412 'com.telnyx.sdk.models.messaging10dlc.campaign.campaignretrieveparams':1179 'com.telnyx.sdk.models.messaging10dlc.campaign.telnyxcampaigncsp':531,1181 'com.telnyx.sdk.models.messaging10dlc.campaignbuilder.brand.brandqualifybyusecaseparams':1028 'com.telnyx.sdk.models.messaging10dlc.campaignbuilder.brand.brandqualifybyusecaseresponse':1030 'com.telnyx.sdk.models.messaging10dlc.campaignbuilder.campaignbuildersubmitparams':533 'com.telnyx.sdk.models.messaging10dlc.phonenumberassignmentbyprofile.phonenumberassignmentbyprofileassignparams':655 'com.telnyx.sdk.models.messaging10dlc.phonenumberassignmentbyprofile.phonenumberassignmentbyprofileassignresponse':657 'com.telnyx.sdk.models.messaging10dlc.phonenumbercampaigns.phonenumbercampaign':1119 'com.telnyx.sdk.models.messaging10dlc.phonenumbercampaigns.phonenumbercampaigncreate':1121 'com.telnyx.sdk.models.messaging10dlc.phonenumbercampaigns.phonenumbercampaigncreateparams':1123 'common':95,938 'compani':380 'companynam':370 'complet':184,2136 'complianc':452 'compliance-crit':451 'confirm':210 'contact':359,389,397 'content':503 'control':141,194,1003,1281,1411,1504,1602,1807,1832,1858,1882,1927,1971,2013,2038,2084 'control-flow':1002,1280,1410,1503,1601,1806,1831,1857,1881,1926,1970,2012,2037,2083 'core':295,926,1069,1318,1475,1528,1625,1691,1777 'cost':1701 'countri':76,342,348,416,1434 'cover':1073,1479,1532,1629,1695,1781 'creat':93,151,297,314,433,834,1056,1061,1078,1141,1467,1520,1617,1683,1769,2088 'created':827 'createdat':1225 'critic':453 'csp':841 'cspid':835 'current':949,995,1156,1273,1403,1425,1448,1496,1594,1730,1748,1799,1824,1850,1874,1919,1963,2005,2030,2076 'custom':1037 'cxxx001':669,1187 'd54e':1132 'd902':1131 'dba':337 'deactiv':1738,1742 'decis':1005,1283,1413,1506,1604,1809,1834,1860,1884,1929,1973,2015,2040,2086 'delet':999,1277,1407,1438,1442,1443,1500,1598,1743,1803,1828,1854,1878,1923,1967,2009,2034,2080,2109,2115,2116 'deprovis':872 'descript':320,470,484,488,539,600,811,876,878,965,1018,1084,1172,1218,1293 'detach':2120 'determin':456 'direct':518 'directlend':515 'display':332 'displaynam':78,329,418,1433 'dormant':886 'e':779 'e.164':1087 'e.g':717 'e.getmessage':784 'ed25519':690,697,740,745 'email':81,350,354,421,1435,1459 'endpoint':1385 'enough':172 'entiti':324 'entitytyp':83,321,423,1432 'entitytype.private':84,424 'entrypoint':304 'enum':220,229,859,883,1220 'error':38,47,52,56,60,96,111 'event':756,769,773,861,874,881 'evpid':1535,1557 'exact':1329 'exampl':28,284 'except':778 'exhaust':2129 'exist':953,1160,1205,1429,1452,1552,1571,1648,1668,1714,1734,1752,1901,1945,1987,2057,2101,2125 'exponenti':120 'extern':1484,1510,1539 'externalvet':1488,1514,1544 'factor':542 'fail':44,783,888 'feedback':1268 'fetch':993,1271,1401,1494,1592,1797,1822,1848,1872,1917,1961,2003,2028,2074 'field':113,189,209,222,225,232,280,294,437,563,679,794,809,898,914,983,1049,1145,1190,1262,1311,1381 'first':154,385,1321 'firstnam':382 'flow':195,311,933,1004,1075,1282,1412,1481,1505,1534,1603,1631,1697,1783,1808,1833,1859,1883,1928,1972,2014,2039,2085 'follow':942 'follow-up':941 'format':114 'found':108 'frequenc':1347 'full':1339,2132 'gate':501 'get':945,959,1010,1152,1166,1213,1266,1287,1390,1398,1490,1577,1588,1660,1699,1706,1786,1793,1811,1818,1836,1844,1862,1868,1893,1907,1913,1937,1951,1958,1993,2000,2017,2024,2049,2063,2071 'getattribut':1843 'getcost':1705 'getfeedback':1286,1307 'getmnometadata':1792 'getoperationstatus':1817 'getsharingstatus':1867 'getsmsotpbyrefer':1397 'gradl':13 'guess':1379 'handl':39,59 'handler':716,918 'handlewebhook':726 'handoff':583 'hasnextpag':143 'header':702,733,734,762,763 'headers.builder':735 'httpservletrequest':730 'id':606,623,641,815,823,1105,1270,1584 'identifi':476,838 'implement':14 'import':20,22,65,67,69,71,122,405,407,409,411,530,532,654,656,709,711,919,971,973,1027,1029,1118,1120,1122,1178,1180,1251,1253,1299,1301,1538,1545 'includ':693 'index':1326 'indic':848 'industri':365 'infrastructur':162,591 'initi':34 'inlin':238,283,796,903 'inspect':947,1154,1199,1423,1446,1662,1708,1728,1746,1895,1939,2051 'instal':8 'insuffici':103 'integ':1234,1237 'integr':804 'invalid':99,788 'invent':217 'iso2':345 'istmobileregist':846 'item':137 'iter':134 'java':4,7,19,64,404,529,653,708,970,1026,1117,1177,1250,1298 'java.util.list.of':548 'key':101 'last':393 'lastnam':390 'legal':379 'lend':519 'limit':49,117 'link':615,630,649,1095,1112 'list':125,902,1197,1212,1259,1483,1489,1655,1659,1886,1931,1936,2042,2048 'listphonenumberstatus':2023 'listsharedbym':1892 'loan':521 'lower':1346 'lower-frequ':1345 'make':1001,1279,1409,1502,1600,1805,1830,1856,1880,1925,1969,2011,2036,2082 'manual':140,1760 'market':334 'match':278 'mes':634 'messag':161,166,175,502,544,572,577,590,609 'messagingprofileid':601,661 'metadata':1789 'method':126,1331,1384 'miss':1380 'mno':863,1788 'mobil':80,420,857 'modifi':1550,1569,1646,1985,2099 'mutat':1208,1671,1717,1904,1948,2060 'name':333,335,338,381,386,394 'need':234,896,936 'network':46 'new':1057,2089 'nextpag':145 'non':376 'non-profit':375 'none':1673,1719,1906,1950,2062 'note':123 'number':867,870,1059,1091,1239,2019,2044,2066,2091,2111 'object':322,361 'ok':776 'oper':146,251,254,921,1315,1323,1353,1382,1813 'option':258,263,399,514,524,1245,1340,1358,1363,2130 'optional-paramet':257,262,1357,1362 'order':1230,1508,1515 'osr':1837,1842 'otp':1393,1580,1609,1638 'otppin':1653 'page':129,1233,1243,1256 'page.autopager':138 'page.page':1263 'page.records':1264 'page.totalrecords':1265 'pagin':124 'param':74,94,400,414,434,525,535,560,659,676,1032,1046,1125,1142,1246,1334,1341,1389 'paramet':219,228,259,264,317,467,597,962,1015,1081,1169,1215,1290,1359,1364,2131 'part':191,800 'partner':1888 'partnercampaign':1891,1911,1935,1956,1980 'patch':1982 'path':805 'payload':288,293,729,761,793,908,913,1349,2138 'per':1242 'permiss':104 'pho':1116 'phone':1058,1090,2018,2043,2065,2090,2110 'phonenumb':1085,1134,2073,2087,2098,2106,2108,2118,2127 'phonenumberassignmentbyprofil':593,674,1998,2022 'phonenumberassignmentbyprofileassignparam':658 'phonenumberassignmentbyprofileassignparams.builder':660 'phonenumberassignmentbyprofileassignrespons':671 'phonenumbercampaign':1077,1137,1138,1140,2047,2069,2094,2114 'phonenumbercampaign.assignmentstatus':1146 'phonenumbercampaign.brandid':1147 'phonenumbercampaign.campaignid':1148 'phonenumbercampaign.createdat':1149 'phonenumbercampaign.failurereasons':1150 'phonenumbercampaign.phonenumber':1151 'phonenumbercampaigncr':1124 'phonenumbercampaigncreate.builder':1126 'pinsm':1632 'pool':868,871 'post':315,465,595,1079,1463,1516,1613,1680,1765 'postmap':722 'practic':582 'primari':435,561,677,803,981,1047,1143,1188,1260,1309 'process':767 'product':62,707 'profil':167,573,578,610 'profit':85,377,425 'provis':461,869,1063,1469,1522,1619,1685,1771 'public':724 'put':736,746,1420,1546,1565,1642,1725,2096 'qualifi':990 'qualifybyusecas':1009,1045 'rate':48,116 'raw':720 'read':242,255,276,285,905,1355 'readi':204,589 'receiv':771 'record':1241,1541 'recordsperpag':1236 'recreat':1555,1574,1651,1990,2104 'refer':212,289,909 'referenceid':1400,1414 'references/api-details.md':243,244,261,271,290,402,403,527,528,910,1248,1249,1336,1337,1361,1371,2140,2141 'regist':853 'registr':168,187,301,585,862,955,1162,1431,1454,1736,1754 'reject':885 'remov':2119 'renew':513 'request':692,731 'request.getheader':741,750 'requestbodi':727 'requir':319,373,469,599,964,1017,1083,1171,1217,1292,1333,1388 'resend':1456 'resend2faemail':1462 'resourc':106,1066,1201,1206,1472,1525,1553,1572,1622,1649,1664,1669,1688,1710,1715,1774,1897,1902,1941,1946,1988,2053,2058,2102,2126 'respons':221,231,268,273,436,562,672,678,982,1041,1048,1144,1189,1261,1304,1310,1342,1368,1373,2133 'response-schema':267,272,1367,1372 'response.annualfee':1050 'response.brandid':1312 'response.campaignid':681 'response.category':1313 'response.maxsubusecases':1051 'response.messagingprofileid':680 'response.minsubusecases':1052 'response.mnometadata':1053 'response.monthlyfee':1054 'response.quarterlyfee':1055 'response.taskid':682 'response.tcrcampaignid':683 'responseent':725 'responseentity.badrequest':786 'responseentity.ok':775 'result':1232 'retri':118 'retriev':958,979,1165,1186,1957,2070 'retrievesharingstatus':1912 'retrievesmsotpstatus':1587 'retrievestatus':1999 'return':127,207,774,785 'revet':1560,1564 'review':864,866,1761 'rule':214 'samplemessag':547 'schema':269,274,1343,1369,1374,2134 'sdk':1330,1383 'section':260,270,1360,1370 'see':2139 'segment':366 'send':203,588 'send-readi':202,587 'sequenti':150 'setup':18 'share':644,1675,1863,1887,1908,1932,1953,1977 'shown':36,237 'sign':687 'signatur':696,705,739,744,765,789 'singl':1952,1976,2064 'skill':241 'skill-telnyx-10dlc-java' 'sms':1392,1579,1608,1637 'sort':1219,1229 'source-team-telnyx' 'sp':652 'specifi':633,1098,1115,1227 'spring':718 'state':950,996,1157,1274,1404,1426,1449,1497,1595,1731,1749,1800,1825,1851,1875,1920,1964,2006,2031,2077 'status':188,208,807,882,890,1394,1581,1814,1864,1909,1996,2020 'step':183,454,944 'string':330,343,351,371,383,391,472,485,493,602,619,636,728,813,821,828,836,877,967,1020,1023,1086,1101,1174,1295 'submiss':448 'submit':156,444,464,559,1756 'submitapp':1764 'subscript':510 'success':185,887 'successsm':1633 'summari':487 'support':358,920 'support@example.com':82,422 'system.err.println':780 'system.out.println':770 't-mobil':855 'task':296,927,1070,1319,1476,1529,1626,1692,1778,1995 'taskid':2002,2016,2026,2041 'tcr':640,873 'tcrcampaignid':635 'telnyx':2,5,11,16,218,686,695,700,738,743,748,752,860,865 'telnyx-10dlc-java':1 'telnyx-signature-ed25519':694,737,742 'telnyx-timestamp':699,747,751 'telnyxbrand':89,90,429,430 'telnyxbrand.altbusinessid':443 'telnyxbrand.brandid':438 'telnyxbrand.displayname':441 'telnyxbrand.identitystatus':439 'telnyxbrand.state':442 'telnyxbrand.status':440 'telnyxcampaigncsp':555,556,1182,1183 'telnyxcampaigncsp.agegated':1192 'telnyxcampaigncsp.autorenewal':1193 'telnyxcampaigncsp.billeddate':1194 'telnyxcampaigncsp.branddisplayname':1195 'telnyxcampaigncsp.brandid':565,1196 'telnyxcampaigncsp.campaignid':564 'telnyxcampaigncsp.campaignstatus':566 'telnyxcampaigncsp.failurereasons':568 'telnyxcampaigncsp.status':569,1191 'telnyxcampaigncsp.submissionstatus':567 'telnyxcli':24 'telnyxokhttpclient.fromenv':26 'text':9 'timestamp':701,749,753,830 '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':458 'treat':186 'tri':732 'trigger':1606 'triggersmsotp':1612 'two':541 'two-factor':540 'type':318,325,468,598,810,858,963,1016,1082,1170,1216,1291 'unix':829 'unwrap':758 'unwrapwebhookparams.builder':759 'updat':808,998,1276,1406,1415,1419,1499,1597,1720,1724,1802,1827,1853,1877,1922,1966,1975,1981,2008,2033,2079,2095 'us':77,307,417 'use':130,142,177,213,249,719,922,1316,1335,1351,1386 'usecas':492,496,545,992,1014,1019,1036,1704 'uuid':473,603,620,637,968,1024,1102,1175,1296 'valid':51,110,353,766 'var':136,755 'variat':939 'verif':550,685,782 'verifi':704,875,1635 'verifysmsotp':1641 'vertic':86,360,363,426 'vertical.technology':87,427 'vet':1485,1511,1540 'vettingclass':1536 'vettingid':1558 'want':613,628,647,1093,1110 'webhook':224,279,287,292,684,688,715,772,781,790,792,897,907,912,1348,2137 'webhook-payload-field':291,911 'whether':457,849 'without':1554,1573,1650,1989,2103 'write':246,916 'yes':323,331,344,352,362,474,486,494,604,621,969,1021,1025,1088,1103,1176,1297","prices":[{"id":"8a3fc212-8cb1-4245-a608-51966d511aaf","listingId":"ce3111a8-093f-440a-b366-bab6bc93a1a4","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:44.498Z"}],"sources":[{"listingId":"ce3111a8-093f-440a-b366-bab6bc93a1a4","source":"github","sourceId":"team-telnyx/ai/telnyx-10dlc-java","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-10dlc-java","isPrimary":false,"firstSeenAt":"2026-04-18T22:05:44.498Z","lastSeenAt":"2026-04-22T12:54:38.645Z"}],"details":{"listingId":"ce3111a8-093f-440a-b366-bab6bc93a1a4","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-10dlc-java","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":"70f83c651a3de08cd32115ba81c460ed3f499219","skill_md_path":"skills/telnyx-10dlc-java/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-10dlc-java"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-10dlc-java","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-10dlc-java"},"updatedAt":"2026-04-22T12:54:38.645Z"}}