Меню документации

Заявки — Справочник API

Покупка и просмотр аренды ресурсов. В v1 нет отмены единичного заказа: POST /v1/orders списывает средства синхронно, поэтому заказ никогда не зависает неоплаченным в очереди, а статус created практически ненаблюдаем. Ошибка 3002 order_not_cancellable относится к POST /v1/batches/{id}/cancel, где получатели, взятые в обработку, уже не могут быть отменены.

МетодПутьОписание
GET/v1/ordersСписок заказов
POST/v1/ordersСоздание заказа
GET/v1/orders/{orderId}Детали заказа
POST/v1/orders/{orderId}/reclaimДосрочный отзыв ресурса до истечения срока

Сгенерировано из openapi.yaml во время сборки. Базовый URL https://api.tenergy.me/v1 или https://api-nile.tenergy.me/v1 в сети Nile (Окружения). Каждый запрос ниже подписывается в соответствии с разделом Аутентификация, если в строке Аутентификация не указано иное.

Список заказов

GET /v1/orders · listOrders

Аутентификация: API-ключ (HMAC).

Сортировка от новых к старым. Фильтры объединяются по логическому AND.

Параметр format=csv возвращает text/csv со всеми подходящими заказами без разбивки на страницы (limit и cursor игнорируются) в потоковом режиме с тем же набором полей: одна колонка на каждое поле схемы Order, activation.* и failure.* развернуты, delegate_hashes разделены пробелами. Ячейки, начинающиеся со знаков =, +, -, @, табуляции или перевода строки, экранируются символом ' для защиты от выполнения формул в электронных таблицах.

Параметры

ПараметрГдеТипОбязательныйОписание
statusqueryarray of enumФильтр по статусам заказов (created, paid, allocating, delegated, confirmed, active, expired, reclaimed, failed, refunded).
resourcequeryenum: energy, bandwidth, activation
receiverquerystring
client_order_idquerystringТочное совпадение. Быстрый способ найти заказ после сетевого сбоя.
created_afterquerystring (date-time)
created_beforequerystring (date-time)
fromquerystring (date-time)Нижняя граница времени создания (включительно).
toquerystring (date-time)Верхняя граница времени создания (исключительно).
formatqueryenum: json, csv
limitqueryinteger
cursorquerystringНепрозрачный курсор из next_cursor предыдущего ответа.

Ответы

СтатусЗначение
200OK
400Некорректный запрос — невалидный JSON, неизвестное поле или неверный тип.
401Отсутствуют, некорректны или отклонены учетные данные.
429Слишком много запросов.
500Ошибка на нашей стороне.

Поля ответа

ПолеТипОбязательноеОписание
dataarray of object (Order)да
data[].idstringда
data[].client_order_idstring | null
data[].account_idstringда
data[].batch_idstring | nullID пакета, если заказ создан в рамках пакетной обработки.
data[].subscription_idstring | nullID подписки, если заказ создан автопополнением.
data[].resourceenum: energy, bandwidth, activationдаenergy, bandwidth или activation.
data[].amountinteger | nullЗаказанный объем.
data[].delivered_amountinteger | nullФактически доставленный объем энергии.
data[].partialbooleantrue, если часть ресурсов не удалось выделить и разница была пропорционально возвращена (refunded_amount_sun). Частичная доставка — это флаг, а не отдельный статус: заказ переходит в confirmed → active.
data[].tierenum: 5m, 15m, 1h, 1d, 3d, 30d | null
data[].duration_secondsinteger | nullДлительность аренды в секундах.
data[].receiverstringдаTRON-адрес Base58Check (начинается с T, 34 символа).
data[].sourceenum: api, dashboard, transfer, bot, subscription, batch, proxyИсточник создания заказа.
data[].statusenum: created, paid, allocating, delegated, confirmed, active, expired, reclaimed, failed, refundedдаСтатус жизненного цикла заказа.
data[].confirm_statusenum: unconfirmed, confirmed, confirm_failedдаСтатус подтверждения ончейн-транзакции в блоке.
data[].price_sun_per_unitinteger | null
data[].pay_amount_suninteger (int64)Списано за сам ресурс.
data[].activate_amount_suninteger (int64)Списано за активацию получателя (0, если адрес уже был активен).
data[].total_amount_suninteger (int64)даОбщая сумма списания в SUN.
data[].refunded_amount_suninteger (int64)Сумма возврата в SUN (для failed, refunded или partial).
data[].delegate_hashstring | nullХеш первой транзакции делегирования.
data[].delegate_hashesarray of stringВсе транзакции делегирования для заказа.
data[].delegated_atstring (date-time) | null
data[].reclaim_hashstring | nullХеш транзакции досрочного отзыва ресурсов.
data[].reclaimed_atstring (date-time) | null
data[].expires_atstring (date-time) | nullВремя окончания аренды.
data[].activationobjectИнформация об активации адреса.
data[].activation.performedboolean
data[].activation.hashstring | null
data[].activation.amount_suninteger (int64)
data[].memostring | nullПользовательская заметка к заказу.
data[].created_atstring (date-time)да
data[].updated_atstring (date-time)
data[].failurenull | objectИнформация об ошибке (только для failed).
data[].failure.codeintegerда
data[].failure.slugstringда
data[].failure.messagestringда
data[].failure.atstring (date-time)
next_cursorstring | nullдаКурсор для следующей страницы (null на последней).

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

