Mulai dari mana?
- 1Daftar dengan username dan masuk ke dashboard.
- 2Buat kunci API di tab Connect. Kunci lengkap hanya ditampilkan sekali, saat Anda membuatnya, jadi langsung simpan di tempat yang aman.
- 3Kirim kunci di header Authorization pada setiap permintaan yang memerlukannya.
- 4Panggil /account dulu untuk mengecek bahwa kunci berfungsi, lalu buat pesanan dengan /orders.
Autentikasi
Permintaan tentang akun Anda sendiri (account, orders, proxy-user) memerlukan kunci API, dikirim di header sebagai Authorization: Bearer spk_... Harga, negara, dan penawaran bersifat publik dan bisa dipakai tanpa kunci.
StarProxy hanya menyimpan hash dari setiap kunci, bukan kuncinya. Jika kunci hilang, buat yang baru di dashboard. Kunci lama langsung berhenti berfungsi saat itu. Simpan kunci hanya di kode server. Jangan pernah menaruhnya di kode yang berjalan di browser atau di repositori publik.
Authorization: Bearer spk_your_api_key
Base URL dan format data
- Base URL
- https://starproxy.shop/api/v1
- Body permintaan dan respons
- application/json
- Jumlah uang
- USD sebagai angka, misalnya 1047.70
- Timestamp
- ISO 8601 (UTC)
Apakah ada batas jumlah panggilan?
Satu kunci API bisa melakukan hingga 60 panggilan per menit. Endpoint publik tanpa kunci mengizinkan 60 panggilan per menit per IP. Jika melewati batas, Anda mendapat HTTP 429, jadi tunggu satu menit lalu kirim lagi.
Seperti apa bentuk error?
Kode status HTTP, ditambah body JSON berisi kode error singkat dan pesan.
{
"error": {
"code": "insufficient_balance",
"message": "Your balance is too low for this order. Top up in the dashboard."
}
}| HTTP | code | Arti |
|---|---|---|
| bad_requestHTTP 400Nilai wajib tidak ada, atau nilainya tidak valid untuk produk ini. | Nilai wajib tidak ada, atau nilainya tidak valid untuk produk ini. | |
| unauthorizedHTTP 401Kunci API tidak ada atau tidak cocok. | Kunci API tidak ada atau tidak cocok. | |
| insufficient_balanceHTTP 402Saldo Anda lebih kecil dari total pesanan. Tidak ada yang dipotong. | Saldo Anda lebih kecil dari total pesanan. Tidak ada yang dipotong. | |
| not_foundHTTP 404Tidak ada pesanan dengan id ini di akun Anda. | Tidak ada pesanan dengan id ini di akun Anda. | |
| rate_limitedHTTP 429Terlalu banyak permintaan dalam satu menit. | Terlalu banyak permintaan dalam satu menit. | |
| server_errorHTTP 500Server tidak bisa menyelesaikan permintaan. Tidak ada yang dipotong. | Server tidak bisa menyelesaikan permintaan. Tidak ada yang dipotong. |
Endpoint
Ambil data akun
GET/api/v1/accountPerlu kunci API
Mengembalikan saldo, host dan port proxy, username dan kata sandi proxy, serta Allowed IPs Anda.
curl https://starproxy.shop/api/v1/account \ -H "Authorization: Bearer spk_your_api_key"
{
"username": "star_user01",
"balance_usd": 1300,
"proxy": {
"host": "gate.starproxy.shop",
"http_port": 6100,
"socks5_port": 6200,
"username": "spexample1",
"password": "your_password"
},
"allowed_ips": [
"203.0.113.10"
]
}Ambil produk dan harga
GET/api/v1/productsTanpa kunci
Mengembalikan rentang pesanan tiap produk, harga per tingkatan jumlah, dan diskon durasi, dari tabel harga yang sama dengan halaman harga.
curl https://starproxy.shop/api/v1/products
{
"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 didukung tiap produk, beserta nilai kota untuk opsi username -city-.
| Field | Tipe | Arti |
|---|---|---|
productOpsional | string | Salah satu dari unlimited, residential, isp, datacenter. Default-nya residential. |
curl "https://starproxy.shop/api/v1/countries?product=datacenter"
{
"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"
}
]
}
]
}Dapatkan penawaran harga
POST/api/v1/quoteTanpa kunci
Menghitung total pesanan tanpa mengubah saldo Anda. Kirim body yang sama dengan yang dipakai untuk pesanan.
| Field | Tipe | Arti |
|---|---|---|
productWajib | string | Salah satu dari unlimited, residential, isp, datacenter. |
quantityWajib | integer | Hari untuk unlimited (1~365), GB untuk residential (5~5,000), jumlah IP untuk isp (1~1,000) atau datacenter (5~5,000). |
concurrencyOpsional | integer | Khusus unlimited. Salah satu dari 200, 500, 1000, 2000. |
bandwidthOpsional | integer | Khusus unlimited, dalam Mbps. Salah satu dari 100, 200, 500, 1000. |
monthsOpsional | integer | Khusus isp dan datacenter. Salah satu dari 1, 3, 6, 12. |
countryOpsional | string | Khusus isp dan datacenter. Kode negara dua huruf seperti jp. Lihat /countries untuk nilai yang valid. |
curl -X POST https://starproxy.shop/api/v1/quote \
-H "Content-Type: application/json" \
-d '{"product":"unlimited","quantity":30,"concurrency":1000,"bandwidth":200}'{
"product": "unlimited",
"quantity": 30,
"unit_price_usd": 8.41,
"unit": "day",
"total_usd": 252.3
}Buat pesanan
POST/api/v1/ordersPerlu kunci API
Memotong total dari saldo Anda dan membuat pesanan. Status dimulai dari pending (sedang diaktifkan) dan berubah menjadi active saat pesanan siap. Jika tidak bisa diaktifkan, statusnya menjadi refunded dan seluruh jumlahnya kembali ke saldo. Saldo yang kurang mengembalikan 402.
| Field | Tipe | Arti |
|---|---|---|
productWajib | string | Salah satu dari unlimited, residential, isp, datacenter. |
quantityWajib | integer | Hari untuk unlimited (1~365), GB untuk residential (5~5,000), jumlah IP untuk isp (1~1,000) atau datacenter (5~5,000). |
concurrencyOpsional | integer | Khusus unlimited. Salah satu dari 200, 500, 1000, 2000. |
bandwidthOpsional | integer | Khusus unlimited, dalam Mbps. Salah satu dari 100, 200, 500, 1000. |
monthsOpsional | integer | Khusus isp dan datacenter. Salah satu dari 1, 3, 6, 12. |
countryOpsional | string | Khusus isp dan datacenter. Kode negara dua huruf seperti jp. Lihat /countries untuk nilai yang valid. |
curl -X POST https://starproxy.shop/api/v1/orders \
-H "Authorization: Bearer spk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"product":"unlimited","quantity":30,"concurrency":1000,"bandwidth":200}'{
"order": {
"id": "SP-7KQ2M-X4HTD",
"product": "unlimited",
"quantity": 30,
"months": null,
"concurrency": 1000,
"bandwidth_mbps": 200,
"country": null,
"unit_price_usd": 8.41,
"total_usd": 252.3,
"status": "pending",
"created_at": "2026-10-31T09:12:44.120Z",
"updated_at": "2026-10-31T09:12:44.120Z"
},
"balance_usd": 1047.7
}Daftar pesanan
GET/api/v1/ordersPerlu kunci API
Mengembalikan hingga 100 pesanan, yang terbaru lebih dulu.
| Field | Tipe | Arti |
|---|---|---|
statusOpsional | string | Salah satu dari pending, active, refunded. Kosongkan untuk semua status. |
curl "https://starproxy.shop/api/v1/orders?status=pending" \ -H "Authorization: Bearer spk_your_api_key"
{
"orders": [
{
"id": "SP-7KQ2M-X4HTD",
"product": "unlimited",
"quantity": 30,
"months": null,
"concurrency": 1000,
"bandwidth_mbps": 200,
"country": null,
"unit_price_usd": 8.41,
"total_usd": 252.3,
"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}Perlu kunci API
Mengembalikan satu pesanan berdasarkan id. Gunakan untuk melihat apakah aktivasi sudah selesai.
| Field | Tipe | Arti |
|---|---|---|
idWajib | string | Id pesanan, misalnya SP-7KQ2M-X4HTD. |
curl https://starproxy.shop/api/v1/orders/SP-7KQ2M-X4HTD \ -H "Authorization: Bearer spk_your_api_key"
{
"order": {
"id": "SP-7KQ2M-X4HTD",
"product": "unlimited",
"quantity": 30,
"months": null,
"concurrency": 1000,
"bandwidth_mbps": 200,
"country": null,
"unit_price_usd": 8.41,
"total_usd": 252.3,
"status": "active",
"created_at": "2026-10-31T09:12:44.120Z",
"updated_at": "2026-10-31T09:40:02.511Z"
}
}Buat username proxy
GET/api/v1/proxy-userPerlu kunci API
Mengembalikan username proxy dengan opsi Anda di dalamnya, plus URL HTTP dan SOCKS5 yang siap ditempel. Tanpa session, setiap permintaan mendapat IP baru.
| Field | Tipe | Arti |
|---|---|---|
productOpsional | string | Salah satu dari unlimited, residential, isp, datacenter. Default-nya unlimited. |
countryOpsional | string | Kode negara dua huruf seperti jp. |
cityOpsional | string | Nilai kota dari /countries, seperti tokyo. Wajib disertai country. |
sessionOpsional | string | 1~32 huruf atau angka. Permintaan dengan session yang sama berbagi satu IP. |
ttlOpsional | integer | Lama penahanan IP sesi dalam menit, 1~60. Default-nya 30. |
curl "https://starproxy.shop/api/v1/proxy-user?product=residential&country=jp&city=tokyo&session=job42&ttl=30" \ -H "Authorization: Bearer spk_your_api_key"
{
"username": "spexample1-zone-res-cc-jp-city-tokyo-sid-job42-ttl-30",
"password": "your_password",
"http": "http://spexample1-zone-res-cc-jp-city-tokyo-sid-job42-ttl-30:your_password@gate.starproxy.shop:6100",
"socks5": "socks5h://spexample1-zone-res-cc-jp-city-tokyo-sid-job42-ttl-30:your_password@gate.starproxy.shop:6200"
}Contoh lengkap
Satu skrip yang mengambil penawaran harga, memesan dari saldo, lalu terhubung lewat IP Jepang.
import requests
API = "https://starproxy.shop/api/v1"
HEAD = {"Authorization": "Bearer spk_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())const API = "https://starproxy.shop/api/v1";
const HEAD = { Authorization: "Bearer spk_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 diproses sama seperti pesanan dari dashboard dan muncul di tab Riwayat. Ganti spk_your_api_key di contoh dengan kunci Anda sendiri.