Introduction
Send and receive WhatsApp messages from your own system with the Wappfy API.
Wappfy connects a WhatsApp number to the systems you already use. With the Wappfy API your code (a CRM, n8n, Make or your own backend) sends messages and reads the number's chats, and webhooks tell your system what happens on the number as it happens.
Base URL
https://app.wappfy.io/api/v1Every route in these docs is relative to it. For example, sending a text is POST https://app.wappfy.io/api/v1/messages/text.
What you can do
Send messages
Text, image, file, video, voice note, location, contact card, poll, list message and sticker. Reply quoting a message, react, mark as read, edit and delete.
Receive webhooks
Incoming and sent messages, delivered and read status, connection status, reactions, edits, groups, calls, poll votes, presence and labels. Every delivery is signed.
Read chats and contacts
List chats and their messages, list contacts, check whether a number has WhatsApp and get profile pictures.
Manage groups and labels
Create groups, add and remove people, promote admins, invite links and settings. WhatsApp Business labels too.
The API also publishes WhatsApp Status (stories), sets presence and "typing...", changes the number's profile and rejects incoming calls.
Using GoHighLevel?
The Wappfy app brings WhatsApp into GoHighLevel Conversations, with no code. See the GoHighLevel guide.
How it works
Connect your number in the dashboard
In app.wappfy.io, open Connections and connect your WhatsApp number by scanning the QR code with your phone. Each connection is one WhatsApp number.
Generate an API key for that connection
On the connection, open the Integrations tab and click Generate key on the API card. The key (wpf_...) only works for that connection, so routes never take a connection id.
Send
Call the API with the key in the X-Api-Key header. A send returns the message_id of the WhatsApp message.
Receive
On the same Integrations tab, register a webhook URL on the Webhook card. Wappfy sends each event to it as a signed POST.
Conventions
- JSON in, JSON out. Success is
{ "data": ... }; an error is{ "error": { "codigo": "...", "mensagem": "..." } }. See Response format. - Phone numbers go with country code and area code, digits only (
5581999999999), or as a chat ID (...@c.us,...@lid, or a group...@g.us). - Timestamps in message data are Unix seconds. Dates such as
created_atare ISO 8601 in UTC. - No message quota. The pace is yours, but WhatsApp bans numbers that behave like spam bots. See Rate limits.
Every route, field and error is listed in the API Reference tab. The OpenAPI 3.1 document behind it is also served at GET https://app.wappfy.io/api/v1/openapi.json, with no key needed, so you can import it into Postman or Insomnia. That served copy has the same routes and schemas, with the descriptions in Portuguese.

