Ship the agent. We deliver on every platform.
iMessage first, every other platform alongside: one unified API to orchestrate your agent, with a full evaluation suite behind it.
They text your number. Nothing to install.
No app, no account, no permission prompt. The conversation starts in Messages, in the thread your customer already has open, from a real Apple line that belongs to your project.
Your reply carries the iMessage surface.
Tapbacks, group chats and contact cards are commands on the same API, not workarounds. The recipient sees exactly what a person on an iPhone would have sent.
Your code stays where it is.
Mapier is the lines, the transport and the proof — not a runtime. One POST sends; one stream or webhook receives. There is no SDK to adopt and nothing to host.
POST /v1/commands/message.send
Authorization: Bearer $MAPIER_API_KEY
Idempotency-Key: appt-5521-confirmed
{
"target": { "conversationId": "c2f7…" },
"payload": { "text": "See you Thursday, 14:30." }
}
# 202 { "commandId": "…", "status": "queued",
# "disposition": "queued" }Run your Support, Scheduling, Notification, Sales and Coordination agents in the thread your customers already have open.
What is behind an iMessage line
Apple publishes no iMessage API. Mapier operates the hardware Apple does require — real Macs signed into real Apple accounts — and puts a control plane in front of them, so your application never has to know.
01
Your application
POST a command from any language; read events from a stream or a signed webhook.
HTTPS · SSE · webhooks02
The Mapier control plane
Scoped keys, live and test environments, idempotent sends, evidence on every message.
mp_live_ · mp_test_03
A managed Mac fleet
A real Apple account on a Mac we operate, for every iMessage line. Its upkeep is our work.
one Apple account for every iMessage line04
Their Messages app
A blue iMessage bubble from a real number, with the tapbacks and groups people expect.
iMessage
15
Published command types
13
Event types
90 days
Event replay window
6
Webhook delivery attempts
300 s
Signature clock tolerance
64 KiB
Request body cap
2
Isolated environments
30
Error codes, one HTTP status each
Every channel your customers use. iMessage first.
One command vocabulary and one event stream. iMessage is live today; the rest are next on the same API, so nothing built against iMessage has to change.
RCS
Rich Communication Services for Android: a branded sender, read receipts and rich cards, through the same commands and events.
SMS
The universal fallback. When an address cannot receive iMessage or RCS, the same send will go out as a text message.
The WhatsApp Business Platform — templates, media and the customer-service window — behind the same API.
Voice
Calls on the same number as the thread, so a conversation can move to voice and back without losing context.
Telegram
Bots and direct messages on Telegram, with the same event model your iMessage integration already uses.
Signal
Signal messaging for organisations that require it, with the same event model.
Apple Messages for Business
Apple's brand-verified channel: inbound-first, consent-gated conversations under your verified business name and logo.
The conversations that start in an inbox, on the same commands and events as the rest.
The iMessage surface, as commands
One endpoint and 15 published command types, 5 of them on iMessage today — what a person does in Messages, each a POST that settles with evidence on the stream.
Text, to a person or into a thread
Send to a new address or into a one-to-one conversation your line already has open.
Tapbacks
The six classic tapbacks, added or removed, on any message in a direct or group thread.
Group chats
Create a group with its opening message, rename it, add participants.
Contact card
Offer your business's name and photo, so the thread carries an identity.
Inbound attachments
Photos and files sent to your line arrive as ids on the event, fetched by id.
Reachability check
Ask whether an address can receive iMessage before you send, with a reason when not.
Threaded replies
Quote an earlier message, so the reply lands on the line it answers.
Outbound attachments and voice notes
Send a photo, a file, or a voice note on the same line the text goes out on.
Typing indicators
Show that a reply is on its way — the three dots, in the thread.
Polls
Ask the thread a question and take the answer in the conversation.
Rich links
A link goes out as a preview — the title, the image, and the page it opens.
Send effects
Send with an effect — confetti, balloons, a slam — the way Messages does.
One unified API. Nothing to install.
Three steps from a test key to a live line, in whatever language your agent runs in.
Create a project and a test key
Keys are scoped to one project and one environment. A test key reaches a sandbox with a simulated phone — sends and reactions settle there as they would on a live line — and can never reach a real number.
MAPIER_BASE_URL=… MAPIER_API_KEY=<paste-your-key-here>Send a command
One endpoint, 15 published command types. Add an Idempotency-Key to a send and a retry is adopted: the original result comes back and nothing goes out twice.
POST /v1/commands/message.sendListen
Inbound messages and command settlements arrive on a resumable event stream, or as signed webhooks with automatic retries. Request a live line from the console when you are ready.
GET /v1/response_stream
curl -sS -X POST "$MAPIER_BASE_URL/v1/commands/message.send" \
-H "Authorization: Bearer $MAPIER_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-2481-shipped" \
-d '{
"target": {
"channel": "imessage",
"recipient": "+15555550100"
},
"payload": {
"text": "Order 2481 shipped. Reply here if anything is off."
}
}'
# 202 { "commandId": "…", "status": "queued",
# "disposition": "queued" }Reliability you can check
Six properties of the architecture, not promises on a slide. Each tile draws its mechanism.
Retries never double-send
The same Idempotency-Key is adopted, not sent twice.
Delivered means proved
A status settles on transport evidence, never on a guess.
Nothing lost between reconnects
The stream replays 90 days from your Last-Event-ID.
Signed webhooks
HMAC-SHA256 over the timestamp and the body, two signatures during rotation.
Test cannot reach production
Environment is a column on every row, and nothing joins across it.
Isolation in the database
Row-level security on every table. A query without its tenant returns nothing.
Also by construction
- Scoped, revocable keys
- STOP honoured automatically
- Append-only audit log
- Roles and per-project access
Compliance
Compliance, in progress
We don't hold SOC 2 or HIPAA attestations today, and we won't imply we do. Both are in progress — if procurement needs one, talk to us before you build.
- SOC 2In progressAsk us for the current timeline.
- HIPAAIn progressAsk us before you build a healthcare flow.
- Security reviewOn requestA questionnaire and an architecture walkthrough, on full service.
- DPAOn requestA data processing agreement and the sub-processor list, on full service.
Questions we are asked
Is there an official iMessage API?
No. Apple does not publish one. Mapier operates real Macs signed into real Apple accounts and exposes them through a control plane, so your application sends genuine iMessages from a real number without running any Apple hardware.
Do I need a Mac?
No. The fleet is ours to run: provisioning, sessions, macOS updates and recovery. You hold an API key.
What does the recipient see?
On iMessage, a blue-bubble message from a phone number in Messages, with tapbacks and groups behaving as they do between two iPhones — nothing to install and no permission prompt.
What if an address cannot receive iMessage?
Ask first: a reachability check returns whether the address can receive and, when it cannot, why. SMS and RCS delivery for those addresses is next on the same API.
Which channels are live today?
iMessage. RCS, SMS, WhatsApp, Voice, Telegram, Signal, Apple Messages for Business and Email are next on the same API, so nothing you build against iMessage has to change.
How do I start?
Sign in, create a test key and build against the sandbox immediately. The free trial adds a shared managed line, so you can send real iMessages while you evaluate. A live iMessage line is a real Apple account on a Mac in our fleet, so it is provisioned by our team on request rather than by an instant API call. When you need dedicated lines and group chats, book a demo.
Is there an SDK?
None is required. The API is plain HTTPS with an OpenAPI description, so it works from any language. The Mac automation layer underneath, @mapier-labs/imsg-sdk, runs on our fleet; there is nothing for you to install.
How long do you keep data?
Events, which drive the stream and webhooks, are kept for 90 days. Webhook delivery records are kept for 90 days and test-environment messages for 30 days. Live messages are kept for the life of your agreement, and the audit log is never purged.
Send the first message
Thirty minutes with the engineers who built it — or the docs, if you would rather read first.

