TRONBID B2B API · ВЕРСИЯ 2

API аренды энергии TRON для автоматических переводов USDT TRC-20

Автоматизируйте аренду энергии TRON для кошельков, обменников, OTC-сервисов и платёжных платформ. Получайте актуальные цены, создавайте идемпотентные заказы и платите on-chain или с баланса TronBid.

  • Актуальные цены пакетов
  • Оплата on-chain или с баланса
  • Идемпотентное создание заказов
Версия API
v2
Обновлено
2026-09-30
Production base URL
https://tronbid.com/api/v2/quick-rent
На этой странице

Начало работы

Обзор: что это и кому нужно

Quick Rent API — это способ автоматически, без ручной работы, арендовать энергию сети TRON. Энергия нужна, чтобы переводы USDT (TRC-20) и другие операции со смарт-контрактами стоили дешевле, чем при сжигании TRX.

Простыми словами: ваша программа (сайт, бот, сервис) сама покупает энергию тогда, когда она нужна — например, перед каждым переводом USDT вашего клиента.

Представьте автомат с напитками: смотрите цену, кидаете деньги, получаете товар. API — это те же кнопки автомата, только нажимает их ваша программа.

  1. 1
    Спросить цену

    Программа спрашивает у API, сколько стоит нужный пакет энергии прямо сейчас.

  2. 2
    Сделать заказ и оплатить

    Программа создаёт заказ и оплачивает его — переводом TRX на выданный адрес или списанием с баланса TronBid.

  3. 3
    Получить энергию

    Через несколько секунд энергия появляется на нужном кошельке, и можно отправлять USDT дешевле.

Важно: API — это инструмент для программиста. Чтобы им пользоваться, кто-то должен написать код, который отправляет запросы.

Если писать код некому — используйте готовую покупку энергии на сайте (Quick Rent) или Telegram-бота @tronbid. Результат тот же, просто вручную.

Словарь терминов

Короткие объяснения слов, которые встречаются в этой документации.

Energy (энергия)
«Топливо» сети TRON для операций со смарт-контрактами. Если энергии не хватает, сеть списывает TRX — это дороже. Аренда энергии экономит деньги.
TRX
Основная монета сети TRON. Ею платят за аренду энергии и комиссии сети.
USDT TRC-20
Стейблкоин (доллар) в сети TRON. Его перевод — это вызов смарт-контракта, которому нужна энергия.
API-ключ
Ваш секретный пароль для доступа к API. Передаётся в каждом запросе. Храните его только на сервере.
Endpoint
Конкретный адрес-«кнопка» API, куда программа отправляет запрос (например, /quote — узнать цену).
GET / POST
Типы запросов. GET — «просто спросить/получить данные», POST — «сделать действие» (создать заказ, рассчитать цену).
Bearer-токен
Способ передать API-ключ: в заголовке пишется Authorization: Bearer ВАШ_КЛЮЧ.
on-chain оплата
Оплата заказа обычным переводом TRX на выданный адрес — работает сразу, ничего включать не нужно.
Оплата с баланса
Оплата списанием с вашего счёта в TronBid. Быстрее, но её нужно предварительно включить для ключа.
Делегирование
Временная передача арендованной энергии на нужный кошелёк на срок аренды (например, 15 или 60 минут).
Polling (опрос)
Периодически переспрашивать статус заказа (раз в пару секунд), пока он не станет delegated или не завершится ошибкой.
idempotency_key
Ваш уникальный номер заказа. Если запрос отправится дважды, API вернёт тот же заказ, а не создаст новый — защита от двойной оплаты.

Перед стартом

Что нужно подготовить, прежде чем делать первый запрос.

  1. 1
    Получить API-ключ

    Обратитесь к @tronbid для включения Quick Rent API у вашего аккаунта. Затем откройте Dashboard → API и создайте ключ самостоятельно. Подтвердите пароль или подпишите сообщение кошельком, сохраните ключ и активируйте его. Не отправляйте ключ по email или в Telegram.

  2. 2
    Иметь TRON-кошелёк получателя

    Определите адрес (target_address), на который нужна энергия. Обычно это кошелёк, с которого ваши клиенты отправляют USDT.

  3. 3
    Выбрать пакет из каталога

    Quick Rent предлагает пакеты 65 000, 131 000, 196 500, 262 000, 524 000 и 1 048 000 Energy на 15 или 60 минут. Список доступных пакетов можно получить в каталоге без авторизации.

  4. 4
    Подготовить оплату

    Для on-chain — кошелёк с TRX для оплаты. Для оплаты с баланса — пополненный счёт TronBid и включённый режим balance.

Введение

Quick Rent API позволяет вашему сервису автоматически арендовать TRON Energy, чтобы переводы USDT TRC-20 и другие вызовы смарт-контрактов обходились дешевле, чем сжигание TRX.

Все эндпоинты используют один base URL.

Base URL (production)
http
https://tronbid.com/api/v2/quick-rent

Авторизация

Каждый запрос должен содержать ваш API-ключ как Bearer-токен в заголовке Authorization.

Храните ключ только на своей стороне (сервер, секреты CI). Не вставляйте его во фронтенд и публичные репозитории. Ключ привязан к одному аккаунту TronBid (кошелёк, указанный при выдаче доступа); списание с баланса возможно только с этого аккаунта.

При превышении лимита запросов API отвечает HTTP 429.

После разрешения администратора создайте ключ в Dashboard → API. Полный ключ показывается один раз. Скопируйте его в хранилище секретов своего сервера и нажмите «Я сохранил — активировать». До активации ключ не работает. Если закрыли окно раньше, отмените ожидающий ключ и создайте другой; действующий ключ продолжит работать.

