Langsung ke konten
royalproxy
Mulai

Dokumentasi API proxy

Gunakan REST API RoyalProxy untuk membaca saldo dan data koneksi, mengecek harga, membuat pesanan dari saldo, dan menyusun username proxy dari kode Anda sendiri.

Bagaimana cara memulai?

  1. 1Daftar dan masuk ke dashboard.
  2. 2Buka menu Koneksi dan buat kunci API. Kunci lengkap hanya ditampilkan sekali, jadi salin ke tempat yang aman.
  3. 3Kirim kunci di header Authorization pada setiap permintaan yang memerlukannya.
  4. 4Panggil /account untuk memastikan kunci berfungsi, lalu buat pesanan dengan /orders.

Bagaimana cara kerja autentikasi?

Permintaan untuk akun Anda sendiri (account, orders, proxy-user) memerlukan kunci API. Kirim sebagai Bearer token di header Authorization. Harga, negara, dan penawaran harga bersifat publik dan tidak perlu kunci.

Kami hanya menyimpan hash dari kunci. Jika kunci hilang, buat yang baru di dashboard dan kunci lama langsung tidak berlaku. Jangan simpan kunci di kode browser atau repositori publik.

HTTP header
Authorization: Bearer rpk_your_api_key

Base URL dan format

Base URL
https://royalproxy.online/api/v1
Body permintaan dan respons
application/json
Uang
Angka USD, misalnya 807.90
Waktu
ISO 8601 (UTC)

Apakah ada batas jumlah panggilan?

Setiap kunci API bisa mengirim hingga 60 permintaan per menit. Endpoint publik mengizinkan 60 permintaan per menit per IP. Jika melewati batas, Anda mendapat HTTP 429, jadi tunggu satu menit lalu coba lagi.

Seperti apa bentuk error?

Error memakai kode status HTTP dan body JSON berisi kode singkat dan pesan.

Contoh
{
  "error": {
    "code": "insufficient_balance",
    "message": "Your balance is too low for this order. Top up in the dashboard."
  }
}
code
bad_requestHTTP 400Ada nilai yang kosong atau tidak diizinkan untuk produk ini.
unauthorizedHTTP 401Kunci API tidak ada atau tidak valid.
insufficient_balanceHTTP 402Saldo lebih kecil dari total pesanan. Tidak ada yang ditagih.
not_foundHTTP 404Tidak ada pesanan dengan id ini di akun Anda.
rate_limitedHTTP 429Terlalu banyak permintaan dalam satu menit.
server_errorHTTP 500Permintaan tidak bisa diselesaikan. Tidak ada yang ditagih.

Endpoint

Ambil data akun

GET/api/v1/accountKunci API

Mengembalikan saldo, host proxy, port, username dan kata sandi, serta IP yang diizinkan.

Permintaan
curl https://royalproxy.online/api/v1/account \
  -H "Authorization: Bearer rpk_your_api_key"
Respons
{
  "username": "royal_user",
  "balance_usd": 1300,
  "proxy": {
    "host": "gate.royalproxy.online",
    "http_port": 6100,
    "socks5_port": 6200,
    "username": "rpexample1",
    "password": "your_password"
  },
  "allowed_ips": [
    "203.0.113.10"
  ]
}

Daftar produk dan harga

GET/api/v1/productsTanpa kunci

Mengembalikan semua produk beserta batas, tingkatan harga, dan diskonnya. Harga diambil dari tabel yang sama dengan halaman harga.

Permintaan
curl https://royalproxy.online/api/v1/products
Respons
{
  "currency": "USD",
  "prices_as_of": "2026-10-31",
  "products": [
    {
      "id": "unlimited",
      "unit": "day",
      "quantity": {
        "meaning": "days",
        "min": 1,
        "max": 365
      },
      "...": "..."
    },
    {
      "id": "residential",
      "unit": "gb",
      "...": "..."
    }
  ]
}

Daftar negara dan kota

GET/api/v1/countriesTanpa kunci

Mengembalikan negara yang tersedia untuk suatu produk, beserta nilai kota yang bisa dimasukkan ke username proxy.

