Business SMS API: send, schedule and track your messages

Send a text with one request, know the segment count up front and receive every status change. Custom quote pricing.

Custom quote

The SMS API sends text messages to your contacts from your application. You provide the sender, the recipient, the text and the message nature: transactional or marketing.

One SMS is not always one message for the network. A long text, or one with certain characters such as emoji, is split into segments, and each segment counts. The API returns the encoding chosen (GSM-7 or UCS-2) and the number of segments.

Statuses come back as processing goes on: queued, sent, delivered, undelivered or unknown. "Delivered" means the carrier handed the message to the handset, not that the person read it.

How it flows

Compose
Estimate segments
Queued
Handed to carrier
Final status

Practical uses

Codes and alerts

Send confirmation codes, delivery notifications or service alerts.

Appointment reminders

Schedule a message the day before, at the recipient's local time.

Framed marketing messages

Keep marketing and transactional messages apart so the right rules apply.

Customer replies

Receive replies on a compatible number and handle them in your application.

Features

  • Single or scheduled sending, with a time zone
  • Segment and encoding estimate before sending
  • Message nature: transactional or marketing
  • Sender check and test to a verified destination
  • Statuses queued, sent, delivered, undelivered and unknown
  • Inbound SMS on a compatible number

Limits to know

  • A long SMS is billed as several segments. Text with emoji or uncommon accented characters switches to UCS-2, which shrinks each segment.
  • "Delivered" does not mean "read". Delivery is never guaranteed: it depends on the recipient's carrier.
  • Receiving SMS requires a compatible number and country. A number that can place calls cannot always receive SMS.
  • Custom sender IDs, their format and their registration vary by country and carrier.
  • The unknown status means the carrier gave no final answer. It is neither a success nor a failure.
Fictional example: send a transactional SMS. The send is a simulation until a provider is configured.
curl -X POST "https://api.example.test/v1/messages" \
  -H "Authorization: Bearer tq_test_EXEMPLE" \
  -H "Idempotency-Key: 7b1d2c4e-0000-4000-8000-000000000003" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "+33199001234",
    "to": "+33199001235",
    "text": "Your appointment is confirmed for tomorrow at 10:00.",
    "nature": "transactional",
    "scheduled_at": "2026-11-20T09:00:00",
    "timezone": "Europe/Paris"
  }'
# => { "id": "msg_example", "status": "queued", "segments": 1,
#      "encoding": "GSM-7", "simulated": true }

Technical details

SendPOST /messages, Idempotency-Key required
Naturetransactional or marketing
EncodingGSM-7 or UCS-2, returned with the segment count
Schedulingscheduled_at and timezone
Eventsmessage.sent, message.delivered, message.undelivered

Frequently asked questions

Why does my message count as several segments?

Either the text is longer than one segment, or it contains characters that force UCS-2, a stricter encoding. The API returns the segment count when you create the message.

What does the unknown status mean?

The carrier has not reported a final status. The message may or may not have arrived. Treat it as neither a success nor a definitive failure.

Can I receive replies from my contacts?

Yes, where the number and country allow it. Inbound SMS is not available everywhere. You can check it when you search for the number.

Related use cases

Documentation

Related services

Plan your SMS sending

Tell us the countries, the message types and the volumes. We will prepare a quote that details conditions per destination.