Send WhatsApp messages through Echo from your own systems.
Create an app under Organization → API Access in Echo. The secret is shown once — if you lose it, generate a new one.
Base URL
…
Authenticate with a bearer token:
curl -H "Authorization: Bearer echo_sk_live_xxxx" \
…/ping
This API is described by an OpenAPI 3.1 document. In Postman choose Import → Link and paste the URL below to get every endpoint pre-built. The same file works in Insomnia, Bruno, Hoppscotch and most code generators.
…
Each app is granted scopes. Calling an endpoint your app lacks the scope for returns
403 insufficient_scope.
Each app has a per-minute budget (60 by default). Requests are weighted — a read costs 1, a
single send 5, a bulk send 20. Every response carries X-RateLimit-Limit,
X-RateLimit-Remaining and X-RateLimit-Reset.
WhatsApp only permits free-form text within 24 hours of the contact's last inbound message.
Outside it you must send an approved template. Check first with
GET /conversations/window; a free-form send outside the window returns
422 window_closed rather than silently sending something else.
Loading…
Every error uses the same envelope. Branch on code, never on the message text.
Quote requestId when reporting a problem.
{
"error": {
"code": "window_closed",
"message": "WhatsApp only allows free-form messages within 24 hours …",
"details": { "windowExpiredAt": "2026-01-16T09:00:00.000Z" },
"requestId": "00000000-0000-4000-8000-000000000000"
}
}