B2B REST API для автоматической аренды TRON Energy. Покупайте энергию для переводов USDT TRC-20 программно — on-chain или с баланса TronBid.
Quick Rent API — это способ автоматически, без ручной работы, арендовать энергию сети TRON. Энергия нужна, чтобы переводы USDT (TRC-20) и другие операции со смарт-контрактами стоили дешевле, чем при сжигании TRX.
Простыми словами: ваша программа (сайт, бот, сервис) сама покупает энергию тогда, когда она нужна — например, перед каждым переводом USDT вашего клиента.
Представьте автомат с напитками: смотрите цену, кидаете деньги, получаете товар. API — это те же кнопки автомата, только нажимает их ваша программа.
Программа спрашивает у API, сколько стоит нужный пакет энергии прямо сейчас.
Программа создаёт заказ и оплачивает его — переводом TRX на выданный адрес или списанием с баланса TronBid.
Через несколько секунд энергия появляется на нужном кошельке, и можно отправлять USDT дешевле.
Важно: API — это инструмент для программиста. Чтобы им пользоваться, кто-то должен написать код, который отправляет запросы.
Если писать код некому — используйте готовую покупку энергии на сайте (Quick Rent) или Telegram-бота @tronbid. Результат тот же, просто вручную.
Короткие объяснения слов, которые встречаются в этой документации.
Что нужно подготовить, прежде чем делать первый запрос.
Напишите в Telegram @tronbid — вам выдадут ключ и привяжут его к вашему аккаунту TronBid. Без ключа запросы не пройдут.
Определите адрес (target_address), на который нужна энергия. Обычно это кошелёк, с которого ваши клиенты отправляют USDT.
Энергия продаётся пакетами (обычно 65000 или 131000 энергии на 15 или 60 минут). Актуальный список — эндпоинт каталога, без авторизации.
Для on-chain — кошелёк с TRX для оплаты. Для оплаты с баланса — пополненный счёт TronBid и включённый режим balance.
Quick Rent API позволяет вашему сервису автоматически арендовать TRON Energy, чтобы переводы USDT TRC-20 и другие вызовы смарт-контрактов обходились дешевле, чем сжигание TRX.
Все эндпоинты используют один base URL.
https://tronbid.com/api/v2/quick-rentОплатить заказ можно двумя способами. On-chain — по умолчанию, не требует настройки. Оплата с баланса — опциональна и должна быть включена для вашего ключа.
Без активации запрос с payment_mode: balance вернёт 403 BALANCE_PAYMENT_NOT_ENABLED. Для подключения обратитесь в поддержку TronBid.
| Режим | Как включить | Оплата |
|---|---|---|
on-chain | По умолчанию — не указывать payment_mode (или "onchain") | Перевод TRX на pay_address с payer_address |
balance | payment_mode: balance + включено для вашего ключа | Списание с баланса TRX в кабинете TronBid |
energy_amount и duration_minutes должны соответствовать активному пакету Quick Rent — обычно 65000 или 131000 энергии и 15 или 60 минут.
Актуальный каталог можно получить в любой момент (без авторизации):
curl -sS https://tronbid.com/api/public/quick-rent/skusПолный сквозной пример на самом простом сценарии (on-chain). Четыре шага — и энергия на кошельке.
Ниже — что происходит на каждом шаге и что возвращает API. Подставьте свой API-ключ, адреса и ID заказа.
Отправьте объём энергии и срок. В ответ придёт цена price_trx и на сколько секунд она зафиксирована.
Передайте пакет, свой idempotency_key и payer_address. В ответ придут pay_address (куда платить), amount_trx (сколько) и expires_at (до какого времени).
Отправьте ровно amount_trx TRX на pay_address с вашего payer_address. Это обычный перевод в сети TRON.
Опрашивайте статус раз в пару секунд, пока он не станет delegated. Значит, энергия делегирована на кошелёк — готово.
{
"price_trx": "3.200000",
"available": true,
"save_percent": 62,
"expires_in_sec": 30
}{
"id": "uuid",
"status": "pending_payment",
"payment_mode": "onchain",
"pay_address": "TDeposit...",
"amount_trx": "3.200000",
"energy_amount": 131000,
"duration_minutes": 15,
"expires_at": "2026-04-29T13:15:00.000Z",
"qr_payload": "tron:TDeposit...?amount=3.200000",
"duplicate": false,
"target_address": "TTarget..."
}# poll every 3s until the order is done
while true; do
STATUS=$(curl -sS "$BASE_URL/api/v2/quick-rent/orders/$ORDER_ID" \
-H "Authorization: Bearer $API_KEY" | jq -r .status)
echo "status: $STATUS"
case "$STATUS" in
delegated|failed|expired|cancelled) break ;;
esac
sleep 3
done{
"id": "uuid",
"status": "delegated",
"payment_mode": "onchain",
"amount_trx": "3.200000",
"energy_amount": 131000,
"effective_energy_amount": 131000,
"duration_minutes": 15,
"pay_address": "TDeposit...",
"payer_address": "TPayer...",
"target_address": "TTarget...",
"error_code": null,
"error_message": null
}Шаг 1 — POST /quote, узнать цену. Шаг 2 — POST /orders, создать заказ и получить pay_address, amount_trx и expires_at. Шаг 3 — отправить ровно amount_trx TRX на pay_address с вашего payer_address. Шаг 4 — периодически опрашивать GET /orders/:id до статуса delegated (или failed / expired / cancelled).
target_address опционален — если не передан, энергия делегируется на payer_address.
Для одного payer_address одновременно допустим только один незакрытый on-chain заказ (pending_payment), иначе — 409 PENDING_PAYMENT_INTENT_EXISTS. При недоплате/переплате итоговый объём может отличаться — смотрите effective_energy_amount в GET /orders/:id.
{
"energy_amount": 131000,
"duration_minutes": 15,
"idempotency_key": "your-unique-key-001",
"payer_address": "TPayerWalletXXXXXXXXXXXXXXXXXXXXXX",
"target_address": "TTargetWalletXXXXXXXXXXXXXXXXXXXXX"
}{
"id": "uuid",
"status": "pending_payment",
"payment_mode": "onchain",
"pay_address": "TDeposit...",
"amount_trx": "3.200000",
"energy_amount": 131000,
"duration_minutes": 15,
"expires_at": "2026-04-29T13:15:00.000Z",
"qr_payload": "tron:TDeposit...?amount=3.200000",
"duplicate": false,
"target_address": "TTarget..."
}Шаг 1 — GET /balance, проверить остаток TRX. Шаг 2 — POST /quote, узнать цену. Шаг 3 — POST /orders с payment_mode: balance — списание и старт делегирования. Шаг 4 — опрашивать GET /orders/:id до delegated (при ошибке делегирования статус failed, TRX возвращается на баланс).
payer_address не нужен — платит аккаунт, привязанный к вашему API-ключу. energy_amount в ответе может быть выше заказанного SKU (бонус матрицы цен).
{
"energy_amount": 131000,
"duration_minutes": 15,
"idempotency_key": "your-unique-key-balance-001",
"payment_mode": "balance",
"target_address": "TTargetWalletXXXXXXXXXXXXXXXXXXXXX"
}{
"id": "uuid",
"status": "delegating",
"payment_mode": "balance",
"pay_address": null,
"amount_trx": "3.200000",
"energy_amount": 132310,
"duration_minutes": 15,
"expires_at": null,
"qr_payload": null,
"duplicate": false,
"target_address": "TTarget..."
}Каждый заказ проходит через эти статусы. Отслеживайте его через GET /orders/:id.
| Статус | Значение |
|---|---|
pending_payment | Ожидается on-chain оплата |
delegating | Оплата получена / баланс списан, идёт делегирование |
delegated | Энергия делегирована |
cancelled | Отменён до оплаты (on-chain) |
expired | Истекло время on-chain оплаты |
failed | Ошибка (при balance TRX возвращается) |
idempotency_key (8–128 символов) — уникальный ID заказа на вашей стороне. Повтор POST /orders с тем же ключом (для того же API-клиента) вернёт тот же заказ с "duplicate": true.
Не используйте один idempotency_key для разных режимов оплаты (onchain vs balance) — будет 409 IDEMPOTENCY_PAYMENT_MODE_MISMATCH.
Оцените, сколько энергии нужно адресу для перевода. Передайте кошелёк получателя и признак наличия у него USDT.
/api/v2/quick-rent/calculator| Параметр | Тип | Описание | Пример |
|---|---|---|---|
wallet_address | string | TRON-адрес для анализа | TXXXXXXXX...XXXX |
has_usdt | boolean | null | Есть ли у получателя USDT (влияет на энергию). true, false или не передавать. | true |
{
"wallet_address": "TXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"has_usdt": true
}curl -sS -X POST "$BASE_URL/api/v2/quick-rent/calculator" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"wallet_address":"TXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","has_usdt":true}'Возвращает текущую цену пакета: price_trx, доступность, save_percent и срок действия расчёта (expires_in_sec).
/api/v2/quick-rent/quote| Параметр | Тип | Описание | Пример |
|---|---|---|---|
energy_amount | int | Объём энергии из активного каталога | 131000 |
duration_minutes | int | Срок аренды из каталога | 15 |
{
"price_trx": "3.200000",
"available": true,
"save_percent": 62,
"expires_in_sec": 30
}export BASE_URL="https://tronbid.com"
export API_KEY="your_api_key"
curl -sS -X POST "$BASE_URL/api/v2/quick-rent/quote" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"energy_amount":131000,"duration_minutes":15}'Создаёт заказ на аренду. Для on-chain передайте payer_address и оплатите полученный amount_trx на pay_address. Для баланса добавьте payment_mode: balance — привязанный аккаунт списывается сразу.
target_address опционален (по умолчанию payer_address). Учитывайте правила 409: один незакрытый on-chain заказ на payer и отсутствие активной делегации Quick Rent на target (ACTIVE_DELEGATION_EXISTS).
/api/v2/quick-rent/orders| Параметр | Тип | Описание | Пример |
|---|---|---|---|
energy_amount | int | Объём энергии из каталога | 131000 |
duration_minutes | int | Срок аренды из каталога | 15 |
idempotency_key | string | Ваш уникальный ID заказа (8–128 символов) | partner-onchain-001 |
payment_mode | string | Опционально. "onchain" (по умолчанию) или "balance". | balance |
payer_address | string | On-chain: кошелёк, отправляющий TRX. Для баланса не нужен. | TPayer... |
target_address | string | Опционально. Кошелёк-получатель энергии (по умолчанию payer_address). | TTarget... |
{
"id": "uuid",
"status": "pending_payment",
"payment_mode": "onchain",
"pay_address": "TDeposit...",
"amount_trx": "3.200000",
"energy_amount": 131000,
"duration_minutes": 15,
"expires_at": "2026-04-29T13:15:00.000Z",
"qr_payload": "tron:TDeposit...?amount=3.200000",
"duplicate": false,
"target_address": "TTarget..."
}{
"id": "uuid",
"status": "delegating",
"payment_mode": "balance",
"pay_address": null,
"amount_trx": "3.200000",
"energy_amount": 132310,
"duration_minutes": 15,
"expires_at": null,
"qr_payload": null,
"duplicate": false,
"target_address": "TTarget..."
}curl -sS -X POST "$BASE_URL/api/v2/quick-rent/orders" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"energy_amount": 131000,
"duration_minutes": 15,
"idempotency_key": "partner-onchain-001",
"payer_address": "TPayer...",
"target_address": "TTarget..."
}'curl -sS -X POST "$BASE_URL/api/v2/quick-rent/orders" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"energy_amount": 131000,
"duration_minutes": 15,
"idempotency_key": "partner-balance-001",
"payment_mode": "balance",
"target_address": "TTarget..."
}'Возвращает актуальный статус, payment_mode, суммы, адреса и error_code / error_message при сбое. effective_energy_amount отражает реально делегированную энергию после недоплаты/переплаты.
/api/v2/quick-rent/orders/:id| Параметр | Тип | Описание | Пример |
|---|---|---|---|
id | string | ID заказа (path-параметр) | uuid |
{
"id": "uuid",
"status": "delegated",
"payment_mode": "onchain",
"amount_trx": "3.200000",
"energy_amount": 131000,
"effective_energy_amount": 131000,
"duration_minutes": 15,
"pay_address": "TDeposit...",
"payer_address": "TPayer...",
"target_address": "TTarget...",
"error_code": null,
"error_message": null
}curl -sS "$BASE_URL/api/v2/quick-rent/orders/$ORDER_ID" \
-H "Authorization: Bearer $API_KEY"Отменяет заказ, который ещё в статусе pending_payment (только on-chain). После делегирования энергии заказ отменить уже нельзя.
/api/v2/quick-rent/orders/:id/cancel| Параметр | Тип | Описание | Пример |
|---|---|---|---|
id | string | ID заказа (path-параметр) | uuid |
curl -sS -X POST "$BASE_URL/api/v2/quick-rent/orders/$ORDER_ID/cancel" \
-H "Authorization: Bearer $API_KEY"Меняет кошелёк оплаты для on-chain заказа в статусе pending_payment — удобно, если клиент решил заплатить с другого кошелька до отправки TRX.
/api/v2/quick-rent/orders/:id/set-payer| Параметр | Тип | Описание | Пример |
|---|---|---|---|
id | string | ID заказа (path-параметр) | uuid |
payer_address | string | Новый кошелёк оплаты | TNewPayer... |
curl -sS -X POST "$BASE_URL/api/v2/quick-rent/orders/$ORDER_ID/set-payer" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"payer_address":"TNewPayer..."}'Возвращает баланс TRX аккаунта TronBid, привязанного к вашему API-ключу (баланс в кабинете, не on-chain кошелёк). Требует заголовок Authorization.
/api/v2/quick-rent/balance{ "balance_trx": "150.500000" }curl -sS "$BASE_URL/api/v2/quick-rent/balance" \
-H "Authorization: Bearer $API_KEY"Ошибки возвращают HTTP-статус и поле error. Ниже — те, что вы можете встретить.
| HTTP | error | Когда |
|---|---|---|
| 400 | Invalid body | Невалидный JSON или поля |
| 400 | INVALID_SKU / SKU_INACTIVE | Пакет недоступен |
| 400 | INVALID_PAYER_ADDRESS / INVALID_TARGET_ADDRESS | Некорректный TRON-адрес |
| 400 | INSUFFICIENT_BALANCE | Недостаточно TRX на балансе (режим balance) |
| 401 | Unauthorized | Нет или неверный API-ключ |
| 403 | BALANCE_PAYMENT_NOT_ENABLED | Оплата с баланса не подключена для вашего ключа |
| 409 | PENDING_PAYMENT_INTENT_EXISTS | Уже есть незакрытый on-chain заказ для этого payer |
| 409 | ACTIVE_DELEGATION_EXISTS | На target уже активна делегация Quick Rent |
| 409 | POOL_ENERGY_INSUFFICIENT | Временно нет свободной энергии в пуле |
| 409 | IDEMPOTENCY_PAYMENT_MODE_MISMATCH | Тот же idempotency_key с другим payment_mode |
| 429 | Too Many Requests | Лимит запросов |
| 503 | — | Сервис временно недоступен, повторите позже |
Частые ситуации и что делать простыми словами.
Проверьте, что сумма перевода точно равна amount_trx и деньги ушли на pay_address именно с указанного payer_address. Перевод должен пройти до expires_at. Обычно статус обновляется в течение минуты после подтверждения сети — продолжайте опрашивать GET /orders/:id.
Делегирование не удалось. При оплате с баланса TRX автоматически возвращается на баланс. Причина — в полях error_code и error_message ответа GET /orders/:id. Можно создать новый заказ.
На этот payer_address уже есть неоплаченный on-chain заказ. Оплатите его, дождитесь истечения (expires_at) или отмените через /orders/:id/cancel, затем создавайте новый.
Оплата с баланса не включена для вашего ключа. Напишите в поддержку TronBid для активации либо используйте on-chain (по умолчанию).
Слишком много запросов за короткое время. Уменьшите частоту опроса (например, раз в 3 секунды) и повторите позже.
При недоплате/переплате в on-chain итоговый объём меняется. Смотрите effective_energy_amount в GET /orders/:id — это реально делегированная энергия.
Нужен доступ к API, повышенные лимиты или включение оплаты с баланса? Напишите нам — поможем.