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

Цены — Справочник API

Таблица цен, котировки и предварительный расчет стоимости.

МетодПутьОписание
GET/v1/pricesТекущая таблица цен
GET/v1/marketПубличная витрина рынка аренды энергии
GET/v1/market/historyИстория цен конкретного провайдера
GET/v1/orderbookКнига заявок (ask ladder) по ресурсу и тарифу
GET/v1/estimateБыстрый предварительный расчет стоимости
POST/v1/quotesСоздание фиксированной котировки
GET/v1/quotes/{quoteId}Получение котировки

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

Текущая таблица цен

GET /v1/prices · getPrices

Аутентификация: Публичный — учетные данные не требуются; запрос с API-ключом (HMAC) также принимается.

Все доступные для покупки ресурсы с ценами для каждого тарифа и объема. Цены меняются в зависимости от времени суток, поэтому ответ содержит окно актуальности (valid_until), текущий тарифный период и суточное расписание schedule с часовой ценой энергии для каждого периода.

Используйте этот эндпоинт для отображения тарифов. Чтобы зафиксировать цену для заказа, запросите котировку (POST /v1/quotes) — записи в таблице цен носят справочный характер и не являются обязывающими.

Публичный. Учетные данные не требуются; для анонимных вызовов действует лимит по IP. Подписанный запрос расходует лимит вызовов соответствующего ключа.

Параметры

ПараметрГдеТипОбязательныйОписание
resourcequeryenum: energy, bandwidth, activationОграничить ответ определенным типом ресурса.

Ответы

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

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

ПолеТипОбязательноеОписание
networkenum: mainnet, nileда
as_ofstring (date-time)да
valid_untilstring (date-time)даВремя, до которого гарантированы указанные цены. После этого момента запросите таблицу заново.
periodobjectДействующий в данный момент тарифный период. Периоды настраиваются сервером.
period.idstring
period.labelstring
period.startstringHH:MM UTC
period.endstringHH:MM UTC
schedulearray of objectРасписание всех тарифных периодов дня с ценой энергии на 1 час для каждого.
schedule[].idstringда
schedule[].labelstringда
schedule[].start_utc_minuteintegerдаНачало периода (минуты от 00:00 UTC).
schedule[].end_utc_minuteintegerдаОкончание периода (минуты от 00:00 UTC).
schedule[].factor_bpsintegerдаКоэффициент времени суток в базисных пунктах (10 000 = ×1.00).
schedule[].price_sun_per_unitnumber | nullдаЦена энергии на 1 ч в SUN за единицу в этот период. null, если тариф не продается.
available_energyinteger (int64)Объем энергии, доступный для продажи прямо сейчас (глубина книги заявок для тарифа 1h).
delivered_todayinteger (int64)Объем энергии, доставленный по заказам бренда с 00:00 UTC сегодня.
payment_addressesobjectАдреса для прямой оплаты через «отправку TRX» без аккаунта.
available_bandwidthinteger (int64)
itemsarray of objectда
items[].resourceenum: energy, bandwidth, activationда
items[].tierenum: 5m, 15m, 1h, 1d, 3d, 30dдаСрок аренды.
items[].price_sun_per_unitintegerдаSUN за единицу ресурса на весь период тарифа.
items[].min_amountintegerда
items[].max_amountintegerда
items[].volume_tiersarray of objectСкидки за объем.
items[].volume_tiers[].min_amountintegerда
items[].volume_tiers[].price_sun_per_unitintegerда
activationobjectСтоимость активации неактивного адреса.
activation.price_suninteger (int64)Сумма в SUN (1 TRX = 1 000 000 SUN). Всегда целое число.

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

json
{
  "network": "mainnet",
  "as_of": "2026-09-11T18:04:05.123Z",
  "valid_until": "2026-09-11T18:09:05.123Z",
  "period": {"id":"peak_late","label":"Late peak","start":"16:00","end":"00:00"},
  "schedule": [
    {
      "id": "drop",
      "label": "Drop",
      "start_utc_minute": 0,
      "end_utc_minute": 60,
      "factor_bps": 13500,
      "price_sun_per_unit": 27
    },
    {
      "id": "off_peak",
      "label": "Off-peak",
      "start_utc_minute": 60,
      "end_utc_minute": 540,
      "factor_bps": 10000,
      "price_sun_per_unit": 20
    },
    {
      "id": "ramp_9",
      "label": "Morning ramp",
      "start_utc_minute": 540,
      "end_utc_minute": 660,
      "factor_bps": 11000,
      "price_sun_per_unit": 22
    },
    {
      "id": "ramp_11",
      "label": "Midday ramp",
      "start_utc_minute": 660,
      "end_utc_minute": 720,
      "factor_bps": 12000,
      "price_sun_per_unit": 24
    },
    {
      "id": "ramp_12",
      "label": "Pre-peak ramp",
      "start_utc_minute": 720,
      "end_utc_minute": 840,
      "factor_bps": 15000,
      "price_sun_per_unit": 30
    },
    {
      "id": "peak",
      "label": "Peak",
      "start_utc_minute": 840,
      "end_utc_minute": 960,
      "factor_bps": 17000,
      "price_sun_per_unit": 34
    },
    {
      "id": "peak_late",
      "label": "Late peak",
      "start_utc_minute": 960,
      "end_utc_minute": 1440,
      "factor_bps": 15000,
      "price_sun_per_unit": 30
    }
  ],
  "available_energy": 412000000,
  "delivered_today": 80600000,
  "available_bandwidth": 1800000,
  "items": [
    {
      "resource": "energy",
      "tier": "1h",
      "price_sun_per_unit": 30,
      "min_amount": 32000,
      "max_amount": 3000000,
      "volume_tiers": []
    }
  ],
  "activation": {"price_sun":1200000}
}

