</> REST API v1

TRONENS API

Полный контракт TRONENS API v1: цена, расчёт Energy, создание заявки, статус, баланс и webhook.

Войти

Формат ответа

Настоящий ответ API всегда имеет success и, при успехе, data. При ошибке возвращается error с машинным кодом. Диагностический тестовый файл дополнительно показывает method, url, http_code, duration_ms, request, response и curl_error — эти поля не являются частью публичного API. Реальный ответ TRONENS находится внутри response тестера.

{
  "success": true,
  "data": { ... }
}
{
  "success": false,
  "error": "ERROR_CODE"
}

Авторизация

Authorization: Bearer te_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

Передавайте Bearer token в заголовке Authorization. Ключ создаётся в ЛК и полностью показывается только один раз.

Права ключаДоступ
quoteЦена + Расчёт Energy
orders:createСоздание заявки + Bulk API
orders:readСтатус заявки
balanceБаланс

Для каждого ключа можно задать IP whitelist, лимит запросов в минуту и срок действия. Ответы содержат X-RateLimit-Limit и X-RateLimit-Remaining; при 429 также Retry-After.

GET/api/v1/quote/

Цена

Возвращает цену для клиента с учётом персональной скидки.

GET /api/v1/quote/?package_id=1&duration_minutes=15
GET /api/v1/quote/?energy_amount=65000&duration_minutes=60
ПолеЧто означает
typeТип расчёта: package или custom.
package_idID тарифа; только для package.
nameНазвание тарифа; только для package.
energy_amountКоличество Energy, которое покупает клиент.
duration_minutesСрок аренды в минутах.
base_price_trxЦена до персональной скидки.
discount_percentФактически применённая скидка в процентах.
discount_trxСумма скидки в TRX.
price_trxИтоговая сумма, которая будет списана с клиента.

Пример ответа

{
  "success": true,
  "data": {
    "type": "custom",
    "energy_amount": 65000,
    "duration_minutes": 60,
    "base_price_trx": 1.961,
    "discount_percent": 0,
    "discount_trx": 0,
    "price_trx": 2.05
  }
}
POST/api/v1/estimate/

Расчёт Energy

Оценивает необходимый объём Energy для указанного TRON-адреса.

{
  "recipient_address": "T...",
  "has_usdt": true
}
ПолеЧто означает
recipient_addressTRON-адрес получателя.
has_usdtНеобязательный boolean: планируется ли USDT TRC20 операция.
ПолеЧто означает
estimated_energyОценочный необходимый объём Energy.
recommended_packageПодходящий активный тариф или null, если подходящего нет.

Пример ответа

{
  "success": true,
  "data": {
    "estimated_energy": 65000,
    "recommended_package": {
      "id": 1,
      "name": "65 000 Energy",
      "energy_amount": 65000,
      "duration_minutes": 15
    }
  }
}
POST/api/v1/order/

Создание заявки

Создаёт реальную заявку и списывает рассчитанную сумму с баланса TRX аккаунта. Адрес получателя должен быть активирован в сети TRON до создания заявки. Новые API-заявки принимаются асинхронно и возвращают HTTP 202. external_id рекомендуется передавать всегда: повтор того же значения вернёт существующую заявку без второго списания.

{
  "external_id": "merchant_93481",
  "package_id": 1,
  "duration_minutes": 15,
  "address": "T..."
}
ПолеЧто означает
external_idВаш уникальный ID (до 128 символов: A-Z, a-z, 0-9, . _ : -).
package_idID тарифа. Используйте package_id ИЛИ energy_amount.
energy_amountСвой объём Energy. Для custom используется доступный срок, сейчас 60 минут.
duration_minutesСрок аренды.
addressTRON-адрес получателя Energy.
ПолеЧто означает
order_idID заявки в TRONENS.
external_idВаш ID заявки. Используется для идемпотентности и поиска статуса.
statusТекущий публичный статус заявки.
idempotenttrue означает, что такой external_id уже существовал и новая заявка не создавалась.

Пример ответа

HTTP 202
{
  "success": true,
  "data": {
    "order_id": 123,
    "external_id": "merchant_93481",
    "status": "processing",
    "idempotent": false
  }
}
POST

Bulk API

/api/v1/orders/bulk/

Создаёт до 50 заявок одним запросом. Каждый элемент имеет собственный external_id и отдельный результат accepted/failed. Требуется право orders:create. Успешно принятые заявки продолжают использовать обычные статусы и webhook.

Параметры запроса

{
  "orders": [
    {"external_id":"bulk-001","package_id":1,"duration_minutes":15,"address":"T..."},
    {"external_id":"bulk-002","energy_amount":65000,"duration_minutes":60,"address":"T..."}
  ]
}

1–50 заказов · право: orders:create · HTTP 202 / 207

Пример ответа

{
  "success": true,
  "data": {
    "accepted": 1,
    "failed": 1,
    "results": [
      {"index":0,"external_id":"bulk-001","status":"accepted","order":{"id":123}},
      {"index":1,"external_id":"bulk-002","status":"failed","error":"INVALID_TRON_ADDRESS"}
    ]
  }
}
GET/api/v1/status/

Статус заявки

Возвращает актуальные данные и статус заявки.

