> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.pinnacle.sh/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.pinnacle.sh/_mcp/server.

# 10DLC Campaigns

> Register, submit, and launch compliant 10DLC messaging campaigns.

Follow the sequence below to start sending production 10DLC traffic.

⏱️ **Approval time:** Around 1-2 days

## Prerequisites

* A verified `brandId` ([register one here](/guides/brands))
* Documented opt-in, help, and opt-out copy that matches your actual flows
* Sample outbound messages covering the content you intend to send

## Step 1: Create or update the campaign

* Call [`POST /campaigns/dlc`](/api-reference/campaigns/10-dlc/upsert) with the brand, use case, keywords, sample messages, and compliance metadata.

> **Optional helpers**
>
> * [`POST /campaigns/dlc/autofill`](/api-reference/campaigns/10-dlc/autofill) fills in the campaign information based on the existing information for a campaign and its brand.
>
> * [`POST /campaigns/dlc/validate`](/api-reference/campaigns/10-dlc/validate) surfaces
>   formatting and campaign issues. Treat the response as guidance only; it never
>   blocks campaign submission but is intended to guide you.

## Step 2: Submit for carrier review

* Call [`POST /campaigns/dlc/submit/{campaignId}`](/api-reference/campaigns/10-dlc/submit) to submit the campaign for carrier review.
* Changes may be requested and you will need to resubmit.

## Step 3: Watch review progress

* Pull the full record and its status with [`GET /campaigns/dlc/{campaignId}`](/api-reference/campaigns/10-dlc/get).
* Force a status refresh using [`GET /status/dlc-campaign/{campaignId}`](/api-reference/status/dlc-campaign).

## Step 4: Attach numbers and start sending messages

### Purchase phone numbers

See our [phone numbers guide](/guides/purchase-phone-numbers) for detailed instructions on searching and purchasing numbers.

### Attach number to campaign

Attach owned numbers to the campaign via [`POST /phone-numbers/attach-campaign`](/api-reference/phone-numbers/attach-campaign).

* Processing time: Up to 10 minutes
* Status check: [`GET /status/dlc-campaign/{campaignId}`](/api-reference/status/dlc-campaign)

### Send messages

Start messaging with [`POST /messages/send/sms`](/api-reference/messages/send-sms) or [`POST /messages/send/mms`](/api-reference/messages/send-mms). While waiting for approval, you'll also be able to send test messages with our sandbox numbers. See our [sending messages guide](/guides/messages/sending#sending-from-a-number) for detailed instructions on sending messages.