WABridges
← Back to home

From zero to WhatsApp
in three API calls.

A bridge is a dedicated, hosted connection between one WhatsApp number and your app. Provision one, pair a phone number, and start sending messages over REST. No SDKs, no vendor approval, no infrastructure to manage. Not a developer? There's a no-code path too →

Architecture

WABridges is a hosted relay between your application and the WhatsApp network. Your app makes REST calls to your bridge; inbound events fire back to your webhook URL in real time.

Your App Node · Python · Ruby any HTTP client WABridges API REST endpoint Session management Webhook delivery Hosted infrastructure wabridges.com WhatsApp Mobile / Web Any phone number POST /proxy/send WA protocol inbound event webhook POST
Outbound (your REST calls) Inbound webhooks
Integration walkthrough
1

Provision a bridge

POST to /api/instances with a customer_ref you control (any string: user ID, order number, etc.) and your webhook URL. Authenticate every call with your account API key — Authorization: Bearer sk_... — created during onboarding or from the dashboard. The bridge starts immediately, and the customer_ref you chose addresses it in all later calls.

POST /api/instances
{
  "customer_ref": "user-123",
  "webhook_url": "https://your-app.com/whatsapp/hook"
}

← {
  "id": "7d09aa9c-…",
  "customer_ref": "user-123",
  "state": "running"
}

Provisioning over the API requires an active subscription. On the free trial, create your first bridge from the dashboard instead - everything below works the same either way.

2

Pair a phone number

Scan the QR in the dashboard, or call /proxy/pair to request a link code programmatically. Open WhatsApp → Linked Devices → Link a device → Link with phone number and enter the 8-character code. Session persists across restarts.

POST /api/instances/user-123/proxy/pair
{ "phone": "15550001234" }

← { "code": "ABCD-EFGH" }

Once paired, GET /proxy/status returns "status":"connected" along with the linked phone number and display name.

3

Send messages

POST to /proxy/send/text with the destination number (no +, digits only) and message body. Same Authorization: Bearer sk_... API key as every other call. The response returns a message ID and Unix timestamp.

POST /api/instances/user-123/proxy/send/text
{ "chat": "15559876543", "body": "Hello from my app!" }

← { "message_id": "ACE41E...", "timestamp": 1777180605 }

The same proxy accepts media, polls, reactions, locations, and more. See the API reference for all endpoints.

Receive inbound events

Every inbound message, delivery receipt, call, or status change fires a POST to your webhook URL automatically. No polling. Respond with 200 OK to acknowledge.

webhook → POST https://your-app.com/whatsapp/hook
{
  "type": "message",
  "from": "15559876543",
  "body": "Hey, got your message!",
  "timestamp": 1777180621,
  "message_id": "BD71F2...",
  "customer_ref": "user-123"
}
Quick start

Send your first message using any HTTP client. Replace CUSTOMER_REF with the ref you chose in step 1 and API_KEY with your account API key from the dashboard.

bash
curl -X POST \
  https://wabridges.com/api/instances/$CUSTOMER_REF/proxy/send/text \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"chat":"15559876543","body":"Hello!"}'

Want the full tutorial with webhook handling? See the step-by-step quickstarts: Node.js, Python, PHP, Ruby, Go, Rust, Java.

Ready to build?

First bridge is free for 7 days, no credit card required. Read the full API reference for every endpoint, webhook format, and error code.