Aller au contenu
royalproxy

Documentation de l'API proxy

Utilisez l'API REST RoyalProxy pour lire votre solde et vos informations de connexion, consulter les prix, passer des commandes depuis votre solde et générer des identifiants proxy depuis votre propre code.

Comment commencer ?

  1. 1Inscrivez-vous et connectez-vous au tableau de bord.
  2. 2Ouvrez Connexion et créez une clé API. La clé complète ne s'affiche qu'une seule fois : copiez-la dans un endroit sûr.
  3. 3Envoyez la clé dans l'en-tête Authorization avec chaque requête qui en a besoin.
  4. 4Appelez /account pour vérifier que la clé fonctionne, puis passez vos commandes avec /orders.

Comment fonctionne l'authentification ?

Les requêtes concernant votre propre compte (account, orders, proxy-user) nécessitent une clé API. Envoyez-la comme jeton Bearer dans l'en-tête Authorization. Les prix, les pays et les devis sont publics et ne demandent pas de clé.

Nous ne conservons qu'un hash de la clé. Si vous la perdez, créez-en une nouvelle dans le tableau de bord et l'ancienne cesse aussitôt de fonctionner. Ne mettez pas la clé dans du code côté navigateur ni dans des dépôts publics.

HTTP header
Authorization: Bearer rpk_your_api_key

URL de base et format

URL de base
https://royalproxy.online/api/v1
Corps de requête et de réponse
application/json
Montants
Nombres en USD, par exemple 807.90
Heure
ISO 8601 (UTC)

Y a-t-il une limite d'appels ?

Chaque clé API peut envoyer jusqu'à 60 requêtes par minute. Les endpoints publics acceptent 60 requêtes par minute et par IP. Au-delà, vous recevez une erreur HTTP 429 : attendez une minute et réessayez.

À quoi ressemblent les erreurs ?

Les erreurs utilisent le code de statut HTTP et un corps JSON avec un code court et un message.

Exemple
{
  "error": {
    "code": "insufficient_balance",
    "message": "Your balance is too low for this order. Top up in the dashboard."
  }
}
code
bad_requestHTTP 400Une valeur manque ou n'est pas autorisée pour ce produit.
unauthorizedHTTP 401La clé API est absente ou invalide.
insufficient_balanceHTTP 402Le 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.
rate_limitedHTTP 429Trop de requêtes en une minute.
server_errorHTTP 500La requête n'a pas pu aboutir. Rien n'a été débité.

Endpoints

Obtenir votre compte

GET/api/v1/accountClé API

Renvoie votre solde, l'hôte proxy, les ports, le nom d'utilisateur et le mot de passe, ainsi que les IP autorisées.

Requête
curl https://royalproxy.online/api/v1/account \
  -H "Authorization: Bearer rpk_your_api_key"
Réponse
{
  "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"
  ]
}

Lister les produits et les prix

GET/api/v1/productsSans clé

Renvoie chaque produit avec ses limites, ses paliers de prix et ses remises. Les prix viennent du même tableau que la page des tarifs.

Requête
curl https://royalproxy.online/api/v1/products
Réponse
{
  "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 un produit, avec les valeurs de ville à mettre dans l'identifiant proxy.

ChampSignification
productFacultatifunlimited, residential, isp ou datacenter. Par défaut residential.
Requête
curl "https://royalproxy.online/api/v1/countries?product=datacenter"
Réponse
{
  "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 d'une commande sans rien débiter. Utilisez le même corps que pour passer une commande.

ChampSignification
productObligatoireunlimited, residential, isp ou datacenter.
quantityObligatoireJours pour unlimited (1~365), GB pour residential (5~5,000), IP pour isp (1~1,000) ou datacenter (5~5,000).
concurrencyFacultatifIllimité uniquement : 200, 500, 1000 ou 2000.
bandwidthFacultatifIllimité uniquement, en Mbps : 100, 200, 500 ou 1000.
monthsFacultatifisp et datacenter uniquement : 1, 3, 6 ou 12.
countryFacultatifisp et datacenter uniquement : code pays de deux lettres, par exemple jp. Voir /countries.
Requête
curl -X POST https://royalproxy.online/api/v1/quote \
  -H "Content-Type: application/json" \
  -d '{"product":"unlimited","quantity":30,"concurrency":1000,"bandwidth":200}'
Réponse
{
  "product": "unlimited",
  "quantity": 30,
  "unit_price_usd": 8.97,
  "unit": "day",
  "total_usd": 269.1
}

Passer une commande

POST/api/v1/ordersClé API

Prélève le total sur votre solde et crée la commande. Les nouvelles commandes commencent en pending (en activation) et passent en active quand elles sont prêtes. Si une commande ne peut pas être activée, elle passe en refunded et le montant total revient sur votre solde. Renvoie 402 quand le solde est insuffisant.

ChampSignification
productObligatoireunlimited, residential, isp ou datacenter.
quantityObligatoireJours pour unlimited (1~365), GB pour residential (5~5,000), IP pour isp (1~1,000) ou datacenter (5~5,000).
concurrencyFacultatifIllimité uniquement : 200, 500, 1000 ou 2000.
bandwidthFacultatifIllimité uniquement, en Mbps : 100, 200, 500 ou 1000.
monthsFacultatifisp et datacenter uniquement : 1, 3, 6 ou 12.
countryFacultatifisp et datacenter uniquement : code pays de deux lettres, par exemple jp. Voir /countries.
Requête
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}'
Réponse
{
  "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
}

Lister vos commandes

GET/api/v1/ordersClé API

Renvoie vos 100 dernières commandes, de la plus récente à la plus ancienne.

ChampSignification
statusFacultatifpending, active ou refunded. Laissez vide pour tout obtenir.
Requête
curl "https://royalproxy.online/api/v1/orders?status=pending" \
  -H "Authorization: Bearer rpk_your_api_key"
Réponse
{
  "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"
    }
  ]
}

Obtenir une commande

GET/api/v1/orders/{id}Clé API

Renvoie une commande à partir de son id, par exemple pour vérifier si elle est active.

ChampSignification
idObligatoireL'id de la commande, par exemple RP-7KQ2M-X4HTD.
Requête
curl https://royalproxy.online/api/v1/orders/RP-7KQ2M-X4HTD \
  -H "Authorization: Bearer rpk_your_api_key"
Réponse
{
  "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"
  }
}

Générer un identifiant proxy

GET/api/v1/proxy-userClé API

Renvoie un identifiant proxy avec vos options, ainsi que des URL de proxy HTTP et SOCKS5 prêtes à l'emploi. Sans session, l'IP change à chaque requête.

ChampSignification
productFacultatifunlimited, residential, isp ou datacenter. Par défaut unlimited.
countryFacultatifCode pays de deux lettres, par exemple jp.
cityFacultatifValeur de ville issue de /countries, par exemple tokyo. Nécessite country.
sessionFacultatifDe 1~32 lettres ou chiffres au choix. Les requêtes avec la même session gardent la même IP.
ttlFacultatifMinutes pendant lesquelles l'IP de session est conservée, 1~60. Par défaut 30.
Requête
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"
Réponse
{
  "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"
}

Exemples complets

Ces exemples vérifient le prix, commandent depuis le solde et se connectent via une IP japonaise.

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);

Les commandes passées via l'API sont identiques à celles du tableau de bord et apparaissent dans Historique. Remplacez rpk_your_api_key par votre propre clé.

Connectez RoyalProxy à votre propre système

Créez un compte, puis générez une clé API dans le tableau de bord.