Send and verify
POST /v1/otp creates the code; POST /v1/otp/{id}/verify returns the result and attempts left.
Verification in two calls: send the code, verify what the user types. Lifetime, length and attempts follow your rules; the code itself is never stored in plain text.
The OTP API is launching — live soon. The email channel uses the live sending pipeline, the SMS channel uses TXT2X.
Sent to +90 5** *** ** 67
Illustrative view · sample data
Every line states its status: use what is live today, help shape what is in early access.
POST /v1/otp creates the code; POST /v1/otp/{id}/verify returns the result and attempts left.
Set the code lifetime and digit count with ttl_seconds and length.
Each verify returns attempts left; the code is invalid once they run out.
Neither the code nor the message body is stored; only a keyed hash is kept, never logged.
otp.send and otp.verify are separate scopes; split sending and verifying services.
Pick with the channel field. Email is live; SMS opens with the operator connection.
Success rate, timing and channel breakdown screen.
Abuse detection with device and IP signals.
A short-lived code to phone or email on top of the password.
Prove during sign-up that the contact detail really belongs to the user.
Extra confirmation before payments, address changes or account deletion.
You neither generate nor store the code: 2X creates, sends and verifies it. Field names are finalized during launch; see /docs for the current shape.
curl https://api.reach2x.com/v1/otp \
-H "Authorization: Bearer $REACH2X_API_KEY" \
-H "Idempotency-Key: giris-7f3a91c2" \
-H "Content-Type: application/json" \
-d '{
"channel": "email",
"to": "[email protected]",
"from": "[email protected]",
"length": 6,
"ttl_seconds": 300
}' {
"id": "5e4d3c2b-1a09-4f8e-8d7c-6b5a49382716",
"object": "otp",
"channel": "email",
"status": "pending",
"to": "a***@ornek.com",
"attempts_left": 5,
"expires_at": "2026-11-14T09:35:00Z"
} curl https://api.reach2x.com/v1/otp/5e4d3c2b-1a09-4f8e-8d7c-6b5a49382716/verify \
-H "Authorization: Bearer $REACH2X_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "code": "482913" }' {
"verified": true,
"attempts_left": 4,
"status": "verified"
} The points below describe how the API behaves today, not future promises.
Each key belongs to one project and can only use the scopes it was given (e.g. sms.send, email.read). Only a hash is stored; the secret is shown once.
Asking for an id that belongs to another organization returns 404; nothing about its existence leaks.
Sending calls require an Idempotency-Key. A repeated request with the same key returns the original result instead of a second message.
Every event is signed with HMAC-SHA256 and carries a timestamp; failed deliveries are retried with growing intervals.
Phone numbers and email addresses are masked in responses; message bodies can never be read back through the API.
Keys starting with rx_test_ never deliver to a real recipient, so you can try your integration safely.
The price list is not published yet. Open your account now, start on a trial entitlement and see the plans first when they are announced.
Only the channel you need. No separate account, no separate portal.
Pricing soonEarly access
Add products to the same organization; keys, members and logs stay shared.
Pricing soonEarly access
Email, SMS, verification and the next channels under one organization.
Pricing soonEarly access
The API is being built this period and is in launch phase. The email channel is expected first since it uses the live sending pipeline; no date is announced.
No. 2X generates the code and keeps only its hash; you just forward what the user typed to the verify endpoint.
The planned channels today are SMS and email. Others will be considered as those products open.
The price list is not published yet.
Start with the product you need; add the others to the same account whenever you want.
One API and one account for all your channels
reach2x.comLive Mail2XTransactional email today; business mailboxes soon
mail2x.comLive Relay2XSigned webhooks, idempotency and scoped keys
relay2x.comLive TXT2XAn SMS API that knows the İYS rules
txt2x.comLaunching OTP2XOne-time verification codes over SMS and email
otp2x.comLaunching WA2XBusiness messaging on the official WhatsApp Business Platform
wa2x.comEarly access NOTI2XNotification orchestration from event to the right channel
noti2x.comEarly access PUSH2XMobile and web push notifications
push2x.comEarly accessSign-up is free. Integrate today with a test key; the same code works when it goes live.