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?
- Browse the full WAFlow documentation
- Contact support at [email protected]
- Try WAFlow at waflow.edesy.in