NusaSMS API Reference v3.0

Dokumentasi resmi integrasi API pengiriman SMS (Plain & OTP), Cek Kredit, dan Delivery Report untuk pengembang aplikasi.

1. Pengiriman Pesan (Send SMS Plain / OTP)

Endpoint ini digunakan untuk mengirimkan pesan SMS regular maupun OTP ke nomor tujuan single secara langsung.

GET https://api.nusasms.com/api/v3/sendsms/plain

Parameter Request

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.
Catatan Panjang Pesan:
• Standard GSM 7-bit: Maksimal 160 karakter untuk 1 SMS (153 karakter/SMS jika multi-part).
• Unicode (Arab, Mandarin, Emoji, dll): Maksimal 70 karakter untuk 1 SMS (67 karakter/SMS jika multi-part).

2. Contoh Kode Integration (Multi-Language)

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);
    }
}

3. Format Response API

API NusaSMS akan mengembalikan respon dalam format JSON atau XML sesuai dengan parameter output yang Anda masukkan.

Respon Sukses (JSON)

{
  "status": "0",
  "message": "Success",
  "messageid": "053380444905641291",
  "destination": "6285100803380"
}

Respon Gagal (JSON)

{
  "status": "-1",
  "message": "Invalid Password",
  "messageid": "",
  "destination": "6285100803380"
}

4. Cek Saldo Kredit (Command)

Untuk mengecek sisa saldo/kredit SMS pada akun Anda secara terprogram:

GET https://api.nusasms.com/api/command?user=YOUR_USER&password=YOUR_PASSWORD&cmd=CREDITS&type=sms&output=json

Contoh Respon Saldo:

{
  "status": "0",
  "credit": 15450,
  "type": "sms"
}

5. Cek Status Pesan / Delivery Report (DR)

Anda dapat mengecek status pengiriman pesan berdasarkan messageid yang didapat saat mengirim SMS:

GET https://api.nusasms.com/api/command?user=YOUR_USER&password=YOUR_PASSWORD&cmd=DR&messageid=053380444905641291&output=json

Status Pengiriman (DR Values):

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.

6. Referensi Kode Error API

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.