Dokumentasi resmi integrasi API pengiriman SMS (Plain & OTP), Cek Kredit, dan Delivery Report untuk pengembang aplikasi.
Endpoint ini digunakan untuk mengirimkan pesan SMS regular maupun OTP ke nomor tujuan single secara langsung.
| Parameter | Tipe | Status | Deskripsi |
|---|---|---|---|
| user | String | Wajib | Username akun NusaSMS Anda (contoh: simulator_api). |
| password | String | Wajib | Password akun NusaSMS Anda. |
| GSM | String | Wajib | Nomor penerima dalam format internasional tanpa tanda + (contoh: 6285100803380). |
| SMSText | String | Wajib | Isi pesan SMS. Pastikan di-encode URL jika dikirim via GET HTTP (contoh: Kode+OTP+1234). |
| otp | String | Opsional | Gunakan Y untuk prioritas rute OTP tinggi, atau N untuk SMS umum. Default: N. |
| output | String | Opsional | Format balasan yang diinginkan: json atau xml. Default: xml. Disarankan menggunakan json. |
Pilih bahasa pemograman di bawah ini untuk melihat contoh implementasi pengiriman SMS:
# Contoh Pengiriman SMS via cURL GET
curl -X GET "https://api.nusasms.com/api/v3/sendsms/plain?user=YOUR_USER&password=YOUR_PASSWORD&GSM=6285100803380&SMSText=Coba+Kirim+Pesan+via+NusaSMS&otp=Y&output=json"
<?php
$params = [
'user' => 'YOUR_USERNAME',
'password' => 'YOUR_PASSWORD',
'GSM' => '6285100803380',
'SMSText' => 'Kode OTP Anda adalah 710433',
'otp' => 'Y',
'output' => 'json'
];
$url = 'https://api.nusasms.com/api/v3/sendsms/plain?' . http_build_query($params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result);
import requests
url = "https://api.nusasms.com/api/v3/sendsms/plain"
params = {
"user": "YOUR_USERNAME",
"password": "YOUR_PASSWORD",
"GSM": "6285100803380",
"SMSText": "Kode OTP Anda adalah 710433",
"otp": "Y",
"output": "json"
}
response = requests.get(url, params=params)
data = response.json()
print(data)
const axios = require('axios');
const params = {
user: 'YOUR_USERNAME',
password: 'YOUR_PASSWORD',
GSM: '6285100803380',
SMSText: 'Kode OTP Anda adalah 710433',
otp: 'Y',
output: 'json'
};
axios.get('https://api.nusasms.com/api/v3/sendsms/plain', { params })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error);
});
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class NusaSMSService {
public static void main(String[] args) throws Exception {
String url = "https://api.nusasms.com/api/v3/sendsms/plain?" +
"user=YOUR_USERNAME" +
"&password=YOUR_PASSWORD" +
"&GSM=6285100803380" +
"&SMSText=Kode+OTP+Anda+adalah+710433" +
"&otp=Y&output=json";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL := "https://api.nusasms.com/api/v3/sendsms/plain"
params := url.Values{}
params.Add("user", "YOUR_USERNAME")
params.Add("password", "YOUR_PASSWORD")
params.Add("GSM", "6285100803380")
params.Add("SMSText", "Kode OTP Anda adalah 710433")
params.Add("otp", "Y")
params.Add("output", "json")
fullURL := fmt.Sprintf("%s?%s", baseURL, params.Encode())
resp, err := http.Get(fullURL)
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
using var client = new HttpClient();
string url = "https://api.nusasms.com/api/v3/sendsms/plain?" +
"user=YOUR_USERNAME" +
"&password=YOUR_PASSWORD" +
"&GSM=6285100803380" +
"&SMSText=Kode+OTP+Anda+710433" +
"&otp=Y&output=json";
HttpResponseMessage response = await client.GetAsync(url);
string result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
API NusaSMS akan mengembalikan respon dalam format JSON atau XML sesuai dengan parameter output yang Anda masukkan.
{
"status": "0",
"message": "Success",
"messageid": "053380444905641291",
"destination": "6285100803380"
}
{
"status": "-1",
"message": "Invalid Password",
"messageid": "",
"destination": "6285100803380"
}
Untuk mengecek sisa saldo/kredit SMS pada akun Anda secara terprogram:
{
"status": "0",
"credit": 15450,
"type": "sms"
}
Anda dapat mengecek status pengiriman pesan berdasarkan messageid yang didapat saat mengirim SMS:
| Kode Status | Keterangan |
|---|---|
| D / DELIVRD | Pesan telah berhasil terkirim sampai ke HP penerima (Delivered). |
| S / SENT | Pesan sudah terkirim ke sistem Operator/Gateway. |
| R / REJECTD | Pesan ditolak oleh operator / nomor tidak aktif / diluar jangkauan. |
| E / EXPIRED | Pesan kadaluarsa karena HP penerima mati dalam waktu lama. |
Daftar kode status error yang dapat dikembalikan oleh API NusaSMS:
| Kode Status | Pesan Error | Penjelasan / Solusi |
|---|---|---|
| 0 | Success | Permintaan berhasil diproses oleh gateway. |
| -1 | Invalid Password / User | Username atau password yang dimasukkan salah. |
| -2 | Insufficient Credit | Saldo/kredit SMS Anda tidak mencukupi. Silakan lakukan isi ulang. |
| -3 | Invalid Destination Number | Format nomor HP salah (harus diawali kode negara 62... tanpa +). |
| -5 | Empty Message Text | Isi pesan SMS (SMSText) kosong. |
| -10 | IP Address Not Whitelisted | IP server pengirim belum terdaftar di whitelist menu Account Setting. |
| -33 | Duplicate MessageID | MessageID sudah pernah digunakan sebelumnya. |