WhatsApp API – Official (Meta Cloud API) & Unofficial v5.0.1

Unified WhatsApp API: connect via the Official WhatsApp Cloud API (Meta) or the Unofficial API (QR Code) — same platform, same SDK, same webhook format. WAME is a Meta Business Partner. Send and receive messages, manage contacts, run official templates and automate conversations. Unlike unofficial-only providers, and self-hosted projects (Evolution, Baileys), WAME offers both models together. The unofficial layer is independent and not affiliated with, endorsed, or supported by WhatsApp Inc.; the official layer runs on Meta's WhatsApp Cloud API.

Client SDK Reference

Official client libraries for integrating with this API:

Base URLs

Webhooks

Format of the events delivered to the instance's url — envelope, webhookFormat and all models: https://us.api-wa.me/llms/webhook

Instance

GET /{key}/instance

Get instance details Returns the current instance status, connection state, QR code availability, and profile information.

Path parameters:

Responses:

POST /{key}/instance

Connect via QR Code Initiates a new WhatsApp connection. Returns a QR code that must be scanned with the WhatsApp mobile app to authenticate.

Path parameters:

Responses:

PATCH /{key}/instance

Update instance settings Configures instance behavior: auto-read messages, media saving, status message reception, and presence tracking.

Path parameters:

Query parameters:

Responses:

PUT /{key}/instance

Configure webhooks Sets up webhook URLs for receiving real-time events (messages, connection changes, QR codes, etc.). Use allowWebhook to enable/disable and allowNumber to filter by phone numbers.

Path parameters:

Request body:

Responses:

DELETE /{key}/instance

Disconnect and logout Disconnects the WhatsApp session and removes authentication data. The instance will need to re-authenticate via QR code or pairing code.

Path parameters:

Responses:

POST /{key}/instance/web-session

Import a WhatsApp Web session (WAME Passkey app) Receives a session exported by the WAME Passkey desktop app (passkey linking) and connects the instance without a QR code. Body: { session }.

Path parameters:

Request body:

Responses:

POST /{key}/instance/pairing-code

Connect via pairing code Initiates a WhatsApp connection using a pairing code instead of QR code. Requires the phone number registered on WhatsApp.

Path parameters:

Request body:

Responses:

POST /{key}/instance/mongodb

Configure cloud MongoDB storage Attaches a MongoDB database for cloud-based session and message storage. Provide the connection URI and database name.

Path parameters:

Request body:

Responses:

POST /{key}/instance/proxy

Configure connection proxy Sets an HTTP proxy for the WhatsApp connection. Recommended format: http://username:password@ip:port or http://ip:port

Path parameters:

Request body:

Responses:

POST /{key}/instance/resync

Force full data resync Forces a complete resynchronization of messages, contacts, and chats from WhatsApp servers. Use when data appears outdated or incomplete.

Path parameters:

Responses:

POST /{key}/instance/restart

Restart the instance (works even if it is not loaded)

Path parameters:

Responses:

PUT /{key}/instance/status

Update profile status text Changes the "About" text displayed on your WhatsApp profile. Supports emojis.

Path parameters:

Request body:

Responses:

PUT /{key}/instance/profile/picture

Update profile picture Sets a new profile picture from a publicly accessible image URL.

Path parameters:

Request body:

Responses:

DELETE /{key}/instance/profile/picture

Remove profile picture Removes the current profile picture, reverting to the default placeholder.

Path parameters:

Responses:

PUT /{key}/instance/profile/name

Update profile display name Changes the display name shown on your WhatsApp profile.

Path parameters:

Request body:

Responses:

POST /{key}/instance/mobile/prepare

Prepare mobile registration Generate keys and prepare for mobile registration. This is step 1 of 3. The MCC (Mobile Country Code) is resolved automatically from the country code.

Path parameters:

Request body:

Responses:

POST /{key}/instance/mobile/request-code

Request mobile verification code Request SMS or voice verification code. This is step 2 of 3. Must call /mobile/prepare first.

Path parameters:

Request body:

Responses:

POST /{key}/instance/mobile/verify

Verify mobile code and register Verify the code received via SMS/voice and register the device. This is step 3 of 3.

Path parameters:

Request body:

Responses:

POST /{key}/instance/official/register

Register the official number (Cloud API) Registers the official number on the Cloud API using the 6-digit two-step verification PIN. Also used to re-register after a display name is approved. Body: { pin }.

Path parameters:

Request body:

Responses:

POST /{key}/instance/official/deregister

Deregister the official number (Cloud API) Removes the official number registration on the Cloud API.