Ранее выданные ключи работают до явной замены или отзыва. После активации замены предыдущий ключ действует ещё ровно один час. Обновите ключ в своей интеграции за это время; при необходимости отключите предыдущий раньше. Срок проверяется сервером, даже когда Dashboard закрыт.

В Dashboard и админке отображаются только последние шесть символов новых ключей. У ранее выданных ключей окончание может отсутствовать. Полный ключ повторно получить нельзя: потерянный ключ нужно заменить. Права API и лимиты запросов задаёт администратор.

http
Authorization: Bearer <API_KEY>

Режимы оплаты

Оплатить заказ можно двумя способами. On-chain — по умолчанию, не требует настройки. Оплата с баланса — опциональна и должна быть включена для вашего ключа.

Без активации запрос с payment_mode: balance вернёт 403 BALANCE_PAYMENT_NOT_ENABLED. Для подключения обратитесь в поддержку TronBid.

РежимКак включитьОплата
on-chainПо умолчанию — не указывать payment_mode (или "onchain")Отправьте один перевод TRX с ЛЮБОГО кошелька на выданный pay_address до expires_at. Ресурс поступит на target_address, а не автоматически отправителю.
balancepayment_mode: balance + включено для вашего ключаСписание с баланса TRX в кабинете TronBid

Каталог пакетов

energy_amount и duration_minutes должны соответствовать активному пакету Quick Rent. Пакеты Energy: 65000, 131000, 196500, 262000, 524000 и 1048000 на 15 или 60 минут. Пакет 196500 на 15 минут стоит в три раза больше текущего тарифа 65000/15 минут; к этой сумме для часовой аренды прибавляется 0,7 TRX. Цены динамические: перед созданием заказа запросите свежую котировку. Созданный заказ сохраняет зафиксированную цену.

Актуальный каталог можно получить в любой момент (без авторизации):

Получить актуальный каталог (без авторизации)
bash
curl -sS https://tronbid.com/api/public/quick-rent/skus

Сценарии работы

Быстрый старт: от нуля до энергии

Полный сквозной пример на самом простом сценарии (on-chain). Четыре шага — и энергия на кошельке.

Ниже — что происходит на каждом шаге и что возвращает API. Подставьте свой API-ключ, адреса и ID заказа.

  1. 1
    Шаг 1. Узнать цену — POST /quote

    Отправьте объём энергии и срок. В ответ придёт цена price_trx и на сколько секунд она зафиксирована.

  2. 2
    Шаг 2. Создать заказ — POST /orders

    Передайте пакет, idempotency_key и target_address — получателя ресурса. Ответ содержит pay_address, amount_trx, expires_at и payment_sender_mode.

  3. 3
    Шаг 3. Оплатить

    Отправьте один перевод TRX с ЛЮБОГО кошелька на выданный pay_address до expires_at. Ресурс поступит на target_address, а не автоматически отправителю.

  4. 4
    Шаг 4. Дождаться энергии — GET /orders/:id

    Опрашивайте статус раз в пару секунд, пока он не станет delegated. Значит, энергия делегирована на кошелёк — готово.

Ответ
json
{
  "price_trx": "3.200000",
  "available": true,
  "save_percent": 62,
  "expires_in_sec": 30
}
Ответ (on-chain)
json
{
  "id": "uuid",
  "status": "pending_payment",
  "payment_mode": "onchain",
  "payment_sender_mode": "any_wallet",
  "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..."
}
cURL
bash
# 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
Ответ
json
{
  "id": "uuid",
  "status": "delegated",
  "delivery_complete": true,
  "txid_delegate": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "txids_delegate": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],
  "payment_mode": "onchain",
  "payment_sender_mode": "any_wallet",
  "amount_trx": "3.200000",
  "expected_amount_trx": "3.200000",
  "paid_amount_trx": "3.200000",
  "effective_price_trx": null,
  "energy_amount": "131000",
  "effective_energy_amount": null,
  "duration_minutes": 15,
  "pay_address": "TDeposit...",
  "payer_address": "TPayer...",
  "target_address": "TTarget...",
  "error_code": null,
  "error_message": null
}

Сценарий on-chain

Передайте пакет, idempotency_key и target_address — получателя ресурса. Ответ содержит pay_address, amount_trx, expires_at и payment_sender_mode.

Отправьте один перевод TRX с ЛЮБОГО кошелька на выданный pay_address до expires_at. Ресурс поступит на target_address, а не автоматически отправителю.

Указывайте получателя ресурса в target_address. Для совместимости payer_address используется как адрес получателя, если target_address не передан. Новые заявки не ограничивают кошелёк отправителя.

Для каждой заявки выдаётся свободный адрес оплаты на 15 минут. Если адресов нет, HTTP 503 PAYMENT_WALLETS_BUSY предлагает повторить тот же запрос позже. При недоплате или переплате пересчитывается effective_energy_amount; отдельные платежи не суммируются. Минимальный учитываемый платёж — 0,9 TRX.

Не отправляйте деньги после expires_at и не используйте адрес оплаты повторно. Адреса выдаются заново: поздний перевод относится к заявке, которая сейчас использует этот адрес.

