Documentation v1.0

Selamat datang di dokumentasi resmi API Hidepulsa. API ini memungkinkan Anda untuk melakukan integrasi pembelian produk digital dan sistem Auto-Buy berdasarkan kuota secara otomatis.

Info Semua endpoint (kecuali otentikasi) wajib menggunakan Header: Authorization: Bearer <access_token>
POST /auth/telegram/request-otp
πŸ”‘ Request OTP Telegram

Meminta kode OTP via Bot Telegram. Akses bot: @apphidepulsa_bot. Menghasilkan challenge_token yang dibutuhkan untuk verifikasi.

Contoh Integrasi (Code Snippets)
cURL
Node.js
Python
PHP
Request Body (JSON)
{
  "telegram_user_id": 123456789
}
Responses
200 OK
{ "ok": true, "challenge_token": "eyJhbGciOiJIUzI...", "expires_in": 300 }
400 Bad Request
{ "ok": false, "code": "USERNAME_REQUIRED", "message": "tolong setting username telegram..." }
403 Forbidden
{ "ok": false, "code": "START_REQUIRED", "message": "tolong /start bot terlebih dahulu..." }
429 Too Many Requests
{ "ok": false, "message": "cooldown" }
POST /auth/otp/verify
πŸ” Verify OTP (Dapatkan Access Token)

Verifikasi kode OTP yang dikirim ke Telegram untuk mendapatkan access_token (Bearer Token). Simpan refresh_token untuk memperbarui sesi jika access_token kedaluwarsa.

Contoh Integrasi (Code Snippets)
cURL
Node.js
Python
PHP
Request Body (JSON)
{
  "challenge_token": "eyJhbGciOiJIUzI...",
  "otp": "123456",
  "device_id": "fcm_token_opsional"
}
Responses
200 OK
{
  "ok": true,
  "access_token": "eyJhbG...",
  "expires_in": 900,
  "refresh_token": "random_string_32_chars",
  "refresh_expires_in": 2592000
}
400 Bad Request
{ "ok": false, "message": "otp wrong" } // atau expired / used
401 Unauthorized
{ "ok": false, "message": "invalid challenge" }
429 Too Many Requests
{ "ok": false, "message": "too many attempts" }
GET /produk-list
πŸ›οΈ Product List

Mengambil daftar produk digital yang tersedia beserta harga (sudah termasuk markup).

Contoh Integrasi (Code Snippets)
cURL
Node.js
Python
PHP
Query Parameters (Opsional)
  • category: Filter kategori (e.g. Data, Pulsa)
  • brand: Filter brand (e.g. Telkomsel, XL)
  • type: Filter tipe (e.g. Umum)
Responses
200 OK
{
  "status": "success",
  "count": 1,
  "data": [
    {
      "product_name": "Telkomsel Data 10GB",
      "category": "Data",
      "brand": "Telkomsel",
      "type": "Umum",
      "price": 50000,
      "buyer_sku_code": "TELKOMSEL10",
      "seller_product_status": true,
      "buyer_product_status": true,
      "stock": 100,
      "unlimited_stock": true,
      "description": "Kuota Utama 10GB",
      "start_cut_off": "23:00",
      "end_cut_off": "01:00"
    }
  ]
}
500 Server Error
{ "status": "error", "message": "Server Error" }
POST /topup_digi
πŸ’Έ Topup Transaction (Smart Payment)

Melakukan pemesanan produk secara manual. Sistem dilengkapi validasi ketat pencocokan harga DB dan harga request.

Contoh Integrasi (Code Snippets)
cURL
Node.js
Python
PHP
Request Body (JSON)
{
  "buyer_sku_code": "TELKOMSEL10",
  "customer_no": "08123456789",
  "ref_id": "trx-12345",
  "selling_price": 50000,
  "payment_method": "saldo"
}
Responses
200 OK
{
  "ok": true,
  "data": {
    "rc": "00",
    "sn": "1234567890123456",
    "status": "Sukses",
    "message": "Transaksi Berhasil"
  }
}
400 Bad Request
{ "ok": false, "message": "Saldo tidak cukup" } // atau System Error
403 Forbidden
{ "ok": false, "message": "Transaksi ditolak: Ketidakcocokan harga..." }
404 Not Found
{ "ok": false, "message": "Produk tidak ditemukan!" }
422 Unprocessable Entity
{ "ok": false, "message": "Transaksi Gagal. Dana dikembalikan ke Saldo.", "rc": "06" }
500 Server Error
{ "ok": false, "message": "Koneksi lambat atau gangguan sistem..." }
GET /check-status/:ref_id
πŸ” Check Status Transaction

Memeriksa status mutasi/transaksi berdasarkan ref_id pesanan.

Contoh Integrasi (Code Snippets)
cURL
Node.js
Python
PHP
Responses
200 OK
{
  "ok": true,
  "data": {
    "ref_id": "trx-12345",
    "status": "success",
    "product_name": "Telkomsel Data 10GB",
    "customer_no": "08123456789",
    "sn": "1234567890123456",
    "price": 50000,
    "balance_before": 100000,
    "balance_after": 50000,
    "message": "Transaksi Berhasil",
    "rc": "00",
    "last_update": "2026-02-20T10:05:00.000Z"
  }
}
404 Not Found
{ "ok": false, "message": "Transaksi tidak ditemukan" }
500 Server Error
{ "ok": false, "message": "Server Error" }
POST /autobuy/register
1. Registrasi Auto-Buy Baru

