● WhatsApp API — send from your CRM in minutes

Connect a WhatsApp number once (scan a QR), then send messages with a single HTTP request. Works with any language, or no-code tools (n8n, Make, Zapier) via an HTTP step.

Get your API key →   Dashboard

Base URL
https://wa.intilaq.host
⚠️ Message only people who opted in. A built-in rate limit protects your number from being blocked — don't bulk-blast.

1Connect your number

Open the connect link we sent you, then scan the QR from WhatsApp → Linked devices. Status flips to connected automatically. (That's it — no code for this step.)

2Send a message

Authenticate with your API key as a Bearer token. Pick your language:

cURL
Node.js
Python
PHP
curl -X POST https://wa.intilaq.host/v1/messages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to":"2010XXXXXXXX","type":"text","text":{"body":"Hello 👋"}}'
const res = await fetch("https://wa.intilaq.host/v1/messages", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    to: "2010XXXXXXXX",
    type: "text",
    text: { body: "Hello 👋" }
  })
});
console.log(await res.json());
import requests

r = requests.post("https://wa.intilaq.host/v1/messages",
  headers={"Authorization": "Bearer YOUR_API_KEY"},
  json={"to": "2010XXXXXXXX", "type": "text",
        "text": {"body": "Hello 👋"}})
print(r.json())
$ch = curl_init("https://wa.intilaq.host/v1/messages");
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY","Content-Type: application/json"],
  CURLOPT_POSTFIELDS => json_encode([
    "to" => "2010XXXXXXXX", "type" => "text",
    "text" => ["body" => "Hello 👋"]
  ]),
]);
echo curl_exec($ch);

Send an image: {"to":"..","type":"image","image":{"link":"https://.../x.jpg","caption":"hi"}}. Add "dry_run":true to test without sending.

Response

{ "ok": true, "message_id": "3EB0...", "to": "2010XXXXXXXX" }

Errors return a matching HTTP status with error.message (e.g. 401 bad key, 409 number not connected, 429 rate limit).

Manage numbers (optional)

GET  https://wa.intilaq.host/v1/instances              # list your numbers
GET  https://wa.intilaq.host/v1/instances/status?name=INSTANCE   # connection state
POST https://wa.intilaq.host/v1/instances              # add another number (returns a QR)

© 2026