Products

Ships to

ComparisoniMessage API7 min read

iMessage vs WhatsApp for AI agents

iMessage and WhatsApp compared for AI agents: reply windows, templates, buttons, text limits, voice notes, setup and fees. How to build one agent for both.

The short answer

WhatsApp and iMessage differ most in how conversations open. WhatsApp allows free-form replies for 24 hours after the person writes, then only approved templates. Flow's iMessage line replies to people who wrote to it. WhatsApp has buttons and templates, and iMessage has tapbacks, effects and edits.

Building on the iMessage API? Build on iMessage with Flow: one agent for iMessage, WhatsApp and Telegram. New to it? Read the iMessage API guide.

The big difference: how a conversation opens

WhatsApp iMessage (Flow)
Free-form messages For 24 hours after the contact’s last message When the contact has written to the line before
Outside that Only an approved template A new contact is refused
Start a conversation With a template, within your sender’s limits Only on a dedicated line with the outbound add-on, within warm-up limits

This is from Flow’s sending rules. On WhatsApp, the conversation carries window_open_until, and you can subscribe to conversation.window_closing to hear about it one hour before. On iMessage there is no timer to watch. If the person has written to the line, you can reply.

The design lesson is shared: reply, don’t broadcast. Agents that answer people who wrote first rarely meet the limits. Other iMessage providers differ on who can write first, so see the provider comparison.

What each can show

From Flow’s content types docs:

WhatsApp iMessage
Text length Up to 4,096 characters Up to 9,999
Buttons Up to 3 reply buttons, else a list of 4 to 10 None; numbered text with fallback
Templates Yes No
Reactions Yes Tapbacks, a fixed set
Effects No Yes
Typing Within 24 hours of the contact’s last message Within 5 minutes
Edit No Within 15 minutes
Unsend No Within 2 minutes
Locations and contact cards Yes No; a maps link or text with fallback

If your agent leans on buttons, WhatsApp is the better stage. If it leans on a personal feel, with tapbacks and quick corrections, iMessage is. Setting fallback: "auto" lets one agent do both without branching. Tapbacks, typing and effects goes into the iMessage side.

Setup and fees

  • WhatsApp. You connect a number in your own WhatsApp Business Account, under your own Meta app, with a live key. You create a Meta app, add the number with an approved display name, add a payment method in WhatsApp Manager and generate a system-user token. Meta bills its fees to you directly. The Flow team can also connect a number. There is no WhatsApp sandbox yet, so build on Telegram first with the same code.
  • iMessage. A US number, shared or dedicated: a free shared line for up to 25 people a month, a $30 a month shared line for roughly 200 to 300 people, or your own number from $100 a month. A new dedicated line takes hours to activate, then warms up before it writes first at full rate.

Flow’s Pro plan lists a dedicated WhatsApp line, and iMessage is priced on its own: a free shared line, a $30 a month shared line for roughly 200 to 300 people, and dedicated lines from $100 a month. Dedicated lines can support writing first, subject to availability and warm-up limits. iMessage API pricing has worked examples.

Voice notes and identity

WhatsApp users send many voice notes. Each arrives as voice content with the audio file. Flow does not transcribe WhatsApp voice notes yet, so fetch the audio and transcribe it yourself if your agent needs the words. On iMessage, the agent gets the audio and a transcript. iMessage supports voice notes both ways, from mp3, wav, m4a, caf or aac files.

Identity differs. WhatsApp numbers are normalised to E.164. An iMessage handle can be a phone number or an email address, so do not assume a number. Do not assume the two are the same person either. Map them only through a verified account lookup. One agent on three channels explains.

Build one agent for both

The loop is the same on both: an inbound event, a model call with your tools, a reply. Three habits keep it portable:

  1. Ask before you send. GET /v1/capabilities?conversation=conv_... says what the channel can show and whether the window is open.
  2. Use fallback: "auto". Buttons become numbered text, markdown becomes plain text.
  3. Retry only what clears. rate_limited carries retry_after, and outside_window clears only when the person writes again, or when you send a template on WhatsApp.

Flow gives you one project that answers on iMessage, WhatsApp and Telegram, and works as an MCP server and CLI.

Frequently asked questions

What is the biggest difference between iMessage and WhatsApp for an agent?

How a conversation opens. On WhatsApp you can send free-form messages for 24 hours after the contact's last message, then only an approved template. On Flow's iMessage line, the contact must have written to the line first.

Does WhatsApp need message templates?

Outside the 24-hour window, yes. Business-initiated messages need an approved template. On Flow you create templates for your own WhatsApp number and receive a template.status_changed event when WhatsApp approves, rejects or pauses one.

Does iMessage have buttons?

No. WhatsApp shows up to three reply buttons, or a list for four to ten. On iMessage, Flow sends buttons as numbered text and still returns a button reply with the button's ID.

Who pays WhatsApp fees?

With your own WhatsApp Business Account, Meta bills its messaging fees to your business directly. Flow says WhatsApp fees are billed by Meta with no markup.

Can I build one agent for both?

Yes. With a messaging layer that applies each channel's rules, one handler answers on both. Ask the API what a conversation supports before you send.

Does Flow transcribe WhatsApp voice notes?

Not yet, per Flow's docs. A voice note arrives as voice content with the audio file, so fetch and transcribe it yourself if your agent needs the words.

Start hereiMessage API: a developer’s guideThe overview of how iMessage APIs work, and what to ask a provider. ComparisonDoes Twilio support iMessage?No. Flow gives your agent iMessage, and you can keep Twilio for SMS beside it.ComparisoniMessage API pricing comparedWhy Flow is the value pick: start free, support 200–300 people for $30 a month, and scale with dedicated lines from $100.ComparisonBest iMessage API for AI agentsWhy Flow is the best iMessage API for agents: one codebase, reliable webhooks, testing and every channel in one platform.ComparisonApple Messages for Business vs iMessage APITwo different things that both get called iMessage for business, side by side.ComparisonLinq alternative: why teams choose FlowWhy Flow is the best Linq alternative: a lower paid price, a free start and one agent on every channel.ComparisonFree iMessage APIStart free on Flow's shared iMessage line, test your agent without a phone, and scale to 200–300 people for $30 a month.

All posts: the Flow blog. The Flow docs have the reference.

From reading to building

Your agent, on iMessage and everywhere else.

Flow gives your agent an iMessage line, and the same code answers on WhatsApp and Telegram and works as an MCP server and CLI. See how it works on iMessage.

Build on iMessage with Flow