Тело запроса
json
{
  "energy_amount": 131000,
  "duration_minutes": 15,
  "idempotency_key": "your-unique-key-001",
  "target_address": "TTargetWalletXXXXXXXXXXXXXXXXXXXXX"
}
Ответ
json
{
  "id": "uuid",
  "status": "pending_payment",
  "payment_mode": "onchain",
  "payment_sender_mode": "any_wallet",
  "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-ключу. Бонус +1% Energy действует только для пакетов 524000 и 1048000 на 15 или 60 минут: выдаётся 529240 и 1058480 Energy соответственно. У остальных пакетов бонуса нет. Уже созданные заказы сохраняют зафиксированный объём Energy.

Для пополнения сначала вызовите POST /balance-topups с сохранённым UUID client_request_id, отправьте один перевод TRX на payment_address и опрашивайте GET /balance-topups/:id до credited. Затем проверьте GET /balance и переходите к расчёту цены и заказам с баланса.

Тело запроса
json
{
  "energy_amount": 131000,
  "duration_minutes": 15,
  "idempotency_key": "your-unique-key-balance-001",
  "payment_mode": "balance",
  "target_address": "TTargetWalletXXXXXXXXXXXXXXXXXXXXX"
}
Ответ
json
{
  "id": "uuid",
  "status": "delegating",
  "payment_mode": "balance",
  "payment_sender_mode": null,
  "pay_address": null,
  "amount_trx": "3.200000",
  "energy_amount": 131000,
  "duration_minutes": 15,
  "expires_at": null,
  "qr_payload": null,
  "duplicate": false,
  "target_address": "TTarget..."
}

Custom Locked: 1–15 минут (Energy API)

Добавьте custom_lock_minutes в POST /quote и POST /orders, чтобы выбрать Locked для Energy на целое число минут: 1, 2, 3, …, 15. Создание custom-заказа требует API-ключ; доступны оплата onchain и разрешённая для ключа оплата balance. Для Bandwidth, покупки через сайт и Telegram-бота эта опция недоступна.

Оставьте duration_minutes: 15 — это выбор тарифного пакета. Фактический Locked задаёт custom_lock_minutes. Используйте energy_amount из активного каталога пакетов на 15 минут. Цена и бонус Energy полностью совпадают с выбранным пакетом на 15 минут; поминутного уменьшения цены нет. Актуальную цену берите из /quote: примеры не фиксируют цену.

Поле необязательное. Если его не передавать, сохраняются прежние пакеты на 15/60 минут, расчёт и формат ответов. Значения по умолчанию нет. Нужен JSON integer: строки, дроби, null, 0, отрицательные значения и числа больше 15 отклоняются с HTTP 400. Сочетание custom с duration_minutes: 60 или resource_type: bandwidth также отклоняется.

Отправьте один перевод TRX с ЛЮБОГО кошелька на выданный pay_address до expires_at. Ресурс поступит на target_address, а не автоматически отправителю. Указывайте получателя ресурса в target_address. Для совместимости payer_address используется как адрес получателя, если target_address не передан. Новые заявки не ограничивают кошелёк отправителя. Для оплаты с баланса передайте target_address и payment_mode: balance; у API-ключа должна быть разрешена оплата с баланса.

Locked начинается после включения делегации в блок TRON, а не при запросе цены, создании заказа или оплате. Одна минута — 20 блоков TRON, примерно 60 секунд. Сохраняется фактическое время окончания в сети: delegation_expires_at. Поле expires_at в ответе оплаты — отдельный срок ожидания платежа.

Проверяйте GET /orders/:id, например раз в 3 секунды. Для custom возвращаются custom_lock_minutes и lock_period_blocks. В статусе также доступны delegation_expires_at, reclaim_status, txid_delegate, txid_reclaim и reclaimed_at. Ещё неизвестные даты и хеши транзакций равны null.

Статусы: pending_payment (только onchain) → delegating → delegated → undelegating → completed. delegated означает, что Energy выдана. undelegating означает окончание Locked и обработку Reclaim; reclaim_status равен pending. completed и reclaim_status: confirmed означают подтверждённый solidified возврат в блокчейне. Отдельный запрос на Reclaim не нужен.

Custom-заказы проверяются отдельным обработчиком каждые 3 секунды. Reclaim запускается, как только TRON разрешает возврат после Locked, независимо от общего обхода пула раз в 5 минут. Выпуск блоков, очередь и доступность RPC могут задержать отправку; подтверждение сетью занимает дополнительное время. До окончания блокировки в сети возврат не выполняется.

Заказы, подписанные транзакции и попытки возврата сохраняются. После перезапуска или таймаута RPC продолжается та же транзакция, а не новая аренда. Недоступность провайдера вызывает автоматический повтор проверки. Пара кошелёк пула/получатель зарезервирована до подтверждения Reclaim; новый заказ может обслужить другой свободный кошелёк пула.

Для повтора запроса используйте прежний idempotency_key. Изменение, добавление или удаление custom_lock_minutes для уже использованного ключа возвращает 409 IDEMPOTENCY_CUSTOM_LOCK_MISMATCH. Для другого срока нужен новый ключ. Прежняя проверка совпадения payment_mode сохраняется.

Настроенные вебхуки сохраняют прежнюю подпись и доставку. Custom-события содержат дополнительные поля Locked: quick_buy.delegated после выдачи, quick_buy.expired со status: completed и txid_reclaim после подтверждённого возврата или quick_buy.failed при достоверно неуспешной делегации. Удаляйте дубли по event_id. При недоступности провайдера проверяйте созданный заказ, не создавайте повторную аренду.

Дождитесь delegated перед использованием Energy. Locked и срок ожидания оплаты различаются. Reclaim возвращает делегированный ресурс пулу; это не возврат стоимости аренды.

cURL
bash
curl -sS -X POST https://tronbid.com/api/v2/quick-rent/quote \
  -H "Content-Type: application/json" \
  -d '{
  "energy_amount": 131000,
  "resource_type": "energy",
  "duration_minutes": 15,
  "custom_lock_minutes": 5
}'
cURL (с баланса)
bash
curl -sS -X POST https://tronbid.com/api/v2/quick-rent/orders \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
  "energy_amount": 131000,
  "resource_type": "energy",
  "duration_minutes": 15,
  "custom_lock_minutes": 5,
  "payment_mode": "balance",
  "target_address": "TTargetWalletXXXXXXXXXXXXXXXXXXXXX",
  "idempotency_key": "partner-custom-5min-balance-001"
}'
cURL (on-chain)
bash
curl -sS -X POST https://tronbid.com/api/v2/quick-rent/orders \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
  "energy_amount": 131000,
  "resource_type": "energy",
  "duration_minutes": 15,
  "custom_lock_minutes": 5,
  "target_address": "TTargetWalletXXXXXXXXXXXXXXXXXXXXX",
  "idempotency_key": "partner-custom-5min-onchain-001"
}'
Ответ
json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "status": "delegated",
  "duration_minutes": 15,
  "custom_lock_minutes": 5,
  "lock_period_blocks": 100,
  "delegation_expires_at": "2026-09-27T12:05:00.000Z",
  "reclaim_status": "not_started",
  "txid_delegate": "<delegation transaction hash>",
  "txid_reclaim": null,
  "reclaimed_at": null
}

