Loading…

Proxy API

Документация (RU)

Базовый URL: https://turbon.rent/api/proxy

Аутентификация: заголовок Authorization: Bearer <key> или X-Api-Key: <key>; либо параметр key (обратная совместимость).

action: во всех методах передавайте action=... в query string.

Продукты (canon_type):

  • dc_ip — датацентр, оплата по IP на срок (per-IP);
  • isp_ip — статичный резидентный ISP, по IP на срок (per-IP) — временно недоступен (вернётся в ближайшем обновлении);
  • resi_gb — residential, оплата по трафику (per-GB, PAYG);
  • mobile_gb — мобильный, оплата по трафику (per-GB, PAYG).

Схема оплаты (billing):

  • per_ip — фиксированная цена за 1 IP на выбранный срок (period_days). Доступные сроки приходят в tariffs.
  • per_gb — оплата по трафику. Два режима: ПАК (задайте gb+days при покупке — объём и срок вперёд, доступ режется по исчерпании GB или сроку) либо PAYG (без объёма — предоплата 1 GB, докупка по мере расхода; при нехватке баланса заморозка + resume). exit-IP закреплён за сессией; ключом сессии управляете вы (см. 5.1), сменить IP дефолтной сессии — экшеном rotate (по клику) или авто-сменой по времени: set_rotation / параметр rotation_minutes при покупке.

Наличие (stock): целое число; -1 = безлимит (для per-GB PAYG).

Идентификатор аренды (id): единое числовое пространство для обоих типов; тип аренды указан полем billing.

Методы

1) products — каталог продуктов и цен

ПараметрТипОбязателенОписание
actionstringдаproducts
keystringдаAPI‑ключ (или заголовок)
countrystringнетфильтр по стране ISO2 (например US)
canon_typestringнетфильтр по продукту (dc_ip/isp_ip/resi_gb/mobile_gb)

Запрос:

https://turbon.rent/api/proxy?action=products&country=US&key=YOUR_API_KEY

Ответ (200):

{
  "items": [
    {
      "canon_type": "dc_ip",
      "billing": "per_ip",
      "country": "US",
      "country_name": "United States",
      "stock": 46,
      "tariffs": [
        { "period_days": 7,  "price": "0.50" },
        { "period_days": 30, "price": "1.50" }
      ]
    },
    {
      "canon_type": "resi_gb",
      "billing": "per_gb",
      "country": "US",
      "country_name": "United States",
      "stock": -1,
      "price_per_gb": "3.90",
      "sticky_sessions": true
    }
  ]
}

Параметры ответа:

ПолеТипОписание
canon_typestringПродукт
billingstringper_ip или per_gb
country / country_namestringISO2 и название страны
stockintНаличие (-1 = безлимит)
tariffs[]arrayТолько для per_ip: {period_days, price}
price_per_gbstringТолько для per_gb: цена за 1 GB (USD)
sticky_sessionsboolПозиция умеет сессии с закреплённым IP (см. 5.1). У per_ip всегда false — там адрес и так постоянный

2) purchase — купить прокси

URL: POST https://turbon.rent/api/proxy/rentals?action=purchase

ПараметрТипОбязателенОписание
actionstringдаpurchase
keystringдаAPI‑ключ
canon_typestringдаиз products
countrystringдаISO2
period_daysintдля per-IPсрок из tariffs (по умолчанию 30)
qtyintнет (per-IP)сколько IP купить за раз (1..1000)
gbnumberпак (per-GB)объём пака в GB. Вместе с days активирует ПАК (объём+срок вперёд). Без gb+days — PAYG (1 GB)
daysintпак (per-GB)срок пака в днях. Цена = gb × $/GB × множитель_срока (срок сублинеен)
rotatingboolнет (per-GB)Устар. Выдача per-GB закреплена за сессией всегда; ротация — суффиксом -rotate в логине (см. 5.1)
stickyboolнет (per-GB)Устар. Закрепление и так по умолчанию; сессией управляет суффикс -session-<id> (см. 5.1)
protocolstringнетhttp (по умолчанию) или socks5. Оба работают на ОДНОМ выданном порту — протокол определяется при подключении, менять порт или перепокупать не нужно. Список доступного см. в credentials.protocols

per-GB — ПАК (рекомендуется): задайте gb и days — объём и срок оплачиваются вперёд, доступ режется по исчерпании GB или истечении срока. Пример ответа (пак 10 GB на 30 дней, mobile — с ротацией):

