Developers · Texting
Texting compliance, handled.
Your customers want to text their customers. Carriers want each business registered first, and every text has to follow the rules. KaiCalls files the registration, keeps the opt-in proof and checks every text before it goes. Your platform runs it all through one API.
Built for software companies and agencies that add texting for their own customers. See everything on the developer page.
Brand and campaign for each of your customers, on Twilio or Telnyx.
Texts your platform starts wait for the recipient’s local window.
The same consent and opt-out checks on both.
Filed for each of your customers.
Carriers block texts from business numbers that are not registered. We file the brand and the campaign for each business, with or without an EIN. Your platform does most of the work by API. The owner does one step.
Your platform saves the details
Send the legal name, business type, industry, website, address, contact and what they will text. You can save one answer at a time. The reply lists what is still missing.
POST /api/v1/text-registration action: "save"
MCP: save_text_registration_detailsThe owner does one step on a link
The reply gives you a setup_url. The owner opens it, types the EIN and confirms. The EIN never goes through the API. If their plan does not include registration, they pay there too.
setup_url (from the save or status reply)We file it and track it
We file the brand and the campaign with the carriers on Twilio or Telnyx, whichever fits the business’s numbers. Read the stage and the one next step any time.
GET /api/v1/text-registration?business_id=…
MCP: get_text_registrationSome plans include it. Others add it on.
Either way, the carriers still have to approve it.
- Kai Backup$49 once + $15/mo add-on; carrier approval required
- Kai LineIncluded with an active paid subscription (not during trial); carrier approval required
- Kai OfficeIncluded with an active paid subscription (not during trial); carrier approval required
Save details, then check the status.
Two calls. Use a key with billing scopes for the business. The status reply always names the one next step.
# 1. Save what you know. Never send the EIN: it is refused here.
curl -X POST https://www.kaicalls.com/api/v1/text-registration \
-H "Authorization: Bearer $KAICALLS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "save",
"business_id": "BUSINESS_ID",
"legal_business_name": "Summit Roofing LLC",
"business_type": "Limited Liability Corporation",
"industry": "CONSTRUCTION",
"website_url": "https://summitroofing.example",
"text_types": "service"
}'
# 2. Check the stage, what is missing, and the owner's setup_url.
curl "https://www.kaicalls.com/api/v1/text-registration?business_id=BUSINESS_ID" \
-H "Authorization: Bearer $KAICALLS_API_KEY"Proof of who said yes, and how.
Every consent is saved with the time, the source and, for forms, the exact words the customer saw. A STOP always wins over an older yes.
Web forms
We keep the exact words the form showed, the page URL, the IP and the time. The proof API returns all of it except the IP.
Texts and calls in
A customer who texts or calls the business can get replies about that request. We note how they reached out.
Keywords
A customer who texts a keyword to opt in is saved with the keyword source and time.
Added by hand or by API
Consent you record is saved with its source, so you can tell it apart later.
GET /api/v1/consent-proof?business_id=…&phone=… or the MCP tool get_consent_proof.Checked before it goes, on every number.
These run on every text, whether it comes from your platform, the dashboard or an AI tool. You don’t turn them on.
STOP and HELP on every number
STOP, and plain ways of saying it like “please stop”, opts the number out. HELP gets a reply that names the business and how to stop. Nothing for you to build.
Opted-out numbers are blocked first
Before any text goes out, we check consent and the do-not-call list. A number that said STOP is refused, and the reply says why.
Quiet hours: 8am to 9pm
Texts your platform starts only go out from 8am to 9pm in the recipient’s local time. A reply to someone who just texted goes right away.
State rules
Sales texts to Florida, Oklahoma and Maryland numbers follow those states’ tighter rules: 8am to 8pm, and no more than three in 24 hours.
SMS and WhatsApp from one endpoint.
Pick the channel per message. The same consent, do-not-call, quiet-hours and rate checks apply, and a refusal says which check stopped it.
POST /api/v1/messages with channel: "sms" or "whatsapp", or the MCP tool send_message. The same business can also answer and place calls from the same number.KaiCalls next to Sent.dm.
Sent.dm is a good pick for some jobs. Every fact links to their own page and the date we checked it.
| What you get | Sent.dm | KaiCalls |
|---|---|---|
| What it is | One API for SMS, WhatsApp and RCS. It picks the channel and falls back to another when one fails. | A phone line for agents that work with people: a number, a voice on it, texting, and a way to bring in a human. |
| Phone numbers by API | Not published | Yes. Search and buy US numbers by API or MCP. |
| Answers inbound calls | Voice calls are not among its channels. | Yes. Kai answers, and your agent gets the transcript and events. |
| Places outbound calls | Voice calls are not among its channels. | Yes. Your agent asks Kai to place a call and gets the result back. |
| Texting (SMS) | Yes, plus WhatsApp and RCS. Their team reviews and files 10DLC with TCR in 1 to 3 business days, by dashboard or API. | Yes, with carrier text registration built in. |
| Email is not among its channels. | Sends follow-up and campaign email. Not an inbox your agent reads. | |
| MCP server | Yes, an MCP server and SDKs. | Yes. Hosted MCP server, plus REST and signed webhooks. |
| Brings in a human | Not published | Yes. Rings the owner first, and asks a person to approve before risky steps. |
| Pricing | $0.015 per active contact a month, plus carrier cost with no markup (US texts $0.0047 each). TCR campaign fees waived for 12 months; their own campaign fee by tier. | Flat monthly plans: Kai Backup $10/mo, Kai Line $79/mo and Kai Office $349/mo. No per-minute pricing. |
Sent.dm facts checked November 12, 2026 from Sent, Sent pricing, Sent 10DLC registration docs. Spot something out of date? Tell us and we’ll fix it.
Questions platforms ask first.
Short answers. The compliance docs have the details.
Who is this for?+
Software companies and agencies that want their own customers to text. You run the platform. Each of your customers is a business that needs its own carrier registration.
What if the business has no EIN?+
It files as a sole proprietor. The carriers then check the owner’s own mobile. On Twilio the owner replies YES to a text. On Telnyx the owner types a PIN on the registration page.
Why can’t I send the EIN through the API?+
So it never passes through your systems. The owner types it once, on their own link. A request that carries an EIN is refused with ein_not_accepted.
Does it do RCS?+
No. KaiCalls sends SMS and WhatsApp today, through one endpoint. If you need RCS, a messaging-only provider may fit better.
Register each customer, keep the proof, and send within the rules.
Every check above is in the docs, with the exact error you get back.