Available now: VK · Telegram · email
Verification codes, delivered where users actually are.
OTPilot chooses the most convenient available channel for each user, helping businesses deliver codes faster and reduce unnecessary delivery spend.
Free test mode, integration starts with one POST /v1/verifications
POST /v1/otp
user: usr_8412
strategy: best_available
user: usr_8412
strategy: best_available
OTPilot
Your user
More channels later
otp.requested
Integrate
Integrate OTP delivery in minutes.
A simple API for sending verification codes through the channels your users already use. Start with REST, Node.js, or Python and route messengers and email from one delivery layer.
POST /v1/verifications
1import { OTPilotClient } from '@otpilot/node'; 2 3const otpilot = new OTPilotClient({ apiKey: process.env.OTPILOT_API_KEY }); 4 5const verification = await otpilot.startVerification({ 6 external_user_id: 'user_123', 7 phone: '+79991234567', 8 purpose: 'login', 9 channels: { allowed: ['telegram', 'vk', 'email'] }, 10}); 11 12// the user types the code from the message 13await otpilot.checkVerification(verification.verification_id, { code: '123456' });
1from otpilot import OTPilotClient 2 3with OTPilotClient(api_key=os.environ["OTPILOT_API_KEY"]) as client: 4 verification = client.start_verification( 5 external_user_id="user_123", 6 phone="+79991234567", 7 channels={"allowed": ["telegram", "vk", "email"]}, 8 ) 9 10 client.check_verification(verification.verification_id, code="123456")
1curl https://otpilot.ru/v1/verifications \ 2 -H 'Authorization: Bearer $OTPILOT_API_KEY' \ 3 -H 'Idempotency-Key: login-4921' \ 4 -H 'Content-Type: application/json' \ 5 -d '{ 6 "external_user_id": "user_123", 7 "phone": "+79991234567", 8 "channels": { "allowed": ["telegram", "vk", "email"] } 9 }'
channelslive
Telegram
VK
Email
✱✱✱✱
Test mode
Test every OTP scenario before production.
A free sandbox with production-shaped requests: fake delivery, no charges, and every edge case you want to rehearse before real users.
Verification resulttest mode
statusapproved
channeltelegram
latency1.2s
attempts1 of 5
Sandbox key delivers nothing and charges nothing: the code is always 000000, the API contract matches production.
Interface and control
Control every code, channel, and cost.
After launch the dashboard answers the daily questions: what was sent, through which channel, at what cost, and where users struggle.
otpilot.ru/cabinet
OTPilot
Overview
Verifications
Channels
API keys
Webhooks
Overviewtest mode
48 210
verifications / mo
+18%
96.4%
approval rate
+0.6%
14 800 ₽
delivery spend / mo
−12%
0.31 ₽
cost per verification
−61%
Recent verificationslive
user_8412 · loginapproved0.20 ₽
user_1096 · paymentapproved0.35 ₽
user_5523 · loginpending…
user_7781 · resetapproved0.70 ₽
Channel mix, 14 days
messengersemail
API keyssvk_live_…9f2 · created 12.06
Start delivering codes where users actually are.
A short pilot proves the routing and the economics on one real flow before you scale it.