See llms.txt for all machine-readable content.
Unlock the full potential of WaAPI and n8n’s automation platform by connecting WaAPI’s capabilities with over 2,000 apps, data sources, services, and n8n’s built-in AI features.
Need something that’s not covered yet?
Use n8n’s pre-authenticated HTTP Request node to create new connections, giving you the flexibility to build powerful automations on any stack.
is built and maintained by our partners at WaAPI and verified by n8n. That means it’s solid, safe, and ready to help you tap into some great capabilities.
Official WaAPI community node for n8n. Send and receive messages, manage chats, contacts, groups and channels straight from your workflows. Every operation is generated from our OpenAPI spec, so the node never lags behind the API. Bearer token, no OAuth setup.
| 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 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. |
| 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 | 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' |
| Get Chat Presence | 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. |
| Get Chat Presence Snapshot | 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. |
| Get Privacy Settings | Retrieve the authenticated account's privacy settings. Note: This endpoint is currently in beta and may change without notice. |
| 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. |
| 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. |
| 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. |
| 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. |
| Get Quick Replies | List all quick replies configured on the business account. Note: This endpoint is currently in beta and may change without notice. |
| 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. |
| 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. |
| Delete Quick Reply | Delete a quick reply by id. Note: This endpoint is currently in beta and may change without notice. |
| Send Text Message To 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. [email protected]) - Group chat: {group_id}@g.us (e.g. [email protected]) - Channel/Newsletter: {channel_id}@newsletter (e.g. 123456789@newsletter) |
|---|---|
| Send Media Message | 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. [email protected]) - Group chat: {group_id}@g.us (e.g. [email protected]) - 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 | 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 | 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 Message | Edit a previously sent message. |
| Forward 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 | 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 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 | 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. |
| Send Seen | 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 Chats | Retrieves a list of all chats with their latest messages and metadata. Supports pagination. |
| Mark Chat 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 | Get chat by ID |
| Delete Chat By Id | Delete chat by ID |
| Archive Chat | archive chat |
| Unarchive Chat | unarchive chat |
| Get Chat Labels | Get chat labels by chat ID |
| Get Chats By Label Id | Get chats by label ID |
| Send Typing | 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 |
| Send Stop Typing | 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. |
| Get Disappearing Messages | Return the current disappearing-messages timer for a chat. Note: This endpoint is currently in beta and may change without notice. |
| 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. |
| 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. |
| Get 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 Pic 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 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 Lid | Resolves the mapping between a contact's Linked ID (LID) and phone number. Works in both directions: pass phone-number IDs ([email protected]) 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. |
| Upsert 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 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 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 | 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. |
| Get Number Id | 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 |
| Create Group | Creates a new group with specified name and participants |
|---|---|
| Get Group Participants | Get group participants |
| Get Group Info | Get group info |
| Update Group Info | Update Group Information |
| Update Group Settings | 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 |
| Accept Group Member Requests | Approve pending group membership requests |
| Deny Group Member Requests | Deny pending group membership requests |
| Get Group Member Requests | Get pending group membership requests |
| Accept Invite | Accept a group invite using an invite code |
| 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 Invite Info | Get information about a group invite code |
| Create Channel | Create a channel |
|---|---|
| Get Channels | get your channels |
| Get Channel By Id | get channel by id |
| Subscribe To Channel | subscribe to channel |
| Unsubscribe From Channel | unsubscribe from channel |
| Search Channels | Search for channels |
| Create 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. |
|---|---|
| Get Communities | Retrieve all Communities the instance is a member of. Note: This endpoint is currently in beta and may change without notice. |
| Get Community By Id | Retrieve a specific Community by its ID. Note: This endpoint is currently in beta and may change without notice. |
| 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. |
| 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. |
| 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. |
| 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. |
| Leave Community | Leave a Community as the current user. Note: This endpoint is currently in beta and may change without notice. |
| Get Labels | Retrieve all labels. |
|---|---|
| Get Label By Id | Get label by ID |
| Change Chat Labels | Add or remove labels on a chat. |
| 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. |
|---|---|
| Post Status | 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. |
| Set 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. |
| Get 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. |
| 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. |
Verified nodes need a quick setup by an instance owner first, but after that, everyone on the instance can start using them in their workflows. Learn more here.
Sign in to n8n, open the editor, and click + in the top right to open the Nodes panel
Search for WaAPI using the search bar. Look for the version marked by a badge . Then, select install.
Once WaAPI is installed, just drag, drop, and connect it like any other node in a workflow.

Save engineering resources
Reduce time spent on customer integrations, engineer faster POCs, keep your customer-specific functionality separate from product all without having to code.

n8n makes complex workflows easy to build, and versatile enough for me to add my own 'secret sauce.'

I have found the holy grail of automation.

n8n’s integration with third-party services is absolutely mind-blowing. It’s like a Swiss army knife for automation.
n8n is the tool that turns 'I have an idea' into 'it's running in production' faster than anything else.

Anything is possible with n8n. I think the cloud version is great, they are doing amazing stuff.
n8n’s integration with third-party services is absolutely mind-blowing. It’s like a Swiss army knife for automation.

Thank you to the n8n community. I did the beginners course and promptly took an automation WAY beyond my skill level.
I love the flexibility of n8n and how it lets different applications work together in a single workflow.
n8n is the glue that holds many of our systems together.
I can move fast, go deep when things get complex, and never feel boxed in.