Path parameters:

Responses:

POST /{key}/instance/official/two-step-pin

Set the two-step verification PIN (Cloud API) Sets or updates the official number 6-digit two-step verification PIN. Body: { pin }.

Path parameters:

Request body:

Responses:

GET /{key}/instance/webhook/statistics

Get webhook delivery statistics Returns webhook delivery metrics including success/failure counts, response times, and recent delivery history.

Path parameters:

Responses:

Message

POST /{key}/message

Send a message Send a message using the exact WhatsApp Cloud API (Meta) request body and response envelope. Supports text, media (image/audio/video/document/sticker) via URL link, location, reaction, interactive (button/list/cta_url), and contacts.

Path parameters:

Request body:

Responses:

POST /{key}/message/presence

Send typing or recording indicator Sends a presence update (composing, recording, paused) to a chat. The recipient will see "typing..." or "recording audio...".

Path parameters:

Request body:

Responses:

POST /{key}/message/read

Mark a message as read (and optionally show typing) Marks a received message as read by its ID. On official (Cloud API) instances, set typing:true to also show the "typing…" indicator (both are the same Cloud API call).

Path parameters:

Request body:

Responses:

POST /{key}/message/text

Send a text message to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/template

Send an approved template message (official only) Sends a pre-approved WhatsApp message template via the Cloud API. This is the only way to start a conversation or re-engage a contact outside the 24-hour customer service window. Body: { to, name, language?, components? }.

Path parameters:

Request body:

Responses:

POST /{key}/message/button_reply

Send interactive button message (reply type) to a specific recipient.

Header with media attachment example:

{
  "header": {
    "title": "Example Header With media",
    "hasMediaAttachment": true,
    "imageMessage": {
      "url": "https://raphaelvserafim.com/og-image.png"
    },
    "documentMessage": {
      "url": "https://raphaelvserafim.com/RaphaelSerafimResume.pdf",
      "mimetype": "application/pdf",
      "fileName": "Raphael.pdf"
    }
  }
}

Fields:

Path parameters:

Request body:

Responses:

POST /{key}/message/button_action

Send interactive button message (call-to-action) to a specific recipient.

Header with media attachment example:

{
  "header": {
    "title": "Example Header With media",
    "hasMediaAttachment": true,
    "imageMessage": {
      "url": "https://raphaelvserafim.com/og-image.png"
    },
    "documentMessage": {
      "url": "https://raphaelvserafim.com/RaphaelSerafimResume.pdf",
      "mimetype": "application/pdf",
      "fileName": "Raphael.pdf"
    }
  }
}

Fields:

Path parameters:

Request body:

Responses:

POST /{key}/message/pix

Send a Pix payment message Sends a Brazilian Pix payment message with QR code or copy-paste code. Requires Pix permission.

Path parameters:

Request body:

Responses:

POST /{key}/message/order-details

Send an order with a payment link (Payments BR) Sends an order_details message with a payment link (payment_link) for the customer to pay off-WhatsApp. Body: SchemaSendingOrderDetails. On official instances routes to the Cloud API.

Path parameters:

Request body:

Responses:

POST /{key}/message/order-status

Update an order status (official only — Payments BR) Sends an order_status update for a previous order. Body: { to, referenceId, status, description? }. Official (Cloud API) only.

Path parameters:

Request body:

Responses:

POST /{key}/message/list

Send an interactive list message to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/survey

Send a poll/survey message Sends a poll message with selectable options. Recipients can vote directly in the chat.

Path parameters:

Request body:

Responses:

POST /{key}/message/title

Send a rich text message with title and footer Sends a formatted message with a bold title, body text, and a smaller footer section.

Path parameters:

Request body:

Responses:

POST /{key}/message/audio

Send an audio file to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/image

Send an image file to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/video

Send a video file to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/document

Send a document/file to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/contact

Send a contact card (vCard) to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/contacts

Send multiple contact cards to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/location

Send a static location pin to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/location-request

Request the recipient to share their location to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/ad

Send a message with ad context to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/live-location

Send a real-time live location to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/unpin

Unpin a message from chat Removes the pin from a previously pinned message in a chat.

Path parameters:

Request body:

Responses:

POST /{key}/message/link

Send a custom link preview message Sends a URL with a customized preview (title, description, thumbnail). To send a plain URL, use the text endpoint instead.

Path parameters:

Request body:

Responses:

POST /{key}/message/reaction

React to a message with emoji to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/sticker

Send a sticker to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/video-note

