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Спросить цену
Программа спрашивает у API, сколько стоит нужный пакет энергии прямо сейчас.
- 2Сделать заказ и оплатить
Программа создаёт заказ и оплачивает его — переводом TRX на выданный адрес или списанием с баланса TronBid.
- 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Получить API-ключ
Обратитесь к @tronbid для включения Quick Rent API у вашего аккаунта. Затем откройте Dashboard → API и создайте ключ самостоятельно. Подтвердите пароль или подпишите сообщение кошельком, сохраните ключ и активируйте его. Не отправляйте ключ по email или в Telegram.
- 2Иметь TRON-кошелёк получателя
Определите адрес (target_address), на который нужна энергия. Обычно это кошелёк, с которого ваши клиенты отправляют USDT.
- 3Выбрать пакет из каталога
Quick Rent предлагает пакеты 65 000, 131 000, 196 500, 262 000, 524 000 и 1 048 000 Energy на 15 или 60 минут. Список доступных пакетов можно получить в каталоге без авторизации.
- 4Подготовить оплату
Для 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 до expires_at. Ресурс поступит на target_address, а не автоматически отправителю. |
balance | payment_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. Цены динамические: перед созданием заказа запросите свежую котировку. Созданный заказ сохраняет зафиксированную цену.
Актуальный каталог можно получить в любой момент (без авторизации):
curl -sS https://tronbid.com/api/public/quick-rent/skusСценарии работы
Быстрый старт: от нуля до энергии
Полный сквозной пример на самом простом сценарии (on-chain). Четыре шага — и энергия на кошельке.
Ниже — что происходит на каждом шаге и что возвращает API. Подставьте свой API-ключ, адреса и ID заказа.
- 1Шаг 1. Узнать цену — POST /quote
Отправьте объём энергии и срок. В ответ придёт цена price_trx и на сколько секунд она зафиксирована.
- 2Шаг 2. Создать заказ — POST /orders
Передайте пакет, idempotency_key и target_address — получателя ресурса. Ответ содержит pay_address, amount_trx, expires_at и payment_sender_mode.
- 3Шаг 3. Оплатить
Отправьте один перевод TRX с ЛЮБОГО кошелька на выданный pay_address до expires_at. Ресурс поступит на target_address, а не автоматически отправителю.
- 4Шаг 4. Дождаться энергии — GET /orders/:id
Опрашивайте статус раз в пару секунд, пока он не станет delegated. Значит, энергия делегирована на кошелёк — готово.
{
"price_trx": "3.200000",
"available": true,
"save_percent": 62,
"expires_in_sec": 30
}{
"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..."
}# 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",
"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 и не используйте адрес оплаты повторно. Адреса выдаются заново: поздний перевод относится к заявке, которая сейчас использует этот адрес.
{
"energy_amount": 131000,
"duration_minutes": 15,
"idempotency_key": "your-unique-key-001",
"target_address": "TTargetWalletXXXXXXXXXXXXXXXXXXXXX"
}{
"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 и переходите к расчёту цены и заказам с баланса.
{
"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",
"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 -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 -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 -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"
}'{
"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 возвращается) |
undelegating | Custom 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 означает неопределённость, а не доступность или занятость.
Порядок действий: проверка адреса → котировка нужного объёма → обычное создание заказа. Если пулы заняты, подождите или используйте другого получателя. При временной недоступности повторяйте запрос с увеличением интервала. Существующие методы и ответы не изменены; пользоваться новой проверкой необязательно.
/api/v2/quick-rent/availabilityПараметры
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
target_address | string | Обязательный TRON-адрес получателя в формате Base58 с корректной контрольной суммой. | TWLaGaf3k6dbiEWvif1tNLeKuTErk2Tron |
resource_type | "energy" | Необязательное поле. Только energy; значение по умолчанию — energy. | energy |
Метод только проверяет занятость пар. Он не создаёт заказ, не списывает баланс, не делегирует Energy и не резервирует пул. Объём Energy, цена, баланс, активация адреса и ограничения пересечения с Marketplace здесь не проверяются. До создания заказа ситуация может измениться: продолжайте обрабатывать существующую ошибку HTTP 409 ACTIVE_DELEGATION_EXISTS и остальные ошибки заказа. Проверка подходит для обычной Energy и Custom Locked.
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"
}'{
"resource_type": "energy",
"target_address": "TWLaGaf3k6dbiEWvif1tNLeKuTErk2Tron",
"available": true,
"reason": "AVAILABLE",
"checked_at": "2026-09-30T12:00:00.000Z"
}{
"resource_type": "energy",
"target_address": "TWLaGaf3k6dbiEWvif1tNLeKuTErk2Tron",
"available": false,
"reason": "ALL_POOLS_BUSY",
"checked_at": "2026-09-30T12:00:00.000Z"
}{
"error": "AVAILABILITY_CHECK_UNAVAILABLE",
"message": "Availability could not be verified. Retry later."
}Калькулятор
Оцените, сколько энергии нужно адресу для перевода. Передайте кошелёк получателя и признак наличия у него 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 |
custom_lock_minutes | integer | Необязательное целое число 1–15 включительно. Только Energy API и duration_minutes: 15. Без поля — прежнее поведение. | 5 |
{
"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 укажите target_address и оплатите с любого кошелька на полученный pay_address. Для баланса передайте payment_mode: balance — сумма сразу спишется с привязанного аккаунта.
Указывайте получателя ресурса в target_address. Для совместимости payer_address используется как адрес получателя, если target_address не передан. Новые заявки не ограничивают кошелёк отправителя.
Для каждой заявки выдаётся свободный адрес оплаты на 15 минут. Если адресов нет, HTTP 503 PAYMENT_WALLETS_BUSY предлагает повторить тот же запрос позже. При недоплате или переплате пересчитывается effective_energy_amount; отдельные платежи не суммируются.
/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 | Совместимый со старым API адрес получателя, если нет target_address. Не ограничивает отправителя платежа по новой заявке. | TPayer... |
target_address | string | Получатель ресурса. Обязателен для balance; для on-chain используйте это поле или старый payer_address как адрес получателя. | TTarget... |
custom_lock_minutes | integer | Необязательное целое число 1–15 включительно. Только Energy API и duration_minutes: 15. Без поля — прежнее поведение. | 5 |
{
"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..."
}{
"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 -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 -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 оплаты — фактический отправитель, а не получатель ресурса.
/api/v2/quick-rent/orders/:idПараметры
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
id | string | ID заказа (path-параметр) | uuid |
{
"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
}{
"id": "uuid",
"status": "delegated",
"delivery_complete": true,
"txid_delegate": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"txids_delegate": [
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
]
}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"Смена плательщика
Только для старых счетов с payment_sender_mode: specified_wallet. Новые счета принимают оплату с любого кошелька и не требуют set-payer; попытка вызова возвращает HTTP 409 PAYMENT_SENDER_NOT_REQUIRED.
/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.
Сумма включает доступные балансы текущей связки email и кошелька. Для пополнения через API создайте счёт и дождитесь status: credited.
/api/v2/quick-rent/balance{ "balance_trx": "150.500000" }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, не отправляя второй перевод.
/api/v2/quick-rent/balance-topupsПараметры
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
client_request_id | string (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.
{
"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
}# 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-профиль владельцем счёта.
/api/v2/quick-rent/balance-topups/:idПараметры
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
id | string (UUID) | Обязательный session_id из POST /balance-topups: UUID, а не ID заказа на аренду. | a832995c-90d4-4c96-b01d-7eccf2458db0 |
Статус expired или cancelled не доказывает, что перевод не прошёл. Перевод, попавший в блокчейн в исходном окне, может быть обнаружен и зачислен позже, в том числе после отмены. Если уже оплатили, продолжайте проверять эту сессию и не платите повторно.
API предоставляет только создание и проверку. Закрытие экрана клиента не отменяет счёт. Не отправляйте новые переводы на старый адрес и не пытайтесь продлить его срок новым UUID запроса.
Статус confirming может сохраняться после локального таймера, пока перевод проверяется. Перевод, включённый вне исходного окна, требует ручной проверки. Один счёт зачисляет один перевод; дополнительные переводы требуют проверки, поэтому review_required может быть true даже при credited. Браузерная сессия того же аккаунта может отменить этот общий счёт; метода отмены в API нет.
{
"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
}# 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. Ниже — те, что вы можете встретить.
| HTTP | error | Когда |
|---|---|---|
| 400 | Invalid body | Невалидный JSON или поля |
| 400 | INVALID_SKU / SKU_INACTIVE | Пакет недоступен |
| 400 | INVALID_PAYER_ADDRESS / INVALID_TARGET_ADDRESS | Некорректный TRON-адрес |
| 400 | TARGET_ACCOUNT_NOT_ACTIVATED | Кошелёк получателя энергии не активирован в сети TRON (на адрес ещё не поступал TRX) |
| 503 | TRON_ACCOUNT_CHECK_FAILED | Не удалось проверить статус аккаунта в сети TRON — повторите позже |
| 400 | INSUFFICIENT_BALANCE | Недостаточно TRX на балансе (режим balance) |
| 401 | Unauthorized | Нет или неверный API-ключ |
| 403 | BALANCE_PAYMENT_NOT_ENABLED | Оплата с баланса не подключена для вашего ключа |
| 409 | PENDING_PAYMENT_INTENT_EXISTS | Ошибка относится к старым счетам с указанным отправителем. Оплатите или отмените такой счёт либо дождитесь истечения срока. Новые счета принимают оплату с любого кошелька. |
| 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 | — | Сервис временно недоступен, повторите позже |
| 403 | CUSTOM_LOCK_API_ONLY | Создание заказа Custom Locked требует авторизованного клиента Quick Rent API. |
| 409 | IDEMPOTENCY_CUSTOM_LOCK_MISMATCH | Для idempotency_key передан другой срок custom, в том числе добавлено или удалено поле. |
| 400 | INVALID_CUSTOM_LOCK | Неверный custom: требуется целое число 1–15, Energy и duration_minutes: 15. |
| 503 | PAYMENT_WALLETS_BUSY / PAYMENT_WALLET_POOL_DISABLED / PAYMENT_SCANNER_UNAVAILABLE | Все адреса оплаты заняты или проверка платежей временно недоступна. Подождите и повторите запрос с тем же idempotency_key: успешный повтор вернёт исходную заявку без резервирования нового адреса. |
| 400 | INVALID_REQUEST | Неверное тело запроса пополнения, UUID, поля или параметры запроса. |
| 401 | UNAUTHORIZED | API-ключ пополнения отсутствует, неверен, отключён или заменён новым. |
| 403 | ACCOUNT_BLOCKED / INVALID_ACCOUNT_SCOPE | Аккаунт заблокирован или его текущие права на баланс не подтверждены. |
| 404 | TOPUP_SESSION_NOT_FOUND | Пополнение не существует или принадлежит другому аккаунту. |
| 409 | TOPUP_PENDING_WINDOWS_LIMIT | Слишком много зарезервированных окон оплаты. Подождите retry_after_seconds / Retry-After; не перебирайте UUID запросов. |
| 413 | BODY_TOO_LARGE | Тело JSON запроса пополнения превышает допустимый размер. |
| 429 | RATE_LIMITED | Достигнут лимит запросов пополнения. Retry-After — 60 секунд. |
| 503 | PAYMENT_WALLETS_BUSY / PAYMENT_WALLET_POOL_DISABLED / TOPUP_UNAVAILABLE | Адрес или сервис пополнения временно недоступен. Повторяйте тот же client_request_id; этот ответ не является поводом отправить перевод ещё раз. |
| 408 | REQUEST_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, повышенные лимиты или включение оплаты с баланса? Напишите нам — поможем.
Интеграция с TronBid
Рассчитайте затраты, проверьте Quick Rent и автоматизируйте выдачу энергии TRON.
