Callora·June 1, 2025 · 8 min read

How to Send iMessage from an API in 2025

A developer's guide to programmatic iMessage delivery using LoopMessage + Callora, with automatic SMS fallback for non-Apple recipients.

The Problem

Apple doesn't offer an iMessage API. If you're building an app that needs to reach iPhone users where they actually read messages — the blue bubble — you're out of luck with native APIs.

SMS has 98% open rates, but iMessage has something SMS doesn't: read receipts, rich media, and the trust signal of a blue bubble. For missed-call text-backs, appointment reminders, and lead recovery flows, iMessage converts measurably better.

The Solution: LoopMessage + Callora

Callora wraps LoopMessage's iMessage infrastructure behind a single REST endpoint. You send one API call. Callora routes it:

Channel routing
  • channel: "imessage" — Strict iMessage via LoopMessage. Fails if recipient isn't on iMessage.
  • channel: "auto" — Try iMessage first. If rejected, automatically falls back to SMS via Twilio. If iMessage fails asynchronously, SMS fallback fires via webhook.
  • channel: "sms" — Direct SMS via Twilio. No iMessage attempt.

Quick Start (3 minutes)

# 1. Get a free API key (25 credits)
curl -X POST https://call.metis.gold/api/v1/keys/register \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com"}'

# 2. Send an iMessage (with auto SMS fallback)
curl -X POST https://call.metis.gold/api/v1/messages \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+14155551234",
    "channel": "auto",
    "body": "Hey! Your appointment is tomorrow at 2pm."
  }'

# Response:
# { "id": "msg_x1y2z3", "channel": "auto",
#   "resolved_channel": "imessage", "provider": "loopmessage",
#   "status": "processing" }

How the Fallback Works

When you use channel: "auto", Callora does two-stage fallback:

  1. Sync fallback: If LoopMessage immediately rejects (non-mobile number, no Apple ID), Callora sends SMS in the same request. You get back resolved_channel: "sms".
  2. Async fallback: If LoopMessage accepts but later reports delivery failure via webhook, Callora auto-sends SMS via Twilio and updates the message record.

Pricing

1 ANGEL credit per message (SMS or iMessage). Free tier includes 25 credits. See bundles →

Ready to try?

Get your free API key at /developers or read the full API reference.