Send SMS
curl --request POST \
--url https://api.gliiv.com/v1/api/messages/send \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"phoneNumbers": [
"<string>"
],
"message": "<string>",
"senderId": "<string>"
}
'import requests
url = "https://api.gliiv.com/v1/api/messages/send"
payload = {
"phoneNumbers": ["<string>"],
"message": "<string>",
"senderId": "<string>"
}
headers = {
"X-API-Key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({phoneNumbers: ['<string>'], message: '<string>', senderId: '<string>'})
};
fetch('https://api.gliiv.com/v1/api/messages/send', 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.gliiv.com/v1/api/messages/send",
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([
'phoneNumbers' => [
'<string>'
],
'message' => '<string>',
'senderId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <x-api-key>"
],
]);
$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.gliiv.com/v1/api/messages/send"
payload := strings.NewReader("{\n \"phoneNumbers\": [\n \"<string>\"\n ],\n \"message\": \"<string>\",\n \"senderId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<x-api-key>")
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.gliiv.com/v1/api/messages/send")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phoneNumbers\": [\n \"<string>\"\n ],\n \"message\": \"<string>\",\n \"senderId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gliiv.com/v1/api/messages/send")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phoneNumbers\": [\n \"<string>\"\n ],\n \"message\": \"<string>\",\n \"senderId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Messages are being sent",
"status": 200
}
{
"message": "Invalid input provided",
"validationErrors": {
"phoneNumbers": "<string>",
"message": "<string>",
"senderId": "<string>"
},
"status": 400
}
{
"message": "Authentication required",
"status": 401
}
{
"message": "Sender not found",
"status": 404
}
{
"message": "Internal server error",
"status": 500
}
Messages
Send SMS
Send high-priority single or bulk messages via the Gliiv gateway.
POST
/
v1
/
api
/
messages
/
send
Send SMS
curl --request POST \
--url https://api.gliiv.com/v1/api/messages/send \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"phoneNumbers": [
"<string>"
],
"message": "<string>",
"senderId": "<string>"
}
'import requests
url = "https://api.gliiv.com/v1/api/messages/send"
payload = {
"phoneNumbers": ["<string>"],
"message": "<string>",
"senderId": "<string>"
}
headers = {
"X-API-Key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({phoneNumbers: ['<string>'], message: '<string>', senderId: '<string>'})
};
fetch('https://api.gliiv.com/v1/api/messages/send', 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.gliiv.com/v1/api/messages/send",
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([
'phoneNumbers' => [
'<string>'
],
'message' => '<string>',
'senderId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <x-api-key>"
],
]);
$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.gliiv.com/v1/api/messages/send"
payload := strings.NewReader("{\n \"phoneNumbers\": [\n \"<string>\"\n ],\n \"message\": \"<string>\",\n \"senderId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<x-api-key>")
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.gliiv.com/v1/api/messages/send")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phoneNumbers\": [\n \"<string>\"\n ],\n \"message\": \"<string>\",\n \"senderId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gliiv.com/v1/api/messages/send")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phoneNumbers\": [\n \"<string>\"\n ],\n \"message\": \"<string>\",\n \"senderId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Messages are being sent",
"status": 200
}
{
"message": "Invalid input provided",
"validationErrors": {
"phoneNumbers": "<string>",
"message": "<string>",
"senderId": "<string>"
},
"status": 400
}
{
"message": "Authentication required",
"status": 401
}
{
"message": "Sender not found",
"status": 404
}
{
"message": "Internal server error",
"status": 500
}
The
/send endpoint allows you to programmatically dispatch messages to your recipients. All requests are processed through our high-speed gateway to ensure rapid delivery.
Requirement: Before using this endpoint, you must have at least one Sender identity assigned to your account.
Headers
Your secret API key used to authenticate the request.
Body Parameters
An array of recipient phone numbers.
- Supported Formats:
+250...,250...,07..., or7... - Limit: Maximum of 20 numbers per individual API request.
The text content of your SMS.
- Billing: Charged in 160-character segments.
- Maximum: 800 characters total.
The unique ID of your authorized Sender. Retrieve this from the List All Senders endpoint.
Response Body
A descriptive message detailing the outcome of the request.
The HTTP status code associated with the response.
{
"message": "Messages are being sent",
"status": 200
}
{
"message": "Invalid input provided",
"validationErrors": {
"phoneNumbers": "<string>",
"message": "<string>",
"senderId": "<string>"
},
"status": 400
}
{
"message": "Authentication required",
"status": 401
}
{
"message": "Sender not found",
"status": 404
}
{
"message": "Internal server error",
"status": 500
}
⌘I