FlowNewly launchedVerified 2026-10-27

Flow iMessage API: blue-bubble chat for AI agents

A hosted messaging API that lets an agent chat on iMessage (plus Telegram and WhatsApp) through Flow’s US phone lines, with no Mac to run. Free trial for 25 people, Shared line $25/month (launch price, normally $30), Dedicated number $100/month.

Verified factsChecked 2026-10-27

PriceiMessage free trial: 25 people on the shared line, ever (no monthly reset). Shared: $25/month at launch (listed as $5 off $30) for 300 people a month and 200 a day. Dedicated: $100/month for your own US number. Outbound add-on (agent writes first, Dedicated only): +$40/month. No per-message fees; SMS/RCS fallback included. Flow Cloud Pro ($25/month) is a separate plan for hosting and does not include iMessage.1 [Verified 2026-10-27]
API key / authAuthorization: Bearer with an fk_test_ (sandbox) or fk_live_ key. A keyless sandbox key can be created with one POST, but it covers Telegram only; iMessage starts with the free trial on a signed-in Flow account (Google, GitHub or email link). Webhooks are signed with an HMAC-SHA256 Flow-Signature header. Our keyless GET /v0/app on 2026-10-27 returned HTTP 401.2 [Verified 2026-10-27]
Rate limitsPlans count people, not messages: each person counts once per UTC day and month. A new dedicated line starts at 250 people a day and ramps to 1,000 within 14 days; past it, sends to a new person get 429 rate_limited with retry_after. Outbound starts 2 new conversations a day, up to 40 from day 22, and the API docs list 4 new iMessage contacts an hour. Senders that look spammy are throttled for 24 hours.1 [Verified 2026-10-27]
Terms and Apple riskFlow’s terms (updated Oct 27, 2026) say Apple or Flow’s iMessage line provider can limit or stop a line at any time and Flow cannot reverse a platform’s block. Its acceptable-use policy says people’s spam reports can get a number blocked by Apple, and on a new line one report can be enough. On iMessage you may not send or ask for health information, card or bank numbers, or government ID numbers. Using several accounts or rotating numbers to dodge limits or blocks is banned.4 [Verified 2026-10-27]
How iMessage is deliveredHosted US numbers (shared or dedicated) run by Flow through an unnamed iMessage line provider; you do not run a Mac. Not Apple Messages for Business, which Flow’s own guide describes as a separate Apple service. Not verified: the underlying technology (Mac relays, Apple IDs or devices) and the provider’s name, which Flow does not publish.5 [Verified 2026-10-27]
SDK / MCPTypeScript SDK and CLI @flow-engineer/messaging (0.4.2 on npm on the check date), Python SDK flow-messaging (0.2.2 on PyPI). MCP server at https://api.flow.engineer/mcp with the same Bearer key, meant for development; Flow says apps should call the REST API at runtime. The Flow Framework for building the agent is open source (Apache-2.0).2 [Verified 2026-10-27]
StatusNewly launched: the site banner reads “Now launching iMessage API” and the launch post is dated Oct 27, 2026. Flow labels its US SMS channel as a pilot; no SLA is published. Group chats need a dedicated line, and Flow reviews each dedicated line before setting it up (usually within a day).1 [Verified 2026-10-27]

FeaturesChecked 2026-10-27

