Reach people at the right moment

SMS Gateway and Programmable SMS API for business messaging

Send and receive text messages at scale with a reliable sms gateway and sms api. Start fast, keep costs in check, and track what matters.

You get clean text message api endpoints, real time webhooks, and analytics that help you turn messages into results.

Free trialTalk to an expert

*No credit card required

TrustRadius
TrustRadius Five Star Rating
G2 Rating
G2 4.5 Rating
Capterra Rating
Capterra Five Star Rating
TrustPilot Rating
TrustPilot Four Star Rating
sms gateway hero

+1,000 BUSINESSES USE SMS.to FOR THEIR needs

Why teams choose SMS.to as their sms service provider

Global Delivery

Get global reach with smart routing:

Your messages go through high quality routes for better delivery. You can watch status with delivery receipts and webhooks.

ShortLink Tracking

Work the way your team works:

Marketers get a simple sms messaging service for alerts, reminders, and text marketing. Developers get a clear programmable sms api and test keys.

Privacy & Regulatory Compliance

Stay in control of outcomes:

Track clicks with short links. See which campaigns perform. Pause, retry, or scale when you need to.

Security & Transparency

Built with privacy in mind:

We follow GDPR rules and provide consent tools, opt in and opt out, and secure API keys.

SMS.to offers a powerful web platform and API, providing a smarter way for businesses to communicate with customers on multiple channels. Integrate SMS.to rich messaging in your workflow with our Omnichannel Messaging & SMS Gateway.

Quick start that lets you send your first message in minutes

1

Create your account and grab an API key

Sign up for your workspace and generate an API key in your dashboard. You can use a test key before going live.

2

Send a test using cURL or your favorite language

Use our cURL example or choose from Node.js, Python, PHP, Go, or any HTTP client. You’ll see an instant response.

3

Check the delivery webhook

Add a webhook URL and watch delivery confirmations arrive in real time with message status and timestamps.

4

Go live with your first flow

Switch to a live key, set your sender ID, and connect your workflow—whether it’s OTP, alerts, or marketing.

You can also set a callback URL to receive delivery reports and replies.

Need help with Postman or OpenAPI? Just ask—we'll send you a ready-made collection.

Get Started

Features that help you hit your goals

Global Delivery

Deliverability and scale

High quality routes. Delivery receipts. Queuing logic. Designed for common SMS formats, including long messages and Unicode. If you have special character or length needs, we can help you validate your setup.

Optional high throughput setup on request.

ShortLink Tracking

Developer experience

Simple api sms endpoints. Clear errors. Helpful response codes so you can handle retries safely. Webhooks with signing secrets. Example code in cURL, Node, Python, PHP, and Java.

This is an sms platform api you can adopt in minutes.

Privacy & Regulatory Compliance

Compliance and trust

GDPR friendly. Opt in and opt out tools. Clear messaging workflows and records that help your team stay organized. Regional guidance for alphanumeric sender IDs, 10DLC, or short codes where available.

If a detail is region specific we will confirm before you launch. Tell us where you operate and we will confirm what is supported for your region.

Security & Transparency

Omnichannel path

Start with business sms messaging. Add WhatsApp, Viber, RCS, or Telegram later from the same account if you need richer messages. Smart fallback to SMS is available in supported setups.

Built for developers who want clean APIs and quick integration

recommended
  • Straightforward endpoints for send, status, and 2-way replies
  • Signed webhooks you can verify
  • OpenAPI spec and Postman collection on request
  • SDK-style examples for rapid copy and paste
  • Status page and changelog so you know what changed
  • SMPP can be discussed for very high volume if your use case needs it

Need rate limit or retry guidance? Tell us your expected concurrency and region mix. We will suggest safe defaults.

Get Started

verify API

For marketers and operations who need results

Keep customers close with business SMS that land and convert.
  • Automated texting service for reminders, renewals, and promos
  • Text messages for business journeys that reduce no-shows and missed deliveries
  • Short link tracking to measure clicks and conversions
  • List tools for opt-in, opt-out, and quiet hours
  • Reports that make it easy to show ROI. Track delivery and responses so you can see how each campaign performs.

Not sure when to use text marketing vs a transactional texting API? We can help you plan a simple playbook that fits your audience and budget.

Get Started

Integrations and plugins that save time

You can connect SMS.to to your store or CRM and send updates without building everything from scratch.

Use the Salesforce integration to set triggers and templates inside Salesforce, then send tests and go live.

Or plug in webhooks or simple no-code automations to fire SMS from your store or CRM events.

Or call the /sms/send API with your key, recipient, message, and optional callback_url for delivery updates.

Start with one flow, verify delivery, then add more events as you scale.

 

Get Started

Hit inboxes fast and consistently

You care about messages arriving fast and in order.

We use smart routing and track delivery across networks. We expose delivery receipts and reply events over webhooks so your system can react in real time. If you need higher throughput or extra redundancy, tell us and we will size a plan.

Get Started

easy SETUP!

SMS API For Developers

Implement SMS notifications, OTP, reminders etc. into your workflow and build apps that send SMS with our redundant SSL SMS API. *

				
					curl --location 'https://api.sms.to/sms/send' \
