TrueSocks
Для разработчиков

API для прокси

REST API для своих программ, парсеров и реселлеров: смотрите каталог и наличие, покупайте прокси с баланса, выгружайте списки в нужном формате, продлевайте и заменяйте. Всё, что есть в кабинете, доступно одним запросом. API-ключ - в личном кабинете, раздел «Аккаунт».

Базовый URL
https://truesocks.net/api/v1
Авторизация
Authorization: Bearer <ключ>
Для GET-запросов можно передать ключ параметром ?key=<ключ>, но заголовок надёжнее: ключ не попадает в логи и историю.
Формат
Тело запросов POST - JSON (Content-Type: application/json), ответы - JSON в UTF-8. Даты - ISO 8601 в UTC.
Деньги
Рубли. Каждая сумма отдаётся дважды: в рублях (price: 149.5) и в копейках (price_kopecks: 14950) - считайте в копейках, чтобы не было ошибок округления.
Лимиты
120 запросов в минуту на ключ. При превышении - ответ 429. Много ответов 401 и 429 подряд с одного IP приводят к временной блокировке IP на час.

Быстрый старт

Сохраните ключ в переменную окружения и купите 2 прокси IPv4 в Германии на 30 дней, затем выгрузите их в файл:

export TRUESOCKS_KEY="ваш_ключ"

curl -X POST https://truesocks.net/api/v1/orders \
  -H "Authorization: Bearer $TRUESOCKS_KEY" -H "Content-Type: application/json" \
  -d '{"kind":"ipv4","country":"DE","days":30,"quantity":2}'

curl -H "Authorization: Bearer $TRUESOCKS_KEY" \
  "https://truesocks.net/api/v1/orders/100245/proxies?format=ip:port:user:pass" > proxies.txt
GET/api/v1/catalogКаталог: типы, страны, тарифы и наличие

Тариф - это тип × страна × срок. Цена указана за 1 единицу (IP, ГБ или канал) на весь срок. stock - сколько можно выдать прямо сейчас.

ПараметрТипОписание
kindстроканеобязательно: фильтр по типу (ipv4, ipv6, isp, resi, mobile, shared)
countryстроканеобязательно: фильтр по стране, код ISO из двух букв (DE, US, NL)
Запрос
curl -H "Authorization: Bearer $TRUESOCKS_KEY" "https://truesocks.net/api/v1/catalog?kind=ipv4&country=DE"
Ответ
{
  "currency": "RUB",
  "updated_at": "2026-10-23T12:00:00.000Z",
  "kinds": [
    { "id": "ipv4", "name": "Индивидуальные IPv4", "short": "IPv4",
      "tier": "business", "unit": "ip", "description": "...", "has_tariffs": true }
  ],
  "countries": [
    { "code": "DE", "name_ru": "Германия", "name_en": "Germany",
      "region": "Европа", "kinds": ["ipv4"] }
  ],
  "tariffs": [
    { "id": 1042, "kind": "ipv4", "country": "DE", "days": 30,
      "price": 149, "price_kopecks": 14900,
      "old_price": null, "old_price_kopecks": null,
      "min_qty": 1, "max_qty": 1000, "stock": 87, "hit": true }
  ],
  "discounts": [ { "kind": null, "min_qty": 10, "percent": 5 } ]
}
GET/api/v1/balanceБаланс
Запрос
curl -H "Authorization: Bearer $TRUESOCKS_KEY" https://truesocks.net/api/v1/balance
Ответ
{ "balance": 1520.5, "balance_kopecks": 152050, "currency": "RUB" }
POST/api/v1/ordersКупить прокси

Деньги списываются с баланса, прокси выдаются сразу и приходят в ответе. Если на складе не хватает адресов, заказ не создаётся и деньги не списываются. Тариф можно указать номером (tariff_id из каталога) или тройкой kind + country + days.

