Dokumentasi API

http://kiostore.my.id/api/v1
Autentikasi: Sertakan API key di setiap request via header.
X-API-Key: nk_xxxxxxxxxxxxxxxx
atau via query: ?api_key=nk_xxx
GET http://kiostore.my.id/api/v1/balance

Mendapatkan informasi saldo dan profil akun.

Metode GET
Alamat URL /api/v1/balance
Respons JSON
{
  "success": true,
  "message": "OK",
  "data": {
    "balance": 50000,
    "balance_idr": "Rp 50.000",
    "name": "Nama Pengguna",
    "email": "nama@example.com"
  }
}
GET http://kiostore.my.id/api/v1/services

Mendapatkan semua layanan OTP aktif beserta harga. Gunakan ?search= untuk filter nama layanan.

Metode GET
Alamat URL /api/v1/services
Respons JSON
search string Opsional Filter nama layanan, contoh: ?search=whatsapp
{
  "success": true,
  "message": "OK",
  "data": [
    {
      "service_id": "whatsapp",
      "name": "WhatsApp",
      "country": "id",
      "operator": "any",
      "price": 600,
      "price_idr": "Rp 600"
    }
  ]
}
GET http://kiostore.my.id/api/v1/order/create

Membuat order OTP baru via query string. Saldo dipotong otomatis sesuai harga layanan.

Metode GET
Alamat URL /api/v1/order/create
Respons JSON
service_id string Wajib service_id dari Daftar Layanan, contoh: whatsapp
number_id string Wajib ID nomor yang tersedia dari RumahOTP
provider_id string Wajib ID provider dari RumahOTP
country string Opsional Kode negara (default: id)
{
  "success": true,
  "message": "Order berhasil dibuat.",
  "data": {
    "order_code": "OTP-1234567890-ABCDE",
    "rumahotp_order_id": "ro_xxxxxxxxxxxx",
    "service_id": "whatsapp",
    "service_name": "WhatsApp",
    "phone_number": "+62878xxxxxxxx",
    "country": "id",
    "status": "pending",
    "amount": 600,
    "expires_at": "2026-06-05T10:30:00+07:00"
  }
}
GET http://kiostore.my.id/api/v1/order/status

Mengecek status order langsung ke RumahOTP. Cocok untuk polling OTP secara realtime.

Metode GET
Alamat URL /api/v1/order/status
Respons JSON
order_code string Opsional order_code dari sistem (contoh: OTP-1234567890-ABCDE)
rumahotp_id string Opsional rumahotp_order_id jika sudah diketahui
{
  "success": true,
  "message": "OK",
  "data": {
    "order_code": "OTP-1234567890-ABCDE",
    "rumahotp_order_id": "ro_xxxxxxxxxxxx",
    "local_status": "pending",
    "otp_code": null,
    "sms_code": null,
    "rumahotp_response": {}
  }
}
GET http://kiostore.my.id/api/v1/order/{code}

Mendapatkan detail lengkap satu order berdasarkan order_code atau ID.

Metode GET
Alamat URL /api/v1/order/{code}
Respons JSON
{code} string Wajib order_code atau ID order (di URL path, bukan query)
{
  "success": true,
  "message": "OK",
  "data": {
    "id": 1,
    "order_code": "OTP-1234567890-ABCDE",
    "rumahotp_order_id": "ro_xxxxxxxxxxxx",
    "service_id": "whatsapp",
    "service_name": "WhatsApp",
    "phone_number": "+62878xxxxxxxx",
    "country": "id",
    "status": "success",
    "otp_code": "123456",
    "sms_code": null,
    "sms_text": "Your WhatsApp code is 123456",
    "amount": 600,
    "expires_at": "2026-06-05T10:30:00+07:00",
    "created_at": "2026-06-05T10:00:00+07:00",
    "updated_at": "2026-06-05T10:05:00+07:00"
  }
}
GET http://kiostore.my.id/api/v1/order/cancel

Membatalkan order OTP yang masih berstatus pending. Saldo akan dikembalikan otomatis.

Metode GET
Alamat URL /api/v1/order/cancel
Respons JSON
order_code string Opsional order_code dari sistem (contoh: OTP-1234567890-ABCDE)
rumahotp_id string Opsional rumahotp_order_id jika sudah diketahui. Wajib salah satu.
{
  "success": true,
  "message": "Order berhasil dibatalkan. Saldo dikembalikan.",
  "data": {
    "order_code": "OTP-1234567890-ABCDE",
    "status": "cancelled",
    "refund": 600,
    "refund_idr": "Rp 600",
    "new_balance": 50600,
    "rumahotp_response": {}
  }
}
GET http://kiostore.my.id/api/v1/orders

Mendapatkan daftar order milik akun, diurutkan dari yang terbaru. Mendukung filter status dan pagination.

Metode GET
Alamat URL /api/v1/orders
Respons JSON
limit integer Opsional Jumlah data per halaman (max 50, default 10)
page integer Opsional Nomor halaman (default 1)
status string Opsional Filter status: pending | success | cancelled | expired
{
  "success": true,
  "message": "OK",
  "data": {
    "total": 42,
    "page": 1,
    "limit": 10,
    "orders": [
      {
        "id": 1,
        "order_code": "OTP-1234567890-ABCDE",
        "service_id": "whatsapp",
        "service_name": "WhatsApp",
        "phone_number": "+62878xxxxxxxx",
        "country": "id",
        "status": "success",
        "otp_code": "123456",
        "sms_code": null,
        "amount": 600,
        "expires_at": "2026-06-05T10:30:00+07:00",
        "created_at": "2026-06-05T10:00:00+07:00"
      }
    ]
  }
}

Daftar HTTP status code yang mungkin dikembalikan oleh API.

401 Tidak terautentikasi API key tidak valid, tidak aktif, atau tidak disertakan.
403 Akses ditolak IP tidak termasuk dalam whitelist.
400 Permintaan tidak valid Parameter tidak valid atau saldo tidak cukup.
404 Tidak ditemukan Pesanan atau layanan tidak ditemukan.
422 Data tidak dapat diproses Gagal membuat pesanan di RumahOTP.
429 Terlalu banyak permintaan Batas permintaan terlampaui.
502 Penyedia tidak merespons Gagal terhubung ke RumahOTP.