Par où commencer ?
- 1Inscrivez-vous avec un nom d'utilisateur et connectez-vous au tableau de bord.
- 2Créez une clé API dans l'onglet Connexion. La clé complète n'est affichée qu'une fois, à sa création : conservez-la tout de suite en lieu sûr.
- 3Envoyez la clé dans l'en-tête Authorization avec chaque requête qui en a besoin.
- 4Appelez d'abord /account pour vérifier que la clé fonctionne, puis passez vos commandes avec /orders.
Authentification
Les requêtes qui concernent votre propre compte (account, orders, proxy-user) nécessitent une clé API, envoyée dans l'en-tête sous la forme Authorization: Bearer spk_... Les prix, pays et devis sont publics et fonctionnent sans clé.
StarProxy ne conserve que le hash de chaque clé, pas la clé elle-même. Si vous perdez une clé, créez-en une nouvelle dans le tableau de bord. L'ancienne cesse aussitôt de fonctionner. Gardez les clés uniquement dans du code serveur. Ne les placez jamais dans du code exécuté dans un navigateur ni dans un dépôt public.
Authorization: Bearer spk_your_api_key
URL de base et format des données
- URL de base
- https://starproxy.shop/api/v1
- Corps de requête et de réponse
- application/json
- Montants
- En USD, sous forme de nombre, ex. 1047.70
- Horodatages
- ISO 8601 (UTC)
Y a-t-il une limite d'appels ?
Une clé API peut faire jusqu'à 60 appels par minute. Les endpoints publics sans clé acceptent 60 appels par minute et par IP. Au-delà, vous recevez HTTP 429 : attendez une minute et renvoyez la requête.
À quoi ressemblent les erreurs ?
Un code de statut HTTP, avec un corps JSON contenant un code d'erreur court et un message.
{
"error": {
"code": "insufficient_balance",
"message": "Your balance is too low for this order. Top up in the dashboard."
}
}| HTTP | code | Signification |
|---|---|---|
| bad_requestHTTP 400Une valeur obligatoire manque, ou la valeur n'est pas valide pour ce produit. | Une valeur obligatoire manque, ou la valeur n'est pas valide pour ce produit. | |
| unauthorizedHTTP 401La clé API est absente ou ne correspond pas. | La clé API est absente ou ne correspond pas. | |
| insufficient_balanceHTTP 402Votre solde est inférieur au total de la commande. Rien n'a été débité. | Votre solde est inférieur au total de la commande. Rien n'a été débité. | |
| not_foundHTTP 404Aucune commande avec cet id sur votre compte. | Aucune commande avec cet id sur votre compte. | |
| rate_limitedHTTP 429Trop de requêtes en une minute. | Trop de requêtes en une minute. | |
| server_errorHTTP 500Le serveur n'a pas pu terminer la requête. Rien n'a été débité. | Le serveur n'a pas pu terminer la requête. Rien n'a été débité. |
Endpoints
Obtenir le compte
GET/api/v1/accountClé API requise
Renvoie votre solde, l'hôte et les ports proxy, l'identifiant et le mot de passe proxy, ainsi que vos IP autorisées.
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"
]
}Obtenir les produits et les prix
GET/api/v1/productsSans clé
Renvoie la plage de commande de chaque produit, le prix par palier de quantité et les remises sur la durée, à partir de la même grille que la page des tarifs.
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",
"...": "..."
}
]
}Lister les pays et les villes
GET/api/v1/countriesSans clé
Renvoie les pays disponibles pour chaque produit, ainsi que les valeurs de ville pour l'option -city- du nom d'utilisateur.
| Champ | Type | Signification |
|---|---|---|
productFacultatif | string | L'une des valeurs unlimited, residential, isp, datacenter. Par défaut : 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"
}
]
}
]
}Obtenir un devis
POST/api/v1/quoteSans clé
Calcule le total de la commande sans toucher à votre solde. Envoyez le même corps que pour la commande.
| Champ | Type | Signification |
|---|---|---|
productObligatoire | string | L'une des valeurs unlimited, residential, isp, datacenter. |
quantityObligatoire | integer | Jours pour unlimited (1~365), GB pour residential (5~5,000), nombre d'IP pour isp (1~1,000) ou datacenter (5~5,000). |
concurrencyFacultatif | integer | Unlimited uniquement. L'une des valeurs 200, 500, 1000, 2000. |
bandwidthFacultatif | integer | Unlimited uniquement, en Mbps. L'une des valeurs 100, 200, 500, 1000. |
monthsFacultatif | integer | isp et datacenter uniquement. L'une des valeurs 1, 3, 6, 12. |
countryFacultatif | string | isp et datacenter uniquement. Un code pays à deux lettres, par exemple jp. Consultez /countries pour les valeurs valides. |
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
}Créer une commande
POST/api/v1/ordersClé API requise
Débite le total de votre solde et crée la commande. Le statut commence à pending (en activation) et passe à active quand la commande est prête. Si elle ne peut pas être activée, elle passe à refunded et le montant total revient sur votre solde. Un solde insuffisant renvoie 402.
| Champ | Type | Signification |
|---|---|---|
productObligatoire | string | L'une des valeurs unlimited, residential, isp, datacenter. |
quantityObligatoire | integer | Jours pour unlimited (1~365), GB pour residential (5~5,000), nombre d'IP pour isp (1~1,000) ou datacenter (5~5,000). |
concurrencyFacultatif | integer | Unlimited uniquement. L'une des valeurs 200, 500, 1000, 2000. |
bandwidthFacultatif | integer | Unlimited uniquement, en Mbps. L'une des valeurs 100, 200, 500, 1000. |
monthsFacultatif | integer | isp et datacenter uniquement. L'une des valeurs 1, 3, 6, 12. |
countryFacultatif | string | isp et datacenter uniquement. Un code pays à deux lettres, par exemple jp. Consultez /countries pour les valeurs valides. |
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
}Lister les commandes
GET/api/v1/ordersClé API requise
Renvoie jusqu'à 100 commandes, les plus récentes en premier.
| Champ | Type | Signification |
|---|---|---|
statusFacultatif | string | L'une des valeurs pending, active, refunded. Laissez vide pour tous les statuts. |
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"
}
]
}Obtenir une commande
GET/api/v1/orders/{id}Clé API requise
Renvoie une commande à partir de son id. Utile pour savoir si l'activation est terminée.
| Champ | Type | Signification |
|---|---|---|
idObligatoire | string | L'id de la commande, par exemple 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"
}
}Générer un identifiant proxy
GET/api/v1/proxy-userClé API requise
Renvoie un identifiant proxy avec vos options intégrées, ainsi que des URL HTTP et SOCKS5 prêtes à coller. Sans session, chaque requête reçoit une nouvelle IP.
| Champ | Type | Signification |
|---|---|---|
productFacultatif | string | L'une des valeurs unlimited, residential, isp, datacenter. Par défaut : unlimited. |
countryFacultatif | string | Un code pays à deux lettres, par exemple jp. |
cityFacultatif | string | Une valeur de ville issue de /countries, par exemple tokyo. Nécessite country. |
sessionFacultatif | string | 1~32 lettres ou chiffres. Les requêtes avec la même session partagent une IP. |
ttlFacultatif | integer | Minutes pendant lesquelles la session garde l'IP, de 1~60. Par défaut : 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"
}Exemple complet
Un seul script qui obtient un devis, commande avec votre solde et se connecte via une IP japonaise.
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);Les commandes passées via l'API sont traitées comme celles du tableau de bord et apparaissent dans l'onglet Historique. Remplacez spk_your_api_key dans les exemples par votre propre clé.