Get started
API Endpoint:
https://swiftsms.macroit.org/api/send_message
Body Format: Raw
{
"sender_id": "MACRO-IT",
"numbers": "0973750029,0769891754",
"message": "Good afternoon"
}
Bulk SMS APIs are programming interfaces that allow developers to integrate bulk SMS functionality into their applications or systems. These APIs provide a set of methods and protocols that enable the sending and receiving of SMS messages in large quantities.
To use this in real world, you need a Bearer Token and a Sender Id. Please create an account with
us and make your token and sender Id in the developers dashboard.
Send WhatsApp Template Message
API Endpoint:
https://swiftsms.macroit.org/api/send_whatsapp_message
Method: POST
Auth: Bearer Token (Sanctum)
Content-Type: application/json
# If the template has no parameters, send:
{
"template_name": "opening_our_business_time",
"language_code": "en_US",
"recipients": ["260973750029"]
}
# If the template has parameters, send:
{
"template_name": "order_update",
"language_code": "en_US",
"recipients": ["260971234567", "260977000111"],
"template_params": [
{ "param_name": "customer_name", "param_value": "John" },
{ "param_name": "order_number", "param_value": "A1023" }
]
}
Each company must first register its WhatsApp phone number under
WhatsApp → Register Phone Number in the dashboard.
Messages are sent using that company's own Meta WhatsApp configuration.
This endpoint sends Meta-approved WhatsApp templates using your account configuration.
The template_name must exist under your account and be in APPROVED status.
Testing note: recipient phone numbers used for API testing must be submitted in the WhatsApp dashboard under
Testing Numbers and approved by our admin team before they can be used.
Example templates available for all users (free for testing):
opening_our_business_time and system_maintenance.
These shared templates do not require WhatsApp credits.
# cURL example for WhatsApp
curl --location --request POST 'https://swiftsms.macroit.org/api/send_whatsapp_message' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--data-raw '{
"template_name": "system_maintenance",
"language_code": "en_US",
"recipients": ["260973750029"]
}'
REQUEST FIELDS
| Field |
Type |
Required |
Description |
| template_name |
String |
Yes |
Name of an approved WhatsApp template in your account (e.g opening_our_business_time or system_maintenance). |
| language_code |
String |
No |
Template language code. Defaults to the template language (or en_US). |
| recipients |
Array of Strings |
Yes |
Recipient numbers in international format (without +) and already approved as testing numbers. |
| template_params |
Array |
No |
Template placeholders. Required if your template has variables. |
get characters
# Here is a curl example
curl --location --request GET 'https://swiftsms.macroit.org/api/send_message' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer PWoKyVBMIRh8wfQR2eCw8TOZ2MNmzCd7h9ikOSX2' \
--data-raw '{
"sender_id": "MACRO-IT",
"numbers": "00973750029,00769891754",
"message": "Good afternoon"
}
'
QUERY PARAMETERS
| Field |
Type |
Description |
Method |
| Authorization |
String |
Your Bearer token. |
GET |
| Content-Type |
String |
application/json |
|
| Accept |
String |
application/json |
|
get characters
# Here is a c-sharp-restC# example
var client = new RestClient("https://swiftsms.macroit.org/api/send_message");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Accept", "application/json");
request.AddHeader("Authorization", "Bearer PWoKyVBMIRh8wfQR2eCw8TOZ2MNmzCd7h9ikOSX2");
var body = @"{
" + "\n" +
@" ""sender_id"": ""MACRO-IT"",
" + "\n" +
@" ""numbers"": ""0973750029,0769891754"",
" + "\n" +
@" ""message"": ""Good afternoon""
" + "\n" +
@"}
" + "\n" +
@"";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
QUERY PARAMETERS
| Field |
Type |
Description |
| Authorization |
String |
Your Bearer token. |
| Content-Type |
String |
application/json |
|
| Accept |
String |
application/json |
|
get characters
# Here is a JAVA Http example
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"sender_id\": \"MACRO-IT\",\r\n \"numbers\": \"00973750029,00769891754\",\r\n \"message\": \"Good afternoon\"\r\n}\r\n");
Request request = new Request.Builder()
.url("https://swiftsms.macroit.org/api/send_message")
.method("GET", body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("Authorization", "Bearer PWoKyVBMIRh8wfQR2eCw8TOZ2MNmzCd7h9ikOSX2")
.build();
Response response = client.newCall(request).execute();
QUERY PARAMETERS
| Field |
Type |
Description |
| Authorization |
String |
Your Bearer token. |
| Content-Type |
String |
application/json |
|
| Accept |
String |
application/json |
|
get characters
# Here is a Js example
// WARNING: For GET requests, body is set to null by browsers.
var data = JSON.stringify({
"sender_id": "MACRO-IT",
"numbers": "00973750029,00769891754",
"message": "Good afternoon"
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://swiftsms.macroit.org/api/send_message");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Authorization", "Bearer PWoKyVBMIRh8wfQR2eCw8TOZ2MNmzCd7h9ikOSX2");
xhr.send(data);
QUERY PARAMETERS
| Field |
Type |
Description |
| Authorization |
String |
Your Bearer token. |
| Content-Type |
String |
application/json |
|
| Accept |
String |
application/json |
|
get characters
# Here is the OBJECTIVE-C Example
#import
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://swiftsms.macroit.org/api/send_message"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
NSDictionary *headers = @{
@"Content-Type": @"application/json",
@"Accept": @"application/json",
@"Authorization": @"Bearer PWoKyVBMIRh8wfQR2eCw8TOZ2MNmzCd7h9ikOSX2"
};
[request setAllHTTPHeaderFields:headers];
NSData *postData = [[NSData alloc] initWithData:[@"{\r\n \"sender_id\": \"MACRO-IT\",\r\n \"numbers\": \"00973750029,00769891754\",\r\n \"message\": \"Good afternoon\"\r\n}\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:postData];
[request setHTTPMethod:@"GET"];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
dispatch_semaphore_signal(sema);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSError *parseError = nil;
NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];
NSLog(@"%@",responseDictionary);
dispatch_semaphore_signal(sema);
}
}];
[dataTask resume];
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
| Field |
Type |
Description |
| Authorization |
String |
Your Bearer token. |
| Content-Type |
String |
application/json |
|
| Accept |
String |
application/json |
|
get characters
# Here is a PHP cURL example
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://swiftsms.macroit.org/api/send_message',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_POSTFIELDS =>'{
"sender_id": "MACRO-IT",
"numbers": "0973750029,0769891754",
"message": "Good afternoon"
}
',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Bearer PWoKyVBMIRh8wfQR2eCw8TOZ2MNmzCd7h9ikOSX2'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
QUERY PARAMETERS
| Field |
Type |
Description |
| Authorization |
String |
Your Bearer token. |
| Content-Type |
String |
application/json |
|
| Accept |
String |
application/json |
|
get characters
# Here is a PYTHON Http example
import http.client
import json
conn = http.client.HTTPSConnection("swift-sms.net", )
payload = json.dumps({
"sender_id": "MACRO-IT",
"numbers": "00973750029,00769891754",
"message": "Good afternoon"
})
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer PWoKyVBMIRh8wfQR2eCw8TOZ2MNmzCd7h9ikOSX2'
}
conn.request("GET", "/api/send_message", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
QUERY PARAMETERS
| Field |
Type |
Description |
| Authorization |
String |
Your Bearer token. |
| Content-Type |
String |
application/json |
|
| Accept |
String |
application/json |
|
get characters
# Here is a RUBY example
require "uri"
require "json"
require "net/http"
url = URI("https://swiftsms.macroit.org/api/send_message")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Content-Type"] = "application/json"
request["Accept"] = "application/json"
request["Authorization"] = "Bearer PWoKyVBMIRh8wfQR2eCw8TOZ2MNmzCd7h9ikOSX2"
request.body = JSON.dump({
"sender_id": "MACRO-IT",
"numbers": "0973750029,0769891754",
"message": "Good afternoon"
})
response = http.request(request)
puts response.read_body
QUERY PARAMETERS
| Field |
Type |
Description |
| Authorization |
String |
Your Bearer token. |
| Content-Type |
String |
application/json |
|
| Accept |
String |
application/json |
|
Success
The SWIFT-SMS API uses the following success status codes:
| Status Code |
Meaning |
| 202 |
Accepted. Request Accepted For Delivery
|
Errors
The SWIFT-SMS API uses the following error codes:
| Error Code |
Meaning |
| 401 |
Unauthenticated
|
| 422 |
Unprocessable entity
|
| 500 |
INTERNAL_PROCESSING_ERROR
|