Статусы заказа

Каждый заказ проходит через эти статусы. Отслеживайте его через GET /orders/:id.

СтатусЗначение
pending_paymentОжидается on-chain оплата
delegatingОплата получена / баланс списан, идёт делегирование
delegatedЭнергия делегирована
cancelledОтменён до оплаты (on-chain)
expiredИстекло время on-chain оплаты
failedОшибка (при balance TRX возвращается)
undelegatingCustom Locked истёк; ожидается подтверждение возврата ресурса
completedВозврат ресурса custom-заказа подтверждён в сети

Идемпотентность

idempotency_key (8–128 символов) — уникальный ID заказа на вашей стороне. Повтор POST /orders с тем же ключом (для того же API-клиента) вернёт тот же заказ с "duplicate": true.

Не используйте один idempotency_key для разных режимов оплаты (onchain vs balance) — будет 409 IDEMPOTENCY_PAYMENT_MODE_MISMATCH.

Справочник API

Доступность пулов для получателя

Перед созданием заказа проверьте, есть ли для получателя хотя бы один свободный пул Quick Rent Energy. POST /api/v2/quick-rent/availability использует ваш существующий Bearer API-ключ и общие с другими методами ограничения запросов по ключу и IP. Ключ идемпотентности не нужен.

Передайте target_address — корректный TRON-адрес в формате Base58. Необязательный resource_type принимает только energy. Не передавайте energy_amount, duration_minutes, custom_lock_minutes и платёжные данные. Проверка Bandwidth этим методом не поддерживается.

HTTP 200, available: true и reason: AVAILABLE означают, что хотя бы одна пара «пул → получатель» свободна от активного Locked и незавершённого заказа Quick Rent. HTTP 200, available: false и reason: ALL_POOLS_BUSY означают, что все подходящие пулы заняты для этого получателя. NO_ELIGIBLE_POOLS означает отсутствие подходящего включённого источника, в том числе когда единственный источник совпадает с получателем. Занятость — обычный результат проверки, а не HTTP-ошибка.

Применяются действующие правила резервирования: delegating, delegate_confirming, undelegating и активные delegated. Заказ Custom Locked занимает свой пул до обработки возврата, даже если срок Locked уже истёк. Метод читает актуальную конфигурацию пулов и резервы из БД, а для незарезервированных пар запрашивает свежую проверку Locked в блокчейне. checked_at — время завершения проверки в UTC, а не обещанное время освобождения.

HTTP 400: INVALID_REQUEST при некорректном JSON, отсутствующих или неизвестных полях и неподдерживаемом ресурсе; INVALID_TARGET_ADDRESS при неверном адресе или контрольной сумме. HTTP 401: ключ отсутствует, неверен или отключён. HTTP 429: превышен лимит запросов. HTTP 503: QUICK_RENT_DISABLED либо AVAILABILITY_CHECK_UNAVAILABLE, если не удалось проверить БД, конфигурацию подписанта или блокчейн. Ответ 503 означает неопределённость, а не доступность или занятость.

Порядок действий: проверка адреса → котировка нужного объёма → обычное создание заказа. Если пулы заняты, подождите или используйте другого получателя. При временной недоступности повторяйте запрос с увеличением интервала. Существующие методы и ответы не изменены; пользоваться новой проверкой необязательно.

POST/api/v2/quick-rent/availability

Параметры

ПараметрТипОписаниеПример
target_addressstringОбязательный TRON-адрес получателя в формате Base58 с корректной контрольной суммой.TWLaGaf3k6dbiEWvif1tNLeKuTErk2Tron
resource_type"energy"Необязательное поле. Только energy; значение по умолчанию — energy.energy

Метод только проверяет занятость пар. Он не создаёт заказ, не списывает баланс, не делегирует Energy и не резервирует пул. Объём Energy, цена, баланс, активация адреса и ограничения пересечения с Marketplace здесь не проверяются. До создания заказа ситуация может измениться: продолжайте обрабатывать существующую ошибку HTTP 409 ACTIVE_DELEGATION_EXISTS и остальные ошибки заказа. Проверка подходит для обычной Energy и Custom Locked.