ПараметрТипОписание
tariff_idчислономер тарифа из /catalog (или kind, country, days)
kindстрокатип прокси, например ipv4
countryстрокакод страны, например DE
daysчислосрок в днях, например 30
quantityчислоколичество IP (для резидентских - гигабайт)
protocolстрокаsocks5 (по умолчанию) или http
authстрокаlogin (по умолчанию) - логин и пароль; ip - доступ по IP
ipsстрока или массивдля auth=ip: до 20 IP через запятую
auto_renewtrue/falseавтопродление на тот же срок с баланса за час до конца
commentстроканеобязательно: ваша заметка (до 200 символов)
Запрос
curl -X POST https://truesocks.net/api/v1/orders \
  -H "Authorization: Bearer $TRUESOCKS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"ipv4","country":"DE","days":30,"quantity":2,"protocol":"socks5","auto_renew":true}'
Ответ
HTTP/1.1 201 Created
{
  "order": {
    "num": 100245, "status": "active",
    "kind": "ipv4", "kind_name": "Индивидуальные IPv4",
    "country": "DE", "country_name": "Германия",
    "days": 30, "quantity": 2, "unit": "ip", "unit_label": "шт.",
    "unit_price": 149, "unit_price_kopecks": 14900, "discount_percent": 0,
    "charge": 298, "charge_kopecks": 29800, "refunded": 0, "refunded_kopecks": 0,
    "protocol": "socks5", "auth": "login", "allowed_ips": [], "auto_renew": true,
    "created_at": "2026-10-23T12:00:00.000Z", "expires_at": "2026-11-22T12:00:00.000Z",
    "proxies_active": 2,
    "proxies": [
      { "lease_id": "cm2x7l0a40001", "host": "185.10.20.31", "port": 8000,
        "http_port": 8000, "socks5_port": 8001,
        "username": "u7Hq", "password": "Kp29xT", "exit_ip": null, "city": null,
        "rotate_url": null, "status": "active", "expires_at": "2026-11-22T12:00:00.000Z" }
    ]
  },
  "balance": 1222.5, "balance_kopecks": 122250
}
GET/api/v1/ordersСписок заказов
ПараметрТипОписание
statusстрокаactive, expired, canceled, pending или all (по умолчанию all)
limitчислосколько вернуть, 1-100 (по умолчанию 50)
offsetчислосколько пропустить, для постраничного вывода
Запрос
curl -H "Authorization: Bearer $TRUESOCKS_KEY" "https://truesocks.net/api/v1/orders?status=active"
Ответ
{
  "total": 3, "limit": 50, "offset": 0,
  "orders": [ { "num": 100245, "status": "active", "kind": "ipv4", "country": "DE",
                "quantity": 2, "expires_at": "2026-11-22T12:00:00.000Z",
                "auto_renew": true, "proxies_active": 2, "...": "..." } ]
}
GET/api/v1/orders/{num}Заказ со списком прокси

Те же поля, что при покупке, плюс proxies - только работающие сейчас прокси (после замены - новые).

Запрос
curl -H "Authorization: Bearer $TRUESOCKS_KEY" https://truesocks.net/api/v1/orders/100245
Ответ
{ "order": { "num": 100245, "status": "active", "...": "...", "proxies": [ ... ] } }
GET/api/v1/orders/{num}/proxiesВыгрузка прокси в нужном формате

С параметром format ответ - обычный текст, по одному прокси на строку: удобно сразу сохранить в файл. Без format - JSON.

ПараметрТипОписание
formatстрокаip:port:user:pass | user:pass@ip:port | ip:port@user:pass | url | ip:port
protocolстрокаhttp или socks5 - порт и схема для url (по умолчанию как в заказе)
Запрос
curl -H "Authorization: Bearer $TRUESOCKS_KEY" \
  "https://truesocks.net/api/v1/orders/100245/proxies?format=url&protocol=socks5" > proxies.txt
Ответ
Content-Type: text/plain; charset=utf-8

socks5://u7Hq:[email protected]:8001
socks5://Lm3a:[email protected]:8001
POST/api/v1/orders/{num}/renewПродлить заказ

