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 it

Note Markdown styling (format: "markdown") is a Blooio iMessage feature, not an Apple Messages for Business one — Apple Messages for Business carries plain text only. Send text as the exact string the customer should see; any Markdown delimiters would arrive as literal characters.

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 attachments at 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 it

Which 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