OTP Verify
One-time passwords by SMS
Confirm signups, logins and payments with a code sent to the user’s phone. Your app starts the check and sends us the code the user entered. E-Numbers delivers the SMS.
Protect every sensitive step
Protect accounts
Use a one-time code for signup, login, password reset and payment confirmation.
Two API calls
Create a verification, then submit the code the user typed. The same REST API as the rest of your E-Numbers account.
Your sender, your text
Send from a number on your account, or from the shared sender. The SMS can use your wording in English, Russian or Ukrainian.
POST /api/v1/verifications
{
"destination": "+4915112345678",
"channel": "sms",
"locale": "en"
}
POST /api/v1/verifications/{id}/check
{ "code": "482913" }
Send. Deliver. Verify.
Create a verification
Your server calls the API with the phone number. We generate a 6-digit code and queue the SMS.
Deliver the code
The message goes out through the same outbound SMS route as the rest of your traffic and is billed from the account balance.
Check the code
The user enters the code. Your server submits it. A matching code within 10 minutes returns status verified.
Where teams use it
Phone number confirmation
Make sure a new account belongs to someone who has the phone number they registered.
Login and 2FA
Ask for a fresh code when someone signs in from a new device.
Password recovery
Let people prove they hold the phone on the account before a password change.
Payments and profile changes
Confirm a payout detail or another sensitive change before you apply it.
You pay for the SMS
Checking a code does not add a separate fee. Delivery uses your outbound SMS rate and the balance on the account.
SMS from your balance
Each code is an outbound message. The usual send rate for that destination applies.
Check is included
Submitting the code, reading the status and an expired attempt do not create an extra charge.
A new code replaces the old one
Starting a verification for the same number closes the previous pending code, so only one code is active.
What you control
10-minute lifetime
A pending code expires automatically. After that the status is expired.
Five attempts
A wrong code reduces the attempts left. The fifth miss marks the verification as failed.
Message template
Pass a template that contains {code} once, up to 160 characters, without a link.
Sender ID
Set from to a virtual number on your account, or leave it empty to use the shared sender.
Status you can read
Each verification is pending, verified, expired or failed. Fetch it any time by id.
Languages
Default texts are available in English, Russian and Ukrainian. Set locale on the request.
Questions
Add phone verification to your flow
Create an account, top up the balance and send the first code from the API.