---
title: "Submit 10DLC campaign for review"
method: POST
path: "/v1/10dlc/campaigns/{campaignId}/submit"
tags: ["10DLC"]
---

# Submit 10DLC campaign for review

`POST /v1/10dlc/campaigns/{campaignId}/submit`

Submit a draft campaign for carrier review. The campaign must be in draft status and its brand must be verified. TCR's one-time registration fee is charged from your balance at submission ($15 for standard use cases, $2 for LOW_VOLUME), passed through at cost and refunded if the carrier rejects it. Once approved, the campaign's monthly TCR fee ($10 standard, $2 LOW_VOLUME) is charged from your balance while the campaign is active — see registrationCostCents and monthlyFeeCents on the campaign object.

## Path parameters

- `campaignId` string, required

## Response `200`

Campaign submitted for review.

- TenDlcCampaignResponse
  - `campaign` TenDlcCampaign, required
    - `id` string, required
    - `brandId` string, required — ID of the brand this campaign belongs to.
    - `name` string, required
    - `useCase` string, required — Campaign use case type.
    - `subUseCases` string[], nullable
    - `description` string, required — Description of the messaging campaign.
    - `sampleMessages` string[], required — Sample messages representative of campaign content.
    - `subscriberOptIn` boolean, required
    - `subscriberOptOut` boolean, required
    - `subscriberHelp` boolean, required
    - `numberPooling` boolean, required
    - `directLending` boolean, required
    - `embeddedLink` boolean, required
    - `embeddedPhone` boolean, required
    - `affiliateMarketing` boolean, required
    - `ageGated` boolean, required
    - `messageFlow` string, nullable
    - `helpMessage` string, nullable
    - `optInKeywords` string[], nullable
    - `optOutKeywords` string[], nullable
    - `status` 'draft' | 'pending' | 'approved' | 'rejected', required — Status of a 10DLC campaign registration.
    - `dailyLimit` integer, nullable — Daily message limit based on brand trust score.
    - `failureReason` string, nullable
    - `registrationCostCents` integer, nullable — One-time registration cost in cents.
    - `monthlyFeeCents` integer, nullable — Recurring monthly fee in cents.
    - `submittedAt` string, date-time, nullable
    - `approvedAt` string, date-time, nullable
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required

## Other responses

- `400` — Campaign already submitted or invalid status.
- `401` — Unauthorized.
- `404` — Campaign not found.

---

[API](https://skmtc.net/zavudev/apis/zavu-unified-messaging-layer-api.md) · [All operations](https://skmtc.net/zavudev/apis/zavu-unified-messaging-layer-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zavudev/zavu-unified-messaging-layer-api/revisions/07b87b6ae707/schema)