Публичная витрина рынка аренды энергии

GET /v1/market · getMarket

Аутентификация: Публичный — учетные данные не требуются; запрос с API-ключом (HMAC) также принимается.

Последние собранные цены на энергию на 1 час и 1 день по публичным поставщикам (обновляется каждые 5 минут), плюс строка TEnergy. Сортировка по price_sun_1h по возрастанию. savings_pct = 1 − price / burn_sun; stale = данные старше 15 минут.

Ответы

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

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

ПолеТипОбязательноеОписание
as_ofstring (date-time)да
burn_sunnumberдаСтоимость сжигания SUN за единицу энергии в сети без аренды (100).
providersarray of objectда
providers[].slugstringда
providers[].namestringда
providers[].rankinteger | nullда1 = самая выгодная цена на 1 час; null при отсутствии цены.
providers[].price_sun_1hnumber | nullда
providers[].price_sun_1dnumber | nullда
providers[].savings_pctnumber | nullдаЭкономия относительно сжигания TRX (в процентах с 2 знаками).
providers[].available_energyinteger | nullда
providers[].total_energyinteger | nullда
providers[].kindsarray of enum: api, bot, pool, market, webда
providers[].linksobjectда
providers[].links.sitestring | null
providers[].links.telegramstring | null
providers[].links.twitterstring | null
providers[].links.githubstring | null
providers[].links.docsstring | null
providers[].links.referralstring | null
providers[].links.logostring | null
providers[].tsstring (date-time) | nullда
providers[].stalebooleanда
summaryobjectда
summary.avg_price_sun_1hnumber | nullдаСредняя цена на 1 час среди актуальных предложений.
summary.active_providersintegerда

История цен конкретного провайдера

GET /v1/market/history · getMarketHistory

Аутентификация: Публичный — учетные данные не требуются; запрос с API-ключом (HMAC) также принимается.

Точки исторических данных по поставщику (от старых к новым). Неизвестный slug возвращает пустой ряд.

Параметры

ПараметрГдеТипОбязательныйОписание
slugquerystringда
hoursqueryinteger

Ответы

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

Поля ответа

ПолеТипОбязательноеОписание
slugstringда
hoursintegerда
pointsarray of objectда
points[].tsstring (date-time)да
points[].price_sun_1hnumber | nullда
points[].price_sun_1dnumber | nullда
points[].available_energyinteger | nullда

Книга заявок (ask ladder) по ресурсу и тарифу

GET /v1/orderbook · getOrderBook

Аутентификация: Публичный — учетные данные не требуются.

Гарантированная поставка по ступенчатой цене. Платформа публикует лестницу уровней (объем @ цена, от дешевых к дорогим). Заказ последовательно заполняет уровни: первые единицы берутся с самого дешевого уровня, следующие — со следующего. Больший объем оплачивается по средневзвешенной цене. Дефицита нет: статус «распродано» исключен.

Классы исполнения:

КлассИсточник
instantсобственные резервы платформы, мгновенная доставка
marketпокупка на оптовом межбанковском рынке
deepончейн-рынок, гарантированная доступность в любых объемах

Параметры

ПараметрГдеТипОбязательныйОписание
resourcequeryenum: energy, bandwidth
tierqueryenum: 5m, 15m, 1h, 1d, 3d, 30d
amountqueryintegerРассчитать исполнение для указанного объема.

Ответы

СтатусЗначение
200OK
429Слишком много запросов.
500Ошибка на нашей стороне.

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

ПолеТипОбязательноеОписание
resourceenum: energy, bandwidthда
tierenum: 5m, 15m, 1h, 1d, 3d, 30dда
as_ofstring (date-time)да
valid_untilstring (date-time)да
floor_sunnumberдаБазовая минимальная цена.
depthintegerдаДоступная суммарная глубина предложений.
levelsarray of object (OrderBookLevel)даУровни книги заявок.
levels[].price_sunnumberда
levels[].amountintegerда
levels[].classenum: instant, market, deepда
walkobject (OrderBookWalk) | nullРасчет заполнения (при передаче amount).
walk.amountintegerда
walk.fillsarray of object (OrderBookFill)да
walk.fills[].price_sunnumberда
walk.fills[].amountintegerда
walk.fills[].classenum: instant, market, deepда
walk.unit_price_sunnumberдаСредневзвешенная цена за единицу.
walk.total_suninteger (int64)даИтоговая сумма в SUN.
walk.completebooleanда
walk.outstandinginteger
cheaper_fromstring (date-time) | nullВремя начала следующего более дешевого периода.

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

