---
title: "Register a 10DLC Campaign"
method: POST
path: "/v3/10dlc/brands/{brand_id}/campaigns"
tags: ["10DLC"]
---

# Register a 10DLC Campaign

`POST /v3/10dlc/brands/{brand_id}/campaigns`

## Request

- Base URL: `https://api.wavix.com`
- URL: `https://api.wavix.com/v3/10dlc/brands/{brand_id}/campaigns`
- Auth: HTTP bearer

Registers a 10DLC Campaign under the 10DLC Brand identified by `brand_id`. The Brand must have a verified identity status.

## Path parameters

- `brand_id` string, required

## Request body

- TenDLCCampaignCreateRequest
  - `affiliate_marketing` boolean, required: Indicates whether the Campaign is used for affiliate marketing.
  - `age_gated` boolean, required: Indicates whether the Campaign messages contain age-gated content.
  - `auto_renewal` boolean, required: Indicates whether the Campaign is automatically renewed at the end of each billing period.
  - `direct_lending` boolean, required: Indicates whether the Campaign messages contain direct lending content.
  - `embedded_links` boolean, required: Indicates whether the Campaign messages contain embedded links.
  - `embedded_phones` boolean, nullable: Indicates whether the Campaign messages contain embedded phone numbers.
  - `embedded_link_sample` string, nullable: Sample of an embedded link used in Campaign messages.
  - `description` string, required: Description of the Campaign and its messaging purpose.
  - `optin_workflow` string, required: Description of the workflow through which subscribers opt in to the Campaign.
  - `help` boolean, required: Indicates whether the Campaign provides a help system that subscribers can trigger with a keyword such as HELP or INFO.
  - `help_keywords` string, required: Comma-separated list of help keywords. Keywords are case-insensitive.
  - `help_message` string, required: Acknowledgement sent when a subscriber texts a help keyword.
  - `optin` boolean, required: Indicates whether the Campaign requires subscribers to opt in before receiving messages.
  - `optin_keywords` string, required: Comma-separated list of opt-in keywords. Keywords are case-insensitive.
  - `optin_message` string, required: Acknowledgement sent when a subscriber texts an opt-in keyword.
  - `optout` boolean, required: Indicates whether the Campaign provides an opt-out system that subscribers can trigger with a keyword such as STOP or QUIT.
  - `optout_keywords` string, required: Comma-separated list of opt-out keywords. Keywords are case-insensitive.
  - `optout_message` string, required: Acknowledgement sent when a subscriber texts an opt-out keyword.
  - `name` string, required: Display name of the Campaign.
  - `sample1` string, required: Sample message demonstrating the content sent through the Campaign.
  - `sample2` string, nullable: Sample message demonstrating the content sent through the Campaign.
  - `sample3` string, nullable: Sample message demonstrating the content sent through the Campaign.
  - `sample4` string, nullable: Sample message demonstrating the content sent through the Campaign.
  - `sample5` string, nullable: Sample message demonstrating the content sent through the Campaign.
  - `mock` boolean, required: Indicates whether the Campaign is a mock campaign used for testing. Mock campaigns cannot send production traffic.
  - `usecase` string, required: Registered use case for the Campaign, such as `2FA` or `MARKETING`.
  - `privacy_policy` string: URL of the Campaign privacy policy.
  - `terms_conditions` string, required: URL of the Campaign terms and conditions.

## Response `201`

Returns the registered 10DLC Campaign.