FieldArti
productOpsionalunlimited, residential, isp, atau datacenter. Bawaan: residential.
Permintaan
curl "https://royalproxy.online/api/v1/countries?product=datacenter"
Respons
{
  "product": "datacenter",
  "countries": [
    {
      "code": "us",
      "name": "United States",
      "region": "americas",
      "datacenter": true,
      "cities": [
        {
          "name": "New York",
          "value": "new_york"
        },
        {
          "name": "Los Angeles",
          "value": "los_angeles"
        }
      ]
    }
  ]
}

Minta penawaran harga

POST/api/v1/quoteTanpa kunci

Menghitung total pesanan tanpa menagih apa pun. Gunakan body yang sama seperti saat membuat pesanan.

FieldArti
productWajibunlimited, residential, isp, atau datacenter.
quantityWajibHari untuk unlimited (1~365), GB untuk residential (5~5,000), IP untuk isp (1~1,000) atau datacenter (5~5,000).
concurrencyOpsionalKhusus unlimited: 200, 500, 1000, atau 2000.
bandwidthOpsionalKhusus unlimited, dalam Mbps: 100, 200, 500, atau 1000.
monthsOpsionalKhusus isp dan datacenter: 1, 3, 6, atau 12.
countryOpsionalKhusus isp dan datacenter: kode negara dua huruf, misalnya jp. Lihat /countries.
Permintaan
curl -X POST https://royalproxy.online/api/v1/quote \
  -H "Content-Type: application/json" \
  -d '{"product":"unlimited","quantity":30,"concurrency":1000,"bandwidth":200}'
Respons
{
  "product": "unlimited",
  "quantity": 30,
  "unit_price_usd": 8.97,
  "unit": "day",
  "total_usd": 269.1
}

Buat pesanan

POST/api/v1/ordersKunci API

Memotong total dari saldo Anda dan membuat pesanan. Pesanan baru berstatus pending (sedang diaktifkan) dan berubah menjadi active saat siap. Jika pesanan tidak bisa diaktifkan, statusnya menjadi refunded dan seluruh jumlah kembali ke saldo Anda. Mengembalikan 402 jika saldo tidak cukup.

FieldArti
productWajibunlimited, residential, isp, atau datacenter.
quantityWajibHari untuk unlimited (1~365), GB untuk residential (5~5,000), IP untuk isp (1~1,000) atau datacenter (5~5,000).
concurrencyOpsionalKhusus unlimited: 200, 500, 1000, atau 2000.
bandwidthOpsionalKhusus unlimited, dalam Mbps: 100, 200, 500, atau 1000.
monthsOpsionalKhusus isp dan datacenter: 1, 3, 6, atau 12.
countryOpsionalKhusus isp dan datacenter: kode negara dua huruf, misalnya jp. Lihat /countries.
Permintaan
curl -X POST https://royalproxy.online/api/v1/orders \
  -H "Authorization: Bearer rpk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"product":"unlimited","quantity":30,"concurrency":1000,"bandwidth":200}'
Respons
{
  "order": {
    "id": "RP-7KQ2M-X4HTD",
    "product": "unlimited",
    "quantity": 30,
    "months": null,
    "concurrency": 1000,
    "bandwidth_mbps": 200,
    "country": null,
    "unit_price_usd": 8.97,
    "total_usd": 269.1,
    "status": "pending",
    "created_at": "2026-10-31T09:12:44.120Z",
    "updated_at": "2026-10-31T09:12:44.120Z"
  },
  "balance_usd": 1030.9
}

Daftar pesanan Anda

GET/api/v1/ordersKunci API

Mengembalikan 100 pesanan terakhir Anda, dari yang terbaru.

FieldArti
statusOpsionalpending, active, atau refunded. Kosongkan untuk mendapatkan semua.
Permintaan
curl "https://royalproxy.online/api/v1/orders?status=pending" \
  -H "Authorization: Bearer rpk_your_api_key"
Respons
{
  "orders": [
    {
      "id": "RP-7KQ2M-X4HTD",
      "product": "unlimited",
      "quantity": 30,
      "months": null,
      "concurrency": 1000,
      "bandwidth_mbps": 200,
      "country": null,
      "unit_price_usd": 8.97,
      "total_usd": 269.1,
      "status": "pending",
      "created_at": "2026-10-31T09:12:44.120Z",
      "updated_at": "2026-10-31T09:12:44.120Z"
    }
  ]
}