Send a circular video note (PTV) to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/poll

Send a poll message Creates an interactive poll with multiple choice options. Set selectableCount to limit how many options each person can choose.

Path parameters:

Request body:

Responses:

POST /{key}/message/event

Send an event/calendar invite Sends an event message with name, description, date/time, and optional location. Recipients can view event details inline.

Path parameters:

Request body:

Responses:

POST /{key}/message/pin

Pin a message in chat Pins a message to the top of a chat. Duration is in seconds (default: 7 days = 604800).

Path parameters:

Request body:

Responses:

POST /{key}/message/call-link

Send a call link invitation Generates and sends a WhatsApp call link (audio or video) to a contact with an optional caption.

Path parameters:

Request body:

Responses:

GET /{key}/message/{messageId}

Get message by ID Retrieves the full message object including metadata, content, and delivery status by its unique message ID.

Path parameters:

Responses:

GET /{key}/message/{messageId}/media

Download media from a message Downloads media from a message by its ID. Use ?format=binary for raw file download, or ?format=json (default) for base64 JSON response.

Path parameters:

Query parameters:

Responses:

POST /{key}/message/base64/image

Send an image from base64 data to a specific recipient.

Path parameters:

Request body:

Responses:

POST /{key}/message/base64/audio

Send audio from base64 data Send an audio file encoded as a base64 string instead of a URL.

Path parameters:

Request body:

Responses:

POST /{key}/message/base64/document

Send a document from base64 data Send a document encoded as a base64 string instead of a URL.

Path parameters:

Request body:

Responses:

POST /{key}/message/product

Send a product catalog card Sends a product card from a WhatsApp Business catalog. Requires the business owner JID and product ID.

Path parameters:

Request body:

Responses:

POST /{key}/message/product-list

Send a product list (official only) Sends a multi-product message (product_list) from the catalog. Official (Cloud API) only. Body: { to, header, body, footer?, sections:[{ title, productRetailerIds:[] }], catalogId? }.

Path parameters:

Request body:

Responses:

POST /{key}/message/group-invite

Send a group invite link message Sends a rich group invite message with group name and join link. The recipient can tap to join directly.

Path parameters:

Request body:

Responses:

POST /{key}/message/request-phone

Request phone number from contact Sends a request to a contact asking them to share their phone number.

Path parameters:

Request body:

Responses:

POST /{key}/message/create-call-link

Generate a call link (without sending) Creates a WhatsApp call link (audio or video) and returns it without sending to anyone. Useful for embedding in external apps.

Path parameters:

Request body:

Responses:

Action message

DELETE /{key}/message/{id}

Delete a message Deletes a message for everyone in the chat. The message ID must be from a message sent by this instance. Not available on official (Cloud API) instances — the Meta Cloud API cannot delete a sent message.

Path parameters:

Responses:

PUT /{key}/message/{id}

Update a message Replaces the text content of a previously sent message. Only text messages can be updated. Not available on official (Cloud API) instances — the Meta Cloud API cannot edit a sent message.

Path parameters:

Request body:

Responses:

POST /{key}/message/{id}/forwarding

Forward a message Forwards an existing message to another chat. The original sender information is preserved.

Path parameters:

Request body:

Responses:

PUT /{key}/message/{id}/edit

Edit a message Edits the text of a previously sent message. The message will show an "edited" label. Not available on official (Cloud API) instances — the Meta Cloud API cannot edit a sent message.

Path parameters:

Request body:

Responses:

POST /{key}/message/{id}/keep

Star/keep a message Stars (bookmarks) a message for easy retrieval later.

Path parameters:

Responses:

Reply to a message

POST /{key}/message/{id}/text

Reply with text Sends a text message as a reply to a specific message, showing a quote of the original.

Path parameters:

Request body:

Responses:

POST /{key}/message/{id}/button_reply

Reply with interactive buttons (reply type) to a specific recipient.

Header with media attachment example:

{
  "header": {
    "title": "Example Header With media",
    "hasMediaAttachment": true,
    "imageMessage": {
      "url": "https://raphaelvserafim.com/og-image.png"
    },
    "documentMessage": {
      "url": "https://raphaelvserafim.com/RaphaelSerafimResume.pdf",
      "mimetype": "application/pdf",
      "fileName": "Raphael.pdf"
    }
  }
}

Fields:

Path parameters:

Request body:

Responses:

POST /{key}/message/{id}/button_action

Reply with interactive buttons (call-to-action) to a specific recipient.

Header with media attachment example:

