New โ€” native polls, live locations & voice memos

iMessage, as a REST API.

A real US phone number, 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.

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 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 numbers, session keep-alive, health monitoring, and automatic retries. You never think about any of it.

  • Real registered US phone numbers, 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
webhook payload
{
  "event": "message.received",
  "chat_id": "c3a1โ€ฆ",
  "sender": "+1415โ€ฆ",
  "text": "great, walking over now",
  "attachments": [],
  "received_at": "2026-06-11T18:02:11Z"
}

Honest pricing

Pricing that doesn't punish conversations.

Per-message pricing makes you afraid of your own users replying. Our plans are flat โ€” start free in the sandbox, upgrade when you go to production, and let the conversation run.

  • Free tier to build and test against
  • Flat monthly plans from $49 โ€” no per-reply anxiety
  • Volume pricing when you outgrow flat
Sandbox $0 โ€” build, test, and demo against the real API.
Production $49/mo flat โ€” your own number, full surface, webhooks included.
Volume Outgrowing flat? Talk to us about volume pricing.

The surface

Every iMessage primitive, behind an endpoint.

Send & receive

Full two-way iMessage from a real US phone number 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 phone number 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 ยท Warsaw

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 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 phone number 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.)

What does it cost?

Plans are flat, not per-message: a free tier for building and a production plan at $49/month. Details on the pricing page. If you're doing serious volume, talk to us.

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.