YesNoN/ANot published
CapabilityValueNote
StatusSite banner reads “Now launching iMessage API”; launch post dated Oct 27, 2026. SMS is a pilot; no SLA published.Newly launched1 [Verified 2026-10-27 on https://flow.engineer/pricing]Site banner reads “Now launching iMessage API”; launch post dated Oct 27, 2026. SMS is a pilot; no SLA published.
API key requiredBearer key; iMessage needs an account. Our keyless GET /v0/app on 2026-10-27 returned HTTP 401. A keyless sandbox key covers Telegram only; iMessage starts on a signed-in account.Yes2 [Verified 2026-10-27 on https://api.flow.engineer/llms.txt]Bearer key; iMessage needs an account. Our keyless GET /v0/app on 2026-10-27 returned HTTP 401. A keyless sandbox key covers Telegram only; iMessage starts on a signed-in account.
Free tierTrial: 25 people, once. Free trial on the shared iMessage line for 25 people ever; Shared $25/month at launch ($30 list), Dedicated $100/month.Yes1 [Verified 2026-10-27 on https://flow.engineer/pricing]Trial: 25 people, once. Free trial on the shared iMessage line for 25 people ever; Shared $25/month at launch ($30 list), Dedicated $100/month.
Rate limitShared: 300/month, 200/day. Dedicated: 250/day ramping to 1,000 in 14 days; 429 with retry_after past it.People per day/month, not messages1 [Verified 2026-10-27 on https://flow.engineer/pricing]Shared: 300/month, 200/day. Dedicated: 250/day ramping to 1,000 in 14 days; 429 with retry_after past it.
Official MCP serverHosted, api.flow.engineer/mcp. Bearer key; Flow says it is for development, not a runtime dependency. Keyless call returned 401.Yes2 [Verified 2026-10-27 on https://api.flow.engineer/llms.txt]Hosted, api.flow.engineer/mcp. Bearer key; Flow says it is for development, not a runtime dependency. Keyless call returned 401.
Official SDKTypeScript + Python. @flow-engineer/messaging (npm 0.4.2) and flow-messaging (PyPI 0.2.2); Go not published yet.Yes2 [Verified 2026-10-27 on https://api.flow.engineer/llms.txt]TypeScript + Python. @flow-engineer/messaging (npm 0.4.2) and flow-messaging (PyPI 0.2.2); Go not published yet.
Data license / termsThe hosted API is under Flow’s terms; the Flow Framework repo is Apache-2.0.Proprietary service; framework Apache-2.03 [Verified 2026-10-27 on https://flow.engineer/terms]The hosted API is under Flow’s terms; the Flow Framework repo is Apache-2.0.
Commercial use allowedYes, under the acceptable-use policy. No health, card, bank or government ID data on iMessage; no spam or limit dodging. Apple or the line provider can stop a line.Yes4 [Verified 2026-10-27 on https://flow.engineer/acceptable-use]Yes, under the acceptable-use policy. No health, card, bank or government ID data on iMessage; no spam or limit dodging. Apple or the line provider can stop a line.
CORS / browser useNo CORS header. Our GET and preflight to /v0/app with a third-party Origin on 2026-10-27 returned 401 with no Access-Control-Allow-Origin; call it from your server.No2 [Verified 2026-10-27 on https://api.flow.engineer/llms.txt]No CORS header. Our GET and preflight to /v0/app with a third-party Origin on 2026-10-27 returned 401 with no Access-Control-Allow-Origin; call it from your server.
Freshness / coverageNot applicable as a dataset; delivery mechanism behind the iMessage lines is not published.Not published5 [Not published by vendor: checked 2026-10-27 on https://flow.engineer/blog/imessage-api-without-mac]Not applicable as a dataset; delivery mechanism behind the iMessage lines is not published.

What it does

Flow Messaging is a REST API (with a WebSocket stream, a TypeScript and a Python SDK, and an MCP server for development) that connects an AI agent to iMessage, Telegram and WhatsApp. People text a Flow phone line; each message reaches your agent as a signed webhook or stream event, and the agent replies with one endpoint per message kind: text and media, buttons, reactions, typing indicators, effects, edits and unsends. How it reaches iMessage: Apple has no public server API for iMessage (its developer routes are Messages app extensions and the separate Messages for Business service), so Flow runs hosted iMessage lines, which are US phone numbers, either a line shared with other Flow customers or one dedicated to you. Flow says you never need a Mac, and its terms say the lines run through an “iMessage line provider” that it does not name. It does not say whether that provider uses Mac relays, Apple IDs or other hardware, so we could not verify the mechanism. People who are not on iMessage get SMS or RCS from the same number. Flow says it is not affiliated with or endorsed by Apple.

Working exampleNot run: needs a Flow key, and iMessage needs a signed-in Flow account (we did not create one)

Documented request, not run by us: needs a Flow key, and iMessage needs a signed-in Flow account (we did not create one). The response below is what we did run on 2026-10-27.

ShellRequest
# Run without a key on 2026-10-27: shows the auth scheme
curl -sS https://api.flow.engineer/v0/app

# Not run: reply in an iMessage conversation (needs a key from a Flow account)
curl -sS -X POST https://api.flow.engineer/v0/conversations/$CONVERSATION_ID/basic \
  -H "Authorization: Bearer $FLOW_MESSAGING_KEY" \
  -H "Idempotency-Key: evt_123:reply" \
  -H "Content-Type: application/json" \
  -d '{"text":"Your table for two is booked for 7 pm."}'

Response (trimmed)

HTTP responseResponse
GET /v0/app (no key), run 2026-10-27: HTTP 401
{"error":{"type":"authentication","message":"No valid API key was given.",
 "hint":"Send the header Authorization: Bearer fk_test_... (or fk_live_...); ...",
 "doc_url":"https://api.flow.engineer/docs/errors/authentication", ...}}

Agent setup

Prompt to give your agent

Prompt
You are a support agent reached over iMessage through Flow Messaging. When a message.received event arrives, answer only the person who wrote, in plain text under 600 characters. Never ask for or repeat card numbers, bank details, government IDs or health information. If the person writes STOP or asks to stop, confirm once and send nothing more. Send each reply with an Idempotency-Key built from the event id.

Agent / MCP-style tool snippet

PythonTool snippet
// Claude Code, for building and testing (Flow says not to use MCP at runtime):
//   claude mcp add --transport http flow https://api.flow.engineer/mcp \
//     --header "Authorization: Bearer $FLOW_MESSAGING_KEY"
// Runtime: verify Flow-Signature, then reply in the webhook answer
import express from "express";
const app = express();
app.post("/webhook", express.raw({ type: "application/json" }), (req, res) => {
  // check Flow-Signature (HMAC-SHA256 of "t.{t}.{raw body}" with your whsec_ secret) first
  const event = JSON.parse(req.body);
  if (event.type !== "message.received") return res.sendStatus(200);
  res.json({ reply: { kind: "basic", text: "Thanks, looking into it now." } });
});
app.listen(3000);

Fit and safety

Good for

  • Letting customers text a booking or support agent from the Messages app
  • Prototyping a consumer chat agent on Telegram and iMessage with one codebase
  • Adding SMS/RCS fallback so Android users reach the same agent

Watch out

  • Do not build a product that cannot survive its number being blocked. Flow’s terms say Apple or its line provider can stop a line at any time and Flow cannot reverse it; keep another way to reach your users.
  • Do not cold-message people. Below Dedicated plus the $40 Outbound add-on the agent can only reply, and Flow says spam reports can get a new number blocked after one report.
  • Do not handle health, payment card, bank or government ID data over it. Flow’s acceptable-use policy forbids those on iMessage.
  • Do not rely on it if you need an Apple-sanctioned channel. Flow says it is not affiliated with or endorsed by Apple and does not publish how its lines connect; Apple Messages for Business is the official business route.
  • Do not expect a big audience on the free trial. It covers 25 people in total, ever, and new people past a limit are held, not delivered.

Alternatives

Apple Messages for BusinessApple’s own service for conversations between customers and businesses in the Messages app.
Telegram Bot APIFree, official bot API when your users are fine chatting on Telegram instead of iMessage.
App Store Connect APIIf you would rather ship a native iOS app (or an iMessage app extension) than run a chat line.

FAQ

How does Flow send iMessage if Apple has no iMessage API?

Flow runs hosted iMessage lines, US phone numbers shared or dedicated to you, through an iMessage line provider it does not name. You call its REST API and never run a Mac. Flow does not say what hardware or accounts sit behind the lines.

Is the Flow iMessage API free?

There is a free trial for 25 people on the shared line, counted once ever. After that, the Shared line is $25 a month at launch (normally $30) for 300 people a month, and a dedicated number is $100 a month.

Can my iMessage number get banned?

It can be blocked. Flow’s terms say Apple or its line provider can stop a line at any time, and its policy warns that spam reports can block a number, sometimes after one report on a new line.

Compare

Put Flow iMessage API side by side with other free agent tools on keys, limits, MCP support, licensing and CORS. Open the comparison grid →

SourcesFootnotes

  1. 1flow.engineer/pricingVerified 2026-10-27
  2. 2api.flow.engineer/llms.txtVerified 2026-10-27
  3. 3flow.engineer/termsVerified 2026-10-27
  4. 4flow.engineer/acceptable-useVerified 2026-10-27
  5. 5flow.engineer/blog/imessage-api-without-macVerified 2026-10-27