How it works

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:

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.

The path of a ZeroSettle message and its reply, as listed below Your server POST /api/imessage/send ZeroSettle API bearer token, one send at a time per line The line: your number Apple hardware we operate for you Apple's iMessage network send returns here, normally 2–5 s Customer's iPhone blue bubble, your name and photo Reply: signed webhook, about 1–2 s
  1. Your server calls POST https://portal.zerosettle.io/api/imessage/send with your bearer token, the recipient's number or iMessage email, and a text, photo or voice message.
  2. The ZeroSettle API queues it on your line, which sends one message at a time.
  3. 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)".
  4. Apple's iMessage network delivers it to Messages on the customer's iPhone as a blue bubble.
  5. The customer's reply reaches your webhook as a signed message.received event about 1–2 seconds after the line receives it. If your server doesn't answer 2xx within 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.

  1. Today 2:14 PM
  2. Customer: hi, did order 4471 ship yet?
  3. Business: Hi Dana, it's Fernway Plants. Order 4471 shipped this morning and arrives Thursday.
  4. Business: Tracking: fernway.example/t/4471👍
  5. Customer: perfect, thanks!
Illustrative example with a fictional shop, shown from the shop's side of the thread. Blue bubbles are sent from the shop's number; gray bubbles are the customer's.

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."

Core ZeroSettle endpoints (API docs, checked October 8, 2026)
JobEndpoint
Send a text, photo or voice messagePOST /api/imessage/send
Add or remove a tapbackPOST /api/imessage/reactions
Register the webhookPUT /api/imessage/webhook
Check the line and last webhook deliveryGET /api/imessage/line
bash
# 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-in typing.started / typing.stopped. message.sent means 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 body with your webhook secret. Verify the raw bytes before parsing, compare in constant time, and reject a t more than 300 seconds from now.
  • Errors: one JSON shape, {"error": {"code", "message", …}, "detail"}. Branch on error.code, such as 429 new_contact_limit with retry_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/mcp sets 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

  1. Press Get started at portal.zerosettle.io/imessage and sign in with your phone number. A number is set aside while you finish.
  2. Say what the number is for (sign in with iMessage, branded messages, or an AI agent). That claims it.
  3. Set your brand name and photo, and text yourself a test message (optional).
  4. Subscribe. The API answers 402 until 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.

ZeroSettle plans (zerosettle.io and API docs, checked October 12, 2026)
PlanPriceWhat the plan lists
Pro$49/monthOne 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
GrowthFrom $599/mo"3+ phone numbers"; "Cold outreach to 3,000+ new contacts a month"; dedicated support; 5,000 AI credits a month
EnterpriseCustom 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.

ZeroSettle limits per number (API docs, checked October 12, 2026)
LimitProGrowth
New contacts per day (3 AM to 3 AM Eastern)550
New contacts per rolling 15 minutesNot stated (the 5-a-day cap applies)3
Unanswered messages to one contact2, then 403 awaiting_reply2, then 403 awaiting_reply
Photos and voice messagesOnly to contacts who have repliedOnly to contacts who have replied
Outbound and inbound messagesUnlimitedUnlimited

"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

  1. 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.
  2. ZeroSettle iMessage API Terms, sections 5, 6, 7, 13 and 14. Last modified September 28, 2026.
  3. ZeroSettle homepage: plans, stats and FAQ. Checked October 12, 2026.
  4. Why are my iPhone messages green?, Apple Support. Published June 18, 2026; checked October 8, 2026.
  5. How to use Messages for Business, Apple Support. Published June 5, 2026; checked October 8, 2026.

Written by the ZeroSettle team. 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.

Text your customers from your own iMessage number

ZeroSettle gives your business its own phone number on real iMessage, running on Apple hardware we operate for you in a server facility. Your code sends with one API call and hears every reply on a signed webhook.

Pro is $49 a month with a 30-day money-back guarantee. Growth, for several numbers working as one, is from $599/mo.