API Overview

Public REST API for WAFlow — send WhatsApp messages, manage templates and contacts, run campaigns, and receive webhooks.

API Overview

The WAFlow Public API lets you send WhatsApp messages, manage templates and contacts, run campaigns, and receive real‑time delivery and inbound events — all from your own backend, CRM, or automation tool.

It is a versioned REST API authenticated with an API key. Everything you can do in the dashboard is available programmatically.

Base URL

https://waflow.edesy.in/api/v1

All endpoints are under /api/v1 and require an API key. See Authentication to create one.

Quick start

curl -X POST "https://waflow.edesy.in/api/v1/messages" \
  -H "X-API-Key: wc_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+919812345678",
    "type": "text",
    "text": "Hello from WAFlow 👋"
  }'

Note: Free‑form text can only be sent inside an open 24‑hour customer service window. To start a conversation, send an approved template message.

Interactive reference

An always‑up‑to‑date, machine‑readable reference is served directly by the API:

Resource URL
Interactive docs https://waflow.edesy.in/api/v1/docs
OpenAPI spec (JSON) https://waflow.edesy.in/api/v1/openapi.json

Import the OpenAPI spec into Postman, Insomnia, or a code‑generator to get a typed client instantly.

API sections

Section Description
Authentication API keys, headers, and scopes
Send Messages Send one message — text, template, media, buttons, or list
Campaigns Template broadcasts to many recipients + delivery status
Contacts Manage contacts and contact lists
Templates Create, submit, sync, and delete message templates
Webhooks Receive inbound messages and delivery events

Response format

All responses are JSON. Successful responses include success: true plus the relevant data:

{
  "success": true,
  "messageId": "wamid.HBgMOTE5...",
  "to": "+919812345678",
  "type": "text",
  "timestamp": "2026-07-21T09:00:00.000Z"
}

Errors include success: false, a machine‑readable code, and a human‑readable message:

{
  "success": false,
  "error": "Insufficient API key permissions",
  "code": "INSUFFICIENT_SCOPE",
  "message": "This API key lacks the 'messages.send' permission.",
  "requiredScope": "messages.send"
}

HTTP status codes

Code Meaning
200 Success
201 Created
400 Bad request — validation error
401 Unauthorized — missing or invalid API key
403 Forbidden — the key lacks the required scope
404 Not found
429 Too many requests — rate limit exceeded
502 Provider error — the message could not be sent

Rate limits

Limit Value
Per API key 100 requests / 15 minutes (configurable per key)
Per IP (unauthenticated guard) 600 requests / 15 minutes

Rate‑limit headers (RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset) are returned on every response. See Authentication → Rate limits.

SDKs & libraries

There is no official SDK yet — use any HTTP client, or generate one from the OpenAPI spec:

  • JavaScript/Node.js: fetch, axios
  • Python: requests, httpx
  • Go: net/http
  • PHP: Guzzle, cURL

Need help?