POST https://sms.iprogtech.com/api/v1/sms_messages?api_token=1231asd1&message=Test+Message&phone_number=639109432834
Content-Type: application/json
{
"api_token": "1231asd1",
"phone_number": "09345678942",
"message": "Hello, this is a test message."
}
Response
{
"status": 200,
"message": "Your SMS message has been successfully added to the queue and will be processed shortly.",
"message_id": "iSms-XHYBk"
}
Send Bulk SMS
Endpoint: POST https://sms.iprogtech.com/api/v1/sms_messages/send_bulk?api_token=1231asd1&message=Test+Message&phone_number=639109432834%2C639109532543
POST https://sms.iprogtech.com/api/v1/sms_messages/send_bulk?api_token=1231asd1&message=Test+Message&phone_number=639109432834%2C639109532543
Content-Type: application/json
{
"api_token": "1231asd1",
"phone_number": "09345678942,09345678923",
"message": "Hello, this is a test message."
}
Response
{
"status": 200,
"message": "Your bulk SMS messages have been successfully added to the queue and will be processed shortly.",
"message_ids": "iSms-rQZvhq,iSms-tZrk96"
}
Check SMS Status
Endpoint: GET https://sms.iprogtech.com/api/v1/sms_messages/status?api_token=1231asd1&message_id=iSms-XHYBk0
api_token (string, required) - Your API TOKEN
message_id (string, required) - SMS message id
Example Request
GET https://sms.iprogtech.com/api/v1/sms_messages/status?api_token=1231asd1&message_id=iSms-XHYBk0
Content-Type: application/json
{
"api_token": "1231asd1",
"message_id": "iSms-XHYBk0"
}
Response
{
"status": 200,
"message_status": "pending"
}
Check Unified Credits
Endpoint: GET https://sms.iprogtech.com/api/v1/account/sms_credits?api_token=1231asd1
api_token (string, required) - Your API TOKEN
Example Request
GET https://sms.iprogtech.com/api/v1/account/sms_credits?api_token=1231asd1
Content-Type: application/json
{
"api_token": "1231asd1"
}
{
"status": 200,
"message": "Your bulk SMS messages for group code GRP-124 have been queued and will be processed shortly."
}
Message Reminders
Create Message Reminder
Endpoint: POST https://sms.iprogtech.com/api/v1/message-reminders?api_token=1231asd1&message=Internet+Bill.&phone_number=09171251234&scheduled_at=2025-03-08+05%3A00AM
{
"status": "success",
"message": "Message reminder successfully scheduled on March 08, 2025, at 05:00 AM and will be sent to 09171251234.",
"data": {
"id": 1,
"phone_number": "09171251234",
"message": "Internet Bill.",
"scheduled_at": "2025-03-08T05:00:00.000+08:00",
"status": "scheduled",
"created_at": "2025-03-07T16:11:38.937+08:00",
"updated_at": "2025-03-07T16:11:38.937+08:00"
}
}
Get Message Reminder
Endpoint: GET https://sms.iprogtech.com/api/v1/message-reminders/1?api_token=1231asd1
GET https://sms.iprogtech.com/api/v1/message-reminders/1?api_token=1231asd1
Endpoint: POST https://sms.iprogtech.com/api/v1/otp/send_otp
POST https://sms.iprogtech.com/api/v1/otp/send_otp
Content-Type: application/json
{
"api_token": "1231asd1",
"phone_number": "09171251234",
"message": "" (optional)
// default message: Your OTP code is :otp. It is valid for 5 minutes. Do not share this code with anyone.
// For a custom message, add the :otp variable. It will be replaced with the actual OTP on the backend.
}
Response
{
"status": "success",
"message": "OTP sent successfully",
"data": {
"otp_code": "978895",
"otp_code_expires_at": "2025-03-09T20:04:45.176+08:00",
"otp_code_confirmed": false,
"phone_number": "09171074697",
"message": "Your OTP code is 978895. It is valid for 5 minutes. Do not share this code with anyone."
}
}
Verify OTP
Endpoint: POST https://sms.iprogtech.com/api/v1/otp/verify_otp
#include <iostream>
#include <curl/curl.h>
int main() {
// Initialize global libcurl state
curl_global_init(CURL_GLOBAL_DEFAULT);
CURL *curl = curl_easy_init();
if (curl) {
// Set the URL without the query parameters
curl_easy_setopt(curl, CURLOPT_URL, "https://sms.iprogtech.com/api/v1/sms_messages");
// Specify that this is a POST request
curl_easy_setopt(curl, CURLOPT_POST, 1L);
// Set the POST fields (ensure they are URL-encoded if needed)
const char* postFields = "api_token=123456&message=Test+Message&phone_number=09171254124";
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postFields);
// Optional: enable verbose mode to see details of the request for debugging
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
// Perform the request, and capture any errors
CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK) {
std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << "\n";
}
// Clean up the CURL handle
curl_easy_cleanup(curl);
}
// Clean up global libcurl state
curl_global_cleanup();
return 0;
}