One npm package
@zindua/sdk is the official Node client. Zero runtime deps, uses built-in fetch (Node 18+).

Official @zindua/sdk v1.4.1. Send email and WhatsApp OTP from Express, Fastify, Nest, or Next.js. API key stays on the server.
npm install @zindua/sdk@zindua/sdk is the official Node client. Zero runtime deps, uses built-in fetch (Node 18+).

Never ship znd_live_… to the browser. Call send() and verifyEmail() from API routes or workers.

Same send() for both channels. Optional validate: true protects your Gmail/SMTP reputation.

Express, Fastify, Nest, Hono, Bun, or start from the Next.js OTP starter.

Send from the terminal with npx @zindua/cli — same templates and variables as the SDK.

Every send returns a logId. Open Dashboard → Logs or use the CLI to trace delivery.

Node guides for Next and Fastify, plus the other official stacks on Zindua.
Next.js
NodeOTP starter with @zindua/create-app.
Open guideReact Email
ReactMigrate from Nodemailer, SendGrid, or SES. Keep your provider.
Open guideFastify
NodeNode backend with @zindua/sdk. Add Fastify separately as your HTTP framework.
Open guideFastAPI
PythonAsync Python routes with httpx.
Open guidePHP
PHPLaravel, Symfony, WordPress custom.
Open guide.NET
.NETASP.NET Core with Zindua.Sdk NuGet.
Open guideWordPress
PHPPlugin for OTP login and WooCommerce.
Open guideThe SDK throws in the browser. Your app calls your backend; your backend calls Zindua.
Browser
(no direct access)
Cannot call SDK
Your Node backend
Zindua API
API key stays on the server
Browser → your API → Zindua

From project key to traced delivery.
From project key to first OTP in four steps.
Create a project
Sign up at zindua.run, create a project, copy the API key. Connect email and/or WhatsApp in the dashboard.
Pick a use case, switch language, copy the snippet. Same API across Node, Python, PHP, and .NET.
Send OTP email
POSTDeliver a template to any inbox with one server-side call.
send.ts
1import { Zindua } from "@zindua/sdk";2 3const zindua = new Zindua({4 apiKey: process.env.ZINDUA_API_KEY!,5});6 7const result = await zindua.send({8 to: "user@example.com",9 template: "otp-verification",10 variables: { code: "482910" },11});12 13console.log(result.logId);Same send() shape on Node, Python, PHP, and .NET.
Pin versions in production. Use the CLI for quick sends. Scaffold Next.js with one command.
Upgrade
npm install @zindua/sdk@1.4.1CLI
npx @zindua/cli@latest doctor or npx @zindua/cli@latest send --to user@example.com --template otp-verification --var code=482910Next.js starter
npx @zindua/create-app@latest my-app
Create a project, install @zindua/sdk, and send your first template from a server route.