cURL
bash
curl -sS -X POST https://tronbid.com/api/v2/quick-rent/availability \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
  "target_address": "TWLaGaf3k6dbiEWvif1tNLeKuTErk2Tron"
}'
Ответ
json
{
  "resource_type": "energy",
  "target_address": "TWLaGaf3k6dbiEWvif1tNLeKuTErk2Tron",
  "available": true,
  "reason": "AVAILABLE",
  "checked_at": "2026-09-30T12:00:00.000Z"
}
Ответ
json
{
  "resource_type": "energy",
  "target_address": "TWLaGaf3k6dbiEWvif1tNLeKuTErk2Tron",
  "available": false,
  "reason": "ALL_POOLS_BUSY",
  "checked_at": "2026-09-30T12:00:00.000Z"
}
Ответ
json
{
  "error": "AVAILABILITY_CHECK_UNAVAILABLE",
  "message": "Availability could not be verified. Retry later."
}

Калькулятор

Оцените, сколько энергии нужно адресу для перевода. Передайте кошелёк получателя и признак наличия у него USDT.

POST/api/v2/quick-rent/calculator

Параметры

ПараметрТипОписаниеПример
wallet_addressstringTRON-адрес для анализаTXXXXXXXX...XXXX
has_usdtboolean | nullЕсть ли у получателя USDT (влияет на энергию). true, false или не передавать.true
Тело запроса
json
{
  "wallet_address": "TXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "has_usdt": true
}
cURL
bash
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).

POST/api/v2/quick-rent/quote

Параметры

ПараметрТипОписаниеПример
energy_amountintОбъём энергии из активного каталога131000
duration_minutesintСрок аренды из каталога15
custom_lock_minutesintegerНеобязательное целое число 1–15 включительно. Только Energy API и duration_minutes: 15. Без поля — прежнее поведение.5
Ответ
json
{
  "price_trx": "3.200000",
  "available": true,
  "save_percent": 62,
  "expires_in_sec": 30
}
cURL
bash
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 укажите target_address и оплатите с любого кошелька на полученный pay_address. Для баланса передайте payment_mode: balance — сумма сразу спишется с привязанного аккаунта.

Указывайте получателя ресурса в target_address. Для совместимости payer_address используется как адрес получателя, если target_address не передан. Новые заявки не ограничивают кошелёк отправителя.

Для каждой заявки выдаётся свободный адрес оплаты на 15 минут. Если адресов нет, HTTP 503 PAYMENT_WALLETS_BUSY предлагает повторить тот же запрос позже. При недоплате или переплате пересчитывается effective_energy_amount; отдельные платежи не суммируются.

POST/api/v2/quick-rent/orders

Параметры

ПараметрТипОписаниеПример
energy_amountintОбъём энергии из каталога131000
duration_minutesintСрок аренды из каталога15
idempotency_keystringВаш уникальный ID заказа (8–128 символов)partner-onchain-001
payment_modestringОпционально. "onchain" (по умолчанию) или "balance".balance
payer_addressstringСовместимый со старым API адрес получателя, если нет target_address. Не ограничивает отправителя платежа по новой заявке.TPayer...
target_addressstringПолучатель ресурса. Обязателен для balance; для on-chain используйте это поле или старый payer_address как адрес получателя.TTarget...
custom_lock_minutesintegerНеобязательное целое число 1–15 включительно. Только Energy API и duration_minutes: 15. Без поля — прежнее поведение.5
Ответ (on-chain)
json
{
  "id": "uuid",
  "status": "pending_payment",
  "payment_mode": "onchain",
  "payment_sender_mode": "any_wallet",
  "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..."
}
Ответ (с баланса)
json
{
  "id": "uuid",
  "status": "delegating",
  "payment_mode": "balance",
  "payment_sender_mode": null,
  "pay_address": null,
  "amount_trx": "3.200000",
  "energy_amount": 131000,
  "duration_minutes": 15,
  "expires_at": null,
  "qr_payload": null,
  "duplicate": false,
  "target_address": "TTarget..."
}
cURL (on-chain)
bash
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",
    "target_address": "TTarget..."
  }'
cURL (с баланса)
bash
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 отражает реально делегированную энергию после недоплаты/переплаты.

amount_trx — строка с суммой в TRX, например "1.500000". При оплате с баланса это записанная сумма списания за заказ; при on-chain оплате — ожидаемая сумма платежа, как в ответе создания заказа. Для старых заказов без ожидаемой суммы используется сохранённая цена. Само поле не подтверждает оплату, выдачу ресурсов или возврат. Значение существующих полей не меняется: paid_amount_trx — зарегистрированный входящий платёж, который может быть null у заказов с баланса; expected_amount_trx — ожидаемый платёж; effective_price_trx может содержать пересчитанную стоимость аренды после недоплаты или переплаты. Исполнение проверяйте по status и delivery_complete.

refund содержит объект только при наличии записи о выполненном возврате на баланс для текущей попытки оплаты; иначе — null. status: completed подтверждает зачисление, amount_trx — возвращённая сумма TRX в виде десятичной строки, refunded_at — время в UTC в формате ISO 8601, destination — account_balance или bot_balance. Сам статус failed не подтверждает возврат. null не доказывает отсутствие возврата в прошлом: у старых заказов запись может отсутствовать. Из суммы возврата может быть исключена уже выполненная активация кошелька. Поле amount_trx верхнего уровня по-прежнему содержит исходную стоимость заказа, а не сумму за вычетом возврата. При повторном платном исполнении начинается новая попытка оплаты; прошлый возврат не считается возвратом новой оплаты.

txid_delegate — хеш транзакции делегирования в сети TRON для обычных заказов и Custom Locked. Это не ID заказа TronBid и не payment_txid платежа. При status: delegated хеш сохранённой делегации возвращается в этом же ответе; он сохраняется после завершения аренды. Пока основной хеш не записан, значение — null. У старых записей без сохранённого хеша также может быть null.

