WhatsApp Gateway

Sign in to manage instances and send messages.

WhatsApp Gateway

Checking

Create an instance

One instance holds one WhatsApp number.

Letters, digits, hyphens and underscores. 3 to 60 characters.

Link a number

Open WhatsApp on the sending phone, go to Linked devices, and have the scanner ready before you request the code — it expires in about 30 seconds.

QR code for linking a WhatsApp number

Scan within 30 seconds

Your instances

State refreshes every 15 seconds.

NameStateNumber
Loading…

Text message

Up to 4096 characters.

Photo, video or file

Upload from this machine, or point at a public URL.

Photos up to 5 MB, everything else up to 16 MB.

Message history

Every send, whether it came from this console or the API.

WhenToTypeStatusViaTookProblem
Loading…

Create a key

For scripts, servers and agents. The full value is shown once and never again — only a hash is stored.

Existing keys

Revoking takes effect immediately.

NamePrefixUsedStatus
Loading…

Authentication

Two ways in. The browser console uses a bearer token; everything else uses an API key. Create one on the API keys tab.

export WAG_URL="http://localhost:8099"
export WAG_KEY="wag_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# every request carries the key in this header
curl -s "$WAG_URL/health" \
  -H "X-API-Key: $WAG_KEY"

Endpoints

Numbers accept any format. A 10-digit value gets the default country code prepended, so 9876543210 and +91 98765-43210 are equivalent.

Responses and errors

Every failure comes back in the same shape, with a request id you can grep the logs for.

# success
{"ok":true,"id":"...","instance":"production-1","number":"919876543210",
 "message_type":"text","message_id":"3EB0...","status":"sent",
 "duration_ms":842,"request_id":"a1b2c3d4"}

# failure
{"ok":false,"error":"instance_not_connected",
 "message":"Instance 'production-1' is 'close', not 'open'. Scan its QR code before sending.",
 "detail":{"instance":"production-1","state":"close"},
 "request_id":"a1b2c3d4"}
StatusErrorWhat to do
401not_authenticatedMissing or wrong X-API-Key
403permission_deniedThe key lacks the scope this endpoint needs
404not_foundInstance name is wrong, or it was deleted
404number_not_on_whatsappRecipient has no WhatsApp account
409instance_not_connectedScan the QR code
422validation_errorCheck detail for the offending field
429rate_limitedBack off; see the Retry-After header
502upstream_errorEvolution returned an error — check its logs
503upstream_unavailableEvolution is unreachable