API Référence
Automatisez les achats et renouvellements de proxys.
Introduction
Interface programmatique pour lister les plans, consulter les abonnements, acheter de nouveaux proxys, renouveler les abonnements actifs et configurer la rotation IP automatique.
L’API utilise un endpoint unique : /api/proxy. Pour les opérations GET, transmettez op dans la query string ; pour les opérations POST, transmettez op dans le JSON body.
Démarrage rapide
Créez une clé API dans Dashboard -> API Keys et envoyez-la dans l’en-tête de chaque requête.
BASE="https://makeadsafe.com"
API_KEY="rk_your_long_lived_api_key" Tous les ID sont alphanumériques en minuscules.
L’émission d’essai via
POST /api/proxyavec{"op":"trial","planId":"..."}est disponible uniquement pour certaines clés API. Contactez le support pour activer cette capacité sur votre clé. L’usage d’essai est surveillé et peut être limité ou désactivé en cas d’abus.
Plans disponibles
Retourne les plans proxy actifs disponibles pour le propriétaire de la clé API.
curl -sS
-H "x-api-key: $API_KEY"
"$BASE/api/proxy?op=plans" {
"ok": true,
"plans": [
{
"id": "k17m3q5v7n9p1r2t4w6y8z0a",
"connectionType": "private",
"durationMs": 2592000000,
"priceAmountCents": 1200,
"popular": true,
"remainingProxies": 20,
"network": {
"name": "NL-AMS",
"city": "Amsterdam",
"country": "NL",
"networkType": "mobile"
}
}
]
} Abonnements actifs
Retourne vos abonnements, y compris les identifiants, les URL de protocole et les données de rotation IP.
curl -sS
-H "x-api-key: $API_KEY"
"$BASE/api/proxy?op=subscriptions" {
"ok": true,
"subscriptions": [
{
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"status": "active",
"activeUntil": 1762592000000,
"userNote": "Client A",
"rotationPolicy": 10,
"label": "12001 - NL - Private",
"networkLabel": "NL-AMS Amsterdam",
"credentials": {
"username": "u_6k8s9d",
"password": "p_2n4m6q"
},
"protocols": {
"http": "http://u_6k8s9d:[email protected]:12001",
"socks5": "socks5://u_6k8s9d:[email protected]:12001",
"vless": "vless://...",
"shadowsocks": "ss://..."
},
"rotate": {
"rotatePath": "/r/abcd1234",
"available": true
}
}
]
} Plans de renouvellement
Retourne les plans éligibles pour renouveler un abonnement spécifique.
SUB_ID="j97b2f6m1k4n8p3r5t7v9x0z"
curl -sS
-H "x-api-key: $API_KEY"
"$BASE/api/proxy?op=renewal-plans&subscriptionId=$SUB_ID" {
"ok": true,
"renewalPlans": [
{
"id": "k17m3q5v7n9p1r2t4w6y8z0a",
"connectionType": "private",
"durationMs": 2592000000,
"priceAmountCents": 1200
}
]
} Réseaux disponibles
Retourne les réseaux disponibles pour changer un abonnement spécifique.
SUB_ID="j97b2f6m1k4n8p3r5t7v9x0z"
curl -sS
-H "x-api-key: $API_KEY"
"$BASE/api/proxy?op=available-networks&subscriptionId=$SUB_ID" {
"ok": true,
"networks": [
{
"id": "b1c2d3e4f5g6h7j8k9m0n1p2",
"networkLabel": "DE-BER Berlin",
"country": "DE"
}
]
} Utilisez networks[].id comme targetNetwork dans la requête switch-network.
Achat d’abonnement
Crée un ou plusieurs nouveaux abonnements à partir de votre solde avec le plan sélectionné.
Champs optionnels :
couponCode: applique un coupon valide à l’achat.repeatCount: entier positif, valeur par défaut1; multiplie la durée et le prix de chaque abonnement créé.quantity: entier positif, valeur par défaut1; crée plusieurs abonnements dans une seule requête.os: empreinte passive du système d’exploitation appliquée à tous les proxys créés ;ios,macos,android,win10ouwin11. Indisponible pour les offresmulti.
{
"op": "purchase",
"planId": "k17m3q5v7n9p1r2t4w6y8z0a",
"couponCode": "MYCODE",
"repeatCount": 3,
"os": "ios",
"quantity": 2
} curl -sS -X POST
-H "x-api-key: $API_KEY"
-H "Content-Type: application/json"
-d '{"op":"purchase","planId":"k17m3q5v7n9p1r2t4w6y8z0a","repeatCount":3,"os":"ios","quantity":2}'
"$BASE/api/proxy" {
"ok": true,
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"subscriptionIds": [
"j97b2f6m1k4n8p3r5t7v9x0z",
"n38k2f6m1k4n8p3r5t7v9x0z"
],
"subscriptions": [
{
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"status": "active",
"activeUntil": 1767776000000,
"label": "12001 - NL - Private",
"networkLabel": "NL-AMS Amsterdam"
},
{
"subscriptionId": "n38k2f6m1k4n8p3r5t7v9x0z",
"status": "active",
"activeUntil": 1767776000000,
"label": "12002 - NL - Private",
"networkLabel": "NL-AMS Amsterdam"
}
]
} Si un seul abonnement est créé, la passerelle peut renvoyer subscription au lieu de subscriptions. Les éléments de subscription/subscriptions utilisent la même structure que GET /api/proxy?op=subscriptions.
Renouvellement d’abonnement
Renouvelle un abonnement existant avec un plan de renouvellement éligible.
Champs optionnels :
couponCode: applique un coupon valide au renouvellement.repeatCount: entier positif, valeur par défaut1; multiplie à la fois la durée et le prix du renouvellement.
{
"op": "renew",
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"planId": "q2w4e6r8t0y2u4i6o8p0a2s4",
"couponCode": "MYCODE",
"repeatCount": 3
} curl -sS -X POST
-H "x-api-key: $API_KEY"
-H "Content-Type: application/json"
-d '{"op":"renew","subscriptionId":"j97b2f6m1k4n8p3r5t7v9x0z","planId":"q2w4e6r8t0y2u4i6o8p0a2s4","repeatCount":3}'
"$BASE/api/proxy" {
"ok": true,
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"endAt": 1770368000000
} Changer les identifiants de connexion
Régénère les identifiants de connexion d’un abonnement actif appartenant à l’utilisateur authentifié (JWT) ou au propriétaire de la clé API.
{
"op": "change-credentials",
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z"
} curl -sS -X POST
-H "x-api-key: $API_KEY"
-H "Content-Type: application/json"
-d '{"op":"change-credentials","subscriptionId":"j97b2f6m1k4n8p3r5t7v9x0z"}'
"$BASE/api/proxy" {
"ok": true,
"password": "q7N3x9Lp",
"vpn": "7f3d9d4a-8b9f-4a93-9f55-2d5e3b7f1c24"
} Définir la politique de rotation automatique
Configure la rotation IP automatique pour un abonnement actif. Disponible uniquement pour les connexions avec "rotate": { "available": true }.
Valeurs autorisées pour rotationPolicy : 0, 5, 10, 15, 30, 60 minutes. Utilisez 0 pour désactiver la rotation automatique.
{
"op": "set-rotation-policy",
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"rotationPolicy": 10
} curl -sS -X POST
-H "x-api-key: $API_KEY"
-H "Content-Type: application/json"
-d '{"op":"set-rotation-policy","subscriptionId":"j97b2f6m1k4n8p3r5t7v9x0z","rotationPolicy":10}'
"$BASE/api/proxy" {
"ok": true
} Changer le réseau de connexion
Déplace un abonnement actif vers un autre réseau disponible.
{
"op": "switch-network",
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"targetNetwork": "b1c2d3e4f5g6h7j8k9m0n1p2"
} curl -sS -X POST
-H "x-api-key: $API_KEY"
-H "Content-Type: application/json"
-d '{"op":"switch-network","subscriptionId":"j97b2f6m1k4n8p3r5t7v9x0z","targetNetwork":"b1c2d3e4f5g6h7j8k9m0n1p2"}'
"$BASE/api/proxy" {
"ok": true,
"subscription": {
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"status": "active",
"activeUntil": 1762592000000,
"userNote": "Client A",
"rotationPolicy": 10,
"label": "12001 - DE - Private",
"networkLabel": "DE-BER Berlin",
"credentials": {
"username": "u_6k8s9d",
"password": "p_2n4m6q"
},
"protocols": {
"http": "http://u_6k8s9d:[email protected]:12001",
"socks5": "socks5://u_6k8s9d:[email protected]:12001",
"vless": "vless://...",
"shadowsocks": "ss://..."
},
"rotate": {
"rotatePath": "/r/abcd1234",
"available": true
}
}
} Erreurs de passerelle
400JSON body invalide400Le body doit être un objet400opmanquant ou inconnu400planId/subscriptionId/targetNetwork/rotationPolicymanquant ou invalide400repeatCountouquantityinvalide400osinvalide401Unauthorized402Solde insuffisant403Forbidden404Abonnement introuvable409Politique de rotation non disponible pour cet abonnement409Rupture de stock, plan/réseau inactif ou état d’abonnement invalide409La sélection du système d’exploitation n’est pas disponible pour les offresmulti429Rate limited500Internal error