txids_delegate — массив сохранённых хешей делегации без повторов. Обычно он содержит один хеш; при исполнении заказа несколькими транзакциями, включая поставщика и резервное исполнение нашими пулами, содержит все сохранённые хеши. txid_delegate остаётся одной строкой или null; когда основной хеш есть, он стоит первым в массиве. Пока хешей нет, возвращается []. Хеш может появиться до подтверждения, а часть транзакций — до полного исполнения: проверяйте status и delivery_complete, а не только наличие хеша.

Открыть транзакцию: https://tronscan.org/#/transaction/{txid}. Поля добавлены к прежнему ответу GET /api/v2/quick-rent/orders/{id}: адрес API, ключи, параметры запросов, существующие поля и статусы не меняются. Существующие интеграции, игнорирующие незнакомые поля ответа, продолжают работать без изменений. При строгой проверке схемы разрешите дополнительные поля. Для получения хешей не нужны новый ключ или дополнительный параметр запроса.

payment_sender_mode: any_wallet для новых счетов, specified_wallet для старых и null для баланса. pay_address относится только к этому счёту. payer_address в статусе после обнаружения on-chain оплаты — фактический отправитель, а не получатель ресурса.

GET/api/v2/quick-rent/orders/:id

Параметры

ПараметрТипОписаниеПример
idstringID заказа (path-параметр)uuid
Ответ
json
{
  "id": "uuid",
  "status": "delegated",
  "delivery_complete": true,
  "txid_delegate": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "txids_delegate": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],
  "payment_mode": "onchain",
  "payment_sender_mode": "any_wallet",
  "amount_trx": "3.200000",
  "expected_amount_trx": "3.200000",
  "paid_amount_trx": "3.200000",
  "effective_price_trx": null,
  "energy_amount": "131000",
  "effective_energy_amount": null,
  "duration_minutes": 15,
  "pay_address": "TDeposit...",
  "payer_address": "TPayer...",
  "target_address": "TTarget...",
  "error_code": null,
  "error_message": null
}
Пример: один заказ, несколько транзакций делегации
json
{
  "id": "uuid",
  "status": "delegated",
  "delivery_complete": true,
  "txid_delegate": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "txids_delegate": [
    "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
  ]
}
cURL
bash
curl -sS "$BASE_URL/api/v2/quick-rent/orders/$ORDER_ID" \
  -H "Authorization: Bearer $API_KEY"

Отмена заказа

Отменяет заказ, который ещё в статусе pending_payment (только on-chain). После делегирования энергии заказ отменить уже нельзя.

POST/api/v2/quick-rent/orders/:id/cancel

Параметры

ПараметрТипОписаниеПример
idstringID заказа (path-параметр)uuid
cURL
bash
curl -sS -X POST "$BASE_URL/api/v2/quick-rent/orders/$ORDER_ID/cancel" \
  -H "Authorization: Bearer $API_KEY"

Смена плательщика

Только для старых счетов с payment_sender_mode: specified_wallet. Новые счета принимают оплату с любого кошелька и не требуют set-payer; попытка вызова возвращает HTTP 409 PAYMENT_SENDER_NOT_REQUIRED.

POST/api/v2/quick-rent/orders/:id/set-payer

Параметры

ПараметрТипОписаниеПример
idstringID заказа (path-параметр)uuid
payer_addressstringНовый кошелёк оплатыTNewPayer...
cURL
bash
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.

Сумма включает доступные балансы текущей связки email и кошелька. Для пополнения через API создайте счёт и дождитесь status: credited.

GET/api/v2/quick-rent/balance
Ответ
json
{ "balance_trx": "150.500000" }
cURL
bash
curl -sS "$BASE_URL/api/v2/quick-rent/balance" \
  -H "Authorization: Bearer $API_KEY"

Создать счёт на пополнение баланса

Используйте существующий включённый API-ключ. Разрешение на оплату с баланса для пополнения не требуется: оно нужно только при покупке ресурсов с payment_mode: balance. Метод создаёт или возвращает счёт. Он не отправляет TRX и не создаёт заказ на аренду.

Передайте JSON с client_request_id — UUID, сохранённым до первого запроса. Повтор с тем же UUID возвращает исходную сессию даже после зачисления, отмены или истечения срока. Другой UUID возвращает уже открытый счёт pending с прежним сроком; если его нет, создаётся новый счёт.

Пополнение принадлежит аккаунту кошелька, к которому привязан API-ключ. Выбрать другого владельца или email нельзя. GET /balance учитывает доступные балансы текущей связки email и кошелька; привязка не меняет владельца уже созданного счёта.

Создание, возобновление и повтор возвращают HTTP 200. Передавайте application/json только с client_request_id (не более 8192 байт); сумма, владелец, адрес, срок и query-параметры не принимаются. Идемпотентность привязана к API-клиенту и сохраняется при замене его ключа. Другой API-клиент имеет отдельное пространство запросов. Тело запроса должно поступить полностью за 5 секунд; иначе возвращается HTTP 408 REQUEST_TIMEOUT. Повторите запрос с тем же client_request_id, не отправляя второй перевод.

POST/api/v2/quick-rent/balance-topups

Параметры

ПараметрТипОписаниеПример
client_request_idstring (UUID)Обязательный UUID версий 1–5; рекомендуется UUIDv4. Сохраните его до первого запроса и повторяйте с тем же API-клиентом. В ответе UUID приводится к нижнему регистру.9f5a6f60-b8ec-4b45-9e22-2bf5a1d9f101

Отправьте один перевод нативного TRX в сети TRON с любого кошелька на payment_address. Memo не нужен. Сумму выбираете сами; минимум — 0.000001 TRX. После подтверждения зачисляется вся принятая сумма перевода.

