Power your authentication with WhatsApp OTP

Secure, fast, developer-friendly WhatsApp OTP authentication for websites and mobile applications — self-hosted, REST-first, and live in minutes.

  • Self-hosted, your data stays yours
  • REST API, any language
  • Docker & Render ready

0

% uptime target

0

SDK languages

0

median API response

0

Docker command to deploy
Platform

Everything you need to ship WhatsApp OTP

A complete authentication gateway — API, dashboard, and delivery — built for developers who want control over their own stack.

WhatsApp OTP delivery

Codes are sent through your own connected WhatsApp number via whatsapp-web.js — no SMS carrier fees.

Simple REST API

Two endpoints — send and verify. Predictable JSON, clear error codes, works with any backend.

Admin dashboard

Manage connected WhatsApp sessions, API keys, and delivery logs from one responsive dashboard.

Rate limiting

Per-key and per-number limits protect your WhatsApp account from abuse and spam patterns.

Secure API keys

Scoped, revocable keys with hashed storage. Rotate instantly if a key is ever exposed.

OTP expiration

Configurable time-to-live per request. Expired codes are rejected automatically at the API layer.

Analytics

Delivery rate, verification rate, and latency trends across every connected website or app.

Full request logs

Every send and verify attempt is logged with status, timestamp, and originating website.

Docker & SQLite

Ships as a Docker image with SQLite by default — no external database required to get running.

One-click Render deploy

Deploy the gateway to Render with a pre-configured blueprint — no server management needed.

Automatic reconnect

If the WhatsApp session drops, VerifyOne detects it and prompts a fresh QR pairing automatically.

Multi-website support

Connect several websites or apps to one VerifyOne instance, each with its own scoped API key.

Setup

From zero to your first OTP in four steps

Connect once, then every website you own can send verification codes through the same gateway.

1

Connect WhatsApp

Scan a QR code once to link the business number VerifyOne will send codes from.

2

Generate an API key

Create a scoped key for each website or app from the dashboard, in a few seconds.

3

Integrate the API

Call /send and /verify from your backend using any of five SDKs.

4

Start sending OTPs

Codes deliver over WhatsApp in seconds, with full logs and analytics from day one.

API reference

A REST API you'll understand in one read

Two core endpoints, JSON in and out, and SDKs for the languages developers actually ship with.

POST https://api.verifyone.dev/v1/otp/send
# Send a one-time passcode
curl -X POST https://api.verifyone.dev/v1/otp/send \
  -H "Authorization: Bearer v1_live_9f2a...c7d1" \
  -H "Content-Type: application/json" \
  -d '{"phone": "+15551234567", "template": "signin"}'
200 · Response
{
  "success": true,
  "otp_id": "otp_8f3ac1",
  "expires_in": 300,
  "channel": "whatsapp"
}
Error codes
401 invalid_api_key
422 invalid_phone_number
429 rate_limit_exceeded
409 otp_already_sent
410 otp_expired
403 otp_mismatch
Product preview

A dashboard that stays out of your way

Everything you need to monitor delivery, manage keys, and pair devices — nothing you don't.

app.verifyone.dev
VerifyOne
Overview
API Keys
OTP Logs
Analytics
Websites
Settings
OTPs sent today
4,812
▲ 6.2%
Verification rate
96.4%
▲ 1.1%
Avg. delivery time
1.8s
▼ 0.3s
WebsiteRequestsSuccessStatus
shopnest.io1,20497.8%Healthy
fintra.app89295.1%Healthy
loopdesk.dev34088.4%Watching
Feedback

What early developers are saying

Example quotes shown for illustration — real testimonials will replace these at launch.

★★★★★

"Swapped our SMS OTP provider for VerifyOne in an afternoon. Self-hosting it means we're not waiting on carrier delivery windows anymore."

MR
Maya R.
Backend engineer, e-commerce
★★★★★

"The Docker image plus SQLite meant zero extra infrastructure. We had staging and production running the same day."

DK
Daniel K.
Founder, fintech startup
★★★★★

"Multi-website support let us run one gateway across three client projects, each with its own scoped key and logs."

SP
Sofia P.
Agency lead
Pricing

Start free, self-hosted, no credit card

VerifyOne is currently free to self-host. Managed and commercial plans are planned for a future release.

Pro Coming soon

Managed hosting with automated backups and priority support.

  • Managed hosting
  • Automated backups
  • Multi-device WhatsApp support
  • Priority email support
Notify me

Business Coming soon

For teams running VerifyOne across many websites and apps.

  • SLA-backed uptime
  • Team roles & permissions
  • Dedicated support channel
  • Custom rate limits
Notify me
Documentation

Set up VerifyOne wherever you deploy

Guides for installation, environment configuration, and everyday operation.

Environment variables

KeyPurpose
PORTServer port
DB_PATHSQLite file path
OTP_TTLExpiry, seconds
API_SECRETKey signing secret
FAQ

Frequently asked questions

Ready to connect your first website?

Self-host VerifyOne for free and start sending WhatsApp OTPs today.

Contact

Talk to the VerifyOne team

Questions about setup, self-hosting, or what's coming next — reach out any time.

Email

hello@verifyone.dev

GitHub

github.com/verifyone/verifyone

Documentation

verifyone.dev/docs

Map placeholder — embed on request
Please enter your name.
Please enter a valid email address.
Tell us a little about what you need.

We reply within one business day. This form is protected against spam.

404

This page didn't verify

The page you're looking for doesn't exist or may have moved. Check the URL, or head back home.