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.
*No credit card required
+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.
Notification SMS
Send instant SMS notifications for order confirmations, transactions, reminders and activity
Appointment Reminders
Remind your customers of their appointments to reduce no-shows. Integrate with your CRM or Calendar
SMS Marketing & Newsletters
Effortlessly send bulk SMS to a global audience, reaching a multitude of recipients worldwide in no time
Surveys & Feedback Requests
Quickly connect with your customers using our 2-way SMS connectivity for swift and interactive communication
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
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 ' \
--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"
}'
'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 ',
'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 ',
'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 "
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 ',
'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 ")
.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 ")
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))
}
GET API KEY →
- 1 Sign up and copy your API key.
- 2 Paste the code sample.
- 3 Send your first SMS and watch the DLR webhook fire.
Working in a CMS or backend framework? Get the SDKs.
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.
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.
What Our Users Say
Here’s what customers say about using the SMS API and platform features.Seamless Integrations
With Your Favorite Tools
SMS integrations for your preferred platform
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.
FAQs
callback_url to observe delivery receipts before you go live.