OTP delivery for developers

Deliver OTP codes without building your own cascade.

OTPilot is a single API for sending and checking OTP across MAX, VK, Telegram, Email and SMS fallback. Built for teams that want lower OTP cost, safer rollout and full delivery visibility.

OTPilot dashboard preview with channel routing, cost and verification events

Start with one API call.

Send a verification, let OTPilot pick the channel, then check the code. Idempotency, status endpoints and signed webhooks are part of the platform contract.

POST /v1/verifications Node.jscURLPythonPHP
1const verification = await otpilot.verifications.create({
2  external_user_id: "user_123",
3  purpose: "login",
4  phone: "+79991234567",
5  email: "user@example.com",
6  allowed_channels: ["max", "vk", "email", "sms"]
7}, { idempotencyKey: "login-4921" });
8
9await otpilot.verifications.check(verification.id, {
10  code: "123456"
11});
Live responsesandbox safe
channelMAXselected
fallbackSMSarmed
cost0.20 ₽-97%
statuspendingwaiting
webhooksignedready

Everything around delivery, not another auth platform.

OTPilot confirms channel ownership. Your product still decides whether the user can sign in, pay, reset a password or change sensitive settings.

1 API

Unified OTP flow

Start, check, status, wallet and webhooks behind one integration.

Test

Safe sandbox

Simulate approvals, failures, expirations and webhook events before sending real codes.

Route

Cost-first fallback

Use legal low-cost channels first and keep SMS as the reliable last mile.

Report

Savings visibility

Track cost per approved verification, channel mix and savings versus SMS-only.

Test mode that behaves like production.

Resend made email testing calm. OTPilot needs the same for verification: predictable fake users, synthetic delivery events and webhook replay without accidental real OTP sends.

1. CreateUse test numbers and emails with production-shaped payloads.
2. SimulateForce delivered, failed, expired or approved states.
3. ReplaySend webhooks again while your endpoint is being built.
4. InspectSee route choice, provider response and event history.
5. ShipMove to live channels with the same API contract.

Modular webhooks for every verification event.

Receive signed events for the state changes your product cares about, not a noisy stream of provider internals.

verification.approvedsigned
1{
2  "type": "verification.approved",
3  "verification_id": "ver_9C2Z...",
4  "external_user_id": "user_123",
5  "purpose": "login",
6  "channel": "max",
7  "cost": 0.20,
8  "sms_only_estimate": 7.00,
9  "savings": 6.80
10}

Routing that understands cost, preference and policy.

Cheap delivery is only useful when it is allowed and reliable. OTPilot filters channels by country, segment and client constraints before optimizing the route.

Layer
What it decides
Why it matters
Policy
Which channels can be used for this client and country.
Keeps regulated segments away from the wrong delivery path.
Preference
Whether the user already enrolled MAX, VK, Telegram or Email.
Repeat users move away from expensive SMS.
Fallback
What happens when the selected provider fails.
Conversion remains protected while cost goes down.

Control your OTP spend from the dashboard.

The customer cabinet should show what finance, product and support need: verification history, channel mix, wallet, cost per approved and exportable savings reports.

2.8 ₽

Cost per approved

The number that matters more than raw message price.

64%

Non-SMS share

How much traffic moved into lower-cost enrolled channels.

CSV

Monthly export

Reports for finance, support and operating reviews.

Email has Resend. OTP needs OTPilot.

Bring the same developer-first delivery experience to login codes, registration, payment confirmation and sensitive actions.

Request pilot