Bring WaAPI into
the flow of work.
A little less busywork with WaAPI.
Instances6 capabilities+
- list instances
Retrieve a list of your instances.
- create instance
Create a new instance. Optionally set a name and webhook configuration.
- retrieve instance
Retrieve a single instance by its ID
- update instance
Update the instance.
- delete instance
delete an instance by ID
- get async request status
Retrieve the status or result of an async request by its reference UUID. Results are cached for up to 5 minutes after processing.
Webhooks3 capabilities+
- create webhook subscription
Subscribe a URL to receive instance events. Up to 25 active subscriptions are allowed per instance. Subscribing an already-registered URL again returns the existing subscription with a 200 status instead of creating a duplicate.
- list webhook subscriptions
Retrieve the webhook subscriptions registered on an instance.
- delete webhook subscription
Remove a webhook subscription from an instance. A subscription id that does not belong to this instance is reported as not found, not forbidden.
Client25 capabilities+
- client status of instance
retrieve the status of your running client
- retrieve QR Code
Retrieves a base64 encoded QR code image that can be used to authenticate and connect a account to this instance.
- retrieve basic client information
Retrieve general information of the user connected to your instance.
- logout
Logs out the client, closing the current session
- reboot instance
Reboots your instance. This will close the current session and restart the client. The instance will need to be re-authenticated if it was previously logged in.
- send presence available
Sets the client's presence status to 'available'/'online'
- set status
Sets the status text for the connected account
- set display name
Sets the display name for the account
- request pairing code
Request a pairing code for phone number registration. To prevent abuse and ensure system stability, pairing code requests are limited to 2 per minute. Multiple rapid requests may indicate automated abuse attempts.
- send presence unavailable
Sets the client's presence status to 'unavailable'/'offline'
- [BETA] subscribe to and fetch current presence of a chat
Subscribes to presence updates for the given chat and returns the current state. Subsequent changes emit presence_update webhook events (if enabled in webhook settings). **Important — subscription model:** - Presence in Web is subscription-based. You MUST call this action at least once per chat you want to track. Without a subscribe, the presence_update webhook never fires for that chat. - Calling this action again acts as a renewal. Subscriptions are lost on instance reconnect — re-subscribe after any 'ready' event if you want continuous tracking. - Privacy reciprocity: if the instance account hides its own last-seen in the settings, it cannot read others' last-seen either. Expect deny:true or hasData:false in that case. - High-frequency event — a single active chat can produce 10+ presence_update webhooks per minute. Debounce on your side. - Groups: chatstate is always null. Use typingParticipants and recordingParticipants instead. isOnline on a group = 'at least one member online'. Note: This endpoint is currently in beta and may change without notice.
- [BETA] read cached presence for a chat without subscribing
Returns the locally cached presence for a chat without triggering a new subscription. Returns null if the chat has never been subscribed (via get-chat-presence) during the current session. Use get-chat-presence instead if you want to enable continuous tracking. Note: This endpoint is currently in beta and may change without notice.
- set device name
Sets the device name and/or browser name displayed for the Web session.
- create call link
Creates a call link for a scheduled call.
- send event response
Sends a response (RSVP) to a calendar event message.
- revoke status message
Revokes (deletes) a previously sent status message.
- [BETA] get privacy settings
Retrieve the authenticated account's privacy settings. Note: This endpoint is currently in beta and may change without notice.
- [BETA] set privacy setting
Update a single privacy category. Allowed values depend on the category. Note: This endpoint is currently in beta and may change without notice.
- [BETA] get business profile
Retrieve a business profile. Defaults to the authenticated account. Only WhatsApp Business accounts expose a profile. Note: This endpoint is currently in beta and may change without notice.
- [BETA] get business categories
List available business categories. Pass parentId to drill down; omit for top level. Note: This endpoint is currently in beta and may change without notice.
- [BETA] set business profile
Update the authenticated business account's profile. Only provided fields are changed. Profile picture is managed separately. Note: This endpoint is currently in beta and may change without notice.
- [BETA] get quick replies
List all quick replies configured on the business account. Note: This endpoint is currently in beta and may change without notice.
- [BETA] create quick reply
Create a new quick reply. Returns the created quick reply with its generated id. Note: This endpoint is currently in beta and may change without notice.
- [BETA] update quick reply
Update an existing quick reply by id. Only provided fields are changed. Note: This endpoint is currently in beta and may change without notice.
- [BETA] delete quick reply
Delete a quick reply by id. Note: This endpoint is currently in beta and may change without notice.
Message25 capabilities+
- send a text message to a chat
Send a text message to a chat. The chatId format varies depending on the chat type: - Individual chat: {phone_number}@c.us (e.g. 50664083362@c.us) - Group chat: {group_id}@g.us (e.g. 123456789-123456789@g.us) - Channel/Newsletter: {channel_id}@newsletter (e.g. 123456789@newsletter)
- send a media message (image, video, audio, document)
Send a media file to a chat. Provide either `mediaUrl` (a publicly accessible URL) or `mediaBase64` (base64-encoded file content with `mediaName`), but not both. The chatId format varies depending on the chat type: - Individual chat: {phone_number}@c.us (e.g. 123456789@c.us) - Group chat: {group_id}@g.us (e.g. 123456789-123456789@g.us) - Channel/Newsletter: {channel_id}@newsletter (e.g. 123456789@newsletter) Supported media types: - Images: jpg, jpeg, png, gif - Videos: mp4, 3gp, mov - Audio: mp3, wav, ogg, m4a - Documents: pdf, doc, docx, txt, xlsx, etc
- send vCard
Send a vCard to a contact or group.
- send location
Send a location message to a contact or group chat. The location can include additional details like name, address and URL.
- fetch messages from a chat
Retrieve messages from a specific chat with optional filtering and media inclusion
- get message by ID
Retrieve a specific message using its unique identifier. Optionally includes the media content if requested.
- download media from message
Downloads the media content from a message and returns a temporary download URL valid for 15 minutes. Use this instead of get-message-by-id with includeMedia when you only need the media file.
- get message info by id
get a message info by id
- delete message by id
delete a message by id
- edit a message
Edit a previously sent message.
- forward a message
Forward a message to another chat.
- search messages
Search for messages across all chats or within a specific chat. Returns paginated results with message details.
- create poll message
Creates and sends an interactive poll message to a specified chat. The poll can have between 2-12 options and optionally allow multiple selections.
- get poll votes
Retrieves the vote information for a specific poll message, including who voted for which options and the original poll message details.
- get message reactions
Get reactions for a specific message
- react to message
Add or remove a reaction emoji to/from a message
- get message mentions
Get mentions from a message
- pin message
Pin a message in a chat
- unpin message
Unpin a message in a chat
- star message
Star a message by its ID
- unstar message
Remove star from a message
- send event message
Creates and sends a calendar event message to a specified chat.
- vote on poll
Submits a vote on an existing poll message with the specified options.
- edit scheduled event
Edits an existing scheduled event message with updated details.
- get pinned messages
Retrieves all pinned messages from a specified chat.
Chat22 capabilities+
- mark chat messages as seen (blue ticks)
Mark all messages in a chat as seen (read). This will show blue ticks (double check marks) to the sender only if both parties have read receipts enabled in their privacy settings. If read receipts are disabled by either party, the messages will be marked as delivered (gray ticks) instead.
- get all chats
Retrieves a list of all chats with their latest messages and metadata. Supports pagination.
- mark chat as unread
Marks a specified chat conversation as unread. This is useful for flagging important conversations for later attention.
- mute chat
Mute notifications for a specific chat either indefinitely or until a specified date
- unmute chat
Removes mute settings from a specified chat, allowing notifications to be received again.
- pin chat
Pins a chat to the top of the chat list. The operation may fail if the maximum number of pinned chats (3) has been reached.
- unpin chat
Removes a chat from pinned status. This endpoint allows you to unpin a previously pinned chat conversation.
- get chat by id
- delete chat by id
- archive chat
- unarchive chat
- get chat labels
Get chat labels by chat ID
- get chats by labelId
Get chats by label ID
- send typing state
Sends typing state indicator to a chat
- clear chat messages
Clears all messages from a specific chat
- sync chat history
Synchronizes the chat history for a specific chat
- stop typing indicator
Stops the typing indicator for a chat
- add customer note
Adds a note to a customer chat for internal reference.
- get customer note
Retrieves the note associated with a customer chat.
- [BETA] get disappearing messages
Return the current disappearing-messages timer for a chat. Note: This endpoint is currently in beta and may change without notice.
- [BETA] set disappearing messages
Set the disappearing-messages timer on a chat. 0 disables; 86400 = 24h, 604800 = 7d, 7776000 = 90d. Groups require admin. Note: This endpoint is currently in beta and may change without notice.
- [BETA] get disappearing durations
Return the allowed disappearing-messages durations (in seconds). Server-controlled, may vary by account/region. Note: This endpoint is currently in beta and may change without notice.
Contact14 capabilities+
- get all contacts
Retrieves a list of all contacts from the account, including saved contacts and users who have messaged you.
- get formatted number
Format a phone number into standardized format
- is registered user
Check if a given contactId is registered.
- get profile picture URL
Retrieves the profile picture URL for a contact, chat, group, or newsletter. Access is subject to privacy settings. Use appropriate suffixes: @c.us for contacts/chats, @g.us for groups, @newsletter for newsletters.
- get contact details by ID
Retrieves detailed contact information for a specific contact using their ID. Returns contact details including name, number, business status, and various contact flags.
- get contact LID and phone
Resolves the mapping between a contact's Linked ID (LID) and phone number. Works in both directions: pass phone-number IDs (number@c.us) to get their LID, or pass Linked IDs (number@lid) to get the phone number. Returns an array of contact objects with their LID and phone number (pn) mappings.
- [BETA] add and update contact
Creates a new contact or updates an existing one in the address book. The contact will be synchronized to the device's address book if syncToAddressbook is true. Note: This endpoint is currently in beta and may change without notice.
- delete contact
Deletes a contact from the address book.
- block a contact
Blocks a contact, preventing them from sending messages to the authenticated user. The contact will not be able to see the user's last seen, online status, or status updates.
- unblock a contact
Removes a contact from the blocked contacts list, allowing them to send messages and see your information again according to your privacy settings.
- get blocked contacts
Retrieves a list of all blocked contacts
- get common groups with contact
Get list of groups that are in common between you and the specified contact
- get contact about info
Retrieves the about/status info for a specific contact
- get broadcast
Retrieves broadcast list details for a specified contact.
Number2 capabilities+
- get chat ID from phone number
Converts a phone number into the proper chat ID format. This is especially useful for countries that don't follow the standard chat ID format (like Brazil, Mexico and Argentina). The endpoint ensures you get the correct chat ID for any phone number.
- get country code
Get the country code for a given phone number
Story5 capabilities+
- [BETA] get stories
Retrieves all available stories/status updates that are visible to the authenticated user. This includes both viewed and unviewed stories from contacts. Note: This endpoint is currently in beta and may change without notice.
- [BETA] post a text or media status/story
Publishes a status update visible to contacts per the user's privacy settings. Provide `content` for a text status (with optional `backgroundColor` ARGB integer and `fontStyle` 0-7) or `mediaUrl` (plus optional `mediaCaption`) for an image/video/audio status. Note: This endpoint is currently in beta and may change without notice.
- [BETA] set the Status privacy
Configure who can see Status posts from this instance. Set `type` to "all" for all contacts, "allow" to restrict visibility to a specific list of contacts, or "deny" to exclude specific contacts. ⚠️ This is a persistent account-level setting and is synchronized to all linked devices. Note: This endpoint is currently in beta and may change without notice.
- [BETA] get the current Status privacy
Retrieve the current Status privacy setting for the instance. Returns the audience type ("contact" for all contacts, "allow-list" for an allowlist, "deny-list" for a denylist) and the configured contacts (when type is allow-list or deny-list). Note: This endpoint is currently in beta and may change without notice.
- revoke status
Revokes (deletes) a previously posted status/story update.
Group14 capabilities+
- create group
Creates a new group with specified name and participants
- get group participants
- get group info
- update group info
Update Group Information
- update group settings
- add group participant
Add a participant to a group
- remove group participant
Remove a participant from a group
- promote group participant
Promote a participant to admin
- demote group participant
Demote a participant from admin to normal participant
- approve group membership requests
Approve pending group membership requests
- deny group membership requests
Deny pending group membership requests
- get group membership requests
Get pending group membership requests
- accept group invite
Accept a group invitation. Pass either inviteCode (the invite code or the full invite link) — identical to accept-invite — or inviteData, the invite object carried by a group invite message.
- get group invite info
Get information about a group invite code
Channel6 capabilities+
- create a channel
- get channels
get your channels
- get channel by id
- subscribe to channel
- unsubscribe from channel
- search channels
Search for channels
Community8 capabilities+
- [BETA] create a community
Create a new Community (parent group containing subgroups). When createGeneralChat is true (default), the service also provisions a default 'General' announcement subgroup. Note: This endpoint is currently in beta and may change without notice.
- [BETA] get communities
Retrieve all Communities the instance is a member of. Note: This endpoint is currently in beta and may change without notice.
- [BETA] get community by id
Retrieve a specific Community by its ID. Note: This endpoint is currently in beta and may change without notice.
- [BETA] get community subgroups
Retrieve all joined subgroups of a Community as full chat instances. Avoids N+1 roundtrips when walking a community. Note: This endpoint is currently in beta and may change without notice.
- [BETA] send community announcement
Post an announcement to a Community. Supports text (message), URL-based media (mediaUrl), and broadcast targeting. target='general' (default) posts only to the default announcement subgroup which reaches every community member and returns the message result synchronously. target='all' broadcasts sequentially to every linked subgroup and is ALWAYS dispatched asynchronously — the response contains a `reference` you can poll via GET /instances/{id}/request/{reference} instead of the message payload. If both message and mediaUrl are provided without mediaCaption, message is used as the media caption. Note: This endpoint is currently in beta and may change without notice.
- [BETA] link community subgroup
Link one or more existing standalone groups to a Community as subgroups. Note: This endpoint is currently in beta and may change without notice.
- [BETA] unlink community subgroup
Unlink one or more subgroups from a Community. They become standalone groups again. Note: This endpoint is currently in beta and may change without notice.
- [BETA] leave community
Leave a Community as the current user. Note: This endpoint is currently in beta and may change without notice.
Label3 capabilities+
- get all labels
Retrieve all labels.
- get label by id
- change chat labels
Add or remove labels on a chat.
Frequently asked
questions.
What could an Ambacti integration do with WaAPI?
The documented operations include Instances: list instances; Instances: create instance; Instances: retrieve instance; Instances: update instance.
Could I keep a workflow read-only?
For a read-only workflow, limit account permissions to reading data and exclude actions that create, update, or delete records.
Will every action run automatically?
Choose which steps could run on their own and which should pause for review. Changes should follow the permissions and approval rules you set.
Do I need to review actions in WaAPI?
Decide which work could run on its own and which steps need your review.