{
  "header": {
    "title": "Example Header With media",
    "hasMediaAttachment": true,
    "imageMessage": {
      "url": "https://raphaelvserafim.com/og-image.png"
    },
    "documentMessage": {
      "url": "https://raphaelvserafim.com/RaphaelSerafimResume.pdf",
      "mimetype": "application/pdf",
      "fileName": "Raphael.pdf"
    }
  }
}

Fields:

Path parameters:

Request body:

Responses:

POST /{key}/message/{id}/pix

Reply with a Pix payment Replies to a message with a Brazilian Pix payment message.

Path parameters:

Request body:

Responses:

POST /{key}/message/{id}/title

Reply with rich text (title and footer) Replies with a formatted message containing title, body, and footer.

Path parameters:

Request body:

Responses:

POST /{key}/message/{id}/audio

Reply with audio Replies to a message with an audio file sent as voice message.

Path parameters:

Request body:

Responses:

POST /{key}/message/{id}/image

Reply with image Replies to a message with an image file. Supports caption.

Path parameters:

Request body:

Responses:

POST /{key}/message/{id}/video

Reply with video Replies to a message with a video file. Supports caption.

Path parameters:

Request body:

Responses:

POST /{key}/message/{id}/document

Reply with document Replies to a message with a document/file attachment.

Path parameters:

Request body:

Responses:

POST /{key}/message/{id}/contact

Reply with contact card Replies to a message with a contact vCard.

Path parameters:

Request body:

Responses:

POST /{key}/message/{id}/location

Reply with location Replies to a message with a location pin.

Path parameters:

Request body:

Responses:

Chat

GET /{key}/chat

List all chats Returns all chats (individual and group) with their last message, unread count, and metadata.

Path parameters:

Responses:

PATCH /{key}/chat

Modify chat properties Update chat attributes. Supported actions: "markRead" (mark messages as read/unread) and "pin" (pin/unpin chat to top).

Path parameters:

Query parameters:

Responses:

DELETE /{key}/chat

Delete a chat Permanently deletes a chat and its local message history. The chat ID must be in JID format (e.g., [email protected]).

Path parameters:

Query parameters:

Responses:

GET /{key}/chat/messages

Get paginated chat messages Retrieves messages from a specific chat with pagination. Returns up to 100 messages per page (default: 50).

Path parameters:

Query parameters:

Responses:

POST /{key}/chat/presence/subscribe

Subscribe to contact presence Subscribes to real-time presence updates (online/offline/typing) for a specific contact. Updates are delivered via webhook.

Path parameters:

Request body:

Responses:

POST /{key}/chat/disappearing

Toggle disappearing messages Enables or disables disappearing messages for a 1:1 chat. Set expiration in seconds (0 to disable, 86400 for 24h, 604800 for 7 days, 7776000 for 90 days).

Path parameters:

Request body:

Responses:

GET /{key}/chat/privacy

Get privacy settings Returns the current privacy settings including who can see your last seen, profile photo, about, status, and read receipts.

Path parameters:

Responses:

Call

POST /{key}/call

Make a voice call Initiates a voice call to a contact. Requires call permission enabled on the instance.

Path parameters:

Request body:

Responses:

DELETE /{key}/call/{id}/{from}

Reject an incoming call Rejects an incoming call by its call ID and caller JID.

Path parameters:

Responses:

POST /{key}/call/accept

Accept an incoming call Accepts a pending incoming call using the call ID and caller JID.

Path parameters:

Request body:

Responses:

POST /{key}/call/end

End an active call Terminates an ongoing call by its call ID and peer JID.

Path parameters:

Request body:

Responses:

POST /{key}/call/{callId}/audio

Send audio into an active call

Path parameters:

Request body:

Responses:

Labels

GET /{key}/labels

List all labels Returns all custom labels created for organizing chats. Labels include name, color, and ID.

Path parameters:

Responses:

POST /{key}/labels

Create a new label Creates a custom label for organizing chats. Optionally specify a label ID for updating an existing label.

Path parameters:

Request body:

Responses:

GET /{key}/labels/{id}

List chats with a specific label Returns all chats that have been tagged with the specified label ID.

Path parameters:

Responses:

POST /{key}/labels/{id}

Assign a label to a chat Tags a chat with a label. Provide the contact/group number in the "to" field.

Path parameters:

Request body:

Responses:

DELETE /{key}/labels/{id}

Delete a label Permanently deletes a label. All chats tagged with this label will be untagged.

Path parameters:

Responses:

DELETE /{key}/labels/{id}/chat/{to}

Remove a label from a chat Removes the specified label from a chat.

