Echo API

Send WhatsApp messages through Echo from your own systems.

Server-side only. Your API secret can send WhatsApp messages on your organisation's behalf and spends your messaging allowance. Never put it in a browser, a mobile app, or anywhere a visitor could read it. Cross-origin browser requests are deliberately blocked.

Getting started

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

Import into Postman

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.

Permissions

Each app is granted scopes. Calling an endpoint your app lacks the scope for returns 403 insufficient_scope.

Rate limits

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.

The 24-hour window

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.

Endpoints

Loading…

Errors

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"
  }
}