Powerful Omni-Channel Communications

SMS.to offers a smarter way for businesses to communicate with customers through multiple channels.
Reach customers in their preferred channel through SMS, WhatsApp or Viber Messages.
Integrate SMS.to rich messaging in your workflow with our OmniMessaging & SMS API Gateway.

GET STARTED

Free Trial - No Credit Card Required

Cost Calculator

Fill details below to calculate your
SMS campaign cost


${{costPerSMS}} price per sms

High volume?

Contact Us →

Simply Pay As You Go

No contracts, no commitments, pay only for
what you use.
Additional discounts for high volume SMS API usage.


BUY SMS CREDITS →

Trusted by businesses worldwide

Privacy & Regulatory Compliance

We will help you stay compliant to different privacy laws and regulations like GDPR with our built in features.

ShortLink Tracking

Gather meaningful analytics and activity metrics by tracking clicks on your links.

Global Delivery

Improve Delivery rates by relying on our direct connections with global carriers for time sensitive delivery.

Security & Transparency

We invest in Security & Certifications and we are big believers in Transparency providing detailed reporting about any service you buy from us.

Personalisation & Dynamic Fields

Our Powerful Message Editor offers up to 5 dynamic fields to personalise and engage your audience, send meaningful custom reminders and more.

Fair Price Promise

If you get a lower price elsewhere for an apple to apple comparison in features and service we will try to match it so that you never pay more than you should.

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. *


GET API KEY →
*some of features are still in development. Please refer to our API documentation for more info
curl -L -X POST "https://api.sms.to/sms/send" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY_OR_ACCESS_TOKEN>" \
-d "{
		\"message\": \"This is a test message\",
		\"to\": \"+355692179931\",
		\"sender_id\": \"SMS.to\",
		\"callback_url\": \"https://sms.to/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 =>"{\n    \"message\": \"This is a test message\",\n    \"to\": \"+355692179931\",\n    \"sender_id\": \"SMS.to\",\n    \"callback_url\": \"https://sms.to/callback/handler\"\n}",
	CURLOPT_HTTPHEADER => array(
			"Content-Type: application/json",
			"Accept: application/json",
			"Authorization: Bearer <YOUR_API_KEY_OR_ACCESS_TOKEN>"
		),
));

$response = curl_exec($curl);

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

var options = {
	'method': 'POST',
	'hostname': 'https://api.sms.to',
	'path': '/sms/send',
	'headers': {
		'Content-Type': 'application/json',
		'Authorization': 'Bearer <YOUR_API_KEY_OR_ACCESS_TOKEN>'
	},
	'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 =  "{\n    \"message\": \"This is a test message\",\n    \"to\": \"+355692179931\",\n    \"sender_id\": \"SMS.to\",\n    \"callback_url\": \"https://sms.to/callback/handler\"\n}";

req.write(postData);

req.end();
require "uri"
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["Content-Type"] = "application/json"
request["Authorization"] = "Bearer <YOUR_API_KEY_OR_ACCESS_TOKEN>"
request.body = "{\n    \"message\": \"This is a test message\",\n    \"to\": \"+355692179931\",\n    \"sender_id\": \"SMS.to\",\n    \"callback_url\": \"https://sms.to/callback/handler\"\n}"

response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("https://api.sms.to")
payload = "{\n    \"message\": \"This is a test message\",\n    \"to\": \"+355692179931\",\n    \"sender_id\": \"SMS.to\",\n    \"callback_url\": \"https://sms.to/callback/handler\"\n}"
headers = {
	'Content-Type': 'application/json',
	'Authorization': 'Bearer <YOUR_API_KEY_OR_ACCESS_TOKEN>'
}
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, "{\n    \"message\": \"This is a test message\",\n    \"to\": \"+355692179931\",\n    \"sender_id\": \"SMS.to\",\n    \"callback_url\": \"https://sms.to/callback/handler\"\n}");
Request request = new Request.Builder()
	.url("https://api.sms.to/sms/send")
	.method("POST", body)
	.addHeader("Content-Type", "application/json")
	.addHeader("Authorization", "Bearer <YOUR_API_KEY_OR_ACCESS_TOKEN>")
	.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("{\n    \"message\": \"This is a test message\",\n    \"to\": \"+355692179931\",\n    \"sender_id\": \"SMS.to\",\n    \"callback_url\": \"https://sms.to/callback/handler\"\n}")

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

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

	res, err := client.Do(req)
	defer res.Body.Close()
	body, err := ioutil.ReadAll(res.Body)

	fmt.Println(string(body))
}
Secure Payments