Path parameters:

Responses:

Actions

GET /{key}/actions/registered

Check if number is on WhatsApp Verifies whether a phone number is registered on WhatsApp. Returns the JID if registered.

Path parameters:

Query parameters:

Responses:

POST /{key}/actions/download/media

(Deprecated) Download media from message Downloads media content from a WhatsApp message. Deprecated: use GET /message/:messageId/media instead.

Path parameters:

Query parameters:

Request body:

Responses:

DELETE /{key}/actions/storage

Delete stored media files Permanently deletes all saved media files for this instance from S3/storage.

Path parameters:

Responses:

Contacts

GET /{key}/contacts

List all contacts Returns the complete contact list with names, phone numbers, and profile information.

Path parameters:

Responses:

POST /{key}/contacts

Add a new contact Saves a contact to the device address book with the specified name and phone number.

Path parameters:

Request body:

Responses:

GET /{key}/contacts/{number}

Get contact profile Returns the profile information for a specific contact including name, profile picture URL, and status text.

Path parameters:

Responses:

DELETE /{key}/contacts/{number}

Remove a contact Deletes a contact from the device address book. This does not delete the chat history.

Path parameters:

Responses:

PATCH /{key}/contacts/{number}

Block or unblock a contact Toggles the block status of a contact. Blocked contacts cannot send you messages or see your profile updates.

Path parameters:

Query parameters:

Responses:

DELETE /{key}/contacts/{number}/session

Clear contact session (chat history will not be deleted) This endpoint is useful when you want to clear the session of a contact without deleting the chat history. It will remove the session from the device, but the messages will still be available in the chat history.

Path parameters:

Responses:

GET /{key}/contacts/{number}/status

Get contact status text Returns the "About" status text of a specific contact.

Path parameters:

Responses:

GET /{key}/contacts/blocked

List blocked contacts Returns all contacts that have been blocked by this instance.

Path parameters:

Responses:

POST /{key}/contacts/resolve-lids

Resolve LID JIDs to phone numbers Converts LID (Linked Identity) JIDs to their corresponding phone numbers in batch. Useful for resolving anonymous group participants.

Path parameters:

Request body:

Responses:

Groups

GET /{key}/groups

List all groups Returns all WhatsApp groups the instance is a member of, including group metadata.

Path parameters:

Responses:

POST /{key}/groups

Create a new group Creates a new WhatsApp group with a subject (name) and optional initial participants.

Path parameters:

Request body:

Responses:

GET /{key}/groups/readiness

Check groups readiness (diagnostic) Diagnostic for group support. On official (Cloud API) instances, checks platform type and business verification (OBA) and probes the Groups API — returning ready, per-check results, and human-readable blockers explaining why groups may be unavailable. On non-official instances, groups run via the connected Baileys session.

Path parameters:

Responses:

GET /{key}/groups/{id}

Get group details Returns detailed information about a specific group including subject, description, participants, and settings. The ID must be in group JID format (e.g., [email protected]).

Path parameters:

Responses:

PUT /{key}/groups/{id}

Update group subject and description Updates the group name (subject) and/or description text.

Path parameters:

Request body:

Responses:

PATCH /{key}/groups/{id}

Update group settings Changes group settings such as who can send messages (announcement mode) and who can edit group info.

Path parameters:

Query parameters:

Responses:

DELETE /{key}/groups/{id}

Leave a group Removes the instance from the specified group. This action cannot be undone without a new invite.

Path parameters:

Responses:

GET /{key}/groups/{id}/members

List group members Returns all participants of a group with their roles (admin, superadmin, or member).

Path parameters:

Responses:

GET /{key}/groups/invite/info

Get group info from invite code Retrieves group metadata using an invite code (the part after chat.whatsapp.com/).

Path parameters:

Query parameters:

Responses:

GET /{key}/groups/{id}/invite

Get group invite link Generates and returns the invite link for a group. Requires admin privileges.

Path parameters:

Responses:

PUT /{key}/groups/{id}/picture

Update group picture Sets a new group profile picture from a publicly accessible image URL. Requires admin privileges.

Path parameters:

Request body:

Responses:

DELETE /{key}/groups/{id}/picture

Remove group picture Removes the group profile picture, reverting to the default placeholder. Requires admin privileges.

Path parameters:

Responses:

POST /{key}/groups/{id}/participants

Add participants to group Adds one or more users to a group. Requires admin privileges. Provide participant phone numbers in JID format.

Path parameters:

Request body:

Responses:

DELETE /{key}/groups/{id}/participants

