A 10DLC registration API lets your platform register each customer's business (the brand) and its texting use case (the campaign) with US carriers from your own code, without making the customer fill out a carrier form. On Ready, each customer is a sub-account with its own numbers and its own A2P 10DLC registration, and the whole thing runs in four calls: create the sub-account, register the brand, give the customer a login and set their prices.

This post is for the CTO, CEO or head of product at a CRM, vertical SaaS product or other platform that sends texts for its customers. It covers what any 10DLC registration API has to handle, how Ready's onboarding flow works, what registration costs, and where the process usually breaks (rejections, resubmits and the gap while a customer waits for approval). If you're still deciding whether the brand should be yours or your customer's, read 10DLC for SaaS platforms: who registers the brand first. The short answer is that it should be the customer's, because carriers want to know who is actually sending.

What a 10DLC registration API has to do

Carriers don't care how good your UI is. They care that every message on a 10-digit long code traces back to a real business with a described use case and a documented opt-in. Unregistered traffic gets filtered. An API that only handles "submit brand" isn't a registration API. It needs to cover the whole lifecycle.

1. Brand registration

The brand is the legal business: legal name, EIN or tax ID, address, website, a contact, and the business type. On a platform with hundreds of customers, the most common failure is a mismatch, such as a DBA in the form while the EIN is registered to the legal name, or a website that doesn't name the business. Your onboarding form should collect the legal name separately from the display name.

2. Campaign registration

The campaign describes what the brand will send: use case, description, sample messages, how people opt in, and the opt-out language. One brand can have more than one campaign. A SaaS customer sending appointment reminders and promotions may need to keep them separate. (We cover that split in the transactional/marketing number separation post.)

3. Optional vetting

External brand vetting is a one-time upgrade: $79 Standard or $179 Enhanced. It raises the brand's trust score, and that can raise its daily throughput cap. Most of your customers won't need it. The ones running large campaigns might.

4. Status you can act on

Registration isn't instant, so your product needs to know where each customer stands: pending, approved or rejected. You can poll GET /v1/registration, and webhooks cover the push side. Event names and payloads are in the docs rather than here, so you build against the real shapes.

5. Rejections and resubmits

Some campaigns get rejected. Common reasons:

  • Sample messages that don't match the stated use case
  • No visible opt-in path, or an opt-in description too vague to verify
  • A website that's down, parked, or doesn't name the business
  • Content in restricted categories (the "SHAFT" family: sex, hate, alcohol, firearms, tobacco)

Your API flow needs a way to edit and resubmit without starting over. Our SHAFT rejection and resubmit guide walks through the sample-message rewrites that usually pass.

The four-call onboarding flow on Ready

The full flow is documented at https://docs.tryready.com/api/sub-accounts#onboard-a-client, and the registration endpoints are at https://docs.tryready.com/api/registration. In outline:

  1. Create the sub-account. POST /v1/sub-accounts creates an isolated account for your customer. It gets its own numbers, contacts, opt-outs and registration. GET /v1/sub-accounts lists the ones you've created.
  2. Register the brand. Submit the customer's business details and campaign. Registration runs in-app on our side: brand plus campaign, with no setup fee.
  3. Give the customer a login. If your customers should see an Inbox, contacts and campaigns without you building those screens, give them access to the Ready app for their sub-account. If you'd rather keep everything inside your own product, skip the login and drive it all through the API.
  4. Set their prices. Decide what your customer pays per text. You earn on the difference between their price and Ready's, under the Partner program terms.

Here is a status check, using only the documented auth header:

curl https://api.tryready.com/v1/registration \
  -H "X-API-Key: YOUR_API_KEY"

For the request body of the brand call, scoping a call to a particular sub-account, and the response fields, use the docs links above. We'd rather you copy from the source than from a blog post that might go stale.

What happens after approval

Once the campaign is approved, sending is a normal API call:

curl -X POST https://api.tryready.com/v1/messages \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Idempotency-Key: 3f1c2a9e-7b4d-4e8a-9c1f-2d6b5a0e8f13" \
  -H "Content-Type: application/json" \
  -d '{"to": "+12125550199", "body": "Your order #1042 has shipped.", "consent_attested": true}'

consent_attested is your customer's promise that the recipient agreed to texts. Ready records that attestation for each send (who sent, to how many, when) as an audit trail. It is not a per-contact consent record. The opt-in time, the wording and the page URL for each contact belong in your customer's own data store, and your platform should help them keep it. The Idempotency-Key means a retried request never sends twice.

What registration costs, per customer

Registration fees are flat and monthly:

ItemPriceWhen it's charged
Brand$10/monthMonthly
Campaign$20/monthMonthly
Phone number$2/month eachMonthly
First charge at submit$25 (first month of brand + campaign)When registration is submitted
Setup feeNoneNone
Standard brand vetting (optional)$79 one-timeIf you choose it
Enhanced brand vetting (optional)$179 one-timeIf you choose it

Worked example (assumptions stated): a platform onboards 40 customers. Each has one brand, one campaign and one number, and none buys vetting.

  • Monthly registration cost per customer: $25/mo for registration and $2/mo per number
  • Across 40 customers: the same fees, 40 times over, every month

That's real money, and you should decide up front whether you absorb it, pass it through, or bundle it into a plan tier.

Messaging cost on top

Texts are billed per segment at the Standard rate of $0.0075/segment, plus a $0.0045 carrier fee per segment. Replies your customers receive are billed the same way. There's one flat rate. Enterprise pricing is custom, so talk to us if that's where you are.

