For AI agents: a documentation index is available at the root level at /llms.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
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
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.