Remove participants from group Removes one or more users from a group. Requires admin privileges.

Path parameters:

Request body:

Responses:

PATCH /{key}/groups/{id}/role

Change participant role (promote/demote) Promotes a participant to admin or demotes an admin to regular member. Requires superadmin privileges.

Path parameters:

Query parameters:

Request body:

Responses:

GET /{key}/groups/{id}/request_participants_list

List pending join requests Returns the list of users who have requested to join the group and are waiting for admin approval.

Path parameters:

Responses:

PUT /{key}/groups/{id}/request_participants_list

Approve or reject join requests Approves or rejects pending group join requests. Requires admin privileges.

Path parameters:

Request body:

Responses:

Community

GET /{key}/community

List all communities Returns all WhatsApp communities the instance is a member of.

Path parameters:

Responses:

POST /{key}/community

Create a new community Creates a new WhatsApp community with a name, description, and initial groups.

Path parameters:

Request body:

Responses:

GET /{key}/community/{id}

Get community details Returns detailed information about a community including linked groups and member counts.

Path parameters:

Responses:

PUT /{key}/community/{id}

Update community info Updates the community name and/or description.

Path parameters:

Request body:

Responses:

DELETE /{key}/community/{id}

Leave a community Removes the instance from the community. You will also leave all community-linked groups.

Path parameters:

Responses:

PUT /{key}/community/{id}/picture

Update community picture Sets a new profile picture for the community from a URL. Requires admin privileges.

Path parameters:

Request body:

Responses:

POST /{key}/community/{id}/invite

Get community invite link Generates and returns the invite link for the community. Requires admin privileges.

Path parameters:

Responses:

DELETE /{key}/community/{id}/participants

Remove community members Removes one or more members from the community. Requires admin privileges.

Path parameters:

Request body:

Responses:

GET /{key}/community/{id}/request_participants_list

List pending join requests Returns users who have requested to join the community and are awaiting approval.

Path parameters:

Responses:

PUT /{key}/community/{id}/request_participants_list

Approve or reject join requests Processes pending community join requests. Requires admin privileges.

Path parameters:

Request body:

Responses:

POST /{key}/community/invite/accept

Accept a community invite Joins a community using an invite code.

Path parameters:

Request body:

Responses:

GET /{key}/community/invite/info

Get community info from invite code Retrieves community metadata using an invite code.

Path parameters:

Query parameters:

Responses:

POST /{key}/community/{id}/group

Create a group within the community Creates a new group linked to the community with a subject and optional initial participants.

Path parameters:

Request body:

Responses:

POST /{key}/community/{id}/ephemeral

Toggle disappearing messages Enables or disables disappearing messages for all community groups. Set expiration in seconds (0 to disable).

Path parameters:

Request body:

Responses:

PATCH /{key}/community/{id}/settings

Update community settings Changes community settings such as announcements and restrictions.

Path parameters:

Request body:

Responses:

PATCH /{key}/community/{id}/member-add-mode

Set member addition permissions Controls who can add new members to the community: "admin_add" (admins only) or "all_member_add" (any member).

Path parameters:

Request body:

Responses:

PATCH /{key}/community/{id}/join-approval

Toggle join approval requirement When enabled ("on"), new members must be approved by an admin before joining. Set to "off" to allow instant joins.

Path parameters:

Request body:

Responses:

Business

GET /{key}/business/collections

List product collections Returns product collections from the WhatsApp Business catalog.

Path parameters:

Query parameters:

Responses:

GET /{key}/business/catalog

List catalog products Returns paginated products from the WhatsApp Business catalog. Use cursor for pagination.

Path parameters:

Query parameters:

Responses:

POST /{key}/business/catalog/product

Create a catalog product Adds a new product to the WhatsApp Business catalog with name, price, description, and images.

Path parameters:

Request body:

Responses:

PUT /{key}/business/catalog/product/{product_id}

Update a catalog product Updates an existing product in the WhatsApp Business catalog by its product ID.

Path parameters:

Request body:

Responses:

DELETE /{key}/business/catalog/product/{product_id}

Delete a catalog product Permanently removes a product from the WhatsApp Business catalog.

Path parameters:

Responses:

GET /{key}/business/order/{order_id}

Get order details Returns details of a specific order by its ID. Requires the order token.

Path parameters:

Query parameters:

Responses:

GET /{key}/business/commerce-settings

Get commerce settings (official only) Returns the WhatsApp commerce settings (cart enabled, catalog visibility) for the number. Official (Cloud API) only.

Path parameters:

