Skip to content
Authlie
Built for Egypt · pay only when it verifies

Verify phone numbers with a voice call, not just a text

Authlie calls the number, reads a freshly generated code out loud in Arabic or English, and confirms what the user types back — billed only when a verification actually succeeds, from 0.50 EGP each.

No credit card required to create an account and explore the dashboard.

request an OTP call
$ curl https://app.authlie.com/v1/otp/request \
    -H "Authorization: Bearer authlie_live_..." \
    -H "Content-Type: application/json" \
    -d '{
      "phone_number": "+201001234567",
      "locale": "ar"
    }'

→ {
    "id": "otp_9f2a...",
    "status": "calling"
  }

See it for yourself

Enter an Egyptian number below — this calls the real Authlie API, live, no account required.

Three calls, start to finish

No SDKs to install and no queues to manage — request a call, poll or wait for the result, then verify what the end user typed.

  1. 01

    Request a call

    POST /v1/otp/request with a phone number. Authlie generates a code and starts dialing, returning a request id right away.

  2. 02

    We place the call

    The number rings, and an automated voice reads the code aloud in Arabic or English. GET /v1/otp/{id} reports delivered, no_answer, or failed.

  3. 03

    Verify the code

    POST /v1/otp/verify checks what the user typed and returns a simple verified boolean. The code itself is never returned by any endpoint.

Built around Egyptian phone numbers

Everything you need to verify a real person is on the other end of the line.

+20 numbers, validated

Every request is checked against E.164-formatted Egyptian numbers before a call is ever placed.

Arabic & English voice

Pass locale: "ar" or "en" and the code is read out in that language.

Locked-down API keys

Every call is authenticated with a bearer key from your dashboard. Roll or revoke keys any time.

Built-in abuse protection

Codes expire on their own and lock after too many wrong attempts, so a guessed code can't slip through.

A dashboard for your usage

See every OTP request, its delivery status, and your balance draining in real time — no digging through logs.

Your own reference on every call

Attach a client_reference — an order or user id — to reconcile OTP requests with your own records.

A small, predictable API

Three JSON endpoints authenticated with a single bearer key. Errors come back as {"error": {"code", "message"}}, and every response you'd poll for status is a plain GET.

verify the code
$ curl https://app.authlie.com/v1/otp/verify \
    -H "Authorization: Bearer authlie_live_..." \
    -H "Content-Type: application/json" \
    -d '{
      "id": "otp_9f2a...",
      "code": "482913"
    }'

→ { "verified": true }

One balance. Pay only for what verifies.

Top up your balance, then you're charged per successful verification — never for a call that fails, goes unanswered, or expires. The rate drops automatically as your volume grows each month.

Minimum top-up

Fund your balance from 500 EGP, any time, from the dashboard.

500 EGP

  1. Verifications 1–100

    0.90 EGP each

    Every account's starting rate, each calendar month.

  2. Verifications 101–1,000

    0.75 EGP each

    Kicks in automatically once you cross 100 that month.

  3. Verifications 1,001+

    0.50 EGP each

    Our lowest rate — the more you verify, the less each one costs.

Tiers reset at the start of each calendar month, and your rate only ever moves down as volume grows — never up.

Frequently asked questions

What phone numbers does Authlie support? +

Egyptian mobile numbers in E.164 format (+20...). A request for a number outside that format is rejected before any call is placed.

Why a voice call instead of SMS? +

A voice call reaches any handset that can receive a phone call — no SMS routing, filtering, or delivery reports to reason about. Authlie dials the number and reads the code aloud, in Arabic or English.

What happens if someone enters the wrong code? +

Verification returns verified: false with the attempts remaining. After too many wrong attempts the request locks; codes also expire on their own after a few minutes, so a new request is always the way forward.

How do I authenticate API requests? +

Every request carries an API key from your dashboard as Authorization: Bearer authlie_live_.... Keys can be created and revoked at any time.

Do I need a credit card to try it out? +

No — create an account and explore the dashboard for free. You'll only need a card when you're ready to top up your balance and start sending calls.

Ready to verify your first number?

Create an account, generate an API key, and place your first OTP call in minutes.