- TenDLCCampaign: Represents a 10DLC campaign registered under a Brand. A Campaign defines the messaging use case, opt-in and opt-out flows, and the phone numbers permitted to send its traffic.
  - `affiliate_marketing` boolean, required: Indicates whether the Campaign is used for affiliate marketing.
  - `age_gated` boolean, required: Indicates whether the Campaign messages contain age-gated content.
  - `auto_renewal` boolean, required: Indicates whether the Campaign should be automatically renewed.
  - `last_bill_date` string, nullable, required: Date and time the Campaign was last billed in ISO 8601 format. `null` if the Campaign has never been billed.
  - `next_bill_date` string, nullable, required: Date and time the Campaign will be billed next in ISO 8601 format. `null` if the next billing date is not scheduled.
  - `direct_lending` boolean, required: Indicates whether the Campaign messages contain direct lending content.
  - `embedded_links` boolean, required: Indicates whether the Campaign messages contain embedded links.
  - `embedded_phones` boolean, required: Indicates whether the Campaign messages contain embedded phone numbers.
  - `embedded_link_sample` string, nullable, required: Sample of an embedded link used in Campaign messages.
  - `brand_id` string, required: Unique identifier of the Brand that owns the Campaign.
  - `campaign_id` string, required: Unique identifier of the Campaign assigned by the registry.
  - `description` string, nullable, required: Description of the Campaign and its messaging purpose.
  - `optin_workflow` string, nullable, required: Description of the workflow through which subscribers opt in to the Campaign.
  - `feedback` string, nullable, required: Feedback from the registry explaining the current `status`.
  - `help` boolean, required: Indicates whether the campaign includes a help system (for example, keyword: HELP, INFO).
  - `help_keywords` string, required: Comma-separated list of help keywords. Keywords are case-insensitive.
  - `help_message` string, nullable, required: Help message sent upon receiving a help keyword.
  - `optin` boolean, required: Indicates whether the Campaign requires subscriber opt-in.
  - `optin_keywords` string, required: Comma-separated list of opt-in keywords. Keywords are case-insensitive.
  - `optin_message` string, nullable, required: Opt-in message sent upon receiving an opt-in keyword.
  - `optout` boolean, required: Indicates whether the campaign includes an opt-out system (for example, keyword: STOP, QUIT).
  - `optout_keywords` string, required: Comma-separated list of opt-out keywords. Keywords are case-insensitive.
  - `optout_message` string, nullable, required: Opt-out message sent upon receiving an opt-out keyword.
  - `name` string, required: Display name of the Campaign.
  - `created_at` string, required: Timestamp when the Campaign was created, in ISO 8601 format.
  - `sample1` string, nullable, required: Sample message demonstrating the content sent through the Campaign.
  - `sample2` string, nullable, required: Sample message demonstrating the content sent through the Campaign.
  - `sample3` string, nullable, required: Sample message demonstrating the content sent through the Campaign.
  - `sample4` string, nullable, required: Sample message demonstrating the content sent through the Campaign.
  - `sample5` string, nullable, required: Sample message demonstrating the content sent through the Campaign.
  - `updated_at` string, required: Timestamp when the Campaign was last updated, in ISO 8601 format.
  - `mock` boolean, required: Indicates whether the Campaign is a mock campaign used for testing. Mock campaigns cannot send production traffic.
  - `usecase` string, required: Registered use case for the Campaign, such as `2FA` or `MARKETING`.
  - `monthly_fee` string, required: Recurring monthly fee charged for the Campaign, as a decimal string.
  - `privacy_policy` string, nullable, required: Privacy policy URL.
  - `terms_conditions` string, nullable, required: Terms and conditions URL.
  - `status` string, required: Current registration status of the Campaign, such as `APPROVED` or `PENDING`.
  - `phone_numbers` string[], required: Phone numbers assigned to the Campaign, in E.164 format.

## Other responses

- `400`: Request failed. Missing or invalid parameter <param_name>
- `401`: Unauthorized
- `403`: Returns when the 10DLC feature is disabled for the account.
- `404`: Returns when no 10DLC Brand matches `brand_id`.
- `422`: Validation error

## Changes

- **2026-09-08** `6a89c962481c`: 3 breaking, 50 info
  - added the pattern `^B[A-Z0-9]{6}$` to the `path` request parameter `brand_id`
  - the response's body type changed from no type to `object` for status `201`
  - the response's body type changed from no type to `object` for status `404`
  - the request property `embedded_link_sample` became optional
  - …49 more
- **2026-05-25** `33be77905120`: 1 info
  - the endpoint scheme security `bearerAuth` was added to the API
- **2026-05-08** `ce71f60fb356`: 10 breaking, 1 info
  - the response property `allOf[subschema #1: TenDlcCampaign]/description` became nullable for the status `201`
  - the response property `allOf[subschema #1: TenDlcCampaign]/help_message` became nullable for the status `201`
  - the response property `allOf[subschema #1: TenDlcCampaign]/last_bill_date` became nullable for the status `201`
  - the response property `allOf[subschema #1: TenDlcCampaign]/next_bill_date` became nullable for the status `201`
  - …7 more
- **2026-04-20** `2e48fd9894e1`: 6 breaking, 5 info
  - the request property `embedded_link_sample` became not nullable
  - the request property `embedded_phones` became not nullable
  - the request property `sample2` became not nullable
  - the request property `sample3` became not nullable
  - …7 more
- **2026-02-12** `fabaadf195a9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/wavix/apis/wavix-apis/changes/v3/10dlc/brands/:brand_id/campaigns/post.md)

---

[API](https://skmtc.dev/wavix/apis/wavix-apis.md) - [All operations](https://skmtc.dev/wavix/apis/wavix-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/wavix/apis/wavix-apis/revisions/f2dde79f05ab?raw)
