Features Channels Pricing Integrations Security Customers Documentation
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

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.

Start delivering codes where users actually are.

A short pilot proves the routing and the economics on one real flow before you scale it.

Start now