Worked example (assumptions stated): one customer sends 2,000 single-segment texts in a month and gets 400 replies.

  • Segments: 2,000 + 400 = 2,400
  • Platform rate: 2,400 × $0.0075 = $18
  • Carrier fees: 2,400 × $0.0045, itemized separately on the bill

Watch the segment count. A single segment holds 160 GSM-7 characters. Add one emoji and the limit drops to 70, so a 140-character text with one emoji becomes 3 segments instead of 1. That triples the cost of a campaign before anyone notices.

If you set your customer's price at $0.04/segment in step 4 (an example figure, not a recommendation), the $0.0045 carrier fee is added on top of that price, so it never comes out of your margin. What you earn on the difference is set by the Partner program terms.

Compliance add-ons are separate. TCPA/DNC scrubbing and landline validation each add $0.003 per segment when they're switched on for an account, and both are off by default. Prepaid credits run through Stripe.

The honest price comparison

Raw CPaaS APIs have lower per-segment prices. Twilio is around $0.0083/segment, and Telnyx, Plivo and Bandwidth sit in a similar range on the same underlying carrier cost. If your team wants to build its own registration flow, sub-account model, opt-out propagation, quiet-hours logic and inbox, a CPaaS is a reasonable choice and the per-segment savings are real. With Ready you're paying for that layer already built: sub-accounts with their own registration, STOP handling that carries across campaigns, quiet hours held by the recipient's area, and an app your customers can log into. Our Twilio comparison runs the numbers both ways.

How long approval takes, and what customers do meanwhile

Most approvals take 2 to 7 days. That's long enough that a new customer signing up on Monday will ask on Tuesday why they can't text. Plan for it in onboarding:

  • The first 20 texts are free, and they're for one-to-one sends, not campaigns. Use them before registering, because they end the moment a registration is paid for.
  • Up to 500 texts a month before registering, at the normal per-text rate. After that, the account has to register.
  • If the customer bought a number before registering, it sends on Ready's shared registration at the same per-text rate while its own registration is in review.

To send, you add a card and get a number, which is $2 a month with the first month charged when you get it. For a breakdown of where the days go, see how long 10DLC approval actually takes.

If a customer can't wait at all, a blue line (iMessage) needs no 10DLC registration. It costs $99/month per line plus 6 cents a segment, and each line can start up to 50 new conversations a day. That's useful for one-to-one conversations. It doesn't work for campaigns, which send from regular numbers.

Throughput after approval

Approval doesn't mean unlimited sending. These are approximations, because carriers don't publish a rate card:

  • A fresh standard campaign with no vetting usually gets about 1 to 4 segments per second.
  • T-Mobile caps brands per day by trust score: roughly 2,000, 10,000, 40,000, 100,000 or 200,000 messages, lowest score first.
  • AT&T throttles per second and per minute instead of using a hard daily cap.

Worked example (assumed 2 segments per second): a customer sending 5,000 single-segment texts needs about 2,500 seconds, roughly 42 minutes, to drain the queue. Vetting can raise the daily cap when it moves the brand up a trust tier. It doesn't change the per-second rate.

What to build on your side

Even with the registration layer handled, a few pieces belong to your product:

  • A clean intake form that collects the legal business name, EIN, website and opt-in description before anything is submitted. Most rejections trace back to this form.
  • A status surface in your UI fed by polling or webhooks, so customers see "in review" and stop filing support tickets.
  • A resubmit path that lets a customer fix sample messages without re-entering the brand.
  • Consent storage for each contact, separate from Ready's per-send attestation.
  • A pricing decision for registration fees and per-segment resale before your first customer registers.

If a customer of yours is a nonprofit texting donation appeals or a campaign texting voters, they need Ready's written OK first. Have them email support@tryready.com before the first appeal and wait for our reply. Registering alone isn't enough for those.

The practical takeaway

A 10DLC registration API should handle brand, campaign, optional vetting, status and resubmits as one lifecycle, and each of your customers should be registered as its own business. On Ready, that comes down to four calls, $27/month per customer with one number, and most approvals take 2 to 7 days. Customers can use their first 20 free one-to-one texts while you finish onboarding.

Read the docs at https://docs.tryready.com/api/registration, check the per-segment card on pricing, and when you're ready to try the flow on a test sub-account, sign up here.

FAQ

What is a 10DLC registration API?

It's an API that registers a business's brand and texting campaign with US carriers so its messages on 10-digit numbers aren't filtered. Platforms use it to register each of their customers from code. On Ready, each customer gets a sub-account with its own registration.

Should my SaaS register one brand or one per customer?

Register one brand per customer, because carriers want the actual sending business on record. Putting many customers' traffic under your brand mixes their reputations and invites filtering. Ready's sub-accounts each carry their own brand and campaign.

How much does 10DLC registration cost per customer?

On Ready it's $25/mo for registration and $2/month per number, with no setup fee. The first charge at submit is $25. Optional brand vetting is a one-time $79 Standard or $179 Enhanced.

How long does 10DLC approval take through an API?

Most approvals take 2 to 7 days, whether you submit through an API or a form. In the meantime, an account can send up to 500 texts a month at its normal rate. An account that already owns a number sends on Ready's shared registration while its own is in review.

What happens if a 10DLC campaign is rejected?

You fix what the carrier flagged and resubmit. You don't start the brand over. Rejections usually come from sample messages that don't match the use case, an unclear opt-in or a website problem. Check the registration docs for the resubmit path.