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 — каталог продуктов и цен
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
action | string | да | products |
key | string | да | API‑ключ (или заголовок) |
country | string | нет | фильтр по стране ISO2 (например US) |
canon_type | string | нет | фильтр по продукту (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_type | string | Продукт |
billing | string | per_ip или per_gb |
country / country_name | string | ISO2 и название страны |
stock | int | Наличие (-1 = безлимит) |
tariffs[] | array | Только для per_ip: {period_days, price} |
price_per_gb | string | Только для per_gb: цена за 1 GB (USD) |
sticky_sessions | bool | Позиция умеет сессии с закреплённым IP (см. 5.1). У per_ip всегда false — там адрес и так постоянный |
2) purchase — купить прокси
URL: POST https://turbon.rent/api/proxy/rentals?action=purchase
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
action | string | да | purchase |
key | string | да | API‑ключ |
canon_type | string | да | из products |
country | string | да | ISO2 |
period_days | int | для per-IP | срок из tariffs (по умолчанию 30) |
qty | int | нет (per-IP) | сколько IP купить за раз (1..1000) |
gb | number | пак (per-GB) | объём пака в GB. Вместе с days активирует ПАК (объём+срок вперёд). Без gb+days — PAYG (1 GB) |
days | int | пак (per-GB) | срок пака в днях. Цена = gb × $/GB × множитель_срока (срок сублинеен) |
rotating | bool | нет (per-GB) | Устар. Выдача per-GB закреплена за сессией всегда; ротация — суффиксом -rotate в логине (см. 5.1) |
sticky | bool | нет (per-GB) | Устар. Закрепление и так по умолчанию; сессией управляет суффикс -session-<id> (см. 5.1) |
protocol | string | нет | 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.
Коды ошибок
| HTTP | code | Когда |
|---|---|---|
| 403 | NOT_ENABLED | Proxy-фича не включена для аккаунта (канареечная раскатка) |
| 403 | BAD_KEY | Неверный/отсутствует API‑ключ |
| 400 | BAD_ACTION | Не указан/неизвестный action |
| 400 | BAD_PRODUCT | Неверный canon_type |
| 400 | BAD_COUNTRY | Не указана страна |
| 400 | BAD_PERIOD / BAD_RENTAL_ID | Неверный срок / id аренды |
| 402 | NO_BALANCE | Недостаточно средств |
| 404 | NO_STOCK | Нет стока/выдачи по направлению |
| 404 | RENTAL_NOT_FOUND | Аренда не найдена/чужая |
| 409 | RESUME_NOT_APPLICABLE / ALREADY_ACTIVE | resume не применим к per-IP / прокси уже активен |
| 429 | CHANNEL_LIMIT | Превышен пер‑ключевой лимит запросов |
| 502 | RESUME_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 selectedperiod_days. Available periods are returned intariffs.per_gb— pay-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 viaresume(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
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | yes | products |
key | string | yes | API key (or header) |
country | string | no | ISO2 country filter (e.g. US) |
canon_type | string | no | product 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
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | yes | purchase |
key | string | yes | API key |
canon_type | string | yes | from products |
country | string | yes | ISO2 |
period_days | int | per-IP | period from tariffs (default 30) |
qty | int | no (per-IP) | how many IPs at once (1..1000) |
protocol | string | no | http (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
| HTTP | code | When |
|---|---|---|
| 403 | NOT_ENABLED | Proxy feature not enabled for the account (canary rollout) |
| 403 | BAD_KEY | Invalid/missing API key |
| 400 | BAD_ACTION | Missing/unknown action |
| 400 | BAD_PRODUCT | Invalid canon_type |
| 400 | BAD_COUNTRY | Missing country |
| 400 | BAD_PERIOD / BAD_RENTAL_ID | Invalid period / rental id |
| 402 | NO_BALANCE | Insufficient balance |
| 404 | NO_STOCK | No stock/fulfillment for this route |
| 404 | RENTAL_NOT_FOUND | Rental not found/foreign |
| 409 | RESUME_NOT_APPLICABLE / ALREADY_ACTIVE | resume not applicable to per-IP / proxy already active |
| 429 | CHANNEL_LIMIT | Per-key rate limit exceeded |
| 502 | RESUME_FAILED | Provider could not resume (charge refunded) |