Zindua

WhatsApp for developers

Verification codes and transactional alerts from your connected business number. WhatsApp OTP guide v1.0. One API for Node, Python, PHP, or raw REST.

Watch the eyes. Click the robot.

Green lamp on means your WhatsApp line is under protection. Meet the Guardian that stops spam floods so your number does not get banned.

How the Guardian protects you

Your number

Connect via QR in the dashboard. OTPs and alerts come from your business line.

Same API

Switch channel to whatsapp in send(): templates and variables stay identical.

Anti-ban Guardian

Protects your linked number from spam floods. Official SDKs cooperate automatically.

Multi-language

Pass lang: fr, en, sw, ar; template fallback is automatic.

Every stack

Node, Python, PHP, WordPress on one REST contract for WhatsApp OTP.

Live logs

Trace delivery status in Dashboard → Logs for every WhatsApp send.

Setup

Connect and send

Four steps from QR scan to production OTP.

01

Create a project

Sign up at zindua.run and create a project. Copy your API key from the dashboard.

02

Connect WhatsApp

Open Projects → WhatsApp, scan the QR code with your business phone. Session stays on Zindua workers.

03

Create an OTP template

Add a template slug like otp-verification with FR/EN versions and a {{code}} variable.

04

Send from your backend

POST to /api/v1/send with channel: whatsapp. Never call Zindua directly from mobile apps.

Send

Code examples

Pick your stack. Same payload everywhere.

REST / curl

curl -X POST https://zindua.run/api/v1/send \
  -H "Authorization: Bearer $ZINDUA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+243812345678",
    "channel": "whatsapp",
    "template": "otp-verification",
    "lang": "fr",
    "variables": { "code": "482910" }
  }'

Node (@zindua/sdk)

npm install @zindua/sdk

import { Zindua } from "@zindua/sdk";

const zindua = new Zindua({ apiKey: process.env.ZINDUA_API_KEY! });

await zindua.send({
  to: "+243812345678",
  channel: "whatsapp",
  template: "otp-verification",
  lang: "fr",
  variables: { code: "482910" },
});

Python (httpx)

import httpx, os

httpx.post(
    "https://zindua.run/api/v1/send",
    headers={"Authorization": f"Bearer {os.environ['ZINDUA_API_KEY']}"},
    json={
        "to": "+243812345678",
        "channel": "whatsapp",
        "template": "otp-verification",
        "variables": {"code": "482910"},
    },
    timeout=30,
).raise_for_status()
Checklist

Before you ship

Phone number in E.164 format (+243…)

WhatsApp session connected and green in dashboard

Template slug exists with required variables

API key on server only, never in mobile or browser

Use a resend cooldown / queue so users cannot flood WhatsApp OTP

Test with the CLI

Smoke-test key and channels before production sends.

npx @zindua/cli@latest doctor

No-code WordPress?

OTP login and WooCommerce alerts with the official plugin.