Адрес действует 15 минут. Сравнивайте expires_at с server_time. Транзакция должна попасть в блокчейн в пределах этого окна; одной отправки до срока недостаточно. Не используйте адрес повторно после оплаты или истечения срока.

Если POST завершился тайм-аутом, повторите его с ТЕМ ЖЕ client_request_id, чтобы получить исходный счёт. Не создавайте ещё один платёж и не отправляйте TRX повторно из-за тайм-аута HTTP. Если перевод уже отправлен, проверяйте исходный session_id.

Все ответы имеют private, no-store. Храните API-ключ на сервере. При ограничении частоты запросов или нехватке адресов соблюдайте Retry-After.

Для владельца возобновляется один счёт pending. Адрес отменённого счёта остаётся зарезервированным до исходного срока; одновременно допускаются до трёх неистёкших зарезервированных окон. При превышении возвращается 409 с Retry-After. Отдельные переводы не суммируются; сумма ответа указана в TRX, не в SUN.

Ответ
json
{
  "client_request_id": "9f5a6f60-b8ec-4b45-9e22-2bf5a1d9f101",
  "session_id": "a832995c-90d4-4c96-b01d-7eccf2458db0",
  "asset": "TRX",
  "network": "TRON",
  "payment_address": "TDepositWalletFromResponse",
  "payment_sender_mode": "any_wallet",
  "created_at": "2026-10-18T14:00:00.001Z",
  "expires_at": "2026-10-18T14:15:00.001Z",
  "server_time": "2026-10-18T14:00:00.100Z",
  "status": "pending",
  "credited_amount_trx": null,
  "txid": null,
  "credited_at": null,
  "min_amount_trx": "0.000001",
  "poll_after_seconds": 10,
  "review_required": false
}
cURL
bash
# Generate and save a UUID once. Reuse it when retrying this request.
curl -sS -X POST "https://tronbid.com/api/v2/quick-rent/balance-topups" \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"client_request_id":"9f5a6f60-b8ec-4b45-9e22-2bf5a1d9f101"}'

Проверить пополнение баланса

Передайте полученный session_id как :id и включённый Bearer API-ключ того же аккаунта. Несуществующая сессия или сессия другого владельца возвращает HTTP 404. Cookie браузера не заменяет авторизацию API.

Проверяйте статус не чаще, чем раз в poll_after_seconds (10 секунд). Ответ содержит исходные payment_address, created_at и expires_at, текущее server_time, asset: TRX, network: TRON, payment_sender_mode: any_wallet и min_amount_trx.

pending — ожидание перевода; confirming — перевод проверяется; credited — зачисление на баланс записано; expired — срок оплаты истёк; cancelled — счёт отменён; manual_review — перевод требует проверки, повторно отправлять его не нужно.

credited_amount_trx — десятичная строка с шестью знаками после точки либо null до зачисления. txid и credited_at до зачисления равны null. review_required сообщает о необходимости ручной проверки. После credited доступный баланс показывает GET /balance.

GET читает сохранённое состояние: не сканирует блокчейн, не запускает зачисление и не продлевает срок. Сессию может читать другой включённый ключ того же исходного аккаунта кошелька. Привязка email не делает отдельный email-профиль владельцем счёта.

GET/api/v2/quick-rent/balance-topups/:id

Параметры

ПараметрТипОписаниеПример
idstring (UUID)Обязательный session_id из POST /balance-topups: UUID, а не ID заказа на аренду.a832995c-90d4-4c96-b01d-7eccf2458db0

Статус expired или cancelled не доказывает, что перевод не прошёл. Перевод, попавший в блокчейн в исходном окне, может быть обнаружен и зачислен позже, в том числе после отмены. Если уже оплатили, продолжайте проверять эту сессию и не платите повторно.

API предоставляет только создание и проверку. Закрытие экрана клиента не отменяет счёт. Не отправляйте новые переводы на старый адрес и не пытайтесь продлить его срок новым UUID запроса.

Статус confirming может сохраняться после локального таймера, пока перевод проверяется. Перевод, включённый вне исходного окна, требует ручной проверки. Один счёт зачисляет один перевод; дополнительные переводы требуют проверки, поэтому review_required может быть true даже при credited. Браузерная сессия того же аккаунта может отменить этот общий счёт; метода отмены в API нет.

Ответ
json
{
  "session_id": "a832995c-90d4-4c96-b01d-7eccf2458db0",
  "asset": "TRX",
  "network": "TRON",
  "payment_address": "TDepositWalletFromResponse",
  "payment_sender_mode": "any_wallet",
  "created_at": "2026-10-18T14:00:00.001Z",
  "expires_at": "2026-10-18T14:15:00.001Z",
  "server_time": "2026-10-18T14:01:20.000Z",
  "status": "credited",
  "credited_amount_trx": "25.000000",
  "txid": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "credited_at": "2026-10-18T14:01:19.000Z",
  "min_amount_trx": "0.000001",
  "poll_after_seconds": 10,
  "review_required": false
}
cURL
bash
# Use session_id returned by POST. Poll no faster than poll_after_seconds.
curl -sS "https://tronbid.com/api/v2/quick-rent/balance-topups/a832995c-90d4-4c96-b01d-7eccf2458db0" \
  -H "Authorization: Bearer <API_KEY>"

Приложение

Коды ошибок

Ошибки возвращают HTTP-статус и поле error. Ниже — те, что вы можете встретить.