Списывает стоимость с баланса и сдвигает срок всех прокси заказа. Адреса и доступы не меняются. Доступные сроки - тарифы того же типа и страны в /catalog.

ПараметрТипОписание
daysчислона сколько дней продлить (по умолчанию - срок заказа)
Запрос
curl -X POST https://truesocks.net/api/v1/orders/100245/renew \
  -H "Authorization: Bearer $TRUESOCKS_KEY" -H "Content-Type: application/json" \
  -d '{"days":30}'
Ответ
{
  "order": { "num": 100245, "expires_at": "2026-12-22T12:00:00.000Z", "...": "..." },
  "renewal": { "days": 30, "charge": 298, "charge_kopecks": 29800 },
  "balance": 924.5, "balance_kopecks": 92450
}
POST/api/v1/orders/{num}/auto-renewВключить или выключить автопродление

За час до конца срока заказ продлевается на тот же срок с баланса. Если денег не хватит, автопродление выключится, и мы пришлём письмо и сообщение в Telegram.

ПараметрТипОписание
enabledtrue/falseвключить или выключить
Запрос
curl -X POST https://truesocks.net/api/v1/orders/100245/auto-renew \
  -H "Authorization: Bearer $TRUESOCKS_KEY" -H "Content-Type: application/json" \
  -d '{"enabled":true}'
Ответ
{ "num": 100245, "auto_renew": true }
POST/api/v1/leases/{lease_id}/replaceЗаменить неработающий прокси

Бесплатно в течение 24 часов после покупки, не больше числа прокси в заказе. lease_id - из списка proxies. Новый прокси той же страны и типа, срок прежний.

ПараметрТипОписание
reasonстрокачто не так, например «не подключается» (необязательно)
Запрос
curl -X POST https://truesocks.net/api/v1/leases/cm2x7l0a40001/replace \
  -H "Authorization: Bearer $TRUESOCKS_KEY" -H "Content-Type: application/json" \
  -d '{"reason":"timeout"}'
Ответ
{ "replaced_lease_id": "cm2x7l0a40001", "order": 100245,
  "proxy": { "lease_id": "cm2x9p1b70007", "host": "185.10.20.58", "port": 8000, "...": "..." } }

Ошибки

При ошибке приходит HTTP-статус и JSON с понятным текстом и машинным кодом. Деньги при любой ошибке не списываются.

HTTP/1.1 402 Payment Required
{ "error": "Недостаточно средств на балансе", "code": "insufficient_funds" }
HTTPcodeКогда
400bad_requestневерные параметры или тело запроса не JSON
401unauthorizedнет ключа, ключ неверный или аккаунт заблокирован
402insufficient_fundsна балансе не хватает денег
404not_foundзаказ или прокси не найдены (или принадлежат другому аккаунту)
409out_of_stockнужного количества нет на складе, деньги не списаны
422tariff_unavailableтариф снят с продажи или такого срока продления нет
422invalid_quantityколичество вне допустимых min_qty-max_qty
422invalid_ipsневерный IP в ips или их больше 20
422order_errorдругая причина отказа - текст в поле error
429rate_limitedпревышен лимит запросов
500internalошибка на нашей стороне, повторите позже

Форматы выдачи

formatПример строки
ip:port:user:pass185.10.20.31:8000:u7Hq:Kp29xT
user:pass@ip:portu7Hq:[email protected]:8000
ip:port@user:pass185.10.20.31:8000@u7Hq:Kp29xT
urlsocks5://u7Hq:[email protected]:8001
ip:port185.10.20.31:8000 (для доступа по IP)

Если HTTP и SOCKS5 работают на разных портах, порт зависит от параметра protocol. В JSON оба порта приходят в полях http_port и socks5_port. Для заказов с доступом по IP логин и пароль в текстовых форматах не выводятся.

Уведомления

О выдаче, продлении, неудачном автопродлении, скором окончании (за 3 дня) и истечении срока мы пишем на почту и в привязанный Telegram. Вопросы по интеграции - в поддержку: Telegram или [email protected].