Mendaftarkan nomor dan paket yang ingin dipantau sistem.

Contoh Integrasi (Code Snippets)
cURL
Node.js
Python
PHP
Go
Request Body (JSON)
{
  "buyer_sku_code": "TELKOMSEL10",
  "customer_no": "08123456789",
  "nama_paket": "Telkomsel 10GB",
  "selling_price": 50000,
  "keyword_filter": "edukasi",
  "threshold_mb": 100,
  "max_buy_limit": 10,
  "nama_label": "Paket Kerja"
}
Responses
200 OK
{ "ok": true, "message": "Fitur Auto-Buy Berhasil Diaktifkan! Sistem akan memantau kuota Anda." }
400 Bad Request
{ "ok": false, "message": "Auto-Buy untuk produk ini sudah aktif di nomor tersebut!" }
404 Not Found
{ "ok": false, "message": "User not found" }
500 Server Error
{ "ok": false, "message": "Gagal menyimpan pengaturan Auto-Buy" }
PUT /autobuy/update-name
2. Edit Nama Label Auto-Buy

Mengubah nama identitas tugas auto-buy.

Contoh Integrasi (Code Snippets)
cURL
Node.js
Python
PHP
Request Body (JSON)
{ "task_id": 15, "nama_label": "Keluarga" }
Responses
200 OK
{ "ok": true, "message": "Nama label berhasil diubah! 🏷️" }
404 Not Found
{ "ok": false, "message": "Data tidak ditemukan atau bukan milik Anda" }
500 Server Error
{ "ok": false, "message": "Gagal mengubah nama label" }
GET /autobuy/list
3. List Auto-Buy User

Mengambil semua daftar tugas auto-buy milik user.

Contoh Integrasi (Code Snippets)
cURL
Node.js
Python
PHP
Responses
200 OK
{
  "ok": true,
  "data": [
    {
      "id": 15,
      "nama_label": "hidepulsa",
      "nomor_hp": "08123456789",
      "nama_paket": "Telkomsel 10GB",
      "buyer_sku_code": "TELKOMSEL10",
      "threshold_mb": 100,
      "status": "ACTIVE",
      "total_success_count": 2,
      "max_buy_limit": 10,
      "last_quota_value": 150,
      "selling_price": 50000,
      "last_check_time": "2026-02-20T10:00:00.000Z",
      "next_check_time": "2026-02-20T11:30:00.000Z",
      "created_at": "2026-02-19T10:00:00.000Z"
    }
  ],
  "total": 1
}
404 Not Found
{ "ok": false, "message": "User not found" }
500 Server Error
{ "ok": false, "message": "Gagal memuat data" }
POST /autobuy/update-status
4. Update Status (ON/OFF)

Mengubah status task auto-buy menjadi ACTIVE atau PAUSED.

Contoh Integrasi (Code Snippets)
cURL
Node.js
Python
PHP
Request Body (JSON)
{ "task_id": 15, "status": "PAUSED" }
Responses
200 OK
{ "ok": true, "message": "Auto-Buy Dimatikan (Paused) ⏸️" }
400 Bad Request
{ "ok": false, "message": "Status harus ACTIVE atau PAUSED." }
404 Not Found
{ "ok": false, "message": "Data tidak ditemukan atau bukan milik Anda." }
500 Server Error
{ "ok": false, "message": "Gagal mengubah status" }
DELETE /autobuy/delete/:id
5. Hapus Permanen

Menghapus konfigurasi auto-buy secara permanen dari database.

Contoh Integrasi (Code Snippets)
cURL
Node.js
Python
PHP
Path Parameter

id: ID tugas yang ingin dihapus (contoh: /autobuy/delete/15)

Responses
200 OK
{ "ok": true, "message": "Data Auto-Buy berhasil dihapus πŸ—‘οΈ" }
404 Not Found
{ "ok": false, "message": "Gagal menghapus. Data tidak ditemukan." }
500 Server Error
{ "ok": false, "message": "Server Error" }
POST /autobuy/update-limit
6. Edit Limit Pembelian (Max Buy)

Mengubah batas maksimal jumlah pembelian paket untuk suatu task.

Contoh Integrasi (Code Snippets)
cURL
Node.js
Python
PHP
Request Body (JSON)
{ "task_id": 15, "new_limit": 20 }
Responses
200 OK
{ "ok": true, "message": "Limit pembelian berhasil diubah menjadi 20 kali! πŸš€" }
400 Bad Request
{ "ok": false, "message": "Limit harus berupa angka minimal 1." }
404 Not Found
{ "ok": false, "message": "Data tidak ditemukan atau bukan milik Anda." }
500 Server Error
{ "ok": false, "message": "Gagal mengubah limit pembelian" }
POST /autobuy/update-threshold
7. Edit Ambang Batas Kuota (Threshold)

Mengubah batas MB sisa kuota yang memicu pembelian otomatis.

Contoh Integrasi (Code Snippets)
cURL
Node.js
Python
PHP
Request Body (JSON)
{ "task_id": 15, "new_threshold": 500 }
Responses
200 OK
{ "ok": true, "message": "Batas kuota berhasil diubah menjadi 500 MB! πŸ› οΈ" }
400 Bad Request
{ "ok": false, "message": "ID Tugas dan Nilai Threshold baru wajib diisi dengan benar." }
404 Not Found
{ "ok": false, "message": "Data tidak ditemukan atau bukan milik Anda." }
500 Server Error
{ "ok": false, "message": "Gagal mengubah ambang batas kuota." }