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

01

Protect accounts

Use a one-time code for signup, login, password reset and payment confirmation.

02

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.

03

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.

Ready to integrate

Bearer token, JSON body, the same base URL as the rest of the API.

Read the API
POST /api/v1/verifications
{
  "destination": "+4915112345678",
  "channel": "sms",
  "locale": "en"
}

POST /api/v1/verifications/{id}/check
{ "code": "482913" }

Send. Deliver. Verify.

1

Create a verification

Your server calls the API with the phone number. We generate a 6-digit code and queue the SMS.

2

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.

3

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.

Outbound SMS rates

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

OTP Verify creates a one-time code, sends it by SMS and checks the code your user submits. You call it from your backend with the account API token.

POST /api/v1/verifications with destination in international format, for example +4915112345678. The response contains an id and status pending. The code itself is only in the SMS.

POST /api/v1/verifications/{id}/check with the code the user entered. A match returns status verified. A mismatch returns how many attempts are left.

The SMS is charged like any other outbound message from your balance. Reading and checking the verification does not add a fee.

Yes. Pass template with the placeholder {code} exactly once. The finished message must be 160 characters or fewer and must not contain a link.

Leave from empty to use the shared sender, or pass a number that is rented on the same account.

Add phone verification to your flow

Create an account, top up the balance and send the first code from the API.