Push texts that get to customers every time

SMS API for developers that sends in minutes

Launch fast with a developer-friendly SMS API. Get a free sms api key and expand your customer reach.

Trusted by teams worldwide. Uptime designed for production use.

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 API

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

Why teams choose our SMS gateway API

Why teams choose our SMS gateway API

  • High deliverability with smart routing and delivery receipts.
  • Fast setup. Create a key and send your first text in minutes.
  • Two-way SMS with webhooks for real-time replies and DLRs.
  • Scales from one message to millions for transactional and marketing use.
  • Privacy-first design, GDPR aligned, and project-level access controls.
  • Global reach with local features like sender IDs and number types where available.
  • Developer support with SDKs, code samples and a status page.
SMS API Tabs Surveys and Feedback Requests

Notification SMS

Send instant SMS notifications for order confirmations, transactions, reminders and activity

SMS API Tabs Notifications

Appointment Reminders

Remind your customers of their appointments to reduce no-shows. Integrate with your CRM or Calendar

SMS API Tabs Reminders

SMS Marketing & Newsletters

Effortlessly send bulk SMS to a global audience, reaching a multitude of recipients worldwide in no time

SMS API Tabs Marketing

Surveys & Feedback Requests

Quickly connect with your customers using our 2-way SMS connectivity for swift and interactive communication

SMS API Tabs Surveys and Feedback Requests

Cover customer journeys from login to loyalty

OTP and 2FA with a secure text messaging API

Send one-time passcodes reliably. Reduce drop-offs with fast delivery, short TTL control and verified sender options where supported. Add smart fallback to other channels like WhatsApp, Viber, RCS and Telegram if needed.

Real-time notifications via a text message service API

Confirm orders, alert on payments, and push delivery updates. Track delivery with DLR webhooks and keep customers informed without manual work.

Appointment and delivery reminders

Cut no-shows and missed drops. Schedule reminders and include short links you can track.

Bulk and campaign messaging via an SMS messaging API

Run promotions and updates at scale. Use your contact lists and custom fields. Track clicks with short-link analytics.

Surveys and two-way support with a texting API

Collect quick feedback or resolve issues in a simple thread. Route replies to your app or CRM using webhooks.

Seamless SMS Integration With Our SMS API​

Our SMS API provides you with the tools to send and receive SMS messages programmatically, making it easy to incorporate SMS communication into your existing systems.

  • Effortless Integration
  • Enhanced Connectivity
  • Seamless API
  • Instant Messaging
  • Programmatic Control
  • Streamlined Communication
Go live with a few lines of code!

SMS API For Developers

Implement SMS marketing notifications, OTPs or reminders into your workflow and build apps that send SMS messages with our 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))
}
				
			
Quickstart checklist:
  1. 1 Sign up and copy your API key.
  2. 2 Paste the code sample.
  3. 3 Send your first SMS and watch the DLR webhook fire.

Pricing that’s predictable as you grow

Pay as you go with volume discounts. No setup fees.
  • Show a small price preview for 3 to 5 popular countries.
  • Link to full country pricing and taxes or carrier fees where applicable.
Get free SMS credits when you sign up. Rate limits and destination rules may apply. Tell us if you need higher limits for load testing.

Reliability, compliance and support you can show your stakeholders

  • Uptime shown on our public status page.
  • Retries and queuing so transient issues do not block you.
  • Secure webhooks with signing tips and IP allowlisting patterns.
  • Opt-in and opt-out tools to respect user preferences.
  • Short-link tracking to measure engagement.
  • Privacy. We follow GDPR and can provide a DPA on request. If you have compliance questions for your region, contact support and we will advise you.
About sender IDs and number rules: In most countries you can use a sender ID, but many require registration or pre-approval for A2P traffic, including 10DLC in the US. If a sender is not registered or does not meet local rules, delivery and throughput may be reduced or blocked. We will guide you on the best setup for each market.

What Our Users Say

Here’s what customers say about using the SMS API and platform features.
“Easy-to-understand API documentation and the ability to send SMS to almost every country.”
Vadim C. , Administrator (Small Business) on G2
“Very stable, fast and reliable for my SMS needs.”
Allan M. , Founder & CEO on Capterra
“Built by experts… great team. They know what they are doing.”
Tom F. , Senior Web Developer on Capterra
“The most efficient thing… was its easy-to-use APIs which helped us in fast and easy integration.”
Verified User , Education Management on G2
“Best service… Great service and fast response.”
Joellep and Carla LB on Trustpilot
“It’s quite fast and cost me very less… simple to use.”
Sujit B. , CEO on Capterra

Seamless Integrations
With Your Favorite Tools​

SMS integrations for your preferred platform

seamless integration mobile

Ready to see your first messages land?

Start for free and send your first SMS today.

If you prefer a walkthrough, we can help you set up delivery settings, including your sender ID options, webhooks for delivery receipts and replies, and any country-specific requirements.

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

FAQs

What is an API for SMS messaging and how does your SMS message gateway work?
It is a REST interface that lets your app send and receive text messages. You make HTTPS requests with your API key, and we deliver to carriers. You get delivery receipts and inbound messages via webhooks.
Do you offer a free text message API or text message API free credits?
New users receive a bundle of free credits to try SMS.to from the web app (UI). These credits are intended for test messages to your own phone number so you can confirm delivery and see the flow. They are not a free, unlimited API allowance. To send via the API, you’ll need an active balance or plan after sign-up. If you’re evaluating the API, we’ll show you how to send a quick test to your number and what’s needed for production sending.
How do I send text message API free to test in staging?
Use the free credits in the web app to send a few test messages to your own phone number and confirm delivery. These credits are UI-only. We don’t offer a separate free API sandbox. To test the API programmatically, add a small balance, send to your own number in a staging environment, and use a callback_url to observe delivery receipts before you go live.
Do you have a programmable SMS API with webhooks and two-way messaging?
Yes. You can receive replies and delivery events to your webhook URL. Examples are included.
Who are the best SMS API providers and how do I choose an SMS gateway provider?
Look at deliverability, pricing by country, webhook quality, number options (long numbers, toll-free numbers, short codes), support SLAs and uptime transparency. If you want omnichannel and smart fallback, that is a plus.
Is there a free SMS API for developers and rate limits I should know?
Yes. Free options are for testing only. Production sends follow your plan and local rules. Rate limits protect the platform. We can raise limits for valid load tests.
Can I use your SMS sender API for transactional alerts and marketing?
Yes. You can send OTPs, alerts, reminders and campaigns. Marketing sends must follow opt-in rules.
Do you provide an SMS gateway service with deliverability analytics and short-link tracking?
Yes. You can view delivery, clicks and response patterns to improve your message strategy.
How can I send free SMS to mobile without registration?
We do not support anonymous sending. Create an account, verify your phone number, and use the free sign-up credits in the web app to send a few messages to your own number. These are real deliveries, not mock sends. To message other numbers or use the API, add a small balance or a plan and complete any required compliance steps.

see coverage directory