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.
/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_id | ID тарифа; только для 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
}
}/api/v1/estimate/Расчёт Energy
Оценивает необходимый объём Energy для указанного TRON-адреса.
{
"recipient_address": "T...",
"has_usdt": true
}| Поле | Что означает |
|---|---|
recipient_address | TRON-адрес получателя. |
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
}
}
}/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_id | ID тарифа. Используйте package_id ИЛИ energy_amount. |
energy_amount | Свой объём Energy. Для custom используется доступный срок, сейчас 60 минут. |
duration_minutes | Срок аренды. |
address | TRON-адрес получателя Energy. |
| Поле | Что означает |
|---|---|
order_id | ID заявки в TRONENS. |
external_id | Ваш ID заявки. Используется для идемпотентности и поиска статуса. |
status | Текущий публичный статус заявки. |
idempotent | true означает, что такой external_id уже существовал и новая заявка не создавалась. |
Пример ответа
HTTP 202
{
"success": true,
"data": {
"order_id": 123,
"external_id": "merchant_93481",
"status": "processing",
"idempotent": false
}
}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"}
]
}
}/api/v1/status/Статус заявки
Возвращает актуальные данные и статус заявки.
GET /api/v1/status/?id=123
GET /api/v1/status/?external_id=merchant_93481| Поле | Что означает |
|---|---|
id | ID заявки TRONENS. |
external_id | Ваш внешний ID или null. |
address | TRON-адрес получателя Energy. |
energy_amount | Заказанный объём Energy. |
duration_minutes | Срок аренды в минутах. |
price_trx | Сумма, списанная за заявку. |
status | Текущий статус. |
txid | TXID делегирования, когда он доступен; иначе null. |
refunded | true, если стоимость заявки уже возвращена на баланс аккаунта. |
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 | Делегирование отправляется или ожидает подтверждения. |
delegated | Energy доставлена, аренда активна. |
undelegating | Срок аренды завершён, ресурс возвращается. |
completed | Аренда полностью завершена. |
review | Нужна дополнительная проверка. Не создавайте дубль заявки. |
failed | Подтверждённая ошибка. Поле refunded показывает, был ли уже выполнен возврат. |
/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.
| HTTP | error | Что означает |
|---|---|---|
| 401 | UNAUTHORIZED / TOKEN_EXPIRED | Недействительный или просроченный API-ключ. |
| 403 | SCOPE_FORBIDDEN / IP_NOT_ALLOWED | У ключа нет нужного права или IP не входит в whitelist. |
| 402 | INSUFFICIENT_BALANCE | Недостаточно TRX на балансе. |
| 400 | INVALID_JSON | Некорректный JSON. |
| 413 | REQUEST_TOO_LARGE | JSON body превышает допустимый размер. |
| 400 | ID_REQUIRED | Для статуса нужен id или external_id. |
| 404 | NOT_FOUND / PACKAGE_NOT_FOUND | Заявка или тариф не найдены. |
| 422 | EXTERNAL_ID_INVALID | Некорректный external_id. |
| 422 | INVALID_TRON_ADDRESS | Некорректный TRON-адрес. |
| 422 | ADDRESS_NOT_ACTIVE | TRON-адрес ещё не активирован. Сначала активируйте адрес, затем создайте заявку. |
| 422 | PRODUCT_REQUIRED / PRODUCT_SELECTOR_CONFLICT | Нужно передать ровно один из параметров package_id или energy_amount. |
| 422 | CUSTOM_ENERGY_DISABLED | Произвольный объём Energy временно отключён. |
| 422 | CUSTOM_ENERGY_OUT_OF_RANGE | Объём custom Energy вне текущих лимитов. |
| 422 | CUSTOM_ENERGY_INVALID_STEP | Объём custom Energy не соответствует допустимому шагу. |
| 422 | RENTAL_DURATION_UNAVAILABLE / CUSTOM_DURATION_UNAVAILABLE / DURATION_PRICE_UNAVAILABLE | Запрошенный срок аренды недоступен. |
| 503 | SERVICE_UNAVAILABLE | Сервис временно недоступен; повторите позже. |
| 429 | RATE_LIMITED | Превышен лимит запросов API-ключа. |
| 405 | METHOD_NOT_ALLOWED | Неверный HTTP-метод. Используйте метод, указанный в документации. |