Ambil satu pesanan

GET/api/v1/orders/{id}Kunci API

Mengembalikan satu pesanan berdasarkan id-nya, misalnya untuk mengecek apakah sudah aktif.

FieldArti
idWajibId pesanan, misalnya RP-7KQ2M-X4HTD.
Permintaan
curl https://royalproxy.online/api/v1/orders/RP-7KQ2M-X4HTD \
  -H "Authorization: Bearer rpk_your_api_key"
Respons
{
  "order": {
    "id": "RP-7KQ2M-X4HTD",
    "product": "unlimited",
    "quantity": 30,
    "months": null,
    "concurrency": 1000,
    "bandwidth_mbps": 200,
    "country": null,
    "unit_price_usd": 8.97,
    "total_usd": 269.1,
    "status": "active",
    "created_at": "2026-10-31T09:12:44.120Z",
    "updated_at": "2026-10-31T09:40:02.511Z"
  }
}

Susun username proxy

GET/api/v1/proxy-userKunci API

Mengembalikan username proxy dengan opsi Anda serta URL proxy HTTP dan SOCKS5 yang siap pakai. Tanpa session, IP berputar di setiap permintaan.

FieldArti
productOpsionalunlimited, residential, isp, atau datacenter. Bawaan: unlimited.
countryOpsionalKode negara dua huruf, misalnya jp.
cityOpsionalNilai kota dari /countries, misalnya tokyo. Memerlukan country.
sessionOpsionalHuruf atau angka bebas sepanjang 1~32. Permintaan dengan session yang sama memakai IP yang sama.
ttlOpsionalBerapa menit IP sesi ditahan, 1~60. Bawaan 30.
Permintaan
curl "https://royalproxy.online/api/v1/proxy-user?product=residential&country=jp&city=tokyo&session=job42&ttl=30" \
  -H "Authorization: Bearer rpk_your_api_key"
Respons
{
  "username": "rpexample1-zone-res-cc-jp-city-tokyo-sid-job42-ttl-30",
  "password": "your_password",
  "http": "http://rpexample1-zone-res-cc-jp-city-tokyo-sid-job42-ttl-30:your_password@gate.royalproxy.online:6100",
  "socks5": "socks5h://rpexample1-zone-res-cc-jp-city-tokyo-sid-job42-ttl-30:your_password@gate.royalproxy.online:6200"
}

Contoh lengkap

Contoh ini mengecek harga, memesan dari saldo, dan terhubung lewat IP Jepang.

Python (requests)
import requests

API = "https://royalproxy.online/api/v1"
HEAD = {"Authorization": "Bearer rpk_your_api_key"}

# 1) Check the price first
plan = {"product": "residential", "quantity": 100}
print(requests.post(f"{API}/quote", json=plan).json())

# 2) Order from your balance
r = requests.post(f"{API}/orders", json=plan, headers=HEAD)
order = r.json()["order"]
print(order["id"], order["status"])

# 3) Get a username for Japanese IPs
u = requests.get(f"{API}/proxy-user", headers=HEAD,
                 params={"product": "residential", "country": "jp"}).json()
proxies = {"http": u["http"], "https": u["http"]}
print(requests.get("https://ipinfo.io/json", proxies=proxies, timeout=30).json())
Node.js 18+
const API = "https://royalproxy.online/api/v1";
const HEAD = { Authorization: "Bearer rpk_your_api_key", "Content-Type": "application/json" };

// Check the balance
const acc = await fetch(`${API}/account`, { headers: HEAD }).then((r) => r.json());
console.log(acc.balance_usd);

// Order 7 days of unlimited
const res = await fetch(`${API}/orders`, {
  method: "POST",
  headers: HEAD,
  body: JSON.stringify({ product: "unlimited", quantity: 7, concurrency: 500, bandwidth: 100 }),
});
if (res.status === 402) console.log("Top up first");
else console.log((await res.json()).order.id);

Pesanan lewat API sama dengan pesanan dari dashboard dan muncul di Riwayat. Ganti rpk_your_api_key dengan kunci Anda sendiri.

Hubungkan RoyalProxy ke sistem Anda sendiri

Buat akun, lalu buat kunci API di dashboard.