Get started in minutes — sign up for a 3-day free trial, connect your WhatsApp, grab an API key, and send your first message.
Steps 1–3 are the same for everyone. After that, marketers use Bulk Messaging in the dashboard; developers grab an API key and integrate.
Import contacts, compose your message, send or schedule. Jump to step 6 below — no API key required.
Go to bulk campaigns →Create an API key, send your first POST, set a webhook. Code examples in Node, Python, and PHP in steps 4–5.
Go to API setup →Sign up with your email or Google. You'll land on your dashboard with an empty wallet — no card, no payment required to look around.
Create accountPlans start at GHS 30/month. Your wallet covers any session fees and (on Partner) per-session charges. Auto top-up keeps the lights on — pick a balance threshold and refill amount.
See plansClick "New instance" in the dashboard, type your number, scan the QR code from WhatsApp on your phone — Settings → Linked Devices → Link a Device. The connection is held server-side; you don't need to keep your phone open.
Can't scan? Use the phone-link fallback to get an 8-character pairing code instead.
Go to API Keys → New key. Copy the wa_live_… token immediately — we never show it again. Keys can be revoked or rotated any time without breaking other keys.
# Save it as an env var export WA_KEY="wa_live_a1b2c3d4…"
One POST to /v1/instances/<id>/messages/text. The message lands instantly. Add a webhook URL to receive replies and delivery receipts.
const res = await fetch(`https://api.enosend.com/v1/instances/${INSTANCE}/messages/text`, { method: 'POST', headers: { 'Authorization': `Bearer ${process.env.WA_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ number: '233244000000', text: 'Hello from EnoSend!', }), }); const data = await res.json(); console.log(data); // { ok: true, message_id: "..." }
import os, requests r = requests.post( f"https://api.enosend.com/v1/instances/{INSTANCE}/messages/text", headers={"Authorization": f"Bearer {os.environ['WA_KEY']}"}, json={"number": "233244000000", "text": "Hello from EnoSend!"}, ) print(r.json())
use GuzzleHttp\Client; $res = (new Client())->post( "https://api.enosend.com/v1/instances/$INSTANCE/messages/text", [ 'headers' => ['Authorization' => "Bearer {$_ENV['WA_KEY']}"], 'json' => ['number' => '233244000000', 'text' => 'Hello from EnoSend!'], ] );
Bulk Messaging is free: import contacts, build a campaign, schedule or send now. Track delivery and read rates in real time from your dashboard.
Standard sends deliver instantly — perfect for notifications, order updates, and 1:1 conversations. No daily cap.
For daily outreach at scale, add Human-mode on any connected number (optional, per instance). Every send flows through presence → typing → natural pause → send. Your API code and campaign setup stay the same — just flip the checkbox in instance Settings.
Choose a pace: Stealth, Balanced (recommended), or Fast. Use {Hi|Hey|Hello} in your message body for automatic variant rotation.
See the delivery pipeline → · Human-mode pricing →
Start a free campaign →When a customer replies, we POST to the URL you set. Every payload is HMAC-signed so you can verify it's us.
const crypto = require('crypto'); app.post('/webhook', (req, res) => { // 1. Verify signature const sig = req.headers['x-addiny-signature']; const expected = 'sha256=' + crypto.createHmac('sha256', SECRET) .update(JSON.stringify(req.body)).digest('hex'); if (sig !== expected) return res.sendStatus(401); // 2. Handle the event const { event, data } = req.body; if (event === 'MESSAGES_UPSERT' && !data.key.fromMe) { handleIncoming(data); } res.sendStatus(200); });
Once your QR is scanned, we hold the WhatsApp session on our servers. Your phone can sleep, your laptop can close — the API keeps working.
If WhatsApp drops the connection, we re-establish it automatically. You're notified via CONNECTION_UPDATE webhook if a re-scan is ever needed.
Every payload includes X-EnoSend-Signature — HMAC-SHA256 over the body. Verify before you process to keep your endpoint immune to spoofing.
Track delivery, read receipts and typing indicators via the MESSAGES_UPDATE and PRESENCE_UPDATE events.
Pro and Plus plans let you connect 3–6 separate numbers, each fully isolated. Manage them from one dashboard with one API key.
Create as many keys as you want for different apps. Revoke one and it stops working instantly — no downtime for the others.
Sign up, connect your WhatsApp, and integrate in minutes. No per-message fees.