Vous débutez ? Suivez ces étapes
- 1Inscrivez-vous avec un email et un mot de passe, ou avec un jeton, puis ouvrez le tableau de bord.
- 2Créez une clé API dans l'onglet Connexion. La clé complète n'apparaît qu'une fois, au moment de sa création : enregistrez-la tout de suite.
- 3Placez la clé dans l'en-tête Authorization de chaque requête qui en a besoin.
- 4Appelez d'abord /account pour vérifier que la clé est acceptée, puis passez vos commandes avec /orders.
Comment fonctionne l'authentification ?
Les requêtes qui concernent votre propre compte (account, orders, proxy-user) nécessitent une clé API. Envoyez-la dans l'en-tête sous la forme Authorization: Bearer pwk_... Les prix, pays et devis sont publics et accessibles sans clé.
Les serveurs ProxyWorld ne stockent jamais la clé elle-même, seulement son hash. Si vous perdez une clé, créez-en une nouvelle dans le tableau de bord : l'ancienne est bloquée aussitôt. Utilisez les clés uniquement dans du code côté serveur. Si une clé se retrouve dans du code exécuté dans un navigateur ou dans un dépôt public, quelqu'un d'autre peut l'utiliser.
Authorization: Bearer pwk_your_api_key
URL de base et format des données
- URL de base
- https://proxyworld.shop/api/v1
- Corps des requêtes et réponses
- application/json
- Montants
- En USD, sous forme de nombre, par exemple 1058.50
- Horodatages
- ISO 8601 (UTC)
Combien d'appels puis-je faire ?
Chaque clé API peut faire 60 appels par minute. Les endpoints publics appelés sans clé acceptent 60 appels par minute pour chaque IP. Au-delà, vous recevez HTTP 429. Attendez environ une minute, puis réessayez.
Que reçoit-on en cas d'échec ?
Vous recevez un code de statut HTTP et un corps JSON avec un code d'erreur court et une explication.
{
"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 une valeur envoyée n'est pas acceptée pour ce produit. | Une valeur obligatoire manque, ou une valeur envoyée n'est pas acceptée pour ce produit. | |
| unauthorizedHTTP 401La clé API est absente ou n'est pas valide. | La clé API est absente ou n'est pas valide. | |
| insufficient_balanceHTTP 402Votre solde est inférieur au total de la commande. Rien n'a été débité de votre solde. | Votre solde est inférieur au total de la commande. Rien n'a été débité de votre solde. | |
| not_foundHTTP 404Votre compte n'a aucune commande avec ce numéro. | Votre compte n'a aucune commande avec ce numéro. | |
| rate_limitedHTTP 429Vous avez dépassé le nombre d'appels autorisés par minute. | Vous avez dépassé le nombre d'appels autorisés par minute. | |
| server_errorHTTP 500Le serveur n'a pas pu terminer la requête. Rien n'a été débité de votre solde. | Le serveur n'a pas pu terminer la requête. Rien n'a été débité de votre solde. |
Endpoints
Consulter votre compte
GET/api/v1/accountClé API requise
Renvoie votre mode de connexion (login : email ou token), votre email, votre solde, l'hôte et les ports proxy, l'identifiant et le mot de passe proxy, ainsi que les IP autorisées. Pour les comptes créés avec un jeton, email vaut null.
curl https://proxyworld.shop/api/v1/account \ -H "Authorization: Bearer pwk_your_api_key"
{
"login": "email",
"email": "you@example.com",
"balance_usd": 1300,
"proxy": {
"host": "gate.proxyworld.shop",
"http_port": 6100,
"socks5_port": 6200,
"username": "pwexample1",
"password": "your_password"
},
"allowed_ips": [
"203.0.113.10"
]
}Consulter les produits et les prix
GET/api/v1/productsFonctionne sans clé
Renvoie la plage de commande de chaque produit, le prix unitaire par palier de quantité et les remises sur la durée. Utilise la même grille que la page des tarifs.
curl https://proxyworld.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",
"...": "..."
}
]
}Pays et villes
GET/api/v1/countriesFonctionne sans clé
Renvoie les pays disponibles pour chaque produit, avec les valeurs de ville à utiliser dans l'option -city- de l'identifiant.
| Nom | Type | Signification |
|---|---|---|
productFacultatif | string | L'une des valeurs unlimited, residential, isp, datacenter. Si absent, residential est utilisé. |
curl "https://proxyworld.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/quoteFonctionne sans clé
Calcule le total de la commande sans toucher à votre solde. Envoyez le même corps que pour passer la commande.
| Nom | Type | Signification |
|---|---|---|
productObligatoire | string | L'une des valeurs unlimited, residential, isp, datacenter. |
quantityObligatoire | integer | Quantité à commander : 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. Choisissez parmi 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. Les valeurs acceptées sont listées dans /countries. |
curl -X POST https://proxyworld.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.05,
"unit": "day",
"total_usd": 241.5
}Passer une commande
POST/api/v1/ordersClé API requise
Débite le total de votre solde et crée la commande. Elle commence en pending (en activation) et passe à active une fois prête. Une commande qui ne peut pas être activée passe à refunded, et tout ce que vous avez payé revient sur votre solde. Si votre solde est insuffisant, vous recevez 402.
| Nom | Type | Signification |
|---|---|---|
productObligatoire | string | L'une des valeurs unlimited, residential, isp, datacenter. |
quantityObligatoire | integer | Quantité à commander : 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. Choisissez parmi 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. Les valeurs acceptées sont listées dans /countries. |
curl -X POST https://proxyworld.shop/api/v1/orders \
-H "Authorization: Bearer pwk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"product":"unlimited","quantity":30,"concurrency":1000,"bandwidth":200}'{
"order": {
"id": "PW-7KQ2M-X4HTD",
"product": "unlimited",
"quantity": 30,
"months": null,
"concurrency": 1000,
"bandwidth_mbps": 200,
"country": null,
"unit_price_usd": 8.05,
"total_usd": 241.5,
"status": "pending",
"created_at": "2026-10-31T09:12:44.120Z",
"updated_at": "2026-10-31T09:12:44.120Z"
},
"balance_usd": 1058.5
}Consulter vos commandes
GET/api/v1/ordersClé API requise
Affiche jusqu'à 100 commandes, des plus récentes aux plus anciennes.
| Nom | Type | Signification |
|---|---|---|
statusFacultatif | string | L'une des valeurs pending, active, refunded. Sans ce paramètre, les commandes de tous statuts sont renvoyées. |
curl "https://proxyworld.shop/api/v1/orders?status=pending" \ -H "Authorization: Bearer pwk_your_api_key"
{
"orders": [
{
"id": "PW-7KQ2M-X4HTD",
"product": "unlimited",
"quantity": 30,
"months": null,
"concurrency": 1000,
"bandwidth_mbps": 200,
"country": null,
"unit_price_usd": 8.05,
"total_usd": 241.5,
"status": "pending",
"created_at": "2026-10-31T09:12:44.120Z",
"updated_at": "2026-10-31T09:12:44.120Z"
}
]
}Consulter une commande
GET/api/v1/orders/{id}Clé API requise
Renvoie la commande correspondant à un numéro de commande. Pratique pour vérifier si l'activation est terminée.
| Nom | Type | Signification |
|---|---|---|
idObligatoire | string | Le numéro de commande, par exemple PW-7KQ2M-X4HTD. |
curl https://proxyworld.shop/api/v1/orders/PW-7KQ2M-X4HTD \ -H "Authorization: Bearer pwk_your_api_key"
{
"order": {
"id": "PW-7KQ2M-X4HTD",
"product": "unlimited",
"quantity": 30,
"months": null,
"concurrency": 1000,
"bandwidth_mbps": 200,
"country": null,
"unit_price_usd": 8.05,
"total_usd": 241.5,
"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, ainsi que des URL HTTP et SOCKS5 à coller telles quelles. Si vous n'envoyez pas session, l'IP change à chaque requête.
| Nom | Type | Signification |
|---|---|---|
productFacultatif | string | L'une des valeurs unlimited, residential, isp, datacenter. Si absent, unlimited est utilisé. |
countryFacultatif | string | Un code pays à deux lettres, par exemple jp. |
cityFacultatif | string | Une valeur de ville listée dans /countries, par exemple tokyo. Envoyez aussi country. |
sessionFacultatif | string | 1~32 lettres et chiffres. Les requêtes avec la même session utilisent la même IP. |
ttlFacultatif | integer | Durée pendant laquelle la session garde son IP, de 1~60 minutes. Si absent, 30 minutes. |
curl "https://proxyworld.shop/api/v1/proxy-user?product=residential&country=jp&city=tokyo&session=job42&ttl=30" \ -H "Authorization: Bearer pwk_your_api_key"
{
"username": "pwexample1-zone-res-cc-jp-city-tokyo-sid-job42-ttl-30",
"password": "your_password",
"http": "http://pwexample1-zone-res-cc-jp-city-tokyo-sid-job42-ttl-30:your_password@gate.proxyworld.shop:6100",
"socks5": "socks5h://pwexample1-zone-res-cc-jp-city-tokyo-sid-job42-ttl-30:your_password@gate.proxyworld.shop:6200"
}Exemple complet
Un seul script qui obtient un devis, commande avec votre solde, puis se connecte via une IP au Japon.
import requests
API = "https://proxyworld.shop/api/v1"
HEAD = {"Authorization": "Bearer pwk_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://proxyworld.shop/api/v1";
const HEAD = { Authorization: "Bearer pwk_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 avec les autres dans l'onglet Historique. Remplacez pwk_your_api_key dans les exemples par votre propre clé API.