---
title: "Whapi.Cloud Integration"
description: "Connect AI agents to Whapi.Cloud, a WhatsApp API for developers. Agents send text, media, and poll messages, administer groups and labels, manage contacts and media files, and react to inbound messages and delivery receipts so WhatsApp conversations run inside automated workflows."
url: https://flowrunner.ai/integrations/whapi-cloud
date_modified: 2026-08-12T15:40:33-07:00
---

# Whapi.Cloud

[Messaging](https://flowrunner.ai/integrations/category/communication-messaging)

Connect AI agents to Whapi.Cloud, a WhatsApp API for developers. Agents send text, media, and poll messages, administer groups and labels, manage contacts and media files, and react to inbound messages and delivery receipts so WhatsApp conversations run inside automated workflows.

4 triggers · 91 actions · API key · available

[Whapi.Cloud website](https://whapi.cloud/) · [Platform Documentation](https://whapi.cloud) · Capability data verified 2026-08-12

1.  On New Message fires when a customer replies to the WhatsApp number this channel is linked to
2.  Agent reads the sender, chat and body from the event, then pulls recent context with Get Messages By Chat
3.  Agent runs Check Contact Exists and Get Contact to resolve the sender to a known customer record
4.  Agent answers with Send Text Message and keeps the returned message identifier
5.  On Message Status confirms the reply was delivered and read, not merely accepted by the API
6.  Agent applies a queue label with Add Label To Chat so the human team sees exactly where the thread stands
7.  Before the agent blocks a number it has judged abusive, a person decides, because a blocked contact's messages stop arriving and nothing reports what was missed

## What This Integration Enables

Whapi.Cloud connects a WhatsApp account the way WhatsApp Web does, by scanning a QR code or entering a pairing code, rather than through Meta's official Cloud API. That has one practical consequence worth stating plainly: the channel is a real WhatsApp number belonging to your business, with the reach and the responsibilities that come with it, and connected accounts remain subject to WhatsApp's terms. The token is issued per channel, so one FlowRunner connection controls exactly one number, and an account holding several numbers needs one connection per channel.

What separates this connector from the rest of the WhatsApp field is that it closes the loop. Most WhatsApp APIs will tell an agent that a send was accepted. This one tells the agent what happened next. On Message Status reports the delivery state of every message the channel sent. On New Message covers every inbound type, from text to polls to interactive replies. On Group Update reports membership and settings changes, and On Incoming Call reports a caller the API cannot answer but a flow can follow up with. Around those four events sit ninety-one actions covering sending, message history, chats, contacts, groups, WhatsApp Business labels, a channel media store and the channel's own settings. Agents do the sending, the chasing and the labeling. Humans keep the decisions that reach a customer permanently.

### Without FlowRunner

**Sends assumed to have landed**: A successful API call is treated as a delivered message, and nobody finds out otherwise until a customer complains

**Threads read one at a time**: Someone opens WhatsApp on a phone to see what a customer actually said before the last reply

**Ownership tracked outside the channel**: The state of a conversation lives in a spreadsheet next to WhatsApp rather than on the thread itself

### With FlowRunner

**Delivery confirmed by the channel**: On Message Status reports sent, delivered, read, played or failed for every message the channel dispatched

**Context assembled automatically**: Get Messages By Chat pulls the thread the reply needs before the reply is composed

**State written on the thread**: Add Label To Chat puts the queue position where the human team already looks

## Use Case Scenarios

### Proving a notification arrived

An operations flow sends dispatch notifications to customers when a shipment leaves the warehouse. The agent calls Send Text Message with the tracking detail and holds the returned identifier. Minutes later On Message Status fires with the delivery state for that identifier. Messages that reach read are closed out. Messages sitting at sent past a threshold are escalated: the agent checks the number with Check Contact Exists, and if the number is not on WhatsApp at all, it writes the exception to the record in [HubSpot](https://flowrunner.ai/integrations/hubspot) and routes a fallback channel instead of resending into a void. The difference between "we sent it" and "they read it" stops being an assumption.

### Answering with the thread in hand

A customer replies to a service number. On New Message fires with the message and its chat. Before composing anything, the agent calls Get Messages By Chat to pull what was said earlier in this thread, and Get Contact to resolve who is speaking. It drafts a reply grounded in that history, sends it with Send Text Message, and applies a label with Add Label To Chat so the support team's WhatsApp Business view shows the thread as answered by the agent rather than untouched. Where the reply carries a document, Download Media File writes the attachment into FlowRunner file storage and the flow continues with the file, not with a link that expires.

### Running a customer group without a moderator on call

A community group is used for a rollout. On Group Update fires when participants join, leave or change rank, and when the subject or settings are edited. The agent keeps the roster in [Google Sheets](https://flowrunner.ai/integrations/google-sheets) in sync, welcomes new joiners with Send Text Message, and reviews Get Group Join Requests against the customer list. Requests from numbers already on the account are approved with Approve Group Join Request automatically. Requests from unknown numbers are posted to [Slack](https://flowrunner.ai/integrations/slack) with what the agent could and could not verify, and the group owner approves or rejects from there. Revoke Group Invite Link is available to the agent when a link leaks, because the cost of revoking is inconvenience while the cost of leaving it live is unbounded.

## Human-in-Loop Highlight

Block Contact is the one action in this connector that manufactures the exact thing the rest of it exists to prevent: a confident assumption. Blocking a number on a linked WhatsApp account means that person's messages no longer arrive. On New Message simply never fires for them again, no failure is reported to the flow, and the sender gets no notice either. Unblock Contact restores the future and nothing else, because the messages sent during the block were never delivered and cannot be replayed. So when an agent classifies a thread as abusive or fraudulent and wants it stopped, it stops short of the block. It posts to the operations channel: "Recommend blocking +55 11 9xxxx on channel Support, three messages in the last hour flagged as abusive, thread linked, last order two days ago still open. Block, or label and leave open?" A person answers, and the [digital andon cord](https://flowrunner.ai/concepts/digital-andon-cord) has done its job: the agent handled everything that could be undone, and stopped at the one action whose silence would be invisible. The reversible neighbors stay with the agent, which is the point. Archive Chat, Add Label To Chat and Mark Message As Read all run unattended, because none of them decides what you will never hear.

Agent processes routinely

Detects exception requiring judgment

Clear match Continues automatically

Ambiguous Routes to human via WhatsApp

Human decides

Agent resumes with decision

## Agent Capabilities

91 actions

### Channel

6

-   **Check Channel Health** Reports whether the linked WhatsApp session is up. Used as the opening step of any flow that must not queue work against a channel that has quietly disconnected.
-   **Get Channel Limits** Returns the channel's current usage ceilings. Used before a fan-out so the flow paces itself rather than discovering a limit halfway through a batch.
-   **Get Channel Settings** Reads the channel's full settings object, including the webhook array that the triggers manage. Used to inspect what a channel is currently configured to do.
-   **Update Channel Settings** Changes the channel's scalar settings. It deliberately does not expose the webhook list, so an ordinary settings update cannot detach a running trigger.
-   **Reset Channel Settings** Restores every channel setting to its default. This clears the webhook array as well, so any trigger on the channel has to be re-armed after one.
-   **Get Allowed Webhook Events** Lists the event names the channel will accept a subscription for. Used when a flow builds or audits a subscription programmatically.

### Sending Messages

14

-   **Send Text Message** Sends a plain text WhatsApp message to a chat. The workhorse of reply, notification and escalation flows.
-   **Send Image Message** Sends an image with an optional caption. The media value accepts a public URL, a base64 payload, or the id of a file already in the channel media store.
-   **Send Video Message** Sends a video with an optional caption, using the same three-way media value.
-   **Send Audio Message** Sends an audio file as an attachment rather than as a voice note.
-   **Send Voice Message** Sends audio as a WhatsApp voice note, which renders as a waveform the recipient plays rather than a file they download.
-   **Send Document Message** Sends a document such as an invoice or a shipping label. Used to put a generated PDF in front of a customer in the channel they already answer.
-   **Send Sticker Message** Sends a sticker. Used in consumer-facing flows where the brand already has a sticker set.
-   **Send GIF Message** Sends an animated GIF.
-   **Send Location Message** Sends a fixed coordinate with an optional name and address. Used for pickup points and service addresses.
-   **Send Live Location Message** Sends a location that updates for a set period. Used during a delivery or a field visit.
-   **Send Contact Message** Sends a single contact card. Used to hand a customer the right person's details without them retyping a number.
-   **Send Contact List Message** Sends several contact cards in one message.
-   **Send Link Preview Message** Sends a link with its preview card rendered rather than a bare URL.
-   **Send Poll Message** Sends a poll with selectable options. Used for lightweight confirmations where a reply keyword would be misread.

### Message History and Actions

12

-   **Get Messages** Returns messages across the channel. Used for sweeps and reconciliation runs.
-   **Get Messages By Chat** Returns the message history of one chat. Note that the Only My Messages option is three-valued: on returns only what this channel sent, off returns only what others sent, and leaving it unset returns both, which is what a flow assembling thread context usually wants.
-   **Get Message** Returns one message by identifier. Used to resolve a delivery receipt back to what was actually said.
-   **Forward Message** Forwards an existing message to another chat, preserving it rather than retyping it.
-   **React To Message** Adds an emoji reaction to a message. Used to acknowledge receipt without adding a message to the thread.
-   **Remove Reaction From Message** Removes a reaction the channel previously added.
-   **Star Message** Stars a message on the linked account, which is how a human reviewer finds it later in WhatsApp itself.
-   **Pin Message** Pins a message in a chat so the current instruction stays at the top.
-   **Unpin Message** Removes a pin.
-   **Delete Message** Deletes a message the channel sent. Used to withdraw a message sent in error, within the window WhatsApp allows.
-   **Mark Message As Read** Marks an inbound message as read, which is what tells the customer a person or an agent has picked the thread up.
-   **Mark Voice Message As Played** Marks a received voice note as played.

### Chats

5

-   **Get Chats** Lists the chats on the channel. Used to build a work queue from what is actually open.
-   **Get Chat** Returns one chat with its metadata.
-   **Archive Chat** Archives a chat, clearing it from the active view without deleting anything.
-   **Update Chat Settings** Changes per-chat settings such as muting.
-   **Delete Chat** Removes the chat from the linked account. Used only in cleanup flows, because the conversation record goes with it.

### Contacts

12

-   **Get Contacts** Lists the contacts held on the linked account.
-   **Get Contact** Returns one contact.
-   **Get Contact About** Returns a contact's About text.
-   **Get Contact Profile** Returns a contact's profile detail, including the business profile where one exists.
-   **Check Contact Exists** Confirms whether a single number has a WhatsApp account. The vendor route answers with headers only, so this action reports a clear result rather than passing an empty payload through, and a documented negative simply reads as not existing.
-   **Check Phone Numbers** Validates a batch of numbers in one call. Used before a fan-out so numbers with no WhatsApp account are routed to another channel instead of silently failing.
-   **Add Contact** Saves a contact to the linked account's address book.
-   **Edit Contact** Updates a saved contact.
-   **Delete Contact** Removes a saved contact from the address book.
-   **Send Saved Contact** Sends a contact already saved on the account as a card.
-   **Get LID By Contact ID** Resolves a contact identifier to its LID, the identifier WhatsApp uses in groups and privacy-restricted contexts.
-   **Get Contact ID By LID** Resolves a LID back to a contact identifier, which is what turns a group event into an action against a known customer.

### Groups

19

-   **Create Group** Creates a WhatsApp group seeded with participants. Used to open a dedicated channel for a project, an order or an incident.
-   **Get Groups** Lists the groups the channel belongs to.
-   **Get Group** Returns one group with its participants and settings.
-   **Update Group Info** Changes a group's subject, description or icon metadata.
-   **Update Group Setting** Changes a group permission, such as who may post or edit group info.
-   **Leave Group** Leaves a group. Used when an engagement closes.
-   **Add Group Participants** Adds participants. An empty list is refused before the request is issued.
-   **Remove Group Participants** Removes participants. An empty list is refused too, because an omitted selector on a removal is plainly not what the caller intended.
-   **Promote Group Admins** Promotes participants to admin.
-   **Demote Group Admins** Demotes admins back to participants, with the same empty-list guard.
-   **Get Group Invite Link** Returns the group's current invite link.
-   **Revoke Group Invite Link** Invalidates the current invite link and issues a new one. The action an agent should reach for the moment a link is found somewhere it should not be.
-   **Accept Group Invite** Joins a group from an invite code.
-   **Get Group By Invite Code** Reads a group's details from an invite code before joining it.
-   **Set Group Icon** Sets the group image.
-   **Delete Group Icon** Clears the group image.
-   **Get Group Join Requests** Lists pending requests to join. Used as the queue an approval flow works through.
-   **Approve Group Join Request** Approves a pending request.
-   **Reject Group Join Request** Rejects a pending request.

### Labels

7

-   **Get Labels** Lists the WhatsApp Business labels on the account. Labels are a Business feature and are absent on a personal account.
-   **Create Label** Creates a label.
-   **Rename Label** Renames an existing label without disturbing what it is applied to.
-   **Delete Label** Deletes a label and its associations.
-   **Get Label Associations** Returns the chats carrying a given label. Used to read a queue that humans maintain by hand in WhatsApp.
-   **Add Label To Chat** Applies a label to a chat. This is how an agent writes its state into the view the support team already uses.
-   **Remove Label From Chat** Removes one label from a chat, leaving the rest in place.

### Media

4

-   **Get Media Files** Lists files in the channel media store.
-   **Download Media File** Downloads received media into FlowRunner file storage and returns the stored URL, so a later step works with the file rather than with a link that expires.
-   **Upload Media File** Uploads a file to the channel media store and returns its id. Upload once and reuse the id when sending the same file to many recipients.
-   **Delete Media File** Removes a file from the channel media store.

### Blacklist

3

-   **Get Blacklist** Lists the numbers currently blocked on the linked account. Used before any outreach so a blocked number is never counted as an unresponsive one.
-   **Block Contact** Blocks a number on the linked WhatsApp account. Their messages stop arriving and no failure is surfaced, which is why this is the action the flow hands to a person.
-   **Unblock Contact** Unblocks a number. It restores future messages only; nothing sent during the block is recoverable.

### Presence

4

-   **Get Presence** Returns a contact's presence. It reports nothing until the channel has subscribed to that contact, so call Subscribe To Presence first.
-   **Subscribe To Presence** Subscribes the channel to a contact's presence updates.
-   **Send Typing Presence** Shows a typing indicator in a chat before a longer reply lands.
-   **Set Own Presence** Sets the channel's own presence state.

### Account

5

-   **Get Own Profile** Returns the linked account's profile.
-   **Update Own Profile** Updates the profile customers see, including the name and About text.
-   **Get Own Username** Returns the account's username.
-   **Set Own Username** Sets the account's username.
-   **Get Account Registration Date** Returns when the WhatsApp account was registered. Used in diligence flows on a number inherited from elsewhere.

## Triggers

4 triggers

### Event Triggers

4

-   **On New Message** Fires when a message arrives on the channel, covering every type: text, media, location, contact cards, polls and interactive replies. The event carries the full message object with its identifier, chat, sender, timestamp and type-specific payload. Optional filters restrict it to one chat or to messages whose text contains a given string, and the channel's own outbound traffic is excluded unless Include Own Messages is turned on.
-   **On Message Status** Fires when the delivery state of a message the channel sent changes to sent, delivered, read, played, failed or deleted. It carries the message identifier, the recipient and the new status, which is what lets a flow confirm a message reached a person rather than only that the API accepted it. Optional filters narrow it to one status or one chat.
-   **On Group Update** Fires when a group the channel belongs to changes: a new group appears, participants join, leave or change rank, or the subject, description or settings are edited. The event carries the group object or the participant change depending on which group event WhatsApp emitted, and an optional filter restricts it to one group.
-   **On Incoming Call** Fires when someone calls the WhatsApp number this channel is linked to, carrying the caller, the call identifier and whether it is a video call. The API cannot answer a call, so the useful pattern is logging the missed call and triggering a follow-up message while the caller is still holding their phone.

## Frequently Asked Questions

### What can FlowRunner do with Whapi.Cloud?

FlowRunner agents can run Check Channel Health, Get Channel Limits, and Get Channel Settings in Whapi.Cloud, plus 88 more actions.

### Does connecting Whapi.Cloud to FlowRunner require OAuth?

No. Whapi.Cloud connects to FlowRunner with an API key, no OAuth flow required.

### Can Whapi.Cloud trigger a FlowRunner workflow automatically?

Yes. Whapi.Cloud supports 4 triggers that can start a FlowRunner workflow automatically.

**Work at Whapi.Cloud?** This integration exposes Whapi.Cloud to AI agents on every FlowRunner plan, including through MCP, at no cost to you. [See what FlowRunner offers integration partners](https://flowrunner.ai/integrations/partners), including how to keep this page current.

---
Markdown version of https://flowrunner.ai/integrations/whapi-cloud. Site index: https://flowrunner.ai/llms.txt
