// Primary
https://smtpapi.vocotext.com/isms_send_all_id.php
// Mirror 2
https://smtpapi2.vocotext.com/isms_send_all_id.php
// Mirror 3 (fallback)
https://www.isms.com.my/isms_send_all_id.php<?php
$apiUrl = 'https://smtpapi.vocotext.com/isms_send_all_id.php';
$params = [
'un' => 'your_username', // iSMS account username
'pwd' => 'your_password', // iSMS account password
'dstno' => '601X-XXXXXXX', // Recipient — full international format
'msg' => 'Hello from iSMS!', // Message body (URL-encoded auto by http_build_query)
'type' => '1', // 1 = ASCII (English/BM), 2 = Unicode (Chinese/Arabic)
'agreedterm' => 'YES', // Must be YES
'sendid' => 'MyBrand', // Optional: Sender ID (max 11 chars, alphanumeric)
];
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$response = curl_exec($ch);
$curlError = curl_error($ch);
curl_close($ch);
if ($curlError) {
echo 'Connection error: ' . $curlError;
} elseif (strpos($response, '2000') !== false) {
// Success — extract transaction ID
$trxId = explode(':', $response)[1] ?? '';
echo 'SMS sent! Transaction ID: ' . trim($trxId);
} else {
echo 'Failed: ' . $response; // e.g. -1004 = Insufficient credits
}; — recommended max 30 numbers per API call for reliability.$recipients = ['601X-XXXXXXX', '601X-XXXXXXX', '601X-XXXXXXX'];
$params['dstno'] = implode(';', $recipients); // Semicolon-separated
$params['msg'] = 'Dear customer, your order is confirmed!';
// ... same cURL setup as above2000 = SUCCESS:1143007207
// 2000 = accepted by Telco SMSC
// 1143007207 = Transaction ID (save for delivery tracking)
-1001 = AUTHENTICATION FAILED
-1003 = IP NOT ALLOWED
-1004 = INSUFFICIENT CREDITS
-1008 = MISSING PARAMETER
-1013 = INVALID TERM AGREEMENT
Register free, get API credentials, and start sending in minutes.