GET /api/v1/status/?id=123
GET /api/v1/status/?external_id=merchant_93481
ПолеЧто означает
idID заявки TRONENS.
external_idВаш внешний ID или null.
addressTRON-адрес получателя Energy.
energy_amountЗаказанный объём Energy.
duration_minutesСрок аренды в минутах.
price_trxСумма, списанная за заявку.
statusТекущий статус.
txidTXID делегирования, когда он доступен; иначе null.
refundedtrue, если стоимость заявки уже возвращена на баланс аккаунта.
error_codeБезопасный публичный код: ORDER_REVIEW, ORDER_FAILED или null.
created_atВремя создания заявки.
delivered_atВремя подтверждённой доставки Energy или null.
completed_atВремя полного завершения аренды или null.
updated_atВремя последнего изменения заявки.

Поля времени возвращаются в формате YYYY-MM-DD HH:MM:SS во временной зоне сервера TRONENS.

Пример ответа

{
  "success": true,
  "data": {
    "id": 123,
    "external_id": "merchant_93481",
    "address": "T...",
    "energy_amount": 65000,
    "duration_minutes": 15,
    "price_trx": 1.14,
    "status": "delegated",
    "txid": "...",
    "refunded": false,
    "error_code": null,
    "created_at": "2026-10-03 18:01:00",
    "delivered_at": "2026-10-03 18:01:12",
    "completed_at": null,
    "updated_at": "2026-10-03 18:01:12"
  }
}

Статус

СтатусЗначение
processingЗаявка принята и обрабатывается.
delegatingДелегирование отправляется или ожидает подтверждения.
delegatedEnergy доставлена, аренда активна.
undelegatingСрок аренды завершён, ресурс возвращается.
completedАренда полностью завершена.
reviewНужна дополнительная проверка. Не создавайте дубль заявки.
failedПодтверждённая ошибка. Поле refunded показывает, был ли уже выполнен возврат.
GET/api/v1/balance/

Баланс

Текущий доступный баланс аккаунта в TRX.

ПолеЧто означает
balance_trxДоступный баланс клиента в TRX.
{"success":true,"data":{"balance_trx":125.5}}

Webhook

Webhook передаёт данные заявки при изменении её статуса. Проверяйте подпись по исходному JSON-телу и webhook secret.

X-Webhook-Event: order.delegated
X-Webhook-Id: order-123-order.delegated-...
X-Webhook-Signature: sha256=<hex_hmac>

expected = HMAC_SHA256(raw_json_body, webhook_secret)
{
  "event": "order.delegated",
  "event_id": "order-123-order.delegated-...",
  "created_at": "2026-10-03T15:01:12Z",
  "data": {
    "order_id": 123,
    "external_id": "merchant_93481",
    "address": "T...",
    "energy_amount": 65000,
    "duration_minutes": 15,
    "price_trx": 1.14,
    "status": "delegated",
    "txid": "...",
    "refunded": false,
    "error_code": null,
    "created_at": "2026-10-03 18:01:00",
    "delivered_at": "2026-10-03 18:01:12",
    "completed_at": null,
    "updated_at": "2026-10-03 18:01:12"
  }
}

События: order.processing, order.delegating, order.delegated, order.undelegating, order.completed, order.review, order.failed. HTTP 2xx считается успешной доставкой; временные ошибки повторяются до 8 раз с увеличением паузы. Удаляйте дубли по event_id.

Ошибки

Коды error предназначены для программной обработки. Используйте HTTP-статус и значение поля error.

HTTPerrorЧто означает
401UNAUTHORIZED / TOKEN_EXPIREDНедействительный или просроченный API-ключ.
403SCOPE_FORBIDDEN / IP_NOT_ALLOWEDУ ключа нет нужного права или IP не входит в whitelist.
402INSUFFICIENT_BALANCEНедостаточно TRX на балансе.
400INVALID_JSONНекорректный JSON.
413REQUEST_TOO_LARGEJSON body превышает допустимый размер.
400ID_REQUIREDДля статуса нужен id или external_id.
404NOT_FOUND / PACKAGE_NOT_FOUNDЗаявка или тариф не найдены.
422EXTERNAL_ID_INVALIDНекорректный external_id.
422INVALID_TRON_ADDRESSНекорректный TRON-адрес.
422ADDRESS_NOT_ACTIVETRON-адрес ещё не активирован. Сначала активируйте адрес, затем создайте заявку.
422PRODUCT_REQUIRED / PRODUCT_SELECTOR_CONFLICTНужно передать ровно один из параметров package_id или energy_amount.
422CUSTOM_ENERGY_DISABLEDПроизвольный объём Energy временно отключён.
422CUSTOM_ENERGY_OUT_OF_RANGEОбъём custom Energy вне текущих лимитов.
422CUSTOM_ENERGY_INVALID_STEPОбъём custom Energy не соответствует допустимому шагу.
422RENTAL_DURATION_UNAVAILABLE / CUSTOM_DURATION_UNAVAILABLE / DURATION_PRICE_UNAVAILABLEЗапрошенный срок аренды недоступен.
503SERVICE_UNAVAILABLEСервис временно недоступен; повторите позже.
429RATE_LIMITEDПревышен лимит запросов API-ключа.
405METHOD_NOT_ALLOWEDНеверный HTTP-метод. Используйте метод, указанный в документации.