{"id":"a91b10e9-ae5d-426f-938b-47c76cacc2ed","shortId":"XeckFE","kind":"skill","title":"telnyx-10dlc-go","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx 10DLC - Go\n\n## Installation\n\n```bash\ngo get github.com/team-telnyx/telnyx-go\n```\n\n## Setup\n\n```go\nimport (\n  \"context\"\n  \"fmt\"\n  \"os\"\n\n  \"github.com/team-telnyx/telnyx-go\"\n  \"github.com/team-telnyx/telnyx-go/option\"\n)\n\nclient := telnyx.NewClient(\n  option.WithAPIKey(os.Getenv(\"TELNYX_API_KEY\")),\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```go\nimport \"errors\"\n\ntelnyxBrand, err := client.Messaging10dlc.Brand.New(context.Background(), telnyx.Messaging10dlcBrandNewParams{\n\t\tCountry:     \"US\",\n\t\tDisplayName: \"ABC Mobile\",\n\t\tEmail: \"support@example.com\",\n\t\tEntityType:  telnyx.EntityTypePrivateProfit,\n\t\tVertical:    telnyx.VerticalTechnology,\n\t})\nif err != nil {\n  var apiErr *telnyx.Error\n  if errors.As(err, &apiErr) {\n    switch apiErr.StatusCode {\n    case 422:\n      fmt.Println(\"Validation error — check required fields and formats\")\n    case 429:\n      fmt.Println(\"Rate limited, retrying...\")\n    default:\n      fmt.Printf(\"API error %d: %s\\n\", apiErr.StatusCode, apiErr.Error())\n    }\n  } else {\n    fmt.Println(\"Network error — check connectivity and retry\")\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:** Use `ListAutoPaging()` for automatic iteration: `iter := client.Resource.ListAutoPaging(ctx, params); for iter.Next() { item := iter.Current() }`.\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.New()` — `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```go\n\ttelnyxBrand, err := client.Messaging10dlc.Brand.New(context.Background(), telnyx.Messaging10dlcBrandNewParams{\n\t\tCountry:     \"US\",\n\t\tDisplayName: \"ABC Mobile\",\n\t\tEmail: \"support@example.com\",\n\t\tEntityType:  telnyx.EntityTypePrivateProfit,\n\t\tVertical:    telnyx.VerticalTechnology,\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\ttelnyxCampaignCsp, err := client.Messaging10dlc.CampaignBuilder.Submit(context.Background(), telnyx.Messaging10dlcCampaignBuilderSubmitParams{\n\t\tBrandID: \"BXXXXXX\",\n\t\tDescription: \"Two-factor authentication messages\",\n\t\tUsecase: \"2FA\",\n\t\tSampleMessages: []string{\"Your verification code is {{code}}\"},\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Messaging10dlc.PhoneNumberAssignmentByProfile.Assign(context.Background(), telnyx.Messaging10dlcPhoneNumberAssignmentByProfileAssignParams{\n\t\tMessagingProfileID: \"4001767e-ce0f-4cae-9d5f-0d5e636e7809\",\n\t\tCampaignID: telnyx.String(\"CXXX001\"),\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n// In your webhook handler:\nfunc handleWebhook(w http.ResponseWriter, r *http.Request) {\n  body, _ := io.ReadAll(r.Body)\n  event, err := client.Webhooks.Unwrap(body, r.Header)\n  if err != nil {\n    http.Error(w, \"Invalid signature\", http.StatusBadRequest)\n    return\n  }\n  // Signature valid — event is the parsed webhook payload\n  fmt.Println(\"Received event:\", event.Data.EventType)\n  w.WriteHeader(http.StatusOK)\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.Get()` — `GET /10dlc/brand/{brandId}`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `BrandId` | string (UUID) | Yes |  |\n\n```go\n\tbrand, err := client.Messaging10dlc.Brand.Get(context.Background(), \"brandId\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Messaging10dlc.CampaignBuilder.Brand.QualifyByUsecase(\n\t\tcontext.Background(),\n\t\t\"usecase\",\n\t\ttelnyx.Messaging10dlcCampaignBuilderBrandQualifyByUsecaseParams{\n\t\t\tBrandID: \"BXXX001\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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.New()` — `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```go\n\tphoneNumberCampaign, err := client.Messaging10dlc.PhoneNumberCampaigns.New(context.Background(), telnyx.Messaging10dlcPhoneNumberCampaignNewParams{\n\t\tPhoneNumberCampaignCreate: telnyx.PhoneNumberCampaignCreateParam{\n\t\t\tCampaignID:  \"4b300178-131c-d902-d54e-72d90ba1620j\",\n\t\t\tPhoneNumber: \"+18005550199\",\n\t\t},\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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.Get()` — `GET /10dlc/campaign/{campaignId}`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `CampaignId` | string (UUID) | Yes |  |\n\n```go\n\ttelnyxCampaignCsp, err := client.Messaging10dlc.Campaign.Get(context.Background(), \"campaignId\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tpage, err := client.Messaging10dlc.Brand.List(context.Background(), telnyx.Messaging10dlcBrandListParams{})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", page)\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```go\n\tresponse, err := client.Messaging10dlc.Brand.GetFeedback(context.Background(), \"brandId\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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.GetSMSOtpStatus()` | `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.GetSharingStatus()` | `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.Get()` | `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.GetStatus()` | `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.Get()` | `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","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk","sip"],"capabilities":["skill","source-team-telnyx","skill-telnyx-10dlc-go","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-go","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 (21,536 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.567Z","embedding":null,"createdAt":"2026-04-18T22:05:43.459Z","updatedAt":"2026-04-22T12:54:38.567Z","lastSeenAt":"2026-04-22T12:54:38.567Z","tsv":"'+16':428 '+18005550199':1109 '+2':1415 '+29':546 '+6':1220 '/10dlc/brand':346,940,1190,1400,1421,1440,1464,1487,1514,1531,1552,1575,1602 '/10dlc/brand/feedback':1267 '/10dlc/brand/smsotp':1380 '/10dlc/campaign':1141,1618,1676,1692,1712,1738,1761,1784,1806 '/10dlc/campaign/acceptsharing':1636 '/10dlc/campaign/usecase/cost':1659 '/10dlc/campaignbuilder':489 '/10dlc/campaignbuilder/brand':992 '/10dlc/partner_campaigns':1869,1888,1910 '/10dlc/partnercampaign':1847 '/10dlc/partnercampaign/sharedbyme':1829 '/10dlc/phone_number_campaigns':1056,1971,1991,2014,2032 '/10dlc/phonenumberassignmentbyprofile':617,1926,1948 '/2faemail':1442 '/appeal':1714 '/externalvetting':1466,1489,1516 '/mnometadata':1740 '/operationstatus':1763 '/osr/attributes':1786 '/phonenumbers':1950 '/private/public':408 '/revet':1533 '/sharing':1808,1849 '/smsotp':1554,1577,1604 '/team-telnyx/telnyx-go':14,23 '/team-telnyx/telnyx-go/option':26 '/usecase':994 '0d5e636e7809':686 '10dlc':3,6,180,341 '131c':1104 '2':376 '2fa':567,1435 '4001767e':682 '4001767e-ce0f-4cae-9d5f-0d5e636e7809':681 '401':64,138 '403':142 '404':145 '422':60,103,149 '429':57,113,155 '4b300178':1103 '4b300178-131c-d902-d54e-72d90ba1620j':1102 '4cae':684 '72d90ba1620j':1107 '9d5f':685 'a2p':340 'abc':82,443 'accept':866,1631 'addit':285,1043,1297,1447,1494,1582,1642,1719 'address':385 'age':523 'ageg':520 'alphanumer':498,819 'alreadi':40 'alway':65,725 'api':32,48,120,140 'apierr':94,99 'apierr.error':126 'apierr.statuscode':101,125 'appeal':1706 'appealreason':1730 'arrang':545 'assign':214,593,602,1921 'assignedcampaignscount':1197,1198 'associ':503,798,824 'assum':37,230 'attach':192 'attribut':1781 'authent':62,564 'auto':535 'auto-renew':534 'automat':168 'autorenew':529 'avail':1178,1620,1661,1831,1871,1973 'backoff':161 'bash':9 'behind':356 'beyond':313 'bodi':741,747 'boolean':521,530,539,829 'brand':185,331,332,358,371,387,399,502,796,928,936,951,964,1176,1248,1374,1397,1409,1418,1430,1434,1482,1528,1543,1548,1570,1597 'brand.altbusinessid':970 'brand.altbusinessidtype':971 'brand.assignedcampaignscount':972 'brand.brandid':973 'brand.state':969 'brand.status':968 'brandid':494,558,794,941,946,955,993,1003,1014,1199,1200,1268,1273,1282,1401,1422,1432,1441,1458,1465,1480,1488,1507,1515,1526,1532,1541,1553,1568,1576,1595,1603,1613 'busi':418,426 'bxxx001':1015 'bxxxxxx':559 'ca':506 'call':49,201 'campaign':190,211,232,342,471,472,514,518,528,532,599,647,666,788,801,808,814,827,833,875,1038,1075,1084,1129,1137,1615,1633,1655,1673,1685,1689,1701,1705,1733,1756,1780,1826,1866,1885,1907,1968,1988,2011,2029 'campaignid':639,687,802,1076,1101,1142,1147,1156,1637,1653,1677,1687,1693,1703,1713,1731,1739,1754,1762,1777,1785,1800,1807,1822,1848,1863,1889,1903,1911,1919,2024 'cannot':208 'case':102,112 'caveat':179 'ce0f':683 'charact':377 'check':107,131,152 'choos':1181,1623,1664,1834,1874,1976 'clean':2037 'client':27,38 'client.messaging10dlc.brand':1437 'client.messaging10dlc.brand.delete':1419 'client.messaging10dlc.brand.externalvetting.imports':1512 'client.messaging10dlc.brand.externalvetting.list':1462 'client.messaging10dlc.brand.externalvetting.order':1485 'client.messaging10dlc.brand.get':938,953 'client.messaging10dlc.brand.getfeedback':1265,1280 'client.messaging10dlc.brand.getsmsotpbyreference':1378 'client.messaging10dlc.brand.getsmsotpstatus':1550 'client.messaging10dlc.brand.list':1188,1229 'client.messaging10dlc.brand.new':76,344,437 'client.messaging10dlc.brand.revet':1529 'client.messaging10dlc.brand.triggersmsotp':1573 'client.messaging10dlc.brand.update':1398 'client.messaging10dlc.brand.verifysmsotp':1600 'client.messaging10dlc.campaign.acceptsharing':1634 'client.messaging10dlc.campaign.deactivate':1690 'client.messaging10dlc.campaign.get':1139,1154 'client.messaging10dlc.campaign.getmnometadata':1736 'client.messaging10dlc.campaign.getoperationstatus':1759 'client.messaging10dlc.campaign.getsharingstatus':1804 'client.messaging10dlc.campaign.list':1616 'client.messaging10dlc.campaign.osr.getattributes':1782 'client.messaging10dlc.campaign.submitappeal':1710 'client.messaging10dlc.campaign.update':1674 'client.messaging10dlc.campaign.usecase.getcost':1657 'client.messaging10dlc.campaignbuilder.brand.qualifybyusecase':990,1010 'client.messaging10dlc.campaignbuilder.submit':487,555 'client.messaging10dlc.partnercampaigns.get':1886 'client.messaging10dlc.partnercampaigns.getsharingstatus':1845 'client.messaging10dlc.partnercampaigns.list':1867 'client.messaging10dlc.partnercampaigns.listsharedbyme':1827 'client.messaging10dlc.partnercampaigns.update':1908 'client.messaging10dlc.phonenumberassignmentbyprofile.assign':615,677 'client.messaging10dlc.phonenumberassignmentbyprofile.getstatus':1924 'client.messaging10dlc.phonenumberassignmentbyprofile.listphonenumberstatus':1946 'client.messaging10dlc.phonenumbercampaigns.delete':2030 'client.messaging10dlc.phonenumbercampaigns.get':1989 'client.messaging10dlc.phonenumbercampaigns.list':1969 'client.messaging10dlc.phonenumbercampaigns.new':1054,1096 'client.messaging10dlc.phonenumbercampaigns.update':2012 'client.resource.listautopaging':171 'client.webhooks.unwrap':746 'close':912 'code':70,137,279,379,572,574 'common':135,920 'compani':410 'companynam':400 'complet':216,2051 'complianc':477 'compliance-crit':476 'confirm':242 'connect':132 'contact':389,419,427 'content':526 'context':18 'context.background':77,438,556,678,954,1011,1097,1155,1230,1281 'control':226,987,1262,1392,1477,1565,1751,1774,1797,1819,1860,1900,1938,1961,2003 'control-flow':986,1261,1391,1476,1564,1750,1773,1796,1818,1859,1899,1937,1960,2002 'core':327,908,1047,1301,1451,1498,1586,1646,1723 'cost':1656 'countri':79,372,378,440,1413 'cover':1051,1455,1502,1590,1650,1727 'creat':183,329,816,1034,1039,1443,1490,1578,1638,1715,2007 'created':809 'createdat':1201 'critic':478 'csp':823 'cspid':817 'ctx':172 'current':931,979,1132,1254,1384,1404,1425,1469,1557,1680,1696,1743,1766,1789,1811,1852,1892,1930,1953,1995 'cxxx001':689 'd':122 'd54e':1106 'd902':1105 'dba':367 'deactiv':1688 'decis':989,1264,1394,1479,1567,1753,1776,1799,1821,1862,1902,1940,1963,2005 'default':118 'delet':983,1258,1388,1417,1420,1473,1561,1691,1747,1770,1793,1815,1856,1896,1934,1957,1999,2026,2031 'deprovis':854 'descript':350,493,507,511,560,621,793,858,860,945,999,1060,1146,1194,1272 'detach':2035 'determin':481 'direct':541 'directlend':538 'display':362 'displaynam':81,359,442,1412 'dormant':868 'e.164':1063 'ed25519':712,719 'els':127 'email':84,380,384,445,1414,1436 'endpoint':1368 'enough':204 'entiti':354 'entitytyp':86,351,447,1411 'entrypoint':336 'enum':252,261,841,865,1196 'err':75,91,98,436,452,455,554,576,579,676,691,694,745,750,952,957,960,1009,1017,1020,1095,1111,1114,1153,1158,1161,1228,1233,1236,1279,1284,1287 'error':45,54,59,63,67,73,106,121,130,136,151 'errors.as':97 'event':744,760,768,843,856,863 'event.data.eventtype':769 'evpid':1505,1524 'exact':1312 'exampl':35,316 'exhaust':2044 'exist':935,1136,1183,1408,1429,1519,1536,1607,1625,1666,1684,1700,1836,1876,1914,1978,2018,2040 'exponenti':160 'extern':1460,1483,1509 'factor':563 'fail':51,870 'feedback':1249 'fetch':977,1252,1382,1467,1555,1741,1764,1787,1809,1850,1890,1928,1951,1993 'field':109,153,221,241,254,257,264,312,326,462,586,701,776,791,880,896,967,1027,1121,1168,1243,1294,1364 'first':186,415,1304 'firstnam':412 'flow':227,343,915,988,1053,1263,1393,1457,1478,1504,1566,1592,1652,1729,1752,1775,1798,1820,1861,1901,1939,1962,2004 'fmt':19 'fmt.printf':119,456,580,695,961,1021,1115,1162,1237,1288 'fmt.println':104,114,128,766 'follow':924 'follow-up':923 'format':111,154 'found':148 'frequenc':1330 'full':1322,2047 'func':735 'gate':524 'get':11,927,939,991,1128,1140,1189,1247,1266,1373,1379,1463,1542,1551,1617,1654,1658,1732,1737,1755,1760,1778,1783,1801,1805,1828,1842,1846,1868,1882,1887,1920,1925,1942,1947,1970,1984,1990 'github.com':13,22,25 'github.com/team-telnyx/telnyx-go':12,21 'github.com/team-telnyx/telnyx-go/option':24 'go':4,7,10,16,71,434,552,674,730,950,1007,1093,1151,1226,1277 'guess':1362 'handl':46,66 'handler':734,900 'handlewebhook':736 'handoff':606 'header':724 'http.error':752 'http.request':740 'http.responsewriter':738 'http.statusbadrequest':756 'http.statusok':771 'id':627,644,662,797,805,1081,1251,1549 'identifi':499,820 'import':17,72,162,901,1508 'includ':715 'index':1309 'indic':830 'industri':395 'infrastructur':194,614 'initi':41 'inlin':270,315,778,885 'inspect':929,1130,1177,1402,1423,1619,1660,1678,1694,1830,1870,1972 'instal':8 'insuffici':143 'integ':1210,1213 'integr':786 'invalid':139,754 'invent':249 'io.readall':742 'iso2':375 'istmobileregist':828 'item':176 'iter':169,170 'iter.current':177 'iter.next':175 'key':33,141 'last':423 'lastnam':420 'legal':409 'lend':542 'limit':56,116,157 'link':636,651,670,1071,1088 'list':884,1175,1459,1614,1823,1864,1965 'listautopag':166 'loan':544 'log.fatal':454,578,693,959,1019,1113,1160,1235,1286 'lower':1329 'lower-frequ':1328 'make':985,1260,1390,1475,1563,1749,1772,1795,1817,1858,1898,1936,1959,2001 'manual':1708 'market':364 'match':310 'mes':655 'messag':193,198,207,525,565,595,600,613,630 'messagingprofileid':622,680 'metadata':1735 'method':1314,1367 'miss':1363 'mno':845,1734 'mobil':83,444,839 'modifi':1517,1534,1605,1912,2016 'mutat':1186,1628,1669,1839,1879,1981 'n':124,458,582,697,963,1023,1117,1164,1239,1290 'name':363,365,368,411,416,424 'need':266,878,918 'network':53,129 'new':1035,2008 'nil':92,453,577,692,751,958,1018,1112,1159,1234,1285 'non':406 'non-profit':405 'none':1630,1671,1841,1881,1983 'note':163 'number':849,852,1037,1067,1215,1944,1967,1987,2010,2028 'object':352,391 'oper':178,283,286,903,1298,1306,1336,1365,1757 'option':290,295,429,537,547,1221,1323,1341,1346,2045 'option.withapikey':29 'optional-paramet':289,294,1340,1345 'order':1206,1481 'os':20 'os.getenv':30 'osr':1779 'otp':1376,1545,1572,1599 'otppin':1612 'page':1209,1219,1227,1240 'page.page':1244 'page.records':1245 'page.totalrecords':1246 'pagin':164 'param':173,430,548,1222,1317,1324,1372 'paramet':251,260,291,296,347,490,618,942,996,1057,1143,1191,1269,1342,1347,2046 'pars':763 'part':223,782 'partner':1825 'patch':1909 'path':787 'payload':320,325,765,775,890,895,1332,2053 'per':1218 'permiss':144 'pho':1092 'phone':1036,1066,1943,1966,1986,2009,2027 'phonenumb':1061,1108,1992,2006,2015,2023,2025,2033,2042 'phonenumbercampaign':1094 'phonenumbercampaign.assignmentstatus':1122 'phonenumbercampaign.brandid':1123 'phonenumbercampaign.campaignid':1118,1124 'phonenumbercampaign.createdat':1125 'phonenumbercampaign.failurereasons':1126 'phonenumbercampaign.phonenumber':1127 'phonenumbercampaigncr':1099 'pinsm':1593 'pool':850,853 'post':345,488,616,1055,1439,1486,1574,1635,1711 'practic':605 'primari':460,584,699,785,965,1025,1119,1166,1241,1292 'product':69,729 'profil':199,596,601,631 'profit':407 'provis':486,851,1041,1445,1492,1580,1640,1717 'put':1399,1513,1530,1601,1675,2013 'qualifi':974 'r':739 'r.body':743 'r.header':748 'rate':55,115,156 'read':274,287,308,317,887,1338 'readi':236,612 'receiv':767 'record':1217,1511 'recordsperpag':1212 'recreat':1522,1539,1610,1917,2021 'refer':244,321,891 'referenceid':1381,1395 'references/api-details.md':275,276,293,303,322,432,433,550,551,892,1224,1225,1319,1320,1344,1354,2055,2056 'regist':835 'registr':200,219,333,608,844,937,1138,1410,1431,1686,1702 'reject':867 'remov':2034 'renew':536 'request':714 'requir':108,349,403,492,620,944,998,1059,1145,1193,1271,1316,1371 'resend':1433 'resend2faemail':1438 'resourc':146,1044,1179,1184,1448,1495,1520,1537,1583,1608,1621,1626,1643,1662,1667,1720,1832,1837,1872,1877,1915,1974,1979,2019,2041 'respons':253,263,300,305,461,585,675,700,966,1008,1026,1120,1167,1242,1278,1293,1325,1351,1356,2048 'response-schema':299,304,1350,1355 'response.annualfee':1024,1028 'response.brandid':1291,1295 'response.campaignid':703 'response.category':1296 'response.maxsubusecases':1029 'response.messagingprofileid':698,702 'response.minsubusecases':1030 'response.mnometadata':1031 'response.monthlyfee':1032 'response.quarterlyfee':1033 'response.taskid':704 'response.tcrcampaignid':705 'result':1208 'retri':117,134,158 'return':239,757 'revet':1527 'review':846,848,1709 'rule':246 'samplemessag':568 'schema':301,306,1326,1352,1357,2049 'sdk':1313,1366 'section':292,302,1343,1353 'see':2054 'segment':396 'send':235,611 'send-readi':234,610 'sequenti':182 'setup':15 'share':665,1632,1802,1824,1843,1865,1884,1906 'shown':43,269 'sign':709 'signatur':718,727,755,758 'singl':1883,1905,1985 'skill':273 'skill-telnyx-10dlc-go' 'sms':1375,1544,1571,1598 'sort':1195,1205 'source-team-telnyx' 'sp':673 'specifi':654,1074,1091,1203 'state':932,980,1133,1255,1385,1405,1426,1470,1558,1681,1697,1744,1767,1790,1812,1853,1893,1931,1954,1996 'status':220,240,789,864,872,1377,1546,1758,1803,1844,1923,1945 'step':215,479,926 'string':360,373,381,401,413,421,495,508,516,569,623,640,657,795,803,810,818,859,947,1001,1004,1062,1077,1148,1274 'submiss':473 'submit':188,469,1704 'subscript':533 'success':217,869 'successsm':1594 'summari':510 'support':388,902 'support@example.com':85,446 'switch':100 't-mobil':837 'task':328,909,1048,1302,1452,1499,1587,1647,1724,1922 'taskid':1927,1941,1949,1964 'tcr':661,855 'tcrcampaignid':656 'telnyx':2,5,31,250,708,717,722,842,847 'telnyx-10dlc-go':1 'telnyx-signature-ed25519':716 'telnyx-timestamp':721 'telnyx.entitytypeprivateprofit':87,448 'telnyx.error':95 'telnyx.messaging10dlcbrandlistparams':1231 'telnyx.messaging10dlcbrandnewparams':78,439 'telnyx.messaging10dlccampaignbuilderbrandqualifybyusecaseparams':1013 'telnyx.messaging10dlccampaignbuildersubmitparams':557 'telnyx.messaging10dlcphonenumberassignmentbyprofileassignparams':679 'telnyx.messaging10dlcphonenumbercampaignnewparams':1098 'telnyx.newclient':28 'telnyx.phonenumbercampaigncreateparam':1100 'telnyx.string':688 'telnyx.verticaltechnology':89,450 'telnyxbrand':74,435 'telnyxbrand.altbusinessid':468 'telnyxbrand.brandid':463 'telnyxbrand.displayname':466 'telnyxbrand.identitystatus':459,464 'telnyxbrand.state':467 'telnyxbrand.status':465 'telnyxcampaigncsp':553,1152 'telnyxcampaigncsp.agegated':1170 'telnyxcampaigncsp.autorenewal':1171 'telnyxcampaigncsp.billeddate':1172 'telnyxcampaigncsp.branddisplayname':1173 'telnyxcampaigncsp.brandid':583,588,1165,1174 'telnyxcampaigncsp.campaignid':587 'telnyxcampaigncsp.campaignstatus':589 'telnyxcampaigncsp.failurereasons':591 'telnyxcampaigncsp.status':592,1169 'telnyxcampaigncsp.submissionstatus':590 'timestamp':723,812 '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':483 'treat':218 'trigger':1569 'two':562 'two-factor':561 'type':348,355,491,619,792,840,943,997,1058,1144,1192,1270 'unix':811 'updat':790,982,1257,1387,1396,1472,1560,1672,1746,1769,1792,1814,1855,1895,1904,1933,1956,1998 'us':80,339,441 'use':165,209,245,281,904,1299,1318,1334,1369 'usecas':515,519,566,976,995,1000,1012 'uuid':496,624,641,658,948,1005,1078,1149,1275 'v':457,581,696,962,1022,1116,1163,1238,1289 'valid':58,105,150,383,759 'var':93 'variat':921 'verif':571,707 'verifi':726,857,1596 'vertic':88,390,393,449 'vet':1461,1484,1510 'vettingclass':1506 'vettingid':1525 'w':737,753 'w.writeheader':770 'want':634,649,668,1069,1086 'webhook':256,311,319,324,706,710,733,764,772,774,879,889,894,1331,2052 'webhook-payload-field':323,893 'whether':482,831 'without':1521,1538,1609,1916,2020 'write':278,898 'yes':353,361,374,382,392,497,509,517,625,642,949,1002,1006,1064,1079,1150,1276","prices":[{"id":"6fe755a0-7a62-47fa-9721-74c0dda8a6d7","listingId":"a91b10e9-ae5d-426f-938b-47c76cacc2ed","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:43.459Z"}],"sources":[{"listingId":"a91b10e9-ae5d-426f-938b-47c76cacc2ed","source":"github","sourceId":"team-telnyx/ai/telnyx-10dlc-go","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-10dlc-go","isPrimary":false,"firstSeenAt":"2026-04-18T22:05:43.459Z","lastSeenAt":"2026-04-22T12:54:38.567Z"}],"details":{"listingId":"a91b10e9-ae5d-426f-938b-47c76cacc2ed","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-10dlc-go","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":"d9f484bb0d28ea3b8843c5b562190b61dcaf55b0","skill_md_path":"skills/telnyx-10dlc-go/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-10dlc-go"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-10dlc-go","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-10dlc-go"},"updatedAt":"2026-04-22T12:54:38.567Z"}}