POST /v1/orders · createOrder

Аутентификация: API-ключ (HMAC).

Покупает аренду ресурсов для одного получателя со списанием средств с баланса аккаунта.

Ответ не является распиской о доставке. Код 201 означает, что заказ принят, оплачен и передан поставщикам; поле status сообщает о текущем прогрессе. В стандартном случае доставка синхронна и в течение нескольких секунд возвращается заказ с заполненным delegate_hash — со статусом confirmed или active. Статусы confirmed и active равнозначны: в обоих ресурс уже находится на адресе получателя. Если поставщику требуется больше времени, вы получите статус allocating — опрашивайте GET /v1/orders/{id} или используйте вебхук order.confirmed.

Проверяйте флаг partial. Заказ, где часть объема не удалось выделить, возвращается как confirmed/active с флагом partial: true и возвратом разницы стоимости на баланс.

Идемпотентность. Всегда передавайте client_order_id. Повторный вызов с тем же ID возвращает существующий заказ с HTTP 200 без повторного списания средств. При таймауте сети повторите точно такой же запрос.

Защита цены. Передавайте quote_id (списание ровно по зафиксированной сумме) или max_price_sun (отклонение с 3006 price_above_limit, если цена выросла).

Параметры

ПараметрГдеТипОбязательныйОписание
Idempotency-KeyheaderstringКлиентский ключ идемпотентности (8–128 символов).

Тело запроса

JSON (OrderRequest), обязательно.

ПолеТипОбязательноеОписание
client_order_idstringВаш уникальный ID заказа в рамках аккаунта. Настоятельно рекомендуется для идемпотентности.
quote_idstringID котировки из POST /v1/quotes для фиксации цены.
resourceenum: energy, bandwidth, activation
amountintegerОбъем ресурсов.
tierenum: 5m, 15m, 1h, 1d, 3d, 30dСрок аренды.
receiverstringTRON-адрес Base58Check (начинается с T, 34 символа).
activatebooleanАктивировать адрес, если он еще не активен на чейне. При false неактивный адрес вернет ошибку 3004 receiver_not_activated без списаний.
max_price_suninteger (int64)Максимальная допустимая общая цена (в SUN).
memostring | nullТекстовая заметка.

Пример тела запроса из контракта (значения для иллюстрации):

json
{
  "client_order_id": "acme-2026-09-11-000418",
  "resource": "energy",
  "amount": 65000,
  "tier": "1h",
  "receiver": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
  "activate": true
}

Ответы

СтатусЗначение
200Заказ с таким client_order_id уже существует; возвращен оригинал без повторного списания.
201Заказ создан и оплачен.
400Некорректный запрос — невалидный JSON, неизвестное поле или неверный тип.
401Отсутствуют, некорректны или отклонены учетные данные.
402Недостаточно средств на балансе.
409Конфликт состояния объекта.
422Синтаксически корректный запрос, но действие невозможно.
429Слишком много запросов.
500Ошибка на нашей стороне.
503Временно недоступно (fail-secure: средства не списаны).

