Skip to content
Launching txt2x.com

One message, thousands of right connections.

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.

POST /v1/sms · category: informational

Delivery status

  1. queued14:02:10
  2. sent14:02:11
  3. delivered14:02:14
gsm7_tr63/155
1 segment · max 7

to: +90 5** *** ** 67

Illustrative view · sample data

Capabilities

What is ready, what comes next

Every line states its status: use what is live today, help shape what is in early access.

Launching

Single and multi-recipient

Up to 100 distinct numbers per call; one message id per recipient.

Launching

İYS categories

informational, otp, commercial. Commercial requires recipient type and İYS brand code; recipients without consent are refused.

Launching

Approved sender names

3–11 character sender name; per-key allowed sender limits.

Launching

Turkish encoding

GSM 7-bit, Turkish shift table or UCS-2 chosen automatically; at most 7 segments.

Launching

Schedule and cancel

Schedule up to 30 days ahead; cancel a scheduled message with one call.

Launching

Delivery reports

queued → sent → delivered / failed / expired; with a coded failure dictionary.

Launching

Quota and balance

Read period segment usage from the API; at quota only commercial sending stops.

Early access

Bulk campaign screen

Upload recipients from a file, remove duplicates and get a campaign report.

Use cases

Where it helps

01

Appointments and orders

Informational category; transactional messages that need no commercial consent.

02

Sign-in codes

In the otp category the body is never stored; only a keyed hash is kept.

03

Consent-based campaigns

In the commercial category, recipients without İYS consent fail with recipient_no_consent.

Developers

Start with a single request

Numbers are sent in E.164 and masked in every response. Until the operator connection opens, try the same call with a test key.

  • Base URL: https://api.reach2x.com
  • Bearer API key; permission per scope
  • Idempotency-Key required on sends
  • Errors as RFC 9457 problem+json with a stable code

Docs

curl Send an SMS
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"
  }'
Response202 Accepted
{
  "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 Register a webhook endpoint
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"]
  }'
Response201 Created
{
  "webhook": {
    "id": "1b2c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d",
    "url": "https://example.com/hooks/2x",
    "status": "active",
    "secret_prefix": "whsec_9fK2"
  },
  "secret": "whsec_… (shown only once)"
}
Security

Secure by default

The points below describe how the API behaves today, not future promises.

Scoped API keys

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.

Tenant isolation

Asking for an id that belongs to another organization returns 404; nothing about its existence leaks.

Idempotency

Sending calls require an Idempotency-Key. A repeated request with the same key returns the original result instead of a second message.

Signed webhooks

Every event is signed with HMAC-SHA256 and carries a timestamp; failed deliveries are retried with growing intervals.

Masked recipients

Phone numbers and email addresses are masked in responses; message bodies can never be read back through the API.

Test keys

Keys starting with rx_test_ never deliver to a real recipient, so you can try your integration safely.

Pricing

Early access — pricing soon

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.

One product

Only the channel you need. No separate account, no separate portal.

Pricing soonEarly access

Several products

Add products to the same organization; keys, members and logs stay shared.

Pricing soonEarly access

The whole 2X family

Email, SMS, verification and the next channels under one organization.

Pricing soonEarly access

FAQ

Frequently asked questions

When will TXT2X go live?

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.

What do I need for commercial SMS?

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.

Do Turkish characters increase segments?

Encoding is chosen automatically: 155 characters per segment with the Turkish shift table when possible, otherwise 70 with UCS-2.

How do I get a sender name?

Apply for a sender name in the console; the approved name is assigned to your organization and can be restricted per key.

What does it cost?

The price list is not published yet. Open an account to see the announcement first.

Open your account and start integrating today.

Sign-up is free. Integrate today with a test key; the same code works when it goes live.