Rich links & media
Send text, rich link cards, images, video, and files in an Apple Messages for Business conversation — the everyday content types that sit alongside interactive messages.
Not every message needs to be interactive. Most of a conversation is plain text, the occasional link, and media. This page covers the non-interactive content you can send in an Apple Messages for Business conversation: text, rich link cards, and attachments (images, video, audio, and files). For buttons, pickers, forms, Apple Pay, and sign-in, see Interactive messages.
Every example here uses the standard POST /v4/messages endpoint, addressed to the customer's opaque id from the inbound webhook. You can also send through POST /v4/channels/{channel}/messages (alias in the path) or POST /v4/chats/{chatId}/messages (sender and recipient fixed by the chat).
Text
Send plain text with the top-level text field:
curl -X POST https://api.blooio.com/v4/messages \
-H "Authorization: Bearer bl_live_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 9a1f0c3b-2d4e-4f6a-8b1c-0d2e4f6a8b1c" \
-d '{
"from": "support",
"to": "opaque-amb-customer-id",
"text": "Your order #10482 is packed and ships today."
}'Try itNote Markdown styling (
format: "markdown") is a Blooio iMessage feature, not an Apple Messages for Business one — Apple Messages for Business carries plain text only. Sendtextas the exact string the customer should see; any Markdown delimiters would arrive as literal characters.
Rich link card
A rich link renders as a tappable card in the thread instead of a bare URL. Provide the rich_link object with a url (required) and an optional title:
curl -X POST https://api.blooio.com/v4/messages \
-H "Authorization: Bearer bl_live_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 1b2c3d4e-5f60-4712-8a9b-0c1d2e3f4a5b" \
-d '{
"from": "support",
"to": "opaque-amb-customer-id",
"rich_link": {
"url": "https://yourbrand.com/order/10482",
"title": "Track your order"
}
}'Try it| Field | Type | What it is |
|---|---|---|
rich_link.url |
string (https) | Required. The destination Apple renders the card for and opens on tap. |
rich_link.title |
string | Optional title line shown on the card. Omit it and Apple falls back to the page's own metadata. |
Attachments (images, video, audio, files)
Pass one or more public HTTPS URLs in attachments. Blooio fetches each file, stores a frozen copy, and delivers it — later changes to the source URL can't alter what was sent. Add text for a caption.
curl -X POST https://api.blooio.com/v4/messages \
-H "Authorization: Bearer bl_live_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 7c8d9e0f-1a2b-4c3d-8e4f-5a6b7c8d9e0f" \
-d '{
"from": "support",
"to": "opaque-amb-customer-id",
"text": "Here is your updated receipt.",
"attachments": ["https://cdn.yourbrand.com/receipts/10482.pdf"]
}'Try it- Formats. Images, video, audio, and documents are supported, up to Apple's 100 MB per-file limit. A file over that limit is rejected before the send is accepted.
- Use stable URLs. Point
attachmentsat durable CDN URLs. A short-lived signed URL can expire before Blooio fetches it, which fails the send. - Inbound attachments. When a customer sends you a file, the decryption window is short and single-use — Blooio fetches and re-hosts it for you and hands you a Blooio-signed URL on the inbound webhook. Re-host it on your own CDN before showing it to an end user. See the attachment TTL ratchet in Capabilities & limits.
Typing indicator
Show a typing indicator before a reply so the pause reads as "thinking" rather than a stall. It's a separate call, covered in Conversation lifecycle:
curl -X POST https://api.blooio.com/v4/chats/chat_.../typing \
-H "Authorization: Bearer bl_live_..." \
-H "Content-Type: application/json" \
-d '{ "state": "started" }'Try itWhich content type should I use?
| You want to… | Use |
|---|---|
| Say something | text |
| Share a link as a card | rich_link |
| Send a photo, video, or document | attachments |
| Offer tappable choices | interactive |
| Take a payment | Apple Pay |
| Verify who the customer is | Sign in |