Efficient SMS Gateway

SMS Gateway Services in Canada

With SMS.to’s Gateway API, you can easily send SMS messages to customers in Canada and around the world. Our API is quick to set up, cost-effective, and offers a range of features that help to streamline your communication needs.

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 single hero

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

SMS Gateway Features In Canada

One Time Passwords

Fortify your app’s security by integrating One Time Passwords (OTPs), a valuable addition for banking, financial, healthcare, and high-security websites

Notification SMS

Deliver immediate SMS alerts for order confirmations, transactions, reminders, and user activity
SMS API Tabs Notifications

Appointment Reminders

Ensure your customers never miss their appointments by sending reminders, seamlessly integrated with your CRM or calendar system
SMS API Tabs Reminders

SMS Marketing & Newsletters

Send bulk SMS with ease to a diverse global audience, connecting with recipients worldwide in an instant
SMS API Tabs Marketing

Surveys & Feedback Requests


Quickly engage with your customers through our two-way SMS connectivity, enabling fast and interactive communication.
SMS API Tabs Surveys and Feedback Requests

Why SMS.to SMS Gateway​

Experience effortless communication solutions by leveraging our SMS Notification API to elevate your sms marketing

Developer-friendly

Our SMS Gateway is designed with developers in mind. Choose your programming language and start building with our adaptable SMS APIs.

Instant Notifications

The SMS.to Gateway is perfectly equipped to manage instant notifications, be it for OTP, 2FA, or general alerts.

Redundant & Scalable

We offer a robust, reliable service. Our Gateway is built to handle traffic redundancy, ensuring that no message is lost in the process, regardless of the volume.

Easy to start

Join the SMS.to community for free. Get your API key and you'll be ready to take full advantage of our SMS Gateway in less than 5 minutes.

SMS Cost In Canada

Looking for cost-effective and flexible SMS bulk services in Canada? Explore bulk purchase discounts by contacting sales. Our team is ready to assist in finding the ideal solution for your company.

Cost Calculator

Fill in the details below to calculate your
SMS campaign cost

SMS TO

estimated cost

$

0.023

price per sms

SMS Gateway Services In Canada

Businesses use SMS.to to send SMS gateway traffic to Canada for many purposes: one-time passwords for sign-up and login, order and payment alerts, appointment reminders, customer support replies and promotional campaigns. One account covers all of them, and you can send from the web app or through the API.

Before you launch, our team confirms the sender ID options for Canada. Some networks accept alphanumeric sender names, others require numeric senders or pre-registration, and the rules change over time, so we check them for your use case. We also advise on content, opt-in and opt-out requirements so your messages are delivered and compliant.

Prices for Canada are listed per message on our SMS pricing page, with discounts for high volume. For verification flows, our Verify API can fall back from SMS to WhatsApp, Viber or Telegram when a message is delayed.

easy SETUP!

SMS API For Developers

Developers can connect to SMS.to in minutes: create a free account, get your API key and send your first message to Canada with a single REST call. Use webhooks for delivery reports and inbound replies, and choose from ready-made code samples in seven languages or our integrations for Shopify, HubSpot, Salesforce and Zapier.

				
					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))
}
				
			

Seamless Integrations
With Your Favorite Tools​

SMS integrations for your preferred platform

seamless integration mobile

Sign-Up for a Free Trial

Get free Call & SMS credits on Sign-Up

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

see coverage directory