{
  "rental": {
    "id": "1000000042",
    "canon_type": "mobile_gb",
    "billing": "per_gb",
    "mode": "pack",
    "country": "US",
    "rotating": true,
    "status": "active",
    "created_at": "2026-08-01T10:00:00Z",
    "expires_at": "2026-08-31T10:00:00Z",
    "gb_total": "10.000",
    "gb_used": "0.000",
    "gb_remaining": "10.000",
    "price_per_gb": "3.90",
    "credentials": { "host": "gw.example.com", "port": 8000, "username": "u", "password": "p", "protocol": "http", "protocols": ["http", "socks5"] }
  }
}

per-GB — PAYG: без gb/days активация предоплачивает 1 GB (mode: "payg", expires_at: null); при расходе система докупает по 1 GB, при нехватке баланса — заморозка (resume возобновляет). Пак не возобновляется через resume — покупается новый пак.

per-IP: покупается qty IP на period_days. Ответ — массив rentals (каждый IP = отдельная аренда со своими credentials). Возможен частичный успех (partial: true + error_code), если сток/баланс закончился в середине:

{
  "rentals": [
    {
      "id": "2001",
      "canon_type": "dc_ip",
      "billing": "per_ip",
      "country": "US",
      "status": "active",
      "created_at": "2026-07-27T10:00:00Z",
      "expires_at": "2026-08-26T10:00:00Z",
      "price": "1.50",
      "auto_renew": false,
      "credentials": { "host": "1.2.3.4", "port": 8080, "username": "u", "password": "p", "protocol": "http", "protocols": ["http", "socks5"] }
    }
  ]
}

3) rentals — список моих аренд

URL: GET .../api/proxy/rentals?action=rentals&key=YOUR_API_KEY

Фильтры (необязательные): status (active/expired/frozen/inactive), canon_type. Возвращает items[] — карточки аренд обоих типов (per-IP и per-GB, включая замороженные per-GB).

4) rental_get — детали аренды

URL: GET .../api/proxy/rentals?action=rental_get&rental_id=RENTAL_ID&key=YOUR_API_KEY

Возвращает объект rental. Чужая/несуществующая аренда → 404 RENTAL_NOT_FOUND.

5) credentials — данные подключения

URL: GET .../api/proxy/rentals?action=credentials&rental_id=RENTAL_ID&key=YOUR_API_KEY

{ "credentials": { "host": "1.2.3.4", "port": 8080, "username": "u", "password": "p", "protocol": "http", "protocols": ["http", "socks5"] } }

У per-GB аренд (mobile_gb/resi_gb) в ответе есть блок sticky — способ адресовать сессию суффиксами логина (см. ниже):

{ "credentials": { "host": "proxy.turbon.rent", "port": 8899, "username": "g4f2a…", "password": "…", "protocol": "http", "protocols": ["http", "socks5"],
    "sticky": { "username_template": "g4f2a…-session-<id>", "options": ["session", "country", "rotate"],
                "example": "g4f2a…-session-a1b2c3-country-US" } } }

5.1) sticky-сессии — закреплённый exit-IP

Выходной IP привязан к сессии. Ключ сессии выбираете вы сами — это суффикс к логину; пароль, хост и порт не меняются. Один и тот же ключ ведёт на один и тот же IP, разные ключи — на разные, поэтому параллельных сессий можно держать столько, сколько нужно, из одной аренды. Трафик всех сессий считается по этой аренде.

СуффиксЗначение
-session-<id>ключ сессии: a-z0-9, до 32 символов. Тот же ключ → тот же exit-IP
-country-<ISO2>страна выхода для этой сессии (из products)
-rotateбез закрепления: новый exit-IP на каждый запрос
curl -x http://g4f2a…-session-a1b2c3:[email protected]:8899 https://api.ipify.org
curl -x http://g4f2a…-session-a1b2c3-country-DE:[email protected]:8899 https://api.ipify.org
curl -x http://g4f2a…-rotate:[email protected]:8899 https://api.ipify.org

Важно. Сессия живёт, пока её держит поставщик: сроки удержания мы не гарантируем — выходные узлы это чужие устройства, они уходят из сети. Когда сессия перестала существовать, тот же ключ даст новый IP, вернуться на прежний адрес нельзя. Нужен адрес, закреплённый на весь срок аренды, — берите per-IP (isp_ip/dc_ip). Неверный суффикс (незнакомый ключ, недопустимые символы) = отказ 403 — тот же единый ответ, что и при исчерпанном трафике или истёкшем сроке (причину не раскрываем), а не молчаливое игнорирование опции. Часть подключений к мобильным узлам может не подняться с первого раза — повторите запрос или смените ключ сессии.

