Back to Blog
How-To Guide8 min read

How to Send WhatsApp Messages from Your Own Software (Simple API)

Send WhatsApp from your CRM, store or internal tool with a single HTTP call — no Meta verification, no per-conversation fees. The request, the response, the error codes, and where this stops.

BulkWA Team

Quick answer

You can send WhatsApp messages from your own software with a single HTTP POST to a bulk sender's API, authenticated with an API key: BulkWA's endpoint is POST /v1/messages with a recipient number and a message body, sending from your QR-connected number with no Meta business verification and no per-conversation fees. It is available on the Business plan, sends are spaced with anti-ban delays automatically, and STOP opt-outs are honoured server-side.

BulkWA WhatsApp Send API for developers: send messages from your CRM, store or internal tools with a single HTTP call, own number, flat pricing, no Meta verification
One endpoint, one key, your own number. The docs page is the whole reference.

Your order system knows when a parcel ships. Your booking tool knows when an appointment is tomorrow. Your CRM knows when a quote went out. Each of those moments is a WhatsApp message that should send itself — and each one is currently a human copying details into a phone.

Here is how to make your own software send the message, with one HTTP call, from your own number, without the Meta approval process.

What You Are Integrating With

There are two kinds of WhatsApp API:

Meta's official Business API, reached through a Business Solution Provider. Officially sanctioned, verified badge, no ban risk when you follow policy — and requires business verification, a dedicated number, template approval for every outbound message, a platform subscription and per-conversation fees.

A QR-based sender's API, like BulkWA's. It sends from a number you paired by scanning a QR code, so there is nothing to apply for: create an API key, make a request, the message goes out from your number. Flat monthly price, no per-message fees.

The second is what this guide covers. The honest framing, stated up front: it is unofficial, and the ban risk sits on the connected number. The API applies the same safeguards as the dashboard — randomized delays, STOP suppression — but the same rule applies: send to people who opted in.

Authentication

BulkWA API authentication: every request carries an Authorization Bearer header with a bwa_live API key, stored only as a hash
Keys look like bwa_live_… and are shown once. Keep them server-side.

Every request carries an API key in the Authorization header:

  • Create the key in the dashboard under API Keys (Business plan).
  • It looks like bwa_live_… and is shown once. BulkWA stores only a hash.
  • Send it as: Authorization: Bearer bwa_live_YOUR_KEY
  • Keep it server-side. Never ship it in browser JavaScript or a mobile app.
  • Revoke and recreate it from the dashboard any time.

Sending a Message

BulkWA POST /v1/messages reference with fields to, message and session_id, plus curl and Node.js examples and a 200 response
The whole send call: a recipient in international format, a message body, optionally which connected number to send from.

One endpoint: POST /v1/messages, JSON body with:

FieldTypeNotes
tostring, requiredRecipient in international format, digits only, e.g. 14155551234
messagestring, requiredText body, up to 4,096 characters
session_iduuid, optionalWhich connected number to send from; defaults to your first

A minimal call from a shell:

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

And the response on success is a 200 with the message id, the status, and the recipient — enough to record against the order in your system.

Two useful companions:

  • GET /v1/sessions — lists your connected numbers with their status, so your software can pick one or check it is online before sending.
  • GET /v1/me — your plan and usage: messages sent this month, monthly limit, remaining, and today's count. Poll it to stay inside quota rather than discovering the limit from a 429.

The Error Codes That Matter

BulkWA API error codes table: 400 invalid request, 401 missing or invalid key, 402 payment locked, 403 upgrade required, 404 session not found, 409 session not connected, 422 recipient opted out, 429 quota exceeded, 502 send failed
Every error is JSON with a code and a human explanation. 422 recipient_opted_out is the one that protects you.

Every error is JSON with a code and a plain-English explanation. The ones to handle explicitly:

  • 409 session_not_connected — your number's link dropped. Reconnect in the dashboard and retry. Design your integration to queue, not to fail permanently.
  • 422 recipient_opted_out — the person replied STOP. Do not retry; mark them unsubscribed in your own system too. This is the API protecting your number from your own code.
  • 429 quota_exceeded / rate limit — you hit the monthly quota or the 60-per-minute ceiling. Back off.
  • 402 payment_locked — a failed subscription payment. Fix billing.
  • 502 send_failed — WhatsApp did not acknowledge. Safe to retry after a delay.

Handle 409, 422 and 429 deliberately and the integration will be robust.

Pacing: What the API Does For You

You do not need to implement anti-ban spacing yourself. Sends through the same connected number are automatically queued and spaced with BulkWA's randomized delays, so a burst of 200 order confirmations at 9am goes out over the following minutes rather than instantly — which is the behaviour that keeps the number healthy. Bursts are queued, never dropped.

The account-level rate limit is 60 requests per minute; that is the request rate, separate from the send spacing.

Where BulkWA Fits

The API is part of BulkWA's Business plan: $99 a month ($79 annually), 10,000 messages, two connected numbers with more at $9.99 each, and the same monthly quota shared between API sends and dashboard campaigns. It is deliberately small — one send endpoint, two lookups — because most integrations need exactly that: "when X happens in my system, send this message from my number."

Text only for now, 4,096 characters, with media planned. Everything else — delays, STOP suppression, session handling — is done for you.

If you want the official badge, chatbot flows and CRM-grade integrations, Meta's API through a provider is the correct choice. If you want your order system to send a WhatsApp message tonight, this is a fifteen-minute job.

Frequently Asked Questions

Can I send WhatsApp messages via API without Meta approval?+

Yes, through a QR-based sender's API. BulkWA exposes a REST endpoint that sends from a WhatsApp number you paired by QR code, so there is no Business Solution Provider, no Meta business verification and no template approval. The trade-off is the same as any QR-based sending: it is unofficial, and ban risk sits on the connected number.

How much does a WhatsApp send API cost?+

Meta's official API charges a platform subscription plus per-conversation fees that vary by country and category. BulkWA's API is included in the Business plan at $99 a month ($79 billed annually), which covers 10,000 messages a month and two connected numbers, with no per-message or per-conversation charge. API sends draw from the same monthly quota as dashboard campaigns.

What does the API do about rate limits and bans?+

BulkWA allows 60 requests per minute per account, and messages through the same number are automatically spaced with the same randomized anti-ban delays as campaigns — bursts are queued, not dropped. If a recipient has replied STOP, the API refuses the send with a 422 recipient_opted_out error, so your software cannot accidentally message someone who unsubscribed.

Can the API send images or files?+

As of now the BulkWA API sends text messages up to 4,096 characters; media attachments through the API are planned. Media is supported in dashboard campaigns on paid plans. If your integration needs media today, generate the message from your system and attach the file in a dashboard campaign, or check the API docs page for the current status.

Ready to Try BulkWA?

Send bulk WhatsApp messages with personalized templates. Free to start, no credit card required.

Get Started Free
whatsapp api without meta approvalsend whatsapp from crmwhatsapp send apiwhatsapp api for developerswhatsapp rest api simple

More from the Blog