New — native polls, live locations & voice memos

iMessage, as a REST API and MCP.

A real US or EU phone number — or email alias — bound to your workspace, addressable from any HTTP client. Send blue-bubble messages from your backend and get every reply as a webhook — in under a second.

Read the API docs
send-message.sh
# one call. real iMessage.
curl -X POST https://api.lokimessages.com/api/chats/$CHAT/messages \
  -H "Authorization: Bearer lok_live_…" \
  -H "Content-Type: application/json" \
  -d '{"text": "Your table is ready 🎉"}'

# replies arrive at your webhook <1s later
{ "event": "message.received",
  "text": "great, walking over now" }

By the numbers

Infrastructure you stop thinking about.

30+

REST endpoints

Chats, messages, polls, reactions, attachments, locations, read receipts — the whole surface.

<1s

Inbound webhook latency

Replies, receipts, and reactions hit your endpoint as structured JSON in under a second.

2-way

Send and receive

Not a blast tool. A real conversation channel your backend can hold open indefinitely.

0

Gray routes

Our own Mac fleet, our own registered US and EU numbers. No resellers between you and delivery.

Why iMessage

The channel your users already trust.

Feels human

Talk like a person, not like a platform.

iMessage is where your users already talk to the people they trust. Loki Messages gives your backend the same vocabulary — not just text, but every gesture of a real conversation.

  • Tapback reactions — the classics or any emoji
  • Typing indicators you can start and stop
  • Read receipts, per message and per chat
  • Native iMessage polls with live vote webhooks
  • Replies that thread like a real conversation
did my order ship yet?
Shipped this morning! Arriving Thursday 📦 Want tracking pings here?
yes please 🙏
Done — I'll text you at every checkpoint.

Reliable

Delivery is our problem, permanently.

Behind the API is a fleet of real Macs speaking real iMessage, with registered US and EU numbers, session keep-alive, health monitoring, and automatic retries. You never think about any of it.

  • Real registered US or EU phone numbers — or an email alias — bound to your workspace
  • Session keeper holds every line warm around the clock
  • Delivery lifecycle tracking on every message
  • Inbound webhooks with sender, chat, and media resolved
  • SOC 2 Type II compliant — audited controls end to end
webhook payload
{
  "event": "message.received",
  "chat_id": "c3a1…",
  "sender": "+1415…",
  "text": "great, walking over now",
  "attachments": [],
  "received_at": "2026-06-11T18:02:11Z"
}

The surface

Every iMessage primitive, behind an endpoint.

Send & receive

Full two-way iMessage from a real US or EU phone number — or email alias — bound to your workspace. Text, media, and threaded replies — one REST call each.

Group chats

Start a group with any set of handles in one POST and message into it like any other chat — with read status per participant.

Tapbacks & reactions

React to any message with the classic tapbacks or any emoji, and receive every reaction your users send as a webhook event.

Native polls

Create real iMessage polls in any chat and watch the votes come back — the cleanest structured input a text thread can collect.

Typing & read receipts

Start and stop the typing indicator, mark chats read, and query read status per message. The small signals that make a thread feel alive.

Attachments & media

Upload once, send anywhere. Images, PDFs, and files in both directions, with download URLs on everything inbound.

Live locations

Request and receive live locations per handle. The primitive behind every "where are you?" and "what's near me?" flow.

Reply threads

Read any message's full reply thread as a single resource — context your bot or support tool can reason about.

iMessage & SMS

Chats ride iMessage by default and can run over SMS where you need reach — same endpoints, same webhooks.

For developers

Built for developers who ship.

POST /api/chats/:chatId/messages Send text, media, or replies to a chat
GET /api/chats/:chatId/messages Page through a chat's history
POST /api/chats Create a chat — direct or group
POST /api/messages/:messageId/reactions Tapback any message
POST /api/chats/:chatId/polls Create a native iMessage poll
POST /api/chats/:chatId/typing Show the typing indicator
POST /api/attachments/upload Upload media to send anywhere
POST /api/locations/request Ask a handle for their live location
GET /api/messages/:messageId/thread Read a full reply thread
POST /api/chats/:chatId/read Mark a chat as read
GET /api/chats/:chatId/read-status Who has read what, per chat

One key, the whole surface