6) usage — потребление / срок

URL: GET .../api/proxy/rentals?action=usage&rental_id=RENTAL_ID&key=YOUR_API_KEY

per-GB → трафик и статус; per-IP → срок окончания.

// per-GB
{ "usage": { "billing": "per_gb", "gb_total": "2.000", "gb_used": "0.500", "gb_remaining": "1.500", "percent": 25, "status": "active" } }
// per-IP
{ "usage": { "billing": "per_ip", "expires_at": "2026-08-26T10:00:00Z", "status": "active" } }

7) resume — разморозить per-GB прокси

URL: POST .../api/proxy/rentals?action=resume&rental_id=RENTAL_ID

Возобновляет замороженную per-GB аренду: предоплачивает следующий 1 GB и снимает заморозку у поставщика (тот же прокси). Применимо только к per-GB (для per-IP → 409 RESUME_NOT_APPLICABLE). Нет баланса → 402 NO_BALANCE.

8) rotate — сменить exit-IP (mobile)

URL: POST .../api/proxy/rentals?action=rotate&rental_id=RENTAL_ID

Меняет выходной IP per-GB прокси (mobile/residential) «по клику» (тот же порт и данные подключения — меняется только exit-IP). Денег не списывает. Только per-GB (mobile_gb/resi_gb; для per-IP 409 ROTATE_NOT_APPLICABLE); если поставщик не умеет — 409 ROTATE_UNSUPPORTED. Ответ — обновлённый rental с полем last_rotated_at.

9) set_rotation — авто-смена IP по времени

URL: POST .../api/proxy/rentals?action=set_rotation&rental_id=RENTAL_ID&minutes=N

minutes=0 — только вручную (кнопка/rotate); >0 — выходной IP авто-меняется каждые N минут (макс. 1440). Ответ — rental с текущим rotation_minutes. Поля per-GB аренды: can_rotate (mobile), rotation_minutes, last_rotated_at.

Коды ошибок

HTTPcodeКогда
403NOT_ENABLEDProxy-фича не включена для аккаунта (канареечная раскатка)
403BAD_KEYНеверный/отсутствует API‑ключ
400BAD_ACTIONНе указан/неизвестный action
400BAD_PRODUCTНеверный canon_type
400BAD_COUNTRYНе указана страна
400BAD_PERIOD / BAD_RENTAL_IDНеверный срок / id аренды
402NO_BALANCEНедостаточно средств
404NO_STOCKНет стока/выдачи по направлению
404RENTAL_NOT_FOUNDАренда не найдена/чужая
409RESUME_NOT_APPLICABLE / ALREADY_ACTIVEresume не применим к per-IP / прокси уже активен
429CHANNEL_LIMITПревышен пер‑ключевой лимит запросов
502RESUME_FAILEDПоставщик не смог возобновить (списание возвращено)
Documentation (EN)

Base URL: https://turbon.rent/api/proxy

Authentication: header Authorization: Bearer <key> or X-Api-Key: <key>; or the key query param (backward compatible).

action: pass action=... in the query string for every method.

Products (canon_type):

  • dc_ip — datacenter, billed per IP for a period (per-IP);
  • isp_ip — static residential ISP, per IP for a period (per-IP) — temporarily unavailable (returns in an upcoming update);
  • resi_gb — residential, billed by traffic (per-GB, PAYG);
  • mobile_gb — mobile, billed by traffic (per-GB, PAYG).

Billing (billing):

  • per_ip — fixed price per IP for the selected period_days. Available periods are returned in tariffs.
  • per_gbpay-as-you-go: activation prepays 1 GB (volume is NOT specified upfront). As traffic is consumed the system tops up 1 GB at a time from the balance; if the balance is insufficient the proxy is frozen (status=frozen, no traffic through the credentials). Unfreeze via resume (prepays the next GB).

Stock (stock): integer; -1 = unlimited (per-GB PAYG).

Rental id (id): single numeric space for both types; the rental type is given by billing.

Methods

1) products — product & price catalog

ParameterTypeRequiredDescription
actionstringyesproducts
keystringyesAPI key (or header)
countrystringnoISO2 country filter (e.g. US)
canon_typestringnoproduct filter (dc_ip/isp_ip/resi_gb/mobile_gb)