json
{
  "resource": "energy",
  "tier": "1h",
  "as_of": "2026-09-19T18:04:05.123Z",
  "valid_until": "2026-09-19T18:04:08.123Z",
  "floor_sun": 20,
  "depth": 14200000,
  "levels": [
    {"price_sun":30,"amount":1200000,"class":"instant"},
    {"price_sun":34,"amount":3000000,"class":"market"},
    {"price_sun":58,"amount":10000000,"class":"deep"}
  ],
  "walk": null,
  "cheaper_from": "2026-09-20T01:00:00.000Z"
}

Быстрый предварительный расчет стоимости

GET /v1/estimate · estimateOrder

Аутентификация: Публичный — учетные данные не требуются; запрос с API-ключом (HMAC) также принимается.

Ориентировочная стоимость заказа прямо сейчас без создания объектов и резервирования цен. Легковесный запрос, безопасен для вызова на каждый ввод пользователя.

Расчет не является обязывающим. Для фиксации точной стоимости создайте котировку (POST /v1/quotes) и укажите quote_id при создании заказа.

Параметры

ПараметрГдеТипОбязательныйОписание
resourcequeryenum: energy, bandwidth, activationда
amountqueryinteger (int64)даОбъем единиц энергии или пропускной способности.
tierqueryenum: 5m, 15m, 1h, 1d, 3d, 30dда
receiverquerystringАдрес получателя. Если передан, учитывает стоимость активации, если адрес еще не активен.

Ответы

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

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

ПолеТипОбязательноеОписание
resourceenum: energy, bandwidth, activationда
amountintegerда
tierenum: 5m, 15m, 1h, 1d, 3d, 30dда
receiverstring | null
price_sun_per_unitintegerда
energy_amount_suninteger (int64)Стоимость энергии без учета активации.
activate_amount_suninteger (int64)Стоимость активации (0, если адрес уже активен).
total_amount_suninteger (int64)даОбщая сумма в SUN (1 TRX = 1 000 000 SUN). Всегда целое число.
receiver_activatedboolean | null
as_ofstring (date-time)да

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

json
{
  "resource": "energy",
  "amount": 65000,
  "tier": "1h",
  "receiver": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
  "price_sun_per_unit": 20,
  "energy_amount_sun": 1300000,
  "activate_amount_sun": 0,
  "total_amount_sun": 1300000,
  "receiver_activated": true,
  "as_of": "2026-09-11T18:04:05.123Z"
}

Создание фиксированной котировки

POST /v1/quotes · createQuote

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

Фиксирует цену на короткий промежуток времени. Передайте полученный id в поле quote_id при создании заказа, и с вас будет списана точная сумма total_amount_sun, даже если за это время сменился тарифный период.

Котировка бронирует цену, но не резервирует объем. Если объем исчерпан до размещения заказа, заказ завершится с ошибкой 5001 insufficient_supply без списания средств.

Параметры

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

Тело запроса

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

ПолеТипОбязательноеОписание
resourceenum: energy, bandwidth, activationда
amountintegerОбъем (обязательно для energy и bandwidth).
tierenum: 5m, 15m, 1h, 1d, 3d, 30dда
receiverstringTRON-адрес Base58Check (начинается с T, 34 символа).

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

json
{"resource":"energy","amount":65000,"tier":"1h","receiver":"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"}

Ответы

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

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

ПолеТипОбязательноеОписание
idstringда
resourceenum: energy, bandwidth, activationда
amountinteger
tierenum: 5m, 15m, 1h, 1d, 3d, 30dда
receiverstring | null
price_sun_per_unitintegerОкругленная цена для старых клиентов.
unit_price_sunnumberТочная средневзвешенная цена (с точностью до 0.01 SUN).
fillsarray of object (OrderBookFill)Распределение по уровням книги заявок.
fills[].price_sunnumberда
fills[].amountintegerда
fills[].classenum: instant, market, deepда
energy_amount_suninteger (int64)
activate_amount_suninteger (int64)
total_amount_suninteger (int64)даОбщая сумма в SUN (1 TRX = 1 000 000 SUN). Всегда целое число.
created_atstring (date-time)да
expires_atstring (date-time)даВремя истечения котировки. Срок жизни TTL составляет 120 секунд.

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

json
{
  "id": "qt_01J9Z5NB2K4R",
  "resource": "energy",
  "amount": 65000,
  "tier": "1h",
  "receiver": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
  "price_sun_per_unit": 20,
  "energy_amount_sun": 1300000,
  "activate_amount_sun": 0,
  "total_amount_sun": 1300000,
  "created_at": "2026-09-11T18:04:05.123Z",
  "expires_at": "2026-09-11T18:06:05.123Z"
}

Получение котировки

GET /v1/quotes/{quoteId} · getQuote

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

Возвращает котировку и проверяет, действительна ли она (expires_at в будущем).

Параметры

ПараметрГдеТипОбязательныйОписание
quoteIdpathstringда

Ответы

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

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

Те же поля, что в ответе POST /v1/quotes.

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