documentación pública

API Referencia

Automatiza la compra y renovación de proxies.

Gestionar claves
Referencia
es

Introducción

Interfaz programática para listar planes, consultar suscripciones, comprar nuevos proxies, renovar suscripciones activas y configurar la rotación automática de IP.

La API usa un único endpoint: /api/proxy. En operaciones GET, pasa op en la query string; en operaciones POST, pasa op en el JSON body.

Inicio rápido

Crea una API key en Dashboard -> API Keys y envíala en el encabezado de cada solicitud.

BASE="https://makeadsafe.com"
API_KEY="rk_your_long_lived_api_key"

Todos los ID son valores alfanuméricos en minúsculas.

La emisión de pruebas mediante POST /api/proxy con {"op":"trial","planId":"..."} solo está disponible para determinadas API keys. Contacta con soporte para habilitar esta capacidad en tu clave. El uso de pruebas se supervisa y puede limitarse o deshabilitarse en caso de abuso.

Planes disponibles

Devuelve los planes de proxy activos disponibles para el propietario de la API key.

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"
      }
    }
  ]
}

Suscripciones activas

Devuelve tus suscripciones, incluidas credenciales, URL de protocolos y datos de rotación de 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
      }
    }
  ]
}

Planes de renovación

Devuelve los planes elegibles para renovar una suscripcion especifica.

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
    }
  ]
}

Redes disponibles

Devuelve las redes disponibles para cambiar una suscripción específica.

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"
    }
  ]
}

Usa networks[].id como targetNetwork en la solicitud switch-network.

Compra de suscripción

Crea una o varias suscripciones nuevas usando tu saldo con el plan seleccionado.

Campos opcionales:

  • couponCode: aplica un cupón válido a la compra.
  • repeatCount: entero positivo, valor por defecto 1; multiplica la duración y el precio de cada suscripción creada.
  • quantity: entero positivo, valor por defecto 1; crea varias suscripciones en una sola solicitud.
  • os: huella pasiva del sistema operativo aplicada a todos los proxies creados; ios, macos, android, win10 o win11. No disponible para planes multi.
{
  "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 se crea una sola suscripción, el gateway puede devolver subscription en lugar de subscriptions. Los elementos de subscription/subscriptions usan la misma estructura que GET /api/proxy?op=subscriptions.

Renovación de suscripción

Renueva una suscripción existente con un plan de renovación elegible.

Campos opcionales:

  • couponCode: aplica un cupón válido a la renovación.
  • repeatCount: entero positivo, valor por defecto 1; multiplica tanto la duración como el precio de la renovación.
{
  "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
}

Cambiar credenciales de conexión

Regenera las credenciales de conexión para una suscripción activa del propietario autenticado (JWT) o del propietario de la API key.

{
  "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"
}

Configurar política de auto-rotación

Configura la rotación automática de IP para una suscripción activa. Disponible solo para conexiones con "rotate": { "available": true }.

Valores permitidos para rotationPolicy: 0, 5, 10, 15, 30, 60 minutos. Usa 0 para desactivar la auto-rotación.

{
  "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
}

Cambiar red de conexión

Mueve una suscripción activa a otra red 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
    }
  }
}

Errores de gateway

  • 400 JSON body inválido
  • 400 El body debe ser un objeto
  • 400 op faltante o desconocido
  • 400 planId/subscriptionId/targetNetwork/rotationPolicy faltante o inválido
  • 400 repeatCount o quantity inválido
  • 400 os inválido
  • 401 Unauthorized
  • 402 Saldo insuficiente
  • 403 Forbidden
  • 404 Suscripción no encontrada
  • 409 La política de rotación no está disponible para esta suscripción
  • 409 Sin stock, plan/red inactivos o estado de suscripción no válido
  • 409 La selección de sistema operativo no está disponible para planes multi
  • 429 Rate limited
  • 500 Internal error