WaCheap

A WhatsApp API you can ship this afternoon

One API key, one webhook, and the official Cloud API underneath. No Meta app review of your own to get started.

Send a message

Templates, text, media and interactive messages with idempotency keys and a durable retry queue.

Onboard a customer number

Create a link, send it to your customer, and receive account.connected when they approve on their phone.

Receive events

Inbound messages, delivery and read receipts, phone-app echoes and account status, all HMAC-signed.

Send a template

curl -X POST https://app.wacheap.com/v1/messages \
  -H "Authorization: Bearer wbr_live_..." \
  -H "Idempotency-Key: order-1042-confirmation" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "wa_account_123",
    "to": "971501234567",
    "type": "template",
    "template": {
      "name": "order_confirmation",
      "language": "ar",
      "parameters": ["Sara", "1042"]
    }
  }'

Create an onboarding link

curl -X POST https://app.wacheap.com/v1/onboarding/links \
  -H "Authorization: Bearer wbr_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "label": "Al Noor Clinic",
    "external_ref": "customer_8841",
    "locale": "ar",
    "redirect_url": "https://app.example.com/whatsapp/done"
  }'

# 201 Created
{
  "id": "onb_k3J9aB",
  "status": "pending",
  "url": "https://app.wacheap.com/connect/wbo_...",
  "expires_at": "2026-11-15T09:00:00.000Z"
}

Webhook when the number is connected

POST https://app.example.com/webhooks/wacheap
X-WaCheap-Signature: t=...,v1=...

{
  "event": "account.connected",
  "data": {
    "account_id": "wa_account_456",
    "onboarding_link_id": "onb_k3J9aB",
    "external_ref": "customer_8841",
    "display_phone": "+971 50 123 4567",
    "connection": "coexistence"
  }
}

What you get

  • OpenAPI 3.1 document and interactive reference
  • TypeScript SDK and examples for Next.js and NestJS
  • Scoped, hashed and revocable API keys per project
  • Idempotent sends, retries with backoff and dead-letter visibility
  • Signed webhooks with replay from the dashboard
  • Coexistence status endpoint: linked state and history-sync progress

Connect your number today

Your phone app keeps working the whole time. If it is not for you, disconnect from the app in one tap.

14 days free. No card needed to start.