Request:

https://turbon.rent/api/proxy?action=products&country=US&key=YOUR_API_KEY

Response (200):

{
  "items": [
    { "canon_type": "dc_ip", "billing": "per_ip", "country": "US", "country_name": "United States",
      "stock": 46, "tariffs": [ { "period_days": 7, "price": "0.50" }, { "period_days": 30, "price": "1.50" } ] },
    { "canon_type": "resi_gb", "billing": "per_gb", "country": "US", "country_name": "United States",
      "stock": -1, "price_per_gb": "3.90" }
  ]
}

2) purchase — buy a proxy

URL: POST https://turbon.rent/api/proxy/rentals?action=purchase

ParameterTypeRequiredDescription
actionstringyespurchase
keystringyesAPI key
canon_typestringyesfrom products
countrystringyesISO2
period_daysintper-IPperiod from tariffs (default 30)
qtyintno (per-IP)how many IPs at once (1..1000)
protocolstringnohttp (default) or socks5. Both work on the SAME issued port — the protocol is detected on connect, no port change or re-purchase needed. See credentials.protocols for what is available

per-GB (PAYG): no period_days/qty — activation prepays 1 GB. Response is a single rental object with a credentials block (gb_total, gb_used, gb_remaining, price_per_gb).

per-IP: buys qty IPs for period_days. Response is a rentals array (each IP = its own rental with credentials). Partial success is possible (partial: true + error_code) if stock/balance runs out mid-way.

{
  "rentals": [
    { "id": "2001", "canon_type": "dc_ip", "billing": "per_ip", "country": "US", "status": "active",
      "created_at": "2026-07-27T10:00:00Z", "expires_at": "2026-08-26T10:00:00Z", "price": "1.50", "auto_renew": false,
      "credentials": { "host": "1.2.3.4", "port": 8080, "username": "u", "password": "p", "protocol": "http", "protocols": ["http", "socks5"] } }
  ]
}

3) rentals — list my rentals

URL: GET .../api/proxy/rentals?action=rentals&key=YOUR_API_KEY

Optional filters: status (active/expired/frozen/inactive), canon_type. Returns items[] with rentals of both types (per-IP and per-GB, including frozen per-GB).

4) rental_get — rental details

URL: GET .../api/proxy/rentals?action=rental_get&rental_id=RENTAL_ID&key=YOUR_API_KEY

Returns a rental object. Foreign/missing rental → 404 RENTAL_NOT_FOUND.

5) credentials — connection details

URL: GET .../api/proxy/rentals?action=credentials&rental_id=RENTAL_ID&key=YOUR_API_KEY

{ "credentials": { "host": "1.2.3.4", "port": 8080, "username": "u", "password": "p", "protocol": "http", "protocols": ["http", "socks5"] } }

6) usage — consumption / expiry

URL: GET .../api/proxy/rentals?action=usage&rental_id=RENTAL_ID&key=YOUR_API_KEY

// per-GB
{ "usage": { "billing": "per_gb", "gb_total": "2.000", "gb_used": "0.500", "gb_remaining": "1.500", "percent": 25, "status": "active" } }
// per-IP
{ "usage": { "billing": "per_ip", "expires_at": "2026-08-26T10:00:00Z", "status": "active" } }

7) resume — unfreeze a per-GB proxy

URL: POST .../api/proxy/rentals?action=resume&rental_id=RENTAL_ID

Resumes a frozen per-GB rental: prepays the next 1 GB and unfreezes it at the provider (same proxy). per-GB only (per-IP → 409 RESUME_NOT_APPLICABLE). No balance → 402 NO_BALANCE.

Error codes

HTTPcodeWhen
403NOT_ENABLEDProxy feature not enabled for the account (canary rollout)
403BAD_KEYInvalid/missing API key
400BAD_ACTIONMissing/unknown action
400BAD_PRODUCTInvalid canon_type
400BAD_COUNTRYMissing country
400BAD_PERIOD / BAD_RENTAL_IDInvalid period / rental id
402NO_BALANCEInsufficient balance
404NO_STOCKNo stock/fulfillment for this route
404RENTAL_NOT_FOUNDRental not found/foreign
409RESUME_NOT_APPLICABLE / ALREADY_ACTIVEresume not applicable to per-IP / proxy already active
429CHANNEL_LIMITPer-key rate limit exceeded
502RESUME_FAILEDProvider could not resume (charge refunded)