Submit 10DLC registration

View as Markdown
Register a US number for 10DLC — the carrier registration required before a number can send SMS or MMS to US phone numbers. US carriers **block** outbound SMS and MMS sent from an unregistered 10-digit number to a US phone number. Registering this number lifts that block. Inbound texts, voice calls in either direction, and messaging to numbers outside the US are unaffected. **Eligibility.** The number must be US, have the `sms` capability, and not have the `imessage` capability (iMessage numbers send over Apple Messages for Business, not carrier SMS). 10DLC registration is currently offered on pay-as-you-go accounts only. An ineligible number returns `403` — read the `tenDlc` object on the number to know in advance. **Fee.** A one-time **$25.00** per number, taken from the account's credit balance when the submission is accepted. A balance below the fee returns `402`. **Resubmitting after a rejection is free** — the number is charged at most once, ever. **What happens next.** The submission lands in `in_review` while Dial checks the details, moves to `with_carrier` once filed with the carrier registry, and finishes as `approved` or `rejected`. Carriers usually decide within 3–5 business days. Dial emails the account owner on approval and on rejection; a rejection carries a `reason` explaining exactly what to change before resubmitting. **Body.** Two parts mirroring what the carrier registry registers: a **brand** (who is registering) and a **campaign** (what they send). A number is registered by joining the campaign. Send them as `application/json`, or — to attach an opt-in screenshot — as `multipart/form-data` with a `data` text part holding that same JSON object plus one `optInImage` file part. ### Brand — both kinds Every field is required. | Key | Description | |---|---| | `brandName` | The registered business or DBA name; for a sole proprietor, the name they trade under. Carriers reject an account id or an email address here. | | `firstName`, `lastName` | The person responsible for the registration. | | `email` | Contact email. | | `phone` | Mobile number in E.164. For a sole proprietor this receives a verification SMS — reply `YES` within 24 hours. **It may not be a Dial number**: carriers won't verify a number issued by a messaging provider, so use a mobile the person answers directly. | | `street`, `city`, `zip` | The address on the registration. Validated against public records, so a typo is a rejection. | | `country` | ISO 3166-1 alpha-2. **Sole proprietor: `US` or `CA` only** — that programme is US/Canada-only. A business may be registered from any country the registry accepts; a non-US brand needs its own country's tax ID and may draw extra vetting. Defaults to `US`. | | `state` | State or province of the registered address — required whatever the country. The two-letter code for the US and Canada (`CA`, `ON`); the region name elsewhere. | ### Brand — `business` only | Key | Description | |---|---| | `businessType` | Legal form. One of `Co-operative`, `Corporation`, `Limited Liability Corporation`, `Non-profit Corporation`, `Partnership`. A sole proprietorship is not a business brand — register as `sole_proprietor` instead. | | `businessIndustry` | Industry code, e.g. `PROFESSIONAL_SERVICES`. See the enum. | | `registrationIdType` | The kind of registration number. One of `EIN`, `DUNS`, `CBN`, `CN`, `ACN`, `CIN`, `VAT`, `VATRN`, `RN`, `Other`. | | `registrationNumber` | The number itself — in the US, the EIN. | | `websiteUrl` | Full `https://` URL. Reviewers check that it matches the brand. | | `jobPosition` | One of `Director`, `GM`, `VP`, `CEO`, `CFO`, `General Counsel`, `Other`. | | `businessTitle` | The actual job title, free text, e.g. `Head of Support`. | | `businessRegionsOfOperation` | Where the business operates. One of `USA_AND_CANADA`, `AFRICA`, `ASIA`, `EUROPE`, `LATIN_AMERICA`. Defaults to `USA_AND_CANADA`. | | `companyType` | One of `private`, `public`, `non-profit`, `government`. Defaults to `private`. | | `stockExchange`, `stockTicker` | **Required when `companyType` is `public`**, ignored otherwise. Carriers check both against public sources, so they must match. | ### Campaign — both kinds | Key | Description | |---|---| | `description` | Who is messaged and why. 40–4096 characters. Reviewers weigh this heavily; a single word is rejected. | | `messageFlow` | How people opt in, naming every method used. 40–1920 characters (room above that is reserved for compliance material Dial appends when filing). | | `optInImage` | Optional screenshot of the opt-in step as customers see it — the consent checkbox, form, or settings screen the `messageFlow` describes. Reviewers approve much faster when they can see the consent screen. Sent as the `optInImage` file part of a `multipart/form-data` request (max 2 MB; JPEG, PNG, WebP, or GIF). On a resubmission, leaving it out keeps the stored screenshot; sending `"optInImage": null` inside `campaign` removes it. | | `samples` | Two to five sample messages, each 20–1024 characters. Each must name the brand and carry an opt-out instruction. If only one message text will ever be sent, repeat it. | | `containsUrls`, `containsPhones` | Booleans — whether messages will contain links or phone numbers. Optional; default false. | | `privacyPolicyUrl`, `termsUrl` | Full `https://` URLs — carriers require both on every campaign. **Required for a `business`**, and reviewers check they sit on the `websiteUrl` you registered. Optional for a sole proprietor: omit them and Dial publishes a privacy notice and terms page for the brand, built from this submission, and registers those. Supplying your own always wins. | ### Campaign — `business` only | Key | Description | |---|---| | `useCase` | What the campaign is for, e.g. `CUSTOMER_CARE`. Optional; defaults to `MIXED`. A sole proprietor campaign is always `SOLE_PROPRIETOR` and takes no value here. | ### Campaign — `sole_proprietor` only | Key | Description | |---|---| | `acceptPublishedNotice` | Boolean. **Required when you send neither `privacyPolicyUrl` nor `termsUrl`** — it authorises Dial to publish a privacy notice and terms page for your brand, built from this submission and naming you as the operator, and to register those URLs with carriers. Send your own two URLs instead and this field is ignored. Sending neither the URLs nor `true` here is a `400` — `tendlc_validation_failed`, keyed on `acceptPublishedNotice` — because carriers require the two pages and one of you has to provide them. |

Authentication

AuthorizationBearer

Your Dial API key, sent as Authorization: Bearer sk_live_...

Path parameters

idstringRequired

Request

This endpoint expects an object.
kindenumRequired

Who is registering. A sole proprietor operates under their own name and has no EIN — lower throughput, quicker to approve. A business is a registered company with an EIN.

Allowed values:
brandobjectRequired

Who is registering — the business identity carriers vet. The business-only fields are absent on a sole proprietor registration.

campaignobjectRequired

What the number sends — the use case carriers approve. A sole proprietor registration’s use case is always SOLE_PROPRIETOR, and its policy URLs are the ones Dial publishes unless it supplied its own.

Response

Submitted, and the fee charged unless this was a free resubmission.
registrationobjectOptional

A number’s 10DLC registration — the brand, the campaign, and where the registration stands. Returned by Get and Submit 10DLC registration.

Errors

400
Bad Request Error
401
Unauthorized Error
402
Payment Required Error
403
Forbidden Error
404
Not Found Error
409
Conflict Error