Developer API — Business plan

WhatsApp Send API for Developers

Send WhatsApp messages from your CRM, store, or internal tools with a single HTTP call. Your own number, flat monthly pricing, no Meta business verification, no per-message fees.

API keys are created in the dashboard under API Keys (Business plan).

Authentication

All requests are authenticated with an API key in the Authorization header. Keys look like bwa_live_… and are shown once at creation — BulkWA stores only a hash.

Authorization: Bearer bwa_live_YOUR_KEY

Base URL: https://bulkwa-server.onrender.com. Keep keys server-side; never ship them in browser or mobile code. Revoke a leaked key instantly from the dashboard.

Send a message

POST/v1/messages
FieldTypeDescription
tostring, requiredRecipient phone in international format, e.g. +14155550123. 8-15 digits.
messagestring, requiredText message body, max 4096 characters.
session_iduuid, optionalWhich of your WhatsApp numbers to send from. Defaults to your first connected session.

cURL

curl -X POST https://bulkwa-server.onrender.com/v1/messages \
  -H "Authorization: Bearer bwa_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+14155550123",
    "message": "Your order #1042 has shipped!"
  }'

Node.js

const res = await fetch("https://bulkwa-server.onrender.com/v1/messages", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.BULKWA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    to: "+14155550123",
    message: "Your order #1042 has shipped!",
  }),
});

const data = await res.json();
// { id: "wamid...", status: "sent", to: "+14155550123" }

Response — 200

{
  "id": "3EB0538DA65B5B2F7A2B",
  "status": "sent",
  "to": "+14155550123"
}

API sends count against your plan’s message quota, are serialized with your campaigns’ anti-ban delays, and respect STOP opt-outs automatically. Text messages only for now — media support is planned for v1.1.

List your sessions

GET/v1/sessions
curl https://bulkwa-server.onrender.com/v1/sessions \
  -H "Authorization: Bearer bwa_live_YOUR_KEY"

Response — 200

{
  "sessions": [
    {
      "id": "0b6a1c9e-...",
      "phone_number": "+14155550100",
      "status": "connected"
    }
  ]
}

Check plan & usage

GET/v1/me
curl https://bulkwa-server.onrender.com/v1/me \
  -H "Authorization: Bearer bwa_live_YOUR_KEY"

Response — 200

{
  "plan": "business",
  "api_access": true,
  "usage": {
    "messages_sent_this_month": 1250,
    "monthly_limit": 10000,
    "remaining": 8750,
    "messages_sent_today": 84,
    "daily_limit": null
  }
}

Rate limits

  • 60 requests per minute per account on every /v1 endpoint. Exceeding it returns 429.
  • Message sends also count against your plan’s monthly message quota — the same pool your dashboard campaigns use.
  • Sends through the same WhatsApp number are automatically spaced with anti-ban delays; bursts are queued, not dropped.

Error codes

Errors are JSON: { "error": "code", "message": "human explanation" }

StatusCodeMeaning
400invalid_request / invalid_toMalformed body — check that `to` has 8-15 digits and `message` is a non-empty string (max 4096 chars).
401missing_api_key / invalid_api_keyNo key, a malformed key, or a revoked key. Create a new key in the dashboard.
402payment_lockedYour subscription payment failed. Update your payment method in Billing.
403upgrade_requiredThe developer API requires the Business plan.
404session_not_foundThe session_id you passed does not belong to your account.
409session_not_connectedNo connected WhatsApp session. Reconnect in the dashboard and retry.
422recipient_opted_outThis recipient replied STOP to you — BulkWA blocks the send for compliance.
429quota_exceeded / rate limitYou hit your plan's message quota or the 60 requests/minute rate limit. Retry later.
502send_failedWhatsApp did not acknowledge the message. Safe to retry.
503service_unavailableTemporary backend issue (e.g. quota check failed). Retry with backoff.

Developer API FAQ

Is the BulkWA API the official WhatsApp Business API?

No. The BulkWA API is a simple REST layer over your own WhatsApp number, which BulkWA connects via QR pairing (the same mechanism as WhatsApp Web). That is why there is no Meta business verification, no template approval, and no per-message fees — and also why the connection is unofficial, so ban risk exists on your number. BulkWA mitigates it by serializing API sends with anti-ban delays and honoring STOP opt-outs automatically.

How much does the BulkWA API cost?

API access is included in the Business plan at $99/month ($79/month billed annually), which covers 10,000 messages per month and 2 WhatsApp numbers (more at $9.99/month each). There are no per-message or per-request charges — API sends draw from the same flat monthly quota as dashboard campaigns.

What can I send through the API?

Text messages up to 4,096 characters via POST /v1/messages, from any of your connected WhatsApp numbers (pick one with session_id or let it default to your first connected session). Media attachments are planned for v1.1. You can also list your connected numbers (GET /v1/sessions) and check plan usage (GET /v1/me).

What are the rate limits?

60 requests per minute per account across all /v1 endpoints, plus your plan's monthly message quota. Sends through the same WhatsApp number are automatically spaced with anti-ban delays — bursts are queued, not dropped, so you can fire requests without implementing your own pacing.

Start sending in five minutes

Upgrade to the Business plan, connect your WhatsApp number by QR code, create a key, and make your first API call.