публічна документація

API Довідник

Автоматизуйте покупки та продовження проксі.

Керувати ключами
Довідник
uk

Вступ

Програмний інтерфейс для перегляду тарифів, перегляду підписок, купівлі нових проксі, продовження активних підписок та налаштування автоматичної ротації IP.

API використовує одну точку входу: /api/proxy. Для GET операцій передавайте op у query string, для POST операцій — у JSON body.

Швидкий старт

Створіть API-ключ у Dashboard -> API Keys і передавайте його в заголовку кожного запиту.

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

Усі ID мають нижній регістр і містять лише букви та цифри.

Пробна видача через POST /api/proxy з {"op":"trial","planId":"..."} доступна лише для окремих API-ключів. Зверніться до підтримки, щоб увімкнути цю можливість для вашого ключа. Використання пробного доступу відстежується і може бути обмежене або вимкнене у разі зловживань.

Доступні тарифи

Повертає активні тарифи проксі, доступні власнику 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"
      }
    }
  ]
}

Активні підписки

Повертає ваші підписки, включно з обліковими даними, URL протоколів і даними ротації 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
      }
    }
  ]
}

Тарифи продовження

Повертає тарифи, які можна використати для продовження конкретної підписки.

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

Доступні мережі

Повертає мережі, доступні для перемикання конкретної підписки.

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

Використовуйте networks[].id як targetNetwork у запиті switch-network.

Оформлення підписки

Створює одну або кілька нових підписок за рахунок вашого балансу за вибраним тарифом.

Необов’язкові поля:

  • couponCode: застосовує валідний купон до покупки.
  • repeatCount: додатне ціле число, типово 1; множить строк і вартість кожної створеної підписки.
  • quantity: додатне ціле число, типово 1; створює кілька підписок за один запит.
  • os: пасивний відбиток ОС для всіх створюваних проксі; одне зі значень: ios, macos, android, win10 або win11. Недоступно для тарифів 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"
    }
  ]
}

Якщо створюється одна підписка, шлюз може повернути subscription замість subscriptions. Елементи в subscription/subscriptions мають ту саму структуру, що й у GET /api/proxy?op=subscriptions.

Продовження підписки

Продовжує наявну підписку за допомогою сумісного тарифу продовження.

Необов’язкові поля:

  • couponCode: застосовує валідний купон до продовження.
  • repeatCount: додатне ціле число, типово 1; множить строк і вартість продовження.
{
  "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
}

Зміна даних підключення

Регенерує дані підключення для активної підписки власника токена (JWT) або 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"
}

Налаштування політики авторотації

Налаштовує автоматичну ротацію IP для активної підписки. Налаштування доступне лише для підключень із "rotate": { "available": true }.

Допустимі значення rotationPolicy: 0, 5, 10, 15, 30, 60 хвилин. Використовуйте 0, щоб вимкнути авторотацію.

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

Зміна мережі підключення

Переміщує активну підписку до іншої доступної мережі.

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

Помилки шлюзу

  • 400 Невалідний JSON у body
  • 400 Body має бути об’єктом
  • 400 Відсутній або невідомий op
  • 400 Відсутній або невалідний planId/subscriptionId/targetNetwork/rotationPolicy
  • 400 Невалідний repeatCount або quantity
  • 400 Невалідний os
  • 401 Unauthorized
  • 402 Недостатньо коштів
  • 403 Forbidden
  • 404 Підписку не знайдено
  • 409 Політика ротації недоступна для цієї підписки
  • 409 Немає доступних ресурсів, тариф/мережа неактивні або стан підписки не підходить
  • 409 Вибір ОС недоступний для тарифів multi
  • 429 Rate limited
  • 500 Internal error