Skip to main content
The Omni Z-API promise is a single one: one call, any channel. The request body is the same for WhatsApp, Instagram, Messenger and Telegram. Change the channel in the URL, and that is it. What cannot be promised is that every platform accepts everything. Instagram has no location message. Telegram has no call button. A product catalog only exists where there is a catalog. Those limits belong to the platforms, not to our API — and this page is the map of them, so you find out now instead of in the middle of a test.

The five channels, two lines each

Meta Cloud API (Official)

Meta’s API, with a verified number and a business account. It is the channel that accepts the most: the only one with forms, catalog and templates. In exchange, it has the 24-hour window.

WhatsApp Web

The QR code connection, with the phone paired. No window and no template: you write at any time. Some store features require the number to be a WhatsApp Business account with registered products.

Instagram and Messenger

Direct message conversations. They accept text, media and buttons, and stop there: no location, no contact, no option list. Both have a 24-hour window.

Telegram

A bot. It accepts almost everything and has no window, but it speaks another language: what is a message type on WhatsApp is sometimes a keyboard button there.

How to read the table

⚠️ never means “it might work”. It means that it works and we know under which condition — and the condition is spelled out below, and also on each endpoint page, right under its little table.

The everyday conversation

Text and media are the common ground: they work on all five, with the same body. It is from there up that the channels start to disagree.

When the customer answers with a tap

A quick reply button is the one that comes back as the customer’s answer, and it exists on every channel. An action button is the one the device executes: open a link or place a call. The link works everywhere; calling only where the platform has a phone button.

Store and orders

A store message depends on a store existing. On WhatsApp the catalog lives in the business account; on Instagram and Messenger the messaging API does not reach the catalog; on Telegram there is no catalog, and what exists is a one-off charge.

Pre-approved template

A template is the message Meta approves in advance so you can write first, outside the window. It only exists where there is a window: Meta Cloud API and Messenger. On the other channels you write whenever you want, so it would not be missed.

The caveats, one by one

Sticker on Instagram and Messenger

On both, you do not send your own file. Instagram accepts only the heart sticker; Messenger accepts only the public stickers from Meta’s catalog, picked by id, plus the thumbs-up. A .webp made by your team goes through on WhatsApp and Telegram, and is refused on these two. What to do: on these channels, send the same artwork as an image. The customer sees the figure; it just does not come with a transparent background. Source: Messenger Sticker API.

Action button on Instagram and Telegram

An action button is the pair “open a link” and “call”. On these two, only the link works: the Instagram button template accepts only link and reply, and the Telegram keyboard has no phone button. What to do: swap the call button for a link button with tel: as the destination when the channel allows it, or write the phone number in the message text.

Catalog, product and order on WhatsApp Web

They work, but through a different path: they go through the Z-API compatibility layer and only go out if the connected number is a WhatsApp Business account with registered products. A personal number has no catalog, so there is nothing to send. What to do: if the store is the important part of your integration, use Meta Cloud API. On Web, treat the catalog as an extra that depends on how the customer set their number up. Sources: product, catalog and order on Z-API.

Multi-product only on the official platform

Sending several products in one message only exists on Meta Cloud API. On the unofficial connection you can send one product at a time, and on the other channels there is no equivalent.

Order details on Messenger and Telegram

Both have something similar, and the difference matters:
  • Messenger: the order receipt shows items, total and payment method, but it is the record of a purchase already made. There is no pay button.
  • Telegram: the invoice collects payment inside the app, and for that it requires a payment provider configured on the bot.
What to do: on Meta Cloud API the order arrives with a pay button. On the other two, decide whether you want to notify (Messenger) or charge with your own provider (Telegram).

Request location on Telegram

It works, it just is not a message type: it is a keyboard button that asks for the location (request_location). For the customer it is the same, they tap and the location arrives. We mark it ✅ because the result is the same.

Reaction on Messenger

Here the honest answer is: we do not know. The reaction the customer sends does reach you through the webhook, but we could not find confirmation in Meta’s documentation that the business can react to a message. The changelog mentions it, the endpoint reference does not describe the field. On Instagram, the reaction is documented and works. What to do: do not build a flow that depends on reacting on Messenger without testing it first. As soon as we confirm it, this page changes.

Template on Instagram

This is not a Meta decision, it is a consequence of how we connect: the Graph API message_templates edge exists only on the Page node, and Omni Z-API connects Instagram through Instagram Login, which does not expose that edge. Details in Connect Instagram.

When the channel does not accept it: what to send instead

The 24-hour window, in one sentence

The 24-hour window belongs to Meta Cloud API and to Instagram/Messenger: once that long has passed since the customer’s last message, you can only reopen with a template. On WhatsApp Web and Telegram there is no window.

The content.type for each feature

Some of these endpoints are still in development. Each page warns at the top, and the playground shows which ones already answer for real.

Next steps

Send the first message

The minimum body, and what comes back.

Conversation window

When you can write first, and when you need a template.

Channel lifecycle

Create, connect, subscribe, disconnect and remove.

Official API limitations

What classic Z-API has and the official one does not.