Responses:

POST /{key}/business/commerce-settings

Update commerce settings (official only) Toggles cart (isCartEnabled) and catalog visibility (isCatalogVisible). Official (Cloud API) only.

Path parameters:

Request body:

Responses:

Newsletter

POST /{key}/newsletter

Create a newsletter channel Creates a new WhatsApp Channel (newsletter) with a name and optional description.

Path parameters:

Request body:

Responses:

GET /{key}/newsletter/metadata

Get newsletter metadata Retrieves newsletter details by invite code or JID. Set type to "invite" for invite codes or "jid" for direct JID lookup.

Path parameters:

Query parameters:

Responses:

GET /{key}/newsletter/{id}/subscribers

Get subscriber count Returns the total number of followers for a newsletter.

Path parameters:

Responses:

GET /{key}/newsletter/{id}/admins

Get admin count Returns the number of administrators managing the newsletter.

Path parameters:

Responses:

POST /{key}/newsletter/{id}/follow

Follow a newsletter Subscribes the instance to a newsletter channel to receive its updates.

Path parameters:

Responses:

POST /{key}/newsletter/{id}/unfollow

Unfollow a newsletter Unsubscribes the instance from a newsletter channel.

Path parameters:

Responses:

PUT /{key}/newsletter/{id}/name

Update newsletter name Changes the display name of a newsletter. Requires owner/admin privileges.

Path parameters:

Request body:

Responses:

PUT /{key}/newsletter/{id}/description

Update newsletter description Changes the description text of a newsletter. Requires owner/admin privileges.

Path parameters:

Request body:

Responses:

PUT /{key}/newsletter/{id}/picture

Update newsletter picture Sets a new profile picture for the newsletter from a URL. Requires owner/admin privileges.

Path parameters:

Request body:

Responses:

DELETE /{key}/newsletter/{id}/picture

Remove newsletter picture Removes the newsletter profile picture. Requires owner/admin privileges.

Path parameters:

Responses:

PUT /{key}/newsletter/{id}/owner

Transfer newsletter ownership Transfers ownership of the newsletter to another user. This action is irreversible.

Path parameters:

Request body:

Responses:

PUT /{key}/newsletter/{id}/demote

Demote a newsletter admin Removes admin privileges from a newsletter administrator.

Path parameters:

Request body:

Responses:

GET /{key}/newsletter/{id}/messages

Get newsletter messages Fetches newsletter messages with pagination. Use "since" for messages after a timestamp, "after" for messages after a specific server ID.

Path parameters:

Query parameters:

Responses:

POST /{key}/newsletter/{id}/react

React to a newsletter message Adds or removes a reaction emoji on a newsletter message. Send without reaction to remove.

Path parameters:

Request body:

Responses:

POST /{key}/newsletter/{id}/mute

Mute newsletter notifications Silences push notifications for a newsletter while staying subscribed.

Path parameters:

Responses:

POST /{key}/newsletter/{id}/unmute

Unmute newsletter notifications Re-enables push notifications for a previously muted newsletter.

Path parameters:

Responses:

DELETE /{key}/newsletter/{id}

Delete a newsletter Permanently deletes a newsletter and all its messages. Requires owner privileges. This action cannot be undone.

Path parameters:

Responses:

Status

POST /{key}/status/text

Send a text status/story Publish a text-only status. Optionally limit visibility with statusJidList (array of JIDs who can see it). If omitted, all contacts will see.

Path parameters:

Request body:

Responses:

POST /{key}/status/image

Send an image status/story Publish an image status. Supports URL to any image format (jpg, png, webp, etc).

Path parameters:

Request body:

Responses:

POST /{key}/status/video

Send a video status/story Publish a video status. Max 30 seconds recommended. Supports mp4 format.

Path parameters:

Request body:

Responses:

POST /{key}/status/audio

Send an audio status/story Publish an audio status as a voice note (PTT).

Path parameters:

Request body:

Responses:

POST /{key}/status/mention

Mention a contact in a status Send a mention to a contact referencing a specific status message.

Path parameters:

Request body:

Responses:

Templates

GET /{key}/templates

List message templates (official only) Lists the WABA message templates with their approval status, category, language and components. Available only for official (Cloud API) instances.

Path parameters:

Responses:

POST /{key}/templates

Create a message template (official only) Submits a new WhatsApp message template to Meta for review. Body: { name, language, category, components }. Available only for official (Cloud API) instances.

Path parameters:

Request body:

Responses:

DELETE /{key}/templates