--header 'Authorization: Bearer <api_key>' \
--header 'Content-Type: application/json' \
--data '{
    "message": "This is test and \n this is a new line",
    "to": "+35799999999999",
    "bypass_optout": true,
    "sender_id": "SMSto",
    "callback_url": "https://example.com/callback/handler"
}'
				
			
				
					<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.sms.to/sms/send',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "message": "This is test and \\n this is a new line",
    "to": "+35799999999999",
    "bypass_optout": true,
    "sender_id": "SMSto",
    "callback_url": "https://example.com/callback/handler"
}',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer <api_key>',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
				
			
				
					var https = require('follow-redirects').https;
var fs = require('fs');

var options = {
  'method': 'POST',
  'hostname': 'api.sms.to',
  'path': '/sms/send',
  'headers': {
    'Authorization': 'Bearer <api_key>',
    'Content-Type': 'application/json'
  },
  'maxRedirects': 20
};

var req = https.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function (chunk) {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });

  res.on("error", function (error) {
    console.error(error);
  });
});

var postData = JSON.stringify({
  "message": "This is test and \n this is a new line",
  "to": "+35799999999999",
  "bypass_optout": true,
  "sender_id": "SMSto",
  "callback_url": "https://example.com/callback/handler"
});

req.write(postData);

req.end();
				
			
				
					require "uri"
require "json"
require "net/http"

url = URI("https://api.sms.to/sms/send")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <api_key>"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
  "message": "This is test and \n this is a new line",
  "to": "+35799999999999",
  "bypass_optout": true,
  "sender_id": "SMSto",
  "callback_url": "https://example.com/callback/handler"
})

response = https.request(request)
puts response.read_body
				
			
				
					import http.client
import json

conn = http.client.HTTPSConnection("api.sms.to")
payload = json.dumps({
  "message": "This is test and \n this is a new line",
  "to": "+35799999999999",
  "bypass_optout": True,
  "sender_id": "SMSto",
  "callback_url": "https://example.com/callback/handler"
})
headers = {
  'Authorization': 'Bearer <api_key>',
  'Content-Type': 'application/json'
}
conn.request("POST", "/sms/send", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
				
			
				
					OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n    \"message\": \"This is test and \\n this is a new line\",\r\n    \"to\": \"+35799999999999\",\r\n    \"bypass_optout\": true,\r\n    \"sender_id\": \"SMSto\",\r\n    \"callback_url\": \"https://example.com/callback/handler\"\r\n}");
Request request = new Request.Builder()
  .url("https://api.sms.to/sms/send")
  .method("POST", body)
  .addHeader("Authorization", "Bearer <api_key>")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
				
			
				
					package main

import (
  "fmt"
  "strings"
  "net/http"
  "io/ioutil"
)

func main() {

  url := "https://api.sms.to/sms/send"
  method := "POST"

  payload := strings.NewReader(`{`+"
"+`
    "message": "This is test and \n this is a new line",`+"
"+`
    "to": "+35799999999999",`+"
"+`
    "bypass_optout": true,`+"
"+`
    "sender_id": "SMSto",`+"
"+`
    "callback_url": "https://example.com/callback/handler"`+"
"+`
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Authorization", "Bearer <api_key>")
  req.Header.Add("Content-Type", "application/json")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := ioutil.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
				
			

Pricing and free trial that keep costs clear

Try the sms gateway service with a free account. No credit card to start. When you scale, you only pay for what you send. Volume discounts are available.

If you operate in multiple regions, we will guide you on sender options and any local fees.

Compliance and security you can rely on

  • Secure API keys and scoped access
  • Webhook signature verification
  • Opt in and opt out controls
  • Data handling aligned with GDPR
If you need a DPA or custom retention setup, ask and we will confirm what is supported.

Get Started

What Our Users Say

Seamless Integrations
With Your Favorite Tools​

SMS integrations for your preferred platform

seamless integration mobile

Ready to try an sms messaging api that is simple and dependable?

Put together your first request today. Send a test, watch the webhook, and see delivery in minutes. When you are ready, plug it into your stack and scale.

Get Started

Learn how we collect and use your information by visiting our Privacy Notice
SMS.to SignUp

FAQ

It is a text messages api that lets your app send and receive SMS through carrier networks. You call the endpoint, we route the message, and you get delivery receipts and replies over webhooks.

Yes, in select countries. You can view and manage replies in the SMS.to interface where two way numbers are available for your region. If you need programmatic access, tell us your use case and we will confirm the options for your account.

Availability depends on local rules. In many countries, registration is mandatory and certain sender types are required by law. For example, a short code may be mandatory for specific use cases, and alphanumeric IDs may require brand registration and approval. Tell us where you operate and your use case, and we will confirm what is allowed, what is required, and the expected timeline.

You can start with a free account and send test messages. For production traffic normal rates apply.

For very high volume, we can discuss throughput and optional SMPP. Talk to us and we will suggest the best setup for your traffic.

Use short links in your messages. Our sms marketing services include link tracking so you can measure engagement.

see coverage directory