Dokumentasi API

Integrasikan layanan OTP kami langsung ke dalam aplikasi Anda.

Base URL: /api/v1

Autentikasi

Semua permintaan API harus menyertakan API Key Anda pada header X-API-Key. Anda bisa generate API Key dari halaman Profil.

X-API-Key: sk_api_key_anda

Jika API Key tidak valid atau tidak disertakan, API akan mengembalikan error 401 Unauthorized.

Daftar Negara

Mendapatkan daftar kode negara yang tersedia.

GET/api/v1/countries

Contoh Curl

curl "https://sms.nixpoin.com/api/v1/countries" \
  -H "X-API-Key: sk_..."

Contoh Respons

{
  "success": true,
  "data": [
    {
      "id": 6,
      "name": "Indonesia"
    },
    {
      "id": 0,
      "name": "Russia"
    },
    {
      "id": 12,
      "name": "Philippines"
    }
  ]
}

Daftar Service

Mendapatkan daftar kode service yang tersedia (misal: WhatsApp, Telegram, dll).

GET/api/v1/services

Contoh Curl

curl "https://sms.nixpoin.com/api/v1/services" \
  -H "X-API-Key: sk_..."

Contoh Respons

{
  "success": true,
  "data": [
    {
      "code": "wa",
      "name": "WhatsApp"
    },
    {
      "code": "tg",
      "name": "Telegram"
    },
    {
      "code": "ig",
      "name": "Instagram"
    }
  ]
}

Cek Saldo

Mengecek saldo akun Anda saat ini.

GET/api/v1/balance

Contoh Curl

curl "https://sms.nixpoin.com/api/v1/balance" \
  -H "X-API-Key: sk_..."

Contoh Respons

{
  "balance": 50000
}

Ketersediaan Negara per Service

Mengecek ketersediaan nomor di setiap negara untuk service tertentu. Parameter service diisi dengan kode service (contoh: wa, go, ka).

GET/api/v1/availability?service=go

Contoh Curl

curl "https://sms.nixpoin.com/api/v1/availability?service=go" \
  -H "X-API-Key: sk_..."

Contoh Respons

{
  "success": true,
  "service": "go",
  "data": [
    {
      "id": 6,
      "name": "Indonesia",
      "cost": 0.12,
      "count": 50
    },
    {
      "id": 0,
      "name": "Russia",
      "cost": 0.08,
      "count": 23
    }
  ]
}

Daftar Operator per Negara

Mendapatkan daftar operator telekomunikasi yang tersedia di suatu negara.

GET/api/v1/operators?country=6

Contoh Curl

curl "https://sms.nixpoin.com/api/v1/operators?country=6" \
  -H "X-API-Key: sk_..."

Contoh Respons

{
  "success": true,
  "data": [
    "Telkomsel",
    "Indosat",
    "XL",
    "Tri"
  ]
}

Order Nomor

Memesan nomor telepon baru untuk verifikasi OTP. Saldo akan dipotong otomatis.

POST/api/v1/order

Body Request

ParameterTipeWajibKeterangan
servicestringYaKode service (dari /api/v1/services)
countrynumberYaID negara (dari /api/v1/countries)
operatorstringTidakOperator (default: "any")

Contoh Curl

curl -X POST https://sms.nixpoin.com/api/v1/order \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sk_..." \
  -d '{"service": "wa", "country": 6, "operator": "any"}'

Contoh Respons (Berhasil)

{
  "success": true,
  "id": "123456789",
  "phoneNumber": "6281234567890",
  "service": "WhatsApp",
  "country": "Indonesia",
  "operator": "any",
  "cost": 5000,
  "newBalance": 45000
}

Cek Status & Kode OTP

Mengecek status pesanan dan mendapatkan kode OTP jika sudah diterima. Gunakan id dari respons order.

GET/api/v1/status?orderId=ID_ORDER

Contoh Curl

curl "https://sms.nixpoin.com/api/v1/status?orderId=123456789" \
  -H "X-API-Key: sk_..."

Contoh Respons (OTP Diterima)

{
  "success": true,
  "status": "received",
  "smsCode": "123456",
  "smsText": "Kode verifikasi Anda adalah 123456"
}

Daftar Status

StatusKeterangan
waitingMenunggu SMS masuk
receivedSMS/OTP sudah diterima
cancelledDibatalkan (saldo dikembalikan)
completedSelesai
expiredKadaluarsa

Pesanan Aktif

Mendapatkan daftar semua pesanan yang sedang aktif (status: waiting, resending, received).

GET/api/v1/active-orders

Contoh Curl

curl "https://sms.nixpoin.com/api/v1/active-orders" \
  -H "X-API-Key: sk_..."

Contoh Respons

{
  "orders": [
    {
      "id": "abc123",
      "activation_id": "123456789",
      "phone_number": "6281234567890",
      "service_name": "WhatsApp",
      "status": "waiting",
      "sms_code": null,
      "created_at": "2025-01-01T10:00:00.000Z",
      "cost_idr": 5000,
      "operator": "Telkomsel",
      "country_name": "Indonesia"
    }
  ]
}

Riwayat Pesanan

Mendapatkan riwayat semua pesanan dengan filter dan pagination.

GET/api/v1/history

Parameter Query

ParameterTipeDefaultKeterangan
limitnumber20Maks 100
offsetnumber0Pagination offset
statusstring-Filter status (waiting, received, cancelled, completed, expired)
phonestring-Cari nomor HP
startDatestring-Filter tanggal awal (ISO)
endDatestring-Filter tanggal akhir (ISO)

Contoh Curl

curl "https://sms.nixpoin.com/api/v1/history?limit=10&offset=0&status=completed" \
  -H "X-API-Key: sk_..."

Contoh Respons

{
  "orders": [
    {
      "id": "abc123",
      "activation_id": "123456789",
      "service_code": "wa",
      "service_name": "WhatsApp",
      "phone_number": "6281234567890",
      "country_name": "Indonesia",
      "operator": "Telkomsel",
      "status": "completed",
      "sms_code": "123456",
      "cost": 0.12,
      "cost_idr": 5000,
      "created_at": "2025-01-01T10:00:00.000Z",
      "completed_at": "2025-01-01T10:05:00.000Z",
      "provider": "atlantic"
    }
  ],
  "total": 1,
  "limit": 10,
  "offset": 0
}

Batalkan Order

Membatalkan pesanan yang masih aktif. Saldo akan dikembalikan jika memenuhi syarat (belum menerima OTP & sudah melewati 3 menit).

POST/api/v1/cancel

Body Request

{
  "orderId": "123456789"
}

Contoh Curl

curl -X POST https://sms.nixpoin.com/api/v1/cancel \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sk_..." \
  -d '{"orderId": "123456789"}'

Contoh Respons

{
  "success": true,
  "refunded": 5000,
  "status": "cancelled"
}

Selesaikan Order

Menyelesaikan pesanan yang sudah menerima OTP. Hanya order dengan status received yang bisa diselesaikan.

POST/api/v1/finish

Body Request

{
  "orderId": "123456789"
}

Contoh Curl

curl -X POST https://sms.nixpoin.com/api/v1/finish \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sk_..." \
  -d '{"orderId": "123456789"}'

Contoh Respons

{
  "success": true,
  "status": "completed",
  "completed_at": "2025-01-01T10:05:00.000Z"
}

Penanganan Error

Semua error akan dikembalikan dalam format JSON berikut:

{
  "error": "Pesan error"
}
HTTP CodeKeterangan
400Parameter tidak valid atau syarat tidak terpenuhi
401API Key tidak valid atau tidak disertakan
404Data tidak ditemukan
500Kesalahan server internal