Документация API
Простой REST API, чтобы покупать прокси и управлять ими из кода. Пополни баланс, а дальше создавай заказы, просматривай и выгружай прокси и продлевай их - всё с одним API-ключом.
Версия v1 · Базовый URL https://api.sotaproxy.com/api/v1
Начало работы
- Открой кабинет и перейди в раздел API.
- Создай ключ. Скопируй секрет - он показывается только один раз.
- Передавай ключ с каждым запросом (см. «Аутентификация»).
- Баланс аккаунта предоплаченный: заказы списываются с него, поэтому пополни его в кабинете перед покупкой.
Все тела запросов и ответов - JSON. Все цены - в долларах США.
Аутентификация
Передавай ключ в заголовке Authorization как bearer-токен или в заголовке X-API-Key. Никогда не вставляй ключ в URL.
Authorization: Bearer sk_live_your_key_here
# or
X-API-Key: sk_live_your_key_hereУ ключей могут быть скоупы: read (только чтение) и trade (создание и продление заказов). Ключ без скоупов имеет полный доступ.
curl -H "Authorization: Bearer $KEY" https://api.sotaproxy.com/api/v1/ping
# → {"ok":true,"service":"sotaproxy","version":"v1"}Лимиты запросов
Лимиты действуют на каждый API-ключ (в минуту):
- Чтение (баланс, заказы, прокси): 120 / мин
- Каталог и расчёт цены: 60 / мин
- Заказы и продления: 20 / мин
При превышении лимита вернётся HTTP 429.
Идемпотентность
Запросы, которые двигают деньги (создание заказа, продление прокси), требуют заголовок Idempotency-Key - любую уникальную строку на попытку (до 128 символов). Если запрос повторён с тем же ключом, вернётся исходный результат вместо повторного списания. В повторном ответе будет "idempotentReplay": true.
Ошибки
Ошибки возвращают соответствующий HTTP-статус и JSON-тело: {"error":{"code":"...","message":"..."}}.
| Статус | Значение |
|---|---|
| 400 | Неверные параметры запроса |
| 401 | API-ключ отсутствует или неверен |
| 402 | Недостаточно средств на балансе |
| 403 | У API-ключа нет нужного скоупа |
| 404 | Ресурс не найден |
| 409 | Идемпотентный ключ уже обрабатывается |
| 429 | Превышен лимит запросов |
| 500 / 502 | Временная ошибка сервера или апстрима - повтори чуть позже |
Эндпоинты
Продукты - ipv4, ipv6 и isp. У каждого продукта свой список ID стран и сроков аренды - всегда бери их из /products. У IPv6 минимальное количество 10, и он работает по ОДНОМУ протоколу, который выбирается при заказе полем protocol (по умолчанию HTTPS, или SOCKS5) - выданный прокси открывает только соответствующий порт (portHttp или portSocks; второй - null).
Список продуктов
Возвращает доступные продукты со странами и сроками аренды. Цены зависят от аккаунта - за ценой обращайся к /quote.
curl -H "Authorization: Bearer $KEY" https://api.sotaproxy.com/api/v1/products{
"products": [
{
"product": "ipv4",
"unit": "proxy",
"countries": [ { "id": 565, "name": "US", "alpha3": null }, ... ],
"periods": [
{ "id": "1m", "name": "1 month", "days": 30 },
{ "id": "2m", "name": "2 months", "days": 60 }, ...
]
}
]
}Расчёт цены заказа
Возвращает точную цену для заданных продукта, страны, срока и количества - без покупки.
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"product":"ipv4","countryId":565,"periodId":"1m","quantity":5}' \
https://api.sotaproxy.com/api/v1/quote{
"product": "ipv4", "countryId": 565, "periodId": "1m", "quantity": 5,
"unitPrice": 1.8, "total": 9, "currency": "USD",
"balance": 42.5, "sufficientBalance": true
}Создание заказа
Покупает и выдаёт прокси, списывая деньги с баланса. Требует скоуп trade и заголовок Idempotency-Key. Необязательные поля тела: purpose (заметка о назначении) и protocol (HTTPS или SOCKS5).
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: your-unique-id" \
-d '{"product":"ipv4","countryId":565,"periodId":"1m","quantity":5}' \
https://api.sotaproxy.com/api/v1/orders{
"order": {
"id": "31307ef6-6ee4-4ec7-8a78-e5bd6ee52b9b",
"product": "ipv4", "country": "US", "periodId": "1m",
"quantity": 5, "total": 9, "currency": "USD",
"status": "completed", "createdAt": "2026-07-24T23:11:03.617Z"
},
"idempotentReplay": false
}Заметка: прокси нового заказа могут появиться через несколько минут (особенно IPv6). Опрашивай /orders/{id}/proxies, пока они не вернутся.
Список и чтение заказов
Список твоих заказов (с пагинацией: ?page, ?limit) или чтение одного заказа по id.
curl -H "Authorization: Bearer $KEY" "https://api.sotaproxy.com/api/v1/orders?limit=20"
curl -H "Authorization: Bearer $KEY" https://api.sotaproxy.com/api/v1/orders/ORDER_IDПрокси заказа
Возвращает выданные прокси заказа. Добавь ?format=txt для строк вида ip:port:login:password.
curl -H "Authorization: Bearer $KEY" \
"https://api.sotaproxy.com/api/v1/orders/ORDER_ID/proxies?format=txt"{
"proxies": [
{
"id": "e8c2...", "product": "ipv4", "ip": "23.165.240.2",
"portHttp": 11565, "portSocks": null,
"login": "user", "password": "pass",
"country": "US", "status": "active",
"expiresAt": "2026-07-31T00:00:00.000Z"
}
]
}Все прокси
Возвращает все активные прокси аккаунта. Фильтруй по продукту через ?product=ipv4.
curl -H "Authorization: Bearer $KEY" "https://api.sotaproxy.com/api/v1/proxies?product=ipv4"Расчёт цены продления
Возвращает точную цену продления заказа прокси на заданный срок без списания - покажи её перед подтверждением. Как и само продление, это уровень заказа: proxiesRenewed - весь заказ, а price покрывает их все. Query-параметр periodId - один из 1m, 3m, 6m, 12m (по умолчанию 1m). Idempotency-Key не нужен.
curl -H "Authorization: Bearer $KEY" \
"https://api.sotaproxy.com/api/v1/proxies/PROXY_ID/renew-quote?periodId=1m"{
"proxyId": "2364b03b-...", "periodId": "1m",
"proxiesRenewed": 10, "price": 2, "currency": "USD",
"newExpiresAt": "2026-10-01T00:00:00.000Z"
}Продление прокси заказа
Продлевает прокси - продление работает на уровне заказа: продлевая один прокси, ты продлеваешь все прокси из того же заказа, и списание покрывает их все. Требует скоуп trade и Idempotency-Key. Поле тела periodId - один из 1m, 3m, 6m, 12m.
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: renew-unique-id" \
-d '{"periodId":"1m"}' \
https://api.sotaproxy.com/api/v1/proxies/PROXY_ID/renew{
"proxyId": "2364b03b-...", "newExpiresAt": "2026-10-01T00:00:00.000Z",
"amountCharged": 2, "proxiesRenewed": 10, "currency": "USD",
"idempotentReplay": false
}Резидентские прокси (трафик)
Резидентские устроены иначе, чем продукты со сроком: ты покупаешь пакет трафика в ГБ, а затем создаёшь внутри него один или несколько эндпоинтов. Каждый эндпоинт закрепляет необязательный гео-таргетинг (страна / регион / город / провайдер) и ротацию и возвращает готовые данные для подключения к шлюзу. Трафик списывается из пакета по мере использования эндпоинтов.
1. Тарифы - GET /residential/plans показывает пакеты ГБ с ценами твоего аккаунта (контрактная цена за ГБ применяется автоматически).
2. Гео-каталог - GET /residential/locations возвращает страны; добавь ?country=AT для регионов, городов и провайдеров.
3. Покупка пакета - требует скоуп trade и Idempotency-Key:
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: res-unique-id" \
-d '{"planId":"ind_3gb"}' \
https://api.sotaproxy.com/api/v1/residential/orders{
"package": { "id": "81cdc5d0-...", "plan": "3 GB", "trafficGb": 3,
"pricePerGb": 2, "totalPrice": 6, "trafficLeftGb": 3,
"active": true, "expiresAt": "2026-08-22T23:59:59.000Z" },
"amountCharged": 6, "currency": "USD", "idempotentReplay": false
}4. Создание эндпоинта (гео закрепляется здесь) - ответ содержит доступы, которые можно сразу вставить в любой клиент:
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"packageId":"81cdc5d0-...","name":"Austria sticky","country":"AT","rotation":-1}' \
https://api.sotaproxy.com/api/v1/residential/lists{
"list": { "id": "d7e8cbf4-...", "country": "AT", "rotation": -1, ... },
"proxy": {
"host": "proxy.sotaproxy.com", "portHttp": 10000, "portSocks": 10000,
"login": "3c4d8398...", "password": "fTYRr2CH...",
"httpUrl": "http://login:password@proxy.sotaproxy.com:10000",
"socksUrl": "socks5://login:password@proxy.sotaproxy.com:10000"
}
}rotation: 0 = новый IP на каждый запрос, -1 = sticky-сессия, 1–3600 = секунды между ротациями. Управляй эндпоинтами через GET /residential/lists, DELETE /residential/lists/{id}; следи за расходом через GET /residential/packages.
Мобильные прокси (тарифы)
Мобильные прокси продаются помодемно из фиксированного каталога тарифов (страна + оператор + срок аренды). Выбери тариф, купи N штук - дальше заказ ведёт себя как любой другой: GET /orders/{id}/proxies вернёт доступы.
curl -H "Authorization: Bearer $KEY" "https://api.sotaproxy.com/api/v1/mobile/tariffs?country=DE"{
"tariffs": [
{ "id": "mt_f1098dbc7be7a1b0", "country": "DE", "carrier": "Vodafone Germany",
"periodId": "day", "period": "1 day", "unitPrice": 8.64,
"dedicated": true, "stock": 16 }
],
"currency": "USD"
}Покупка - требует скоуп trade и Idempotency-Key:
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: mob-unique-id" \
-d '{"tariffId":"mt_f1098dbc7be7a1b0","quantity":1}' \
https://api.sotaproxy.com/api/v1/mobile/ordersТарифы ограничены наличием - всегда проверяй stock перед заказом. Мобильные прокси также видны в GET /proxies?product=mobile.
Аккаунт
Читай предоплаченный баланс или аккаунт и скоупы, к которым привязан ключ.
curl -H "Authorization: Bearer $KEY" https://api.sotaproxy.com/api/v1/balance
# → {"balance":42.5,"currency":"USD"}
curl -H "Authorization: Bearer $KEY" https://api.sotaproxy.com/api/v1/me
# → {"accountId":"...","scopes":["read","trade"]}Субаккаунты партнёра
Партнёр со своей платформой держит пользователей, регистрации и балансы у себя. От нас ему нужна возможность нарезать уже купленный запас: завести клиента, выдать ему объём, выпустить доступы и прочитать расход для собственных счетов.
Требуется признак is_reseller на аккаунте. Для записи нужен скоуп trade. Те же операции есть в кабинете, и оба входа зовут один и тот же сервис.
| Метод | Путь | Назначение |
|---|---|---|
| GET | /reseller/stock | Сколько трафика свободно к выдаче |
| GET | /reseller/clients | Ваши клиенты с их лимитами и расходом |
| POST | /reseller/clients | Завести клиента (name, опционально email) |
| DELETE | /reseller/clients/{id} | Удалить клиента; неизрасходованный трафик вернётся в ваш запас |
| POST | /reseller/clients/{id}/traffic | Выдать клиенту трафик. Идемпотентно, нужен Idempotency-Key |
| DELETE | /reseller/clients/{id}/traffic | Забрать неизрасходованный остаток |
| POST | /reseller/clients/{id}/access | Выпустить доступы к прокси для этого клиента |
| GET | /reseller/clients/{id}/access | Показать доступы, которые есть у клиента |
| DELETE | /reseller/clients/{id}/access/{accessId} | Отозвать один доступ |
| GET | /reseller/usage | Расход по всем клиентам одним вызовом, для выставления счетов |
| GET | /reseller/proxies | Ваши статические прокси. ?filter=free, ?type=ipv4 |
| GET | /reseller/clients/{id}/proxies | Прокси, закреплённые за одним клиентом, с доступами |
| POST | /reseller/clients/{id}/proxies | Закрепить статические прокси за клиентом |
| DELETE | /reseller/clients/{id}/proxies | Открепить их обратно |
Полный цикл
Пять вызовов ведут клиента от регистрации до счёта. Трафик везде возвращается в обеих единицах: {"mb": 1024, "gb": 1}.
# 1. how much can I hand out right now
curl -H "Authorization: Bearer $KEY" https://api.sotaproxy.com/api/v1/reseller/stock
# 2. a new client signed up on your platform
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"name":"acme-corp"}' https://api.sotaproxy.com/api/v1/reseller/clients
# → {"client":{"id":"<clientId>", ...}}
# 3. they paid you for 10 GB
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: order-8412" \
-d '{"trafficGb":10}' https://api.sotaproxy.com/api/v1/reseller/clients/<clientId>/traffic
# 4. issue their credentials
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"name":"main","ports":5,"rotation":-1,"country":"US"}' \
https://api.sotaproxy.com/api/v1/reseller/clients/<clientId>/access
# → login/password + host + portFrom..portTo + readyInSeconds
# 5. bill them: poll usage on your schedule
curl -H "Authorization: Bearer $KEY" https://api.sotaproxy.com/api/v1/reseller/usageСо статическими прокси всё иначе
Трафик делится, адрес нет. IPv4, IPv6 и ISP можно только закрепить за клиентом, разделить нельзя. Владельцем и плательщиком остаётесь вы, поэтому продления и автопродление продолжают идти с вашего баланса, а отношения с клиентом нас не касаются. Открепление возвращает прокси в ваш свободный пул нетронутым.
# what is free to hand out right now
curl -H "Authorization: Bearer $KEY" "https://api.sotaproxy.com/api/v1/reseller/proxies?filter=free&type=ipv4"
# pin two of them to a client
curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"proxyIds":["<id1>","<id2>"]}' https://api.sotaproxy.com/api/v1/reseller/clients/<clientId>/proxies
# → {"requested":2,"assigned":2}
# what that client holds, with credentials to hand over
curl -H "Authorization: Bearer $KEY" https://api.sotaproxy.com/api/v1/reseller/clients/<clientId>/proxiesЗаметки, которые экономят обращение в поддержку
- ·Доступам нужно около 90 секунд, прежде чем они начнут авторизовываться: вышестоящая сеть регистрирует их асинхронно. До этого соединения отвечают
407. В ответе на выпуск приходитreadyInSeconds, чтобы вы могли придержать показ доступов своему пользователю. - ·`rotation`:
-1держит липкую сессию,0даёт новый IP на каждый запрос, любое другое значение это число секунд до смены IP. - ·Порты: один доступ занимает диапазон
portFrom..portTo, и каждый порт это независимая сессия со своим IP. Один и тот же порт обслуживает и HTTP, и SOCKS5. - ·Выдача ограничена реальным запасом, а не сырым остатком: трафик, уже отданный другим клиентам, вычитается заранее.
- ·Иерархия одноуровневая. У клиента не может быть своих клиентов, и входа в наш кабинет ваши клиенты не получают. Ваши пользователи живут на вашей платформе, в этом и смысл этого API.
- ·
assignedсообщает, что произошло на самом деле при закреплении прокси. Чужие или уже исчезнувшие идентификаторы пропускаются, а не роняют весь вызов, поэтому сравнивайте его сrequested, если нужно реагировать.
MCP-сервер - покупай прокси из Claude и ИИ-агентов
Подключи SotaProxy к Claude (или любому ИИ-ассистенту с поддержкой MCP) и управляй прокси просто в чате: «купи мне 5 ISP-прокси США на месяц», «возьми 3 ГБ резидентского трафика с гео Австрия», «какой у меня баланс?». Ассистент всегда показывает точную цену и спрашивает подтверждение, прежде чем что-то потратить. Полный гайд по MCP со всеми 18 инструментами →
Перед началом: получи API-ключ (один раз)
- Открой app.sotaproxy.com/api (пункт API в боковом меню кабинета).
- В блоке Create new key выбери оба скоупа -
readиtrade- и нажми Create key. - Скопируй появившийся ключ (начинается с
sk_live_). Он показывается только один раз - сохрани его в надёжном месте.
Во всех сниппетах ниже замени sk_live_YOUR_KEY на этот ключ.
Вариант A - сайт Claude.ai или приложение Claude Desktop
Самый простой путь, если ты общаешься с Claude в браузере или десктопном приложении.
- В Claude открой Settings → Connectors.
- Нажми Add custom connector.
- Название:
SotaProxy. В поле URL вставь это (с твоим ключом внутри):
https://api.sotaproxy.com/mcp?key=sk_live_YOUR_KEY- Нажми Add. В новом чате открой меню инструментов (иконка с ползунками) и проверь, что SotaProxy включён.
- Спроси: «Какой у меня баланс в SotaProxy?» - если пришёл ответ с балансом, всё подключено.
Вариант B - Claude Code (терминал)
Если ты пользуешься CLI claude.
- Открой терминал и вставь одну команду (с подставленным ключом):
claude mcp add --transport http sotaproxy https://api.sotaproxy.com/mcp \
--header "Authorization: Bearer sk_live_YOUR_KEY"- Запусти (или перезапусти)
claudeи спроси: «Какой у меня баланс в SotaProxy?» - Удалить потом:
claude mcp remove sotaproxy.
Вариант C - Cursor и другие MCP-клиенты
- В Cursor: Settings → MCP → Add new global MCP server (откроется
~/.cursor/mcp.json). - Вставь этот блок (или добавь его в существующий объект
mcpServers):
{
"mcpServers": {
"sotaproxy": {
"url": "https://api.sotaproxy.com/mcp",
"headers": { "Authorization": "Bearer sk_live_YOUR_KEY" }
}
}
}Сохрани файл - инструменты SotaProxy появятся после перезагрузки. Любой другой MCP-совместимый клиент подключается так же: URL https://api.sotaproxy.com/mcp плюс твой ключ в заголовке Bearer (или ?key= в URL, если заголовки не поддерживаются).
Что попробовать после подключения
- «Какой у меня баланс?»
- «Сколько стоят 10 IPv6-прокси США на неделю?»
- «Купи 5 ISP-прокси США на месяц» (сначала покажет цену и спросит подтверждение)
- «Купи 3 ГБ резидентского трафика и создай эндпоинт с гео Австрия и sticky-сессиями»
- «Покажи мои прокси и выгрузи их в формате ip:port:login:password»
- «Продли мой истекающий заказ ещё на месяц» (покажет цену за весь заказ перед списанием)
Если что-то не работает: ошибка аутентификации значит, что ключ неверный или отозван, - создай новый в кабинете. Если покупка падает с ошибкой скоупа, у ключа нет trade. Покупки списываются с предоплаченного баланса - сначала пополни его в кабинете. Ключи в URL - чувствительные данные: где возможно, используй заголовок и отзывай ключи, которыми больше не пользуешься.
Нужна помощь с интеграцией, повышенные лимиты или контрактные цены? Напиши нам.