Apple Messages for Business
Connect your brand to Apple Messages for Business and answer customers inside the Messages app through the Blooio v4 API — inbound-first, brand-scoped, and consent-gated.
Apple Messages for Business lets customers start a conversation with your brand from across Apple's ecosystem — and lets you answer them through the same Blooio v4 API you already use for iMessage, SMS, RCS, and WhatsApp. It is inbound-first, brand-scoped, and consent-gated: a customer always taps first, every message is tied to your verified business, and you only message people who have engaged (or explicitly opted in).
This page is the map. It covers what Apple Messages for Business is, how a conversation begins, how to connect a channel to Blooio, how to send your first reply, and where to go for each feature.
Why Apple Messages for Business
- Native, branded, and verified. Your logo, name, and brand color sit at the top of the thread with a verified checkmark. Customers know they're talking to the real you, inside the Messages app they already have.
- Rich by default. Beyond text and media you can send list pickers, time pickers, dynamic forms, and quick replies, take payment with Apple Pay, and let customers sign in — all without leaving the conversation.
- One API. Apple Messages for Business is a channel on Blooio's v4 API (
channel_type: "amb"). The samePOST /v4/messages, chats, webhooks, idempotency, and error model you use elsewhere apply here.
Base URL: https://api.blooio.com/v4 (staging https://api-staging.blooio.com/v4). Authenticate every request with your API key as a bearer token: Authorization: Bearer bl_live_....
How a conversation starts
Apple Messages for Business is customer-initiated. A customer reaches you from a Messages entry point you place on your surfaces:
| Entry point | Where it appears |
|---|---|
| Messages button | Your website, emails, and in-app |
| Apple Maps | Your business's place card in Maps |
| Spotlight & Siri | Search results for your brand |
| App Store | Your app's product page |
| QR codes & deep links | Print, packaging, and signage (an imessage:// / Business Chat link) |
Tapping any of them opens a thread addressed to your business. The one sanctioned way to start a conversation business-first is a business invitation — an Apple-managed template you send to a phone number that has opted in.
The end-to-end lifecycle: a customer taps an entry point, you receive the inbound over a webhook, and you reply over the same API. Click a step for details.
The opaque recipient id
When a customer first messages you, Apple mints an opaque id for that customer, scoped to your business. It is not a phone number or an email, and you can't derive it — Blooio hands it to you as the sender on the inbound message.received webhook that opens the conversation. Address every reply to that id (to); it stays stable for that customer and your brand, so the conversation always threads correctly.
Note Because Apple Messages for Business is inbound-first, you always have the opaque id before you need to reply. You never cold-message an id you haven't been given — the only exception is an invitation, which is addressed to a phone number.
Connect a channel to Blooio
- Register with Apple. Create a Messages for Business account in Apple Business Register and complete Apple's brand verification. Apple issues your Business ID.
- Choose Blooio as your Messaging Service Provider. Select Blooio as your MSP during registration so Apple links your Business ID to Blooio.
- Connect in the dashboard. Open Integrations → Apple Messages for Business and link your Business ID.
- Assign an alias. Give the channel a short alias such as
support. You'll use it asfromon sends (or in the channel-scoped URL). The alias survives swapping the underlying integration, so prefer it over the rawch_...id in your code.
Once linked, the channel appears on your Channels priority list alongside your numbers, and GET /v4/channels lists it with channel_type: "amb".
Send your first reply
A customer messages you; Blooio delivers a message.received webhook carrying the opaque id. Reply by addressing that id from your Apple Messages for Business alias:
curl -X POST https://api.blooio.com/v4/messages \
-H "Authorization: Bearer bl_live_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 3f1c9d2e-7a9b-4c1e-9f2a-8b6d5e4c3a21" \
-d '{
"from": "support",
"to": "opaque-amb-customer-id",
"text": "Thanks for reaching out — how can we help?"
}'Try itfrom— your Apple Messages for Business alias. Omit it and POST to/v4/channels/support/messagesinstead, where the alias lives in the path.to— the opaque id from the inbound webhook.Idempotency-Key— makes a blind retry safe; see Idempotency.
Already holding the chat? Reply with POST /v4/chats/{chatId}/messages and drop from/to — the chat fixes both the sender and the recipient.
A successful call returns a queued message (id, chat_id, channel_id, status). Track delivery with GET /v4/chats/{chatId}/messages/{messageId}/events or a webhook.
What you can send
| Content | Field | Guide |
|---|---|---|
| Plain text | text |
Rich links & media |
| Images, video, files (≤ 100 MB) | attachments |
Rich links & media |
| Rich link card | rich_link |
Rich links & media |
| Quick reply, list/time picker, form, custom app | interactive |
Interactive messages |
| Apple Pay request | interactive (kind: apple_pay) |
Apple Pay |
| Sign in (OAuth 2.0) | interactive (kind: authenticate) |
Sign in |
| Business invitation | invitation |
Business invitations |
| Typing indicator | POST /v4/chats/{chatId}/typing |
Conversation lifecycle |
Where to go next
| Guide | What it covers |
|---|---|
| Interactive messages | Quick replies, list/time pickers, dynamic forms, custom iMessage apps |
| Rich links & media | Rich link cards, images, video, and files |
| Sign in (OAuth 2.0) | Authenticate customers with your identity provider in-thread |
| Business invitations | Start a conversation business-first with an Apple template |
| Apple Pay | Take payment inside the conversation |
| Conversation lifecycle | Typing indicators, read receipts, handoff, and closing |
| Capabilities & limits | OS floors, device gating, timeouts, and TTLs |