API Справочник
Автоматизируйте покупки и продления прокси.
Введение
Программный интерфейс для списка тарифов, просмотра подписок, покупки новых прокси, продления активных подписок и настройки автоматической ротации 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" Идентификаторы должны быть в нижнем регистре и состоять из букв и цифр.
Пробная выдача через
POST /api/proxyс{"op":"trial","planId":"..."}доступна только для отдельных 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"
}
}
]
} Активные подписки
Возвращает список ваших подписок, учетные данные, протоколы и данные для смены 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
} Смена данных подключения
Обновляет данные доступа для выбранной подписки. Новые данные начинают работать сразу.
{
"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 в body400Body должен быть объектом400Отсутствует или неизвестенop400Отсутствует или невалиденplanId/subscriptionId/targetNetwork/rotationPolicy400НевалидныйrepeatCountилиquantity400Невалидныйos401Unauthorized402Недостаточно средств403Forbidden404Подписка не найдена409Для этой подписки недоступна указанная политика ротации409Нет доступных ресурсов, тариф/сеть неактивны или состояние подписки не подходит409Выбор ОС недоступен для тарифовmulti429Rate limited500Internal error