Skip to content
KolayOTP
TROpen panel
WhatsApp~2s · highest open rateSMS~4s · works on any phoneEmail~3s · lowest costTelegram~1s · freeWhatsApp~2s · highest open rateSMS~4s · works on any phoneEmail~3s · lowest costTelegram~1s · freeWhatsApp~2s · highest open rateSMS~4s · works on any phoneEmail~3s · lowest costTelegram~1s · free

Authentication platform — OTP as the distinctive verification channel.

Sign-in, 2FA, mobile approval and AI transaction approval in one integration. Sessions are minted here; OTP remains your deliberately focused verification strength.

Start freeAPI documentation
Infrastructure & integrations
BasefyioBuildfyioNetGSMResendPayfyio
bash — api.kolayotp.com
09:41
KolayOTP
business account
Your verification code:
482913
09:41 ✓✓
Valid for 10 minutes. Don't share it.

Four channels, one endpoint.

If the primary channel fails, the request falls through to the next one — no code changes on your side.

WhatsAppTemplate messages or reverse OTP via Meta Cloud API.~2s · highest open rateDetails →SMSSMSDirect delivery to Turkish carriers through NetGSM.~4s · works on any phoneDetails →EmailResend infrastructure with SPF/DKIM-ready templates.~3s · lowest costDetails →TelegramInstant bot delivery, no per-message cost.~1s · freeDetails →

Auth in three steps

1

Enable auth, get keys

Turn on Auth Methods in the panel; create a publishable key (pk_*) plus OTP delivery keys (kotp_*).

pk_test_… / kotp_live_…
2

Sign-in + 2FA

Email/password, magic link or OTP sign-in; optional TOTP MFA and OAuth.

POST /v1/auth/sign-in
3

Protected routes & approval

Session cookies for protected routes; step-up mobile / AI approval for high-assurance actions.

POST /v1/approvals

Built for developers

TypeScript SDK, an OpenAPI schema, and an MCP server for AI agents. Or five lines of curl.

✓idempotency-key header prevents duplicate sends on retries
✓Free sandbox with kotp_test_* keys; 123456 always verifies
✓Contract-tested OpenAPI schema at /api/v1
✓Rate-limit and fraud events stream to your webhook
Developer docs
$ curl -X POST https://api.kolayotp.com/v1/auth/sign-in/email-password \
    -H "X-KolayOTP-Publishable-Key: pk_live_..." \
    -H "Content-Type: application/json" \
    -d '{"email":"you@acme.com","password":"••••••••"}'

# Session cookies: __session (JWT) + __client (refresh)
# Optional AAL2: POST /v1/auth/sign-in/mfa/totp

$ curl -X POST https://api.kolayotp.com/api/v1/otp/send \
    -H "Authorization: Bearer kotp_live_..." \
    -H "idempotency-key: $(uuidgen)" \
    -d '{"recipient":"+905551234567","locale":"tr"}'

A panel that's production-ready on day one

Auth Methods, user / session management, balance, routing and channel analytics.

See the panel
Balance
₺4,280
Auto top-up on
Sent this month
18,402
98.7% delivery rate
Auth MAU
1,204
Last 30 days

Pay only for what you use

Auth MAU + per-channel OTP. No subscription. Garanti in Turkey, Stripe internationally.

See pricing
10,000 OTP
Estimated monthly costTRY 3,040
Sample: Auth MAU separate; OTP mix 60% SMS, 30% WhatsApp, 10% email. Prices are indicative.

Frequently asked

Auth platform vs OTP engine?+
KolayOTP is an authentication platform: sessions are minted here. OTP (WhatsApp/SMS/Telegram/email) stays your distinctive verification channel; the /api/v1/otp/* contract remains backward compatible.
Can we migrate from Auth0 or Authy?+
Yes. The migrate-auth0 and migrate-authy CLIs import into auth_users / auth_identities with source_system and migration_batch_id. Unsupported password hashes are skipped and reported. Authy TOTP imports only when secrets are present in the export.
What's the difference between sandbox and live keys?+
kotp_test_* keys never send a real message, are never billed, and always verify 123456. kotp_live_* keys draw from your balance. Auth uses pk_* publishable keys.
What is WhatsApp reverse OTP?+
Instead of sending a code, you hand the user a prefilled wa.me link. When they send the message, their number is proven — the code-entry step disappears entirely and conversion goes up.
Where is data stored for KVKK/GDPR?+
Phone numbers and email addresses are stored in Basefyio Postgres in the EU region. Codes are never stored in plaintext — only HMAC digests, deleted at TTL.
How is billing handled?+
Auth MAU (distinct users with a session in 30 days) is a separate SKU; OTP is per-channel unit pricing. Garanti in Turkey, Stripe internationally.

Send your first OTP in five minutes.

No credit card. Start on a sandbox key and switch to live when you're ready.

Start free