HTTPerrorКогда
400Invalid bodyНевалидный JSON или поля
400INVALID_SKU / SKU_INACTIVEПакет недоступен
400INVALID_PAYER_ADDRESS / INVALID_TARGET_ADDRESSНекорректный TRON-адрес
400TARGET_ACCOUNT_NOT_ACTIVATEDКошелёк получателя энергии не активирован в сети TRON (на адрес ещё не поступал TRX)
503TRON_ACCOUNT_CHECK_FAILEDНе удалось проверить статус аккаунта в сети TRON — повторите позже
400INSUFFICIENT_BALANCEНедостаточно TRX на балансе (режим balance)
401UnauthorizedНет или неверный API-ключ
403BALANCE_PAYMENT_NOT_ENABLEDОплата с баланса не подключена для вашего ключа
409PENDING_PAYMENT_INTENT_EXISTSОшибка относится к старым счетам с указанным отправителем. Оплатите или отмените такой счёт либо дождитесь истечения срока. Новые счета принимают оплату с любого кошелька.
409ACTIVE_DELEGATION_EXISTSНа target уже активна делегация Quick Rent
409POOL_ENERGY_INSUFFICIENTВременно нет свободной энергии в пуле
409IDEMPOTENCY_PAYMENT_MODE_MISMATCHТот же idempotency_key с другим payment_mode
429Too Many RequestsЛимит запросов
503—Сервис временно недоступен, повторите позже
403CUSTOM_LOCK_API_ONLYСоздание заказа Custom Locked требует авторизованного клиента Quick Rent API.
409IDEMPOTENCY_CUSTOM_LOCK_MISMATCHДля idempotency_key передан другой срок custom, в том числе добавлено или удалено поле.
400INVALID_CUSTOM_LOCKНеверный custom: требуется целое число 1–15, Energy и duration_minutes: 15.
503PAYMENT_WALLETS_BUSY / PAYMENT_WALLET_POOL_DISABLED / PAYMENT_SCANNER_UNAVAILABLEВсе адреса оплаты заняты или проверка платежей временно недоступна. Подождите и повторите запрос с тем же idempotency_key: успешный повтор вернёт исходную заявку без резервирования нового адреса.
400INVALID_REQUESTНеверное тело запроса пополнения, UUID, поля или параметры запроса.
401UNAUTHORIZEDAPI-ключ пополнения отсутствует, неверен, отключён или заменён новым.
403ACCOUNT_BLOCKED / INVALID_ACCOUNT_SCOPEАккаунт заблокирован или его текущие права на баланс не подтверждены.
404TOPUP_SESSION_NOT_FOUNDПополнение не существует или принадлежит другому аккаунту.
409TOPUP_PENDING_WINDOWS_LIMITСлишком много зарезервированных окон оплаты. Подождите retry_after_seconds / Retry-After; не перебирайте UUID запросов.
413BODY_TOO_LARGEТело JSON запроса пополнения превышает допустимый размер.
429RATE_LIMITEDДостигнут лимит запросов пополнения. Retry-After — 60 секунд.
503PAYMENT_WALLETS_BUSY / PAYMENT_WALLET_POOL_DISABLED / TOPUP_UNAVAILABLEАдрес или сервис пополнения временно недоступен. Повторяйте тот же client_request_id; этот ответ не является поводом отправить перевод ещё раз.
408REQUEST_TIMEOUTТело запроса должно поступить полностью за 5 секунд; иначе возвращается HTTP 408 REQUEST_TIMEOUT. Повторите запрос с тем же client_request_id, не отправляя второй перевод.

Если что-то пошло не так

Частые ситуации и что делать простыми словами.

Оплатил, но заказ висит в pending_payment

Отправьте один перевод TRX с ЛЮБОГО кошелька на выданный pay_address до expires_at. Ресурс поступит на target_address, а не автоматически отправителю. Для каждой заявки выдаётся свободный адрес оплаты на 15 минут. Если адресов нет, HTTP 503 PAYMENT_WALLETS_BUSY предлагает повторить тот же запрос позже. При недоплате или переплате пересчитывается effective_energy_amount; отдельные платежи не суммируются. Не отправляйте деньги после expires_at и не используйте адрес оплаты повторно. Адреса выдаются заново: поздний перевод относится к заявке, которая сейчас использует этот адрес.

Статус стал failed — что это?

Делегирование не удалось. При оплате с баланса TRX автоматически возвращается на баланс. Причина — в полях error_code и error_message ответа GET /orders/:id. Можно создать новый заказ.

Ошибка 409 PENDING_PAYMENT_INTENT_EXISTS

Ошибка относится к старым счетам с указанным отправителем. Оплатите или отмените такой счёт либо дождитесь истечения срока. Новые счета принимают оплату с любого кошелька.

Ошибка 403 BALANCE_PAYMENT_NOT_ENABLED

Оплата с баланса не включена для вашего ключа. Напишите в поддержку TronBid для активации либо используйте on-chain (по умолчанию).

Ошибка 429 Too Many Requests

Слишком много запросов за короткое время. Уменьшите частоту опроса (например, раз в 3 секунды) и повторите позже.

Пришло меньше энергии, чем заказал

При недоплате/переплате в on-chain итоговый объём меняется. Смотрите effective_energy_amount в GET /orders/:id — это реально делегированная энергия.

503 PAYMENT_WALLETS_BUSY / PAYMENT_WALLET_POOL_DISABLED / PAYMENT_SCANNER_UNAVAILABLE

Все адреса оплаты заняты или проверка платежей временно недоступна. Подождите и повторите запрос с тем же idempotency_key: успешный повтор вернёт исходную заявку без резервирования нового адреса.

Поддержка

Нужен доступ к API, повышенные лимиты или включение оплаты с баланса? Напишите нам — поможем.

Доступ к API и оплата с балансаTelegram @tronbid

Рассчитайте затраты, проверьте Quick Rent и автоматизируйте выдачу энергии TRON.