What is ZeroSettle? An iMessage API for business, explained
ZeroSettle is an iMessage API: a real phone number on real iMessage, running on Apple hardware we operate for you, that your code texts customers from and hears back on through a bearer token and signed webhooks. Customers on iPhone see blue bubbles with your brand name and photo, and each reply reaches your webhook about 1–2 seconds after it lands on the line. Plans start at $49 a month, with nothing to install or host.
Key takeaways
- What it is: your business's own phone number on iMessage. Your code sends and receives through a REST API, or the hosted AI agent (Beta) answers for you.
- Who it fits: businesses that hold one-to-one conversations with customers who use iPhone and agreed to hear from them.
- Price: Pro is $49/month for one number, self-serve. Growth is from $599/mo, and Enterprise has custom pricing. There is a 30-day money-back guarantee and no free trial.
- Main limit: a Pro number can send the first message to 5 new contacts a day. People who text you first are never limited: messages with them are unlimited.
- Speed: a send normally returns in 2–5 seconds, and replies reach your webhook in about 1–2 seconds.
- What it does not do: no SMS or Android fallback and no group chats. ZeroSettle is not Apple Messages for Business.
What does ZeroSettle do?
ZeroSettle gives a business its own phone number on iMessage and an API to text customers from it. (An iMessage API is a web API that lets your server send and receive iMessages from a real phone number.) The whole product in one paragraph:
ZeroSettle gives your business its own phone number on real iMessage, running on Apple hardware we operate for you in a server facility. Customers on iPhone see blue bubbles, your brand name and photo, typing indicators, and tapbacks, because every message goes through Apple's own iMessage network. Your code sends and receives through a simple REST API: a bearer token to send, and a signed webhook that receives every reply within a couple of seconds. Use it to answer customers right in Messages, send alerts people read, win back customers who are about to churn, give your AI agent a number people can text, or let users sign in by sending one iMessage. There is nothing to install or host. You get an API token, a web console, and a connector for AI coding agents. Plans start at $49 a month with a 30-day money-back guarantee.
The API docs add: "The number exists only for iMessage: ZeroSettle sets it up, and it is never used for anything else. In the API this number is called your line." Each of the five jobs in that paragraph has a worked example:
- Answer customers in Messages, from the console, or from Slack or your help desk through a small relay you run.
- Send alerts people read, such as a back-in-stock text someone asked for.
- Win back customers seconds after they leave a paywall or cancel flow.
- Give your AI agent a number, with your model and your keys.
- Sign in with one iMessage: Messages opens with
SIGNIN <code>prefilled and the user taps Send.
All 50 workflows are on the use cases hub, and 14 iMessage API providers compared sets ZeroSettle beside the alternatives.
How does a message travel from your code to a customer?
A ZeroSettle message goes from your server to the ZeroSettle API, then to the line, then over Apple's iMessage network to Messages on the customer's iPhone. A reply comes back the other way and reaches your server as a signed webhook.
- Your server calls
POST https://portal.zerosettle.io/api/imessage/sendwith your bearer token, the recipient's number or iMessage email, and a text, photo or voice message. - The ZeroSettle API queues it on your line, which sends one message at a time.
- The line, your number on Apple hardware we operate for you in a server facility, hands the message to Apple, and only then does your call return. The docs put that at "normally 2–5 seconds and at most about 75 for a text (about 105 for a voice message or photo, which ZeroSettle converts first)".
- Apple's iMessage network delivers it to Messages on the customer's iPhone as a blue bubble.
- The customer's reply reaches your webhook as a signed
message.receivedevent about 1–2 seconds after the line receives it. If your server doesn't answer2xxwithin 10 seconds, ZeroSettle retries after 1, 5 and 20 seconds (webhooks explained).
What do customers see?
Customers see an ordinary iMessage conversation: blue bubbles, your brand name and photo, a typing bubble when your code raises one with POST /api/imessage/typing, and tapbacks. ZeroSettle's homepage says they see "Maybe: Your Company" and your photo even if they've never saved your number, and that "The exact display depends on their device and contact settings."
Once you set a name and photo, ZeroSettle shares them automatically with the first message of every conversation, and again after you change them. A photo arrives with its caption in one bubble, and a voice message as Messages' own audio bubble. An iPhone shows a link from an unknown sender as plain text until the recipient replies or saves the number; below, the customer texted first.
- Today 2:14 PM
- Customer: hi, did order 4471 ship yet?
- Business: Hi Dana, it's Fernway Plants. Order 4471 shipped this morning and arrives Thursday.
- Business: Tracking: fernway.example/t/4471👍
- Customer: perfect, thanks!
The customer's side, including cold first messages, is in what customers see when a business texts them.
What does your code see?
Your code sees a bearer token, a few REST endpoints and one signed webhook. ZeroSettle's homepage puts it as "a bearer token and three endpoints: send, react, webhook."
| Job | Endpoint |
|---|---|
| Send a text, photo or voice message | POST /api/imessage/send |
| Add or remove a tapback | POST /api/imessage/reactions |
| Register the webhook | PUT /api/imessage/webhook |
| Check the line and last webhook delivery | GET /api/imessage/line |
# ZEROSETTLE_TOKEN holds the API token from the console
export BASE=https://portal.zerosettle.io
curl -s -X POST -H "Authorization: Bearer $ZEROSETTLE_TOKEN" -H 'Content-Type: application/json' \
-d '{"to":"+18055559876","text":"Hi from the line"}' $BASE/api/imessage/send
- Webhook events:
message.received,message.sent,message.failed,reaction.received,reaction.sent/reaction.failed, and opt-intyping.started/typing.stopped.message.sentmeans the message left the line; no event reports delivered or read. - Signature:
X-ZeroSettle-Signature: t=<unix>,v1=<hex>, an HMAC-SHA256 of"<t>." + raw bodywith your webhook secret. Verify the raw bytes before parsing, compare in constant time, and reject atmore than 300 seconds from now. - Errors: one JSON shape,
{"error": {"code", "message", …}, "detail"}. Branch onerror.code, such as429 new_contact_limitwithretry_after_s. - Live stream: a server-sent-events feed of messages, webhook deliveries, typing and opt-outs; the console is built on it.
- MCP connector:
https://portal.zerosettle.io/mcpsets up your line and server; it is not a channel for messaging customers.
No SDK is needed: every ZeroSettle call in the ZeroSettle API docs is plain HTTPS and JSON, shown with curl, Python or Node.
How do you get started with ZeroSettle?
There are three ways to start with ZeroSettle: get a Pro number in the web console, let an AI coding agent set it up through the MCP connector, or skip the server and let the hosted AI agent (Beta) answer. Numbers can sell out: "If all numbers are taken, you can join the waitlist."
Self-serve Pro from the console
- Press Get started at portal.zerosettle.io/imessage and sign in with your phone number. A number is set aside while you finish.
- Say what the number is for (sign in with iMessage, branded messages, or an AI agent). That claims it.
- Set your brand name and photo, and text yourself a test message (optional).
- Subscribe. The API answers
402until then, and a number not paid for within 30 minutes is released.
From Claude Code, Cursor, Claude or Grok
The ZeroSettle connector signs you up, mints your server's API key, and registers and tests your webhook. You sign in with your phone number, so there is no token to paste. In Claude Code, run claude mcp add --transport http zerosettle https://portal.zerosettle.io/mcp, sign in from /mcp, then use the get-started prompt; connecting Claude Code or Cursor covers the rest.
The hosted AI agent (Beta), with no server
Switch your number to Managed by AI Agent in the console's Messaging tab (with several numbers, the switch is per line group) and write your business context. In the docs' words, "our hosted agent answers every inbound text on the group's lines, from your business context." Your webhook is then not called for those lines, your own sends from them return 403 managed_by_zerosettle, and each text the agent sends uses one AI credit. See how the hosted AI agent answers.
What does it cost, and what are the limits?
ZeroSettle Pro costs $49 a month for one number, Growth is from $599/mo, and Enterprise has custom pricing; there is no per-message charge. The limit that shapes most designs is new contacts: 5 a day on a Pro number, 50 on Growth.
| Plan | Price | What the plan lists |
|---|---|---|
| Pro | $49/month | One number to start (more can be added); "Send the first message to 5 unique contacts per day"; "Unlimited messages with people who message you first"; 1,000 AI credits a month |
| Growth | From $599/mo | "3+ phone numbers"; "Cold outreach to 3,000+ new contacts a month"; dedicated support; 5,000 AI credits a month |
| Enterprise | Custom pricing | "For high volume and compliance needs"; "Cold outreach to 300,000+ new contacts a month" |
Pro is self-serve. Growth starts with Book a demo, and ZeroSettle sends a signup link. Enterprise is through sales at founders@zerosettle.io.
| Limit | Pro | Growth |
|---|---|---|
| New contacts per day (3 AM to 3 AM Eastern) | 5 | 50 |
| New contacts per rolling 15 minutes | Not stated (the 5-a-day cap applies) | 3 |
| Unanswered messages to one contact | 2, then 403 awaiting_reply | 2, then 403 awaiting_reply |
| Photos and voice messages | Only to contacts who have replied | Only to contacts who have replied |
| Outbound and inbound messages | Unlimited | Unlimited |
"A 'new contact' is a handle the line delivers a text, voice message, or photo to first; reactions, typing, profile shares, and failed sends never count. Anyone who texted the line first is never limited, and neither is an ongoing conversation." The docs say the limits keep the number out of Apple's spam filters.
Limit math for a Pro number: 8 people sign up on your site at 9 AM and you text each of them first. The first 5 go out; the other 3 get 429 new_contact_limit with a retry_after_s and can go after the 3 AM Eastern reset, while replies and ongoing threads continue. If those 8 had texted your number first, none of them would count. A first message to someone who isn't on iMessage returns 422 not_on_imessage and uses no slot. Need more new contacts a day? Book a demo to upgrade to Growth.
The 30-day money-back guarantee means "ask within 30 days and you are refunded in full and the subscription is cancelled"; it covers the subscription, not AI credit packs. There is no free trial. ZeroSettle pricing and the plans on the homepage have the details.
What doesn't ZeroSettle do?
ZeroSettle carries one-to-one iMessage conversations only: no SMS fallback, no group chats, no video, and no read receipts in the API.
- No SMS or Android fallback. "The address must be on someone's iMessage; there is no SMS or email fallback." Apple's own support page says a green bubble means a message went as RCS or SMS/MMS instead of iMessage; ZeroSettle never sends that way. SMS fallback for non-Apple phones is on the roadmap.
- No group chats (on the roadmap), and no video or files: photos and voice messages are the attachment types.
- No read or delivered receipts in the API. The terms add that "Delivery of a message does not guarantee that it was read."
- No porting or bring-your-own number. "Phone numbers assigned to your lines remain the property of ZeroSettle"; after a subscription ends, the number is reclaimed.
- No SLA. The homepage shows a "99.9% uptime" stat, but ZeroSettle publishes no service-level agreement, and the terms disclaim uninterrupted operation. See how reliable ZeroSettle is.
- No high-volume marketing. The terms prohibit spam, unsolicited messaging and similar high-volume outreach, and require opt-in consent before the first text.
- Not Apple Messages for Business, where people start chats through Maps, Safari, Siri and Search or a business's website or app. ZeroSettle gives you an ordinary phone number on iMessage (the two compared).
Who is behind ZeroSettle?
ZeroSettle's homepage lists two credentials: "Backed by Y Combinator" and "Built by a team from Apple, Tesla, Microsoft". ZeroSettle's iMessage API Terms state that "ZeroSettle is not affiliated with, endorsed by, or sponsored by Apple Inc."
More explainers are in How ZeroSettle works. To try it, get a number or read the API docs.
Frequently asked questions
Do I need my own iPhone or Mac?
No. ZeroSettle runs the Apple hardware and sets up the number for you. You get an API token and a console, with nothing to install or host.
Can I message customers outside the US?
Yes, if they use iMessage. Include a country code (a leading +, or 00/011); without one, ZeroSettle assumes the US. An iMessage email address works too.
What happens if my number is marked as spam?
It is rare: ZeroSettle's homepage says "across more than 10,000 messages a week we have seen it happen only twice," and "If it does happen, we replace the number right away at no extra charge." Your API token, webhook and code stay as they are, but recipients see a new number.
Can my team reply without writing code?
Yes. The ZeroSettle console shows every conversation live, and teammates you invite can send texts and photos from it.
Sources
- ZeroSettle iMessage API docs: "Your iMessage number", "Send a message", "Attachments", "AI agent", "Webhooks, step by step", "Live stream (SSE)", "Connect your AI agent" and "Errors, limits, and compliance". Checked October 12, 2026.
- ZeroSettle iMessage API Terms, sections 5, 6, 7, 13 and 14. Last modified September 28, 2026.
- ZeroSettle homepage: plans, stats and FAQ. Checked October 12, 2026.
- Why are my iPhone messages green?, Apple Support. Published June 18, 2026; checked October 8, 2026.
- How to use Messages for Business, Apple Support. Published June 5, 2026; checked October 8, 2026.