Поля ответа (Order)

Те же поля, что в ответе GET /v1/orders.

Детали заказа

GET /v1/orders/{orderId} · getOrder

Аутентификация: API-ключ (HMAC).

Возвращает заказ с дополнительной детализацией: fills (распределение по уровням цен) и delegations (фактические транзакции на чейне с их tx id).

Параметры

ПараметрГдеТипОбязательныйОписание
orderIdpathstringдаID заказа на платформе (ord_…) или ваш client_order_id с префиксом cid: (например, cid:acme-2026-09-11-000418).

Ответы

СтатусЗначение
200OK
401Отсутствуют, некорректны или отклонены учетные данные.
404Объект не найден или принадлежит другому аккаунту.
429Слишком много запросов.
500Ошибка на нашей стороне.

Поля ответа

Содержит все поля объекта Order, а также:

ПолеТипОбязательноеОписание
fillsarray of objectдаРаспределение покупки по классам книги заявок.
fills[].classenum: instant, market, deepда
fills[].amountintegerдаОбъем, выкупленный в данном классе.
fills[].price_sunnumber | nullдаЦена за единицу.
delegationsarray of objectдаФактические транзакции делегирования.
delegations[].amountintegerдаДоставленный объем.
delegations[].tx_idstringдаХеш транзакции в сети TRON.

Досрочный отзыв ресурса до истечения срока

POST /v1/orders/{orderId}/reclaim · reclaimOrder

Аутентификация: API-ключ (HMAC).

Досрочно отзывает делегирование ресурсов. Полезно, когда транзакция, ради которой арендовалась энергия, уже подтверждена в сети: энергия освобождается в общий пул.

Без возврата средств. Досрочный отзыв не возвращает оплату, а служит для освобождения складских запасов платформы крупными интеграторами.

Идемпотентно. Повторный вызов возвращает тот же reclaim_hash. Если аренда уже завершилась сама по истечении времени, эндпоинт также возвращает 200.

Заказы, исполненные сторонними поставщиками, не могут быть отозваны досрочно (возвращается 3008 reclaim_unavailable).

Параметры

ПараметрГдеТипОбязательныйОписание
orderIdpathstringда
Idempotency-KeyheaderstringКлюч идемпотентности.

Ответы

СтатусЗначение
200Ресурс отозван (или уже был отозван).
202Запрос на отзыв принят, но транзакция в сети еще не подтверждена.
401Отсутствуют, некорректны или отклонены учетные данные.
404Объект не найден или принадлежит другому аккаунту.
409Нечего отзывать (3007) или заказ выполнен сторонним поставщиком (3008).
429Слишком много запросов.
500Ошибка на нашей стороне.

Поля ответа (Order)

Те же поля, что в объекте Order.

Пример ответа 200 из контракта (значения для иллюстрации):

json
{
  "id": "ord_01J9Z5P8T3WQ",
  "client_order_id": "acme-2026-09-11-000418",
  "account_id": "acc_01J9Z4K2M7Q8",
  "resource": "energy",
  "amount": 65000,
  "delivered_amount": 65000,
  "partial": false,
  "tier": "1h",
  "duration_seconds": 3600,
  "receiver": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
  "source": "api",
  "status": "reclaimed",
  "confirm_status": "confirmed",
  "price_sun_per_unit": 20,
  "pay_amount_sun": 1300000,
  "activate_amount_sun": 0,
  "total_amount_sun": 1300000,
  "refunded_amount_sun": 0,
  "delegate_hash": "a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90",
  "delegate_hashes": ["a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90"],
  "delegated_at": "2026-09-11T18:04:07.900Z",
  "reclaim_hash": "51fa77da06e8fbebf504fbf088d1d9611059398d51fa77da06e8fbebf504fbf0",
  "reclaimed_at": "2026-09-11T18:12:31.000Z",
  "expires_at": "2026-09-11T19:04:07.900Z",
  "activation": {"performed":false,"hash":null,"amount_sun":0},
  "created_at": "2026-09-11T18:04:05.400Z",
  "updated_at": "2026-09-11T18:12:31.000Z",
  "failure": null
}

    ↑ ↓ — выбрать · Enter — открыть · Esc — закрыть