Delete a message template by name (official only) Removes a WhatsApp message template from the WABA by its name.

Path parameters:

Query parameters:

Responses:

POST /{key}/templates/upload

Upload a header media sample and get its handle (official only) Uploads a media (public URL or base64 data URL) and returns the handle to use in a template header example (example.header_handle).

Path parameters:

Request body:

Responses:

GET /{key}/templates/{id}

Get a message template by ID (official only) Returns a single template (status, category, language, components) by its ID.

Path parameters:

Responses:

PUT /{key}/templates/{id}

Edit a message template by ID (official only) Edits an existing template (category and/or components) — name/language cannot change. Re-submits for Meta review.

Path parameters:

Request body:

Responses:

Media

POST /{key}/media

Upload a runtime media and get its Meta media id (official only) Uploads a media (public URL or base64 data URL) to the Cloud API and returns the media id to use as a template header parameter at send time.

Path parameters:

Request body:

Responses:

Analytics

GET /{key}/analytics/usage

Usage vs messaging limit (official only) Business-initiated conversations in the last 24h vs the number messaging_limit_tier. Approximation — Meta does not expose the exact real-time counter.

Path parameters:

Responses:

GET /{key}/analytics/conversations

Conversation analytics (official only) Conversation counts and cost by category/type. Query: start, end (unix seconds), granularity (HALF_HOUR|DAILY|MONTHLY).

Path parameters:

Query parameters:

Responses:

GET /{key}/analytics/messages

Messaging analytics (official only) Sent/delivered message counts. Query: start, end (unix seconds), granularity (HALF_HOUR|DAILY|MONTHLY).

Path parameters:

Query parameters:

Responses:

GET /{key}/analytics/templates

Template analytics (official only) Per-template metrics (sent, delivered, read, button clicks) in the period. Query: start, end (unix seconds).

Path parameters:

Query parameters:

Responses:

GET /{key}/analytics/pricing

Pricing analytics (official only) Cost and conversation counts by category in the period. Query: start, end (unix seconds).

Path parameters:

Query parameters:

Responses:

Calling

GET /{key}/calling/settings

Get calling settings (official only) Returns the number calling configuration (status, call hours, callback permission, SIP).

Path parameters:

Responses:

POST /{key}/calling/settings

Update calling settings (official only) Configures calling: { calling: { status, call_icon_visibility, callback_permission_status, call_hours, sip } }. Use SIP to bridge audio to your PBX (no WebRTC stack needed).

Path parameters:

Request body:

Responses:

POST /{key}/calling/call

Control a call: connect/pre_accept/accept/reject/terminate (official only) Signaling for the WhatsApp Business Calling API. connect requires "to"; the others require "callId". Pass "sdp" (WebRTC) when applicable. Audio media is WebRTC/SIP — not handled here.

Path parameters:

Request body:

Responses:

Conversation

GET /{key}/conversation

Get conversational components (official only) Returns the welcome message toggle, ice breakers (prompts) and commands configured on the number.

Path parameters:

Responses:

POST /{key}/conversation

Update conversational components (official only) Sets welcome message, ice breakers (prompts, up to 4) and commands. Body: { enableWelcomeMessage, prompts:[], commands:[{command_name,command_description}] }.

Path parameters:

Request body:

Responses:

Data Models

SchemaWebhook

SchemaSendMessageMeta

MetaText

MetaMediaLink

MetaLocation

MetaReaction

SchemaSendingPresence

SchemaMarkRead

SchemaSendingText

SchemaSendingTemplate

SchemaButtonMessageReply

SchemaButton

SchemaButtonMessage

SchemaSendingPix

Item

SchemaSendingOrderDetails

OrderTax

OrderItem

SchemaSendingList

ListSection

ListRow

SchemaSendingSurvey

SchemaSendWithTitleAndFooter

SchemaSendingAudio

SchemaSendingImage

SchemaSendingVideo

SchemaSendingDocument

SchemaSendingContact

SchemaContact

SchemaSendingContacts

SchemaSendingLocation

SchemaLocation

SchemaSendingLocationRequest

SchemaSendingAd

SchemaSendingLink

SchemaSendingReaction

SchemaSendingImageBase64

SchemaSendingAudioBase64

SchemaSendingDocumentBase64

DownloadableMessage

SchemaGroupCreate

SchemaGroupUpdate

SchemaGroupParticipants

GroupParticipants

SchemaCommunityCreate

SchemaCommunityUpdate

SchemaProduct

SchemaCreateTemplate

TemplateComponent

TemplateButton

SchemaUpdateTemplate