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" Усі 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 у body400Body має бути об’єктом400Відсутній або невідомийop400Відсутній або неваліднийplanId/subscriptionId/targetNetwork/rotationPolicy400НеваліднийrepeatCountабоquantity400Неваліднийos401Unauthorized402Недостатньо коштів403Forbidden404Підписку не знайдено409Політика ротації недоступна для цієї підписки409Немає доступних ресурсів, тариф/мережа неактивні або стан підписки не підходить409Вибір ОС недоступний для тарифівmulti429Rate limited500Internal error