Developers

Build on Wafonic.
Ship in an afternoon.

A straightforward REST API for WhatsApp: send text, media and template messages, manage instances, and get a webhook every time a message changes state — no raw Graph API required.

send-message.sh
curl -X POST https://api.wafonic.com/api/v1/messages \  -H "Authorization: Bearer $WAFONIC_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "instance_id": "inst_8f21c0",    "to": "+15550100",    "type": "text",    "text": { "body": "Your order #1042 has shipped." }  }'

Everything you need

An API built for shipping

Simple REST API

Send a WhatsApp message with one POST request — the same call for QR and Official numbers.

Multi-instance support

Connect multiple numbers and target any of them by instance_id.

Reliable webhooks

Delivery status and inbound messages pushed to your endpoint, with retries.

API keys you control

Generate and revoke keys from the dashboard, scoped per workspace.

Secure by default

HTTPS only, credentials encrypted at rest, signed webhook payloads.

Delivery log

Inspect every request and webhook attempt when something looks off.

Works with any language

Simple HTTP calls mean you can integrate in minutes.

javascript
const res = await fetch("https://api.wafonic.com/api/v1/messages", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.WAFONIC_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    instance_id: "inst_8f21c0",
    to: "+15550100",
    type: "text",
    text: { body: "Hello from Node.js! 👋" },
  }),
});

console.log(await res.json());

Core endpoints

Every endpoint works the same way on QR / Unofficial and Meta Business API numbers.

  • POST/api/v1/messagesSend text, media or template messages
  • GET/api/v1/messages/:idFetch a message and its delivery state
  • GET/api/v1/instancesList connected WhatsApp numbers
  • POST/api/v1/instancesCreate a new instance and get a QR code
  • POST/api/v1/webhooksRegister or update your webhook endpoint

Webhook events

Point one HTTPS endpoint at Wafonic and receive delivery status plus inbound messages.

message.sent
The message was accepted and sent.
message.delivered
The recipient's device received the message.
message.failed
Delivery failed, with a reason code.
message.received
An inbound message arrived on one of your numbers.

You don't have to manage all of this over the wire: generate and revoke API keys from the dashboard, and inspect every webhook attempt in the webhook delivery log when something looks off. Access tokens and credentials are encrypted at rest.

Ready to add WhatsApp to your app?

Start free, get an API key in minutes and send your first message today.