cURL
curl --request POST \
--url https://api.contiguity.com/send/text \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"to": "+1234567890"
}
'import requests
url = "https://api.contiguity.com/send/text"
payload = { "to": "+1234567890" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({to: '+1234567890'})
};
fetch('https://api.contiguity.com/send/text', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.contiguity.com/send/text",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'to' => '+1234567890'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.contiguity.com/send/text"
payload := strings.NewReader("{\n \"to\": \"+1234567890\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.contiguity.com/send/text")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"to\": \"+1234567890\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.contiguity.com/send/text")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"to\": \"+1234567890\"\n}"
response = http.request(request)
puts response.read_body{
"id": "req_xxxxxxxxxxxxxxxx",
"timestamp": 1772129047728,
"api_version": "v2026.2.26",
"object": "response",
"data": {
"message_id": "text_1234567890"
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1772129047728,
"api_version": "v2026.2.26",
"object": "error",
"data": {
"error": "Bad Request",
"status": 400
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1772129047728,
"api_version": "v2026.2.26",
"object": "error",
"data": {
"error": "Unauthorized",
"status": 401
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1772129047728,
"api_version": "v2026.2.26",
"object": "error",
"data": {
"error": "Forbidden",
"status": 403
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1772129047728,
"api_version": "v2026.2.26",
"object": "error",
"data": {
"error": "Internal Server Error",
"status": 500
}
}Text
Send a Text
POST
/
text
cURL
curl --request POST \
--url https://api.contiguity.com/send/text \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"to": "+1234567890"
}
'import requests
url = "https://api.contiguity.com/send/text"
payload = { "to": "+1234567890" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({to: '+1234567890'})
};
fetch('https://api.contiguity.com/send/text', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.contiguity.com/send/text",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'to' => '+1234567890'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.contiguity.com/send/text"
payload := strings.NewReader("{\n \"to\": \"+1234567890\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.contiguity.com/send/text")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"to\": \"+1234567890\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.contiguity.com/send/text")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"to\": \"+1234567890\"\n}"
response = http.request(request)
puts response.read_body{
"id": "req_xxxxxxxxxxxxxxxx",
"timestamp": 1772129047728,
"api_version": "v2026.2.26",
"object": "response",
"data": {
"message_id": "text_1234567890"
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1772129047728,
"api_version": "v2026.2.26",
"object": "error",
"data": {
"error": "Bad Request",
"status": 400
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1772129047728,
"api_version": "v2026.2.26",
"object": "error",
"data": {
"error": "Unauthorized",
"status": 401
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1772129047728,
"api_version": "v2026.2.26",
"object": "error",
"data": {
"error": "Forbidden",
"status": 403
}
}{
"id": "err_xxxxxxxxxxxxxxxx",
"timestamp": 1772129047728,
"api_version": "v2026.2.26",
"object": "error",
"data": {
"error": "Internal Server Error",
"status": 500
}
}Phone numbers must be in E.164 format with country codes. The API will attempt to convert other formats like NANP, but will throw an error if conversion fails.

Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Recipient's phone number. Must be in E.164 format
Example:
"+1234567890"
If you lease a phone number from Contiguity, you can use a specific one by providing it here.
Example:
"+15555555555"
Message to send. Required unless attachments are provided.
Example:
"Hello, world!"
Attachments to send. Must be HTTPS-secured URLs with file extensions. Max 3 attachments, 5MB cumulative size.
Maximum array length:
3Example:
["https://example.com/image.png"]
Fast-track your request (bypassing any recommended rate limiting). Only available on leased numbers. Requires acceptance of the Fast Track Terms.
Was this page helpful?
⌘I