If a thumb can do it in Messages, your code can do it here.

Authenticate with your lok_ API key, hit api.lokimessages.com, and treat conversations as a resource. Consistent JSON in and out, predictable errors, and a dashboard that shows every message's delivery lifecycle when you need to debug at 2am.

  • Bearer-token auth with workspace-scoped keys
  • Webhooks for messages, reactions, receipts, and votes
  • Delivery lifecycle visible per message in the dashboard
  • Sandbox tier — integrate before you pay anything

Read the full API reference

How it works

From sign-up to first blue bubble in minutes.

Get a number

Sign in, and we bind a real, registered US or EU phone number — or an email alias — to your workspace. Registration, sessions, and delivery health are our problem from day one.

Send via REST

POST to api.lokimessages.com with your lok_ API key. Text, media, polls, reactions, locations — every iMessage primitive is an endpoint.

Receive via webhooks

Point a webhook at your backend and every inbound message, receipt, reaction, and poll vote arrives as structured JSON, in under a second.

Use cases

One channel, a hundred products.

AI agents

Assistants with a phone number

Give your agent a contact card instead of a web app. Users text it like a friend — no install, no login wall, no churn at the app store.

Booked: Friday 7:30pm, table for 4 at Lindo 🎉

Notifications

Alerts people actually read

2FA codes, fraud alerts, and order updates in the thread users check 80 times a day — with read receipts so you know they landed.

Your verification code is 281-009. It expires in 10 minutes.

Hospitality

Reservations & waitlists

Confirmations, reminders, and "your table is ready" pings as a real conversation — guests reply, your system answers.

Your table is ready! Walk to the host stand whenever 🪑

Coaching

Fitness & accountability

Daily check-ins, streaks, and nudges as texts from a coach, with polls for the daily plan and a tapback to log the win.

Day 21 🔥 Same time tomorrow? Vote: 6am / 7am / rest day

Social

Dating & community

Move matches and members from the app into the thread they'll actually answer — and keep the conversation data flowing back.

You two matched! Want me to suggest a first spot nearby?

Commerce

Receipts & reorders

Receipts that can answer questions, delivery updates that take replies, and "reorder the usual?" as a one-tap poll.

Order's out for delivery — 25 min. Reorder next week? 👍

Beside — our own consumer concierge — runs every conversation through this exact API. When delivery so much as flickers, we feel it before any customer does.

Loki Labs

FAQ

The questions everyone asks.

Are these real iMessages — blue bubbles?

Yes. Messages are sent from real Apple hardware we operate, through real registered US or EU phone numbers. To your user it's a normal iMessage conversation: blue bubble, tapbacks, typing dots, read receipts, the lot.

Do I get my own dedicated number?

Yes. A registered US or EU phone number — or an email alias — is bound to your workspace when you sign up. It's yours for the life of the account — conversations, contact entries, and reply history all accrue to it.

How fast do inbound webhooks arrive?

Under a second, typically well under. Every inbound message, reaction, read receipt, and poll vote is delivered to your endpoint as structured JSON with sender, chat, and attachment metadata already resolved.

What about attachments people send me?

Inbound media arrives in the webhook with a download URL. Outbound, you upload once via POST /api/attachments/upload and reference the attachment in any number of messages.

Can my backend work with group chats?

Yes — create a group with any set of handles in one call, send into it, react, run polls, and read per-participant read status. (Participant add/remove after creation isn't exposed; that's an iMessage-protocol limitation, not a plan limit.)

How is this different from SMS APIs?

SMS APIs rent you carrier routes for 160-character one-way blasts. Loki Messages is a full iMessage conversation surface: rich media, reactions, polls, threads, receipts — the channel your users treat as personal, not promotional.

What keeps delivery healthy?

We run our own Mac fleet with session keep-alive, continuous health monitoring, latency probes, and per-message lifecycle tracking. When something degrades, our own products feel it first — Beside, our consumer app, runs on this exact API.

Ship 2FA codes, receipts, and nudges — on iMessage.

We handle registration, delivery, retries, and inbound webhooks. You ship the product.

Talk to us

Join the wishlist

We're opening up access in waves. Leave your email and we'll reach out the moment it's your turn.

We'll email you the moment it opens up. No spam.