Send SMS with the SDK
Follow these steps to install the SDK, authenticate, and send SMS messages.
Before you start, you need an API username and password. See the Quickstart if you have not created them yet.
1. Install the SDK
<dependency>
<groupId>com.pahappa.systems</groupId>
<artifactId>comms-sdk</artifactId>
<version>1.0.2</version>
</dependency>
pnpm add @pahappalimited/comms-sdk
# or: npm install @pahappalimited/comms-sdk
# or: yarn add @pahappalimited/comms-sdk
cargo add comms_sdk
implementation 'com.pahappa.systems:comms-sdk:1.0.2'
go get github.com/Pahappa-LTD/comms-go-sdk
pip install comms-sdk
dart pub add comms_sdk
# or, for Flutter projects:
flutter pub add comms_sdk
composer require pahappa-limited/comms-sdk
gem install comms_sdk
dotnet add package CommsSdk
Most commands above install the latest release. A version is pinned only where the build tool requires one (Maven and Gradle). For the current version of every SDK, see the SDK Downloads page.
2. Authenticate
import com.pahappa.systems.commssdk.v1.CommsSDK;
String apiUsername = "api_username";
String apiKey = "api_key";
CommsSDK sdk = CommsSDK.authenticate(apiUsername, apiKey);
const { CommsSDK } = require('@pahappalimited/comms-sdk');
const apiUsername = "api_username";
const apiKey = "api_key";
const sdk = CommsSDK.authenticate(apiUsername, apiKey);
use comms_sdk::CommsSDK;
let api_username = "api_username";
let api_key = "api_key";
let sdk = CommsSDK::authenticate(api_username, api_key)?;
import com.pahappa.systems.commssdk.v1.CommsSDK
val apiUsername = "api_username"
val apiKey = "api_key"
val sdk = CommsSDK.authenticate(apiUsername, apiKey)
import v1 "github.com/Pahappa-LTD/comms-go-sdk/v1"
apiUsername := "api_username"
apiKey := "api_key"
sdk := v1.CommsSDK.Authenticate(apiUsername, apiKey)
from comms_sdk import CommsSDK
api_username = "api_username"
api_key = "api_key"
sdk = CommsSDK.authenticate(api_username, api_key)
import 'package:comms_sdk/comms_sdk.dart';
const apiUsername = "api_username";
const apiKey = "api_key";
final sdk = await CommsSDK.authenticate(apiUsername, apiKey);
use PahappaLimited\CommsSDK\v1\CommsSDK;
$apiUsername = "api_username";
$apiKey = "api_key";
$sdk = CommsSDK::authenticate($apiUsername, $apiKey);
require 'comms_sdk'
api_username = "api_username"
api_key = "api_key"
sdk = CommsSDK.authenticate(api_username, api_key)
using Comms;
string apiUsername = "api_username";
string apiKey = "api_key";
var sdk = CommsSDK.Authenticate(apiUsername, apiKey);
The SDK targets the live server by default. If you are using sandbox credentials, switch environments before you authenticate:
| Language | Call |
|---|---|
| Java, Kotlin, JS / TS, Dart | CommsSDK.useSandBox() |
| Rust, PHP | CommsSDK::use_sandbox() |
| Python, Ruby | CommsSDK.use_sandbox() |
| Go | v1.CommsSDK.UseSandBox() |
| C# | CommsSDK.UseSandBox() |
Call useLiveServer / use_live_server to switch back. Sandbox credentials do not work against the live server, and vice versa.
3. Send SMS
There are two ways to send a message, and they take the same arguments:
sendSMSreturns a boolean —trueif the message was accepted,falseif it was not.querySendSMSreturns anApiResponsewith the full result, includingcostandmessageFollowUpCode.
Both accept a single number or a list of numbers, the message text, then an optional sender ID and an optional priority. Numbers must be in international format without a leading + or 00, for example 256700111222. A single request may contain at most 1000 numbers.
import com.pahappa.systems.commssdk.v1.models.ApiResponse;
import com.pahappa.systems.commssdk.v1.models.MessagePriority;
import java.util.List;
// one number
boolean success = sdk.sendSMS("256700111222", "Message to send");
// several numbers
List<String> numbers = List.of("256700111222", "256700333444");
sdk.sendSMS(numbers, "Message to multiple numbers");
// with a custom sender ID
sdk.sendSMS(numbers, "Message to send", "MyCompany");
// with a custom sender ID and priority
sdk.sendSMS(numbers, "Message to send", "MyCompany", MessagePriority.HIGHEST);
// full API response instead of a boolean
ApiResponse smsResponse = sdk.querySendSMS(numbers, "Query send sms message");
System.out.println(smsResponse.status);
const { MessagePriority } = require('@pahappalimited/comms-sdk');
// one number
await sdk.sendSMS("256700111222", "Message to send");
// several numbers
const numbers = ["256700111222", "256700333444"];
await sdk.sendSMS(numbers, "Message to multiple numbers");
// with a custom sender ID
await sdk.sendSMS(numbers, "Message to send", "MyCompany");
// with a custom sender ID and priority
await sdk.sendSMS(numbers, "Message to send", "MyCompany", MessagePriority.HIGHEST);
// full API response instead of a boolean
const smsResponse = await sdk.querySendSMS(numbers, "Query send sms message");
console.log(smsResponse.status);
use comms_sdk::MessagePriority;
// one number
sdk.send_sms("256700111222", "Message to send").unwrap();
// several numbers
let numbers = vec!["256700111222", "256700333444"];
sdk.send_sms(numbers.clone(), "Message to multiple numbers").unwrap();
// with a custom sender ID
sdk.send_sms_full(numbers.clone(), "Message to send", Some("MyCompany"), None).unwrap();
// with a custom sender ID and priority
sdk.send_sms_full(numbers.clone(), "Message to send", Some("MyCompany"), Some(MessagePriority::Highest)).unwrap();
// full API response instead of a boolean
let sms_response = sdk.query_send_sms(numbers, "Query send sms message").unwrap();
println!("{:?}", sms_response.status);
import com.pahappa.systems.commssdk.v1.models.MessagePriority
// one number
sdk.sendSMS("256700111222", "Message to send")
// several numbers
val numbers = listOf("256700111222", "256700333444")
sdk.sendSMS(numbers, "Message to multiple numbers")
// with a custom sender ID
sdk.sendSMS(numbers, "Message to send", "MyCompany")
// with a custom sender ID and priority
sdk.sendSMS(numbers, "Message to send", "MyCompany", MessagePriority.HIGHEST)
// full API response instead of a boolean
val smsResponse = sdk.querySendSMS(numbers, "Query send sms message")
println(smsResponse.status)
import "github.com/Pahappa-LTD/comms-go-sdk/v1/models"
// one number
sdk.SendSMS([]string{"256700111222"}, "Message to send")
// several numbers
numbers := []string{"256700111222", "256700333444"}
sdk.SendSMS(numbers, "Message to multiple numbers")
// with a custom sender ID (and the default priority)
sdk.SendSMSWithOptions(numbers, "Message to send", "MyCompany", models.MessagePriority.High)
// with a custom sender ID and priority
sdk.SendSMSWithOptions(numbers, "Message to send", "MyCompany", models.MessagePriority.Highest)
// full API response instead of a boolean
smsResponse, _ := sdk.QuerySendSMS(numbers, "Query send sms message")
fmt.Println(smsResponse.Status)
from comms_sdk import MessagePriority
# one number
sdk.send_sms("256700111222", "Message to send")
# several numbers
numbers = ["256700111222", "256700333444"]
sdk.send_sms(numbers, "Message to multiple numbers")
# with a custom sender ID
sdk.send_sms(numbers, "Message to send", sender_id="MyCompany")
# with a custom sender ID and priority
sdk.send_sms(numbers, "Message to send", sender_id="MyCompany", priority=MessagePriority.HIGHEST)
# full API response instead of a boolean
sms_response = sdk.query_send_sms(numbers, "Query send sms message")
print(sms_response.status)
// one number
await sdk.sendSMS("256700111222", "Message to send");
// several numbers
final numbers = ["256700111222", "256700333444"];
await sdk.sendSMS(numbers, "Message to multiple numbers");
// with a custom sender ID
await sdk.sendSMS(numbers, "Message to send", senderID: "MyCompany");
// with a custom sender ID and priority
await sdk.sendSMS(numbers, "Message to send", senderID: "MyCompany", priority: MessagePriority.Highest);
// full API response instead of a boolean
final smsResponse = await sdk.querySendSMS(numbers, "Query send sms message");
print(smsResponse.status);
use PahappaLimited\CommsSDK\v1\models\MessagePriority;
// one number
$sdk->sendSMS("256700111222", "Message to send");
// several numbers
$numbers = ["256700111222", "256700333444"];
$sdk->sendSMS($numbers, "Message to multiple numbers");
// with a custom sender ID
$sdk->sendSMS($numbers, "Message to send", "MyCompany");
// with a custom sender ID and priority
$sdk->sendSMS($numbers, "Message to send", "MyCompany", MessagePriority::HIGHEST);
// full API response instead of a boolean
$smsResponse = $sdk->querySendSMS($numbers, "Query send sms message");
echo $smsResponse->status;
# one number
sdk.send_sms("256700111222", "Message to send")
# several numbers
numbers = ["256700111222", "256700333444"]
sdk.send_sms(numbers, "Message to multiple numbers")
# with a custom sender ID
sdk.send_sms(numbers, "Message to send", sender_id: "MyCompany")
# with a custom sender ID and priority
sdk.send_sms(numbers, "Message to send", sender_id: "MyCompany", priority: :highest)
# full API response instead of a boolean
sms_response = sdk.query_send_sms(numbers, "Query send sms message")
puts sms_response.status
using Comms.Models;
// one number
sdk.SendSMS("256700111222", "Message to send");
// several numbers
var numbers = new List<string> { "256700111222", "256700333444" };
sdk.SendSMS(numbers, "Message to multiple numbers");
// with a custom sender ID
sdk.SendSMS(numbers, "Message to send", "MyCompany");
// with a custom sender ID and priority
sdk.SendSMS(numbers, "Message to send", "MyCompany", MessagePriority.Highest);
// full API response instead of a boolean
var smsResponse = sdk.QuerySendSMS(numbers, "Query send sms message");
Console.WriteLine(smsResponse.Status);
For query-based methods, the returned object is of type ApiResponse. See ApiResponse.
Next steps
- API Reference — the underlying JSON request and response.
- SDK & Model Reference — every function, enum, and model.
- Error Handling — what to do when a send fails.