Single and multi-recipient
Up to 100 distinct numbers per call; one message id per recipient.
Send informational, one-time-code and commercial SMS with the right rules for each category. Encode Turkish characters in the fewest segments and receive delivery status by webhook. The operator connection is launching; live soon.
The API is ready and the operator connection is launching — live soon. You can integrate today with a test key.
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.
Up to 100 distinct numbers per call; one message id per recipient.
informational, otp, commercial. Commercial requires recipient type and İYS brand code; recipients without consent are refused.
3–11 character sender name; per-key allowed sender limits.
GSM 7-bit, Turkish shift table or UCS-2 chosen automatically; at most 7 segments.
Schedule up to 30 days ahead; cancel a scheduled message with one call.
queued → sent → delivered / failed / expired; with a coded failure dictionary.
Read period segment usage from the API; at quota only commercial sending stops.
Upload recipients from a file, remove duplicates and get a campaign report.
Informational category; transactional messages that need no commercial consent.
In the otp category the body is never stored; only a keyed hash is kept.
In the commercial category, recipients without İYS consent fail with recipient_no_consent.
Numbers are sent in E.164 and masked in every response. Until the operator connection opens, try the same call with a test key.
curl https://api.reach2x.com/v1/sms \
-H "Authorization: Bearer $REACH2X_API_KEY" \
-H "Idempotency-Key: randevu-48213" \
-H "Content-Type: application/json" \
-d '{
"to": "+905321234567",
"body": "Randevunuz 18 Kasım 14:30. Değişiklik: https://example.com/r/Ab12",
"category": "informational",
"sender": "EXAMPLE"
}' {
"batch_id": "3f9a2b7c-1d4e-4a5b-8c6d-7e8f9a0b1c2d",
"messages": [{
"id": "8b7a6c5d-4e3f-4a2b-9c1d-0e9f8a7b6c5d",
"object": "sms",
"status": "queued",
"to": "+90 5** *** ** 67",
"sender": "EXAMPLE",
"segments": 1,
"encoding": "gsm7_tr"
}]
} curl https://api.reach2x.com/v1/webhooks \
-H "Authorization: Bearer $REACH2X_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/hooks/2x",
"events": ["sms.delivered", "sms.failed", "email.delivered", "email.failed"]
}' {
"webhook": {
"id": "1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d",
"url": "https://example.com/hooks/2x",
"status": "active",
"secret_prefix": "whsec_9fK2"
},
"secret": "whsec_… (shown only once)"
} 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 and queue are ready; the operator connection is launching. No fixed date is announced. You can complete your integration now with a test key.
Your organization needs an İYS brand code and every call must include commercial.recipient_type (individual or merchant). Recipients without İYS consent are not messaged.
Encoding is chosen automatically: 155 characters per segment with the Turkish shift table when possible, otherwise 70 with UCS-2.
Apply for a sender name in the console; the approved name is assigned to your organization and can be restricted per key.
The price list is not published yet. Open an account to see the announcement first.
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.