SMS API

SMS API for enterprise messaging

Send transactional and bulk SMS from your own systems through one REST API. Authenticate with an API key, follow every message with signed delivery webhooks and reach customers worldwide through the ZafeConnect network.

REST · JSON · API key · signed webhooks

In brief

The SMS API in short

ZafeConnect’s SMS API is a REST API (JSON, API-key authentication) for sending, scheduling and tracking SMS. It supports bulk sending of up to 10,000 messages per request, signed delivery webhooks and fallback across SMS, RCS, WhatsApp and email.

Base URL
https://api.zafeconnect.com, all endpoints under /v1
Authentication
X-API-Key header; live and test keys
Limits
1,000 requests per minute per key; bulk: up to 10,000 messages per request and 100 requests per minute
Webhooks
HMAC-SHA256 signed; any 2xx acknowledges; retried up to 5 times
Channels
sms, rcs, whatsapp, email, with optional fallback order
Documentation
API documentation at /developers; OpenAPI 3.1 file at /openapi.json
Pricing model
Pay per delivered message. No setup, system or operating fees and no subscription.

What it does

Send, schedule and track SMS from your own systems

One REST API covers the life of a message, from sending to the final delivery status.

Send one message

POST /v1/messages/send sends a message to a phone number in E.164 format. The same call also supports RCS, WhatsApp and email.

Send in bulk

POST /v1/messages/bulk accepts up to 10,000 messages in one request. Each message is queued individually.

Schedule and cancel

Set scheduled_at to send later, and cancel a message while it is still scheduled.

Track every message

Fetch the status of a message by its ID, or receive status changes as signed webhooks.

Manage the account

Read your balance, your prices per channel and country, and your usage for a date range.

Example

Your first request

This is the documented send call: one request, one JSON response with the message ID you can track.

Request
curl -X POST https://api.zafeconnect.com/v1/messages/send \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+4520123456",
    "channel": "sms",
    "message": "Hello from ZafeConnect!",
    "sender": "MyBrand"
  }'
Response
{
  "message_id": "msg_01j2abc...",
  "status": "queued",
  "channel": "sms",
  "to": "+4520123456",
  "cost": 0.00,
  "currency": "EUR",
  "created_at": "2026-05-27T12:00:00Z"
}

Example values are illustrative. Field reference, error codes, bulk sending, webhooks and signature verification are in the API documentation. A machine-readable OpenAPI 3.1 file is also available.

Try it

Follow a message through ZafeConnect

Choose how to send and press the button. The request is the documented call; the journey and the delivery event are a simulation. Nothing is sent, and the values are examples.

The simulator needs JavaScript. The documented request and response are in the example above.

Simulation. No message is sent and no account is used. Delivery is never guaranteed; example values only.

Built for production traffic

Authentication, limits and signed webhooks

These are the documented defaults. If you expect higher volumes or sharp peaks, tell us and we will plan the setup together.

API key authentication

Send your key in the X-API-Key header. Keys exist for live and test environments, so you can integrate before you send real traffic.

Documented rate limits

Single sends: 1,000 requests per minute per key. Bulk: up to 10,000 messages per request and 100 requests per minute.

Signed delivery webhooks

Status changes are posted to your URL with an HMAC-SHA256 signature you can verify. Return any 2xx status to acknowledge; ZafeConnect retries up to 5 times.

JSON in, JSON out

All requests and responses are JSON, UTF-8 encoded, with standard HTTP status codes such as 201, 400, 401 and 402.

Delivery

Global reach and routing behind one endpoint

The API is the front door. Behind it, messages travel over direct operator connections and partner direct routes, with fallback if a route has problems.

One integration, many countries

The same call reaches customers in different countries. Coverage and features vary by destination, so tell us where your customers are.

Intelligent routing and fallback

Traffic follows the best available route per destination, with alternative routes or regions if there are network problems.

Real delivery reports

Delivery status comes from the operators’ own delivery reports where the operator returns them.

Fallback across channels

List channels in priority order, for example SMS first and email as backup. The API tries the next channel if the primary one fails.

Sender identity

Send under your own brand name

Use the sender field to show your brand name where the destination country allows it.

Approved senders only

The sender must be an approved SenderID. We guide you through registration where a country requires it.

11 characters on SMS

Alphanumeric sender names are limited to 11 characters on SMS.

Keep your name yours

SenderID Protection helps keep others from using your sender name, where operators or registries support protection.

Getting started

From first request to live traffic

  1. 1

    Request access

    Tell us your destination countries, channels and expected volumes. We confirm what applies and set up your account.

  2. 2

    Integrate with a test key

    Build against the documented endpoints with a test API key and check the responses.

  3. 3

    Add webhooks

    Point delivery events at your endpoint and verify the signature.

  4. 4

    Go live

    Switch to a live key. You could be live in as little as 2 weeks from the moment you decide to get started.

FAQ

SMS API: frequently asked questions

What is an SMS API?

An SMS API lets your application send text messages and read their delivery status by making HTTP requests, instead of using a web interface. ZafeConnect’s API is a REST API with JSON requests and responses.

Is an SMS API the same as an SMS gateway?

Providers use both terms for the connection between your systems and the mobile networks. ZafeConnect offers it as a REST API with API-key authentication. If you need another connection method, such as SMPP, tell us and we will confirm what is available.

How do I authenticate?

Send your API key in the X-API-Key header on every request. Keys are created and managed in your ZafeConnect account, and come in live and test environments.

What are the rate limits?

The documented limits are 1,000 requests per minute per key for single sends, and up to 10,000 messages per bulk request with 100 bulk requests per minute. Tell us about higher volumes and we will plan the setup with you.

How do I get delivery status?

Fetch a message by its ID, or receive webhooks when the status changes. Each webhook is signed with HMAC-SHA256 so you can verify it came from ZafeConnect, and ZafeConnect retries up to 5 times if your endpoint does not acknowledge.

Can I send one-time passcodes and other transactional SMS?

Yes. Transactional messages such as one-time passcodes, alerts and notifications are the most common use of the API. See our OTP verification page for the details that matter.

Can I send RCS, WhatsApp or email with the same API?

Yes. The send endpoint takes a channel (sms, rcs, whatsapp or email) and an optional list of fallback channels. Availability varies by country and channel.

How is the SMS API priced?

You pay only for delivered messages, with no setup, system or operating fees. Charges are taken from your prepaid balance, or invoiced monthly for enterprise customers. See the pricing page for how it works.

Ready to integrate?

Tell us about your systems, destinations and volumes. We will help you send your first message, and you could be live in as little as 2 weeks.