Skip to content
Translated page. The English version is the source of truth.

GET /apiv2/prices Deprecated

Устарело

Этот эндпоинт устарел и будет удален в будущей версии. Пожалуйста, перейдите на новый эндпоинт GET /apiv2/pricing, который предоставляет динамические периоды, фильтрацию услуг, скидки за продолжительность и единый формат ответа.

Получение текущих цен на аренду энергии для различных периодов времени в течение дня.

Цена может измениться в процессе выполнения

Цена, возвращаемая этим эндпоинтом, может измениться во время обработки заказа. Поставщик энергии может отклонить запрос на делегирование, и в этом случае Netts автоматически перенаправит заказ следующему доступному поставщику. Netts стремится не только предлагать наиболее конкурентоспособную цену, но и обеспечивать надежное предоставление энергии — поэтому заказ может быть выполнен по цене выше заявленной. Это относится только к заказам от 300 000 единиц энергии и выше.

URL эндпоинта

GET https://netts.io/apiv2/prices

Заголовки запроса

ЗаголовокОбязательныйОписаниеЗначения
X-API-KEYДаВаш ключ APIstring
X-Real-IPДаIP-адрес из белого спискаIP address
X-FormatНетФормат ответа (по умолчанию: расширенный JSON)now, compact, short, short1h, count

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

Параметры не требуются — возвращает всю актуальную информацию о ценах.

Примеры запросов

cURL

bash
curl -X GET https://netts.io/apiv2/prices \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

Python

python
import requests

url = "https://netts.io/apiv2/prices"
headers = {
    "X-API-KEY": "your_api_key",
    "X-Real-IP": "your_whitelisted_ip"
}

response = requests.get(url, headers=headers)
data = response.json()

if response.status_code == 200:
    print(f"Status: {data.get('status')}")
    print(f"Current UTC time: {data.get('current_utc_time')}")
    print(f"Active period: {data.get('active_period')}")
    print(f"Host price: {data.get('host_price')} TRX")
    
    print("\nPrice periods:")
    for period in data.get('periods', []):
        is_active = period.get('is_active', False)
        active_marker = " *ACTIVE*" if is_active else ""
        print(f"\n{period.get('label')}{active_marker}:")
        print(f"  Time: {period.get('period')}")
        
        prices = period.get('prices', {})
        print(f"  < 200k energy: {prices.get('less_than_200k', {}).get('price_sun')} sun")
        print(f"  = 131k energy: {prices.get('equal_131k', {}).get('price_sun')} sun")  
        print(f"  > 200k energy: {prices.get('more_than_200k', {}).get('price_sun')} sun")
else:
    print(f"Error: {data.get('message', 'Unknown error')}")

Компактный формат ответа

Новое в v2.1: используйте заголовок X-Format, чтобы получить компактный текстовый ответ вместо полной структуры JSON.

Когда использовать

  • Интеграция с системами мониторинга
  • Простое отображение цен
  • Автоматизированное отслеживание цен
  • Минимальные требования к пропускной способности сети

Пример запроса

bash
curl -X GET https://netts.io/apiv2/prices \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip" \
  -H "X-Format: now"

Пример компактного ответа

text
Daytime Hours (11:00-21:00 UTC): price=27 sun, 65k=1.755 TRX (0.52$), 131k=3.537 TRX (1.05$), 1m=27.000 TRX (7.99$)

Пояснение к формату ответа

Компактный формат предоставляет:

КомпонентОписаниеПример
Метка периодаАктивный период тарификацииDaytime Hours (11:00-21:00 UTC)
price=X sunЦена за единицу энергии в SUNprice=27 sun
65k=X.XXX TRX (X.XX$)Стоимость 65 000 единиц энергии65k=1.755 TRX (0.52$)
131k=X.XXX TRX (X.XX$)Стоимость 131 000 единиц энергии131k=3.537 TRX (1.05$)
1m=X.XXX TRX (X.XX$)Стоимость 1 000 000 единиц энергии1m=27.000 TRX (7.99$)

Формула расчета

TRX cost = (price_sun / 1,000,000) × energy_amount
USD cost = TRX_cost × current_TRX_USD_rate

Примечание: Курс обмена TRX/USD берется из таблицы chain_param и кэшируется на 30 минут.

Content-Type

  • Расширенный формат: application/json
  • Компактный формат: text/plain

Пример на Python

python
import requests

url = "https://netts.io/apiv2/prices"
headers = {
    "X-API-KEY": "your_api_key",
    "X-Real-IP": "your_whitelisted_ip",
    "X-Format": "now"  # Request compact format
}

response = requests.get(url, headers=headers)

if response.status_code == 200:
    print("Compact price data:")
    print(response.text)
    # Output: Daytime Hours (11:00-21:00 UTC): price=27 sun, 65k=1.755 TRX (0.52$), ...
else:
    print(f"Error: {response.status_code}")

Ультракомпактный формат ответа (short1h)

Новое в v2.2: используйте заголовок X-Format: short1h, чтобы получить ультракомпактный текстовый ответ, содержащий только расчеты стоимости энергии, без метки периода и цены за единицу.

Когда использовать

  • Панели мониторинга с ограниченным пространством
  • Мобильные приложения
  • Минимальные требования к пропускной способности сети
  • Фокус только на итоговой стоимости

Пример запроса

bash
curl -X GET https://netts.io/apiv2/prices \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip" \
  -H "X-Format: short1h"

Пример ультракомпактного ответа

text
65k=1.755 TRX (0.52$), 131k=3.537 TRX (1.05$), 1m=27.000 TRX (7.99$)

Пояснение к формату ответа

Ультракомпактный формат предоставляет только основные расчеты стоимости:

КомпонентОписаниеПример
65k=X.XXX TRX (X.XX$)Стоимость 65 000 единиц энергии65k=1.755 TRX (0.52$)
131k=X.XXX TRX (X.XX$)Стоимость 131 000 единиц энергии131k=3.537 TRX (1.05$)
1m=X.XXX TRX (X.XX$)Стоимость 1 000 000 единиц энергии1m=27.000 TRX (7.99$)

Примечание: В этом формате исключены метка периода и цена за единицу энергии для максимальной компактности.

Content-Type

  • Ультракомпактный формат: text/plain

Пример на Python

python
import requests

url = "https://netts.io/apiv2/prices"
headers = {
    "X-API-KEY": "your_api_key",
    "X-Real-IP": "your_whitelisted_ip",
    "X-Format": "short1h"  # Request ultra-compact format
}

response = requests.get(url, headers=headers)

if response.status_code == 200:
    print("Ultra-compact price data:")
    print(response.text)
    # Output: 65k=1.755 TRX (0.52$), 131k=3.537 TRX (1.05$), 1m=27.000 TRX (7.99$)
else:
    print(f"Error: {response.status_code}")

Формат ответа для множественных заказов (count)

Новое в v2.3: используйте заголовок X-Format: count, чтобы получить расчет стоимости оптовых заказов, показывающий стоимость для 1, 2, 3, 5, 10 и 20 заказов.

Когда использовать

  • Отображение цен для оптовых заказов
  • Калькуляторы скидок за объем
  • Инструменты сравнения цен
  • Планирование объема заказов
  • Оценка стоимости нескольких заказов

Пример запроса

bash
curl -X GET https://netts.io/apiv2/prices \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip" \
  -H "X-Format: count"

Пример ответа с расчетом количества

text
1-1.690 TRX (0.50$), 2-3.380 TRX (1.00$), 3-5.070 TRX (1.50$), 5-8.450 TRX (2.50$), 10-16.900 TRX (5.00$), 20-33.800 TRX (10.00$)

Пояснение к формату ответа

Формат count предоставляет рассчитанную стоимость для различного количества заказов:

КомпонентОписаниеПример
1-X.XXX TRX (X.XX$)Стоимость 1 заказа (65 000 единиц энергии)1-1.690 TRX (0.50$)
2-X.XXX TRX (X.XX$)Стоимость 2 заказов (131 000 единиц энергии)2-3.380 TRX (1.00$)
3-X.XXX TRX (X.XX$)Стоимость 3 заказов (3 × 65 000 энергии)3-5.070 TRX (1.50$)
5-X.XXX TRX (X.XX$)Стоимость 5 заказов (5 × 65 000 энергии)5-8.450 TRX (2.50$)
10-X.XXX TRX (X.XX$)Стоимость 10 заказов (10 × 65 000 энергии)10-16.900 TRX (5.00$)
20-X.XXX TRX (X.XX$)Стоимость 20 заказов (20 × 65 000 энергии)20-33.800 TRX (10.00$)

Формула расчета

1 order:  TRX cost = (price_sun_65k / 1,000,000) × 65,000
2 orders: TRX cost = (price_sun_131k / 1,000,000) × 131,000
3+ orders: TRX cost = (price_sun_65k / 1,000,000) × 65,000 × quantity
USD cost = TRX_cost × current_TRX_USD_rate

Примечание: Курс обмена TRX/USD берется из таблицы chain_param и кэшируется на 30 минут.

Content-Type

  • Формат count: text/plain

Пример на Python

python
import requests

url = "https://netts.io/apiv2/prices"
headers = {
    "X-API-KEY": "your_api_key",
    "X-Real-IP": "your_whitelisted_ip",
    "X-Format": "count"  # Request count format
}

response = requests.get(url, headers=headers)

if response.status_code == 200:
    print("Bulk order pricing:")
    print(response.text)
    # Output: 1-1.690 TRX (0.50$), 2-3.380 TRX (1.00$), 3-5.070 TRX (1.50$), ...
else:
    print(f"Error: {response.status_code}")

Ответ

Успешный ответ (200 OK)

json
{
    "status": "success",
    "current_utc_time": "2025-09-02 06:50:39",
    "current_utc_hour": 6,
    "active_period": "05:00-07:00",
    "last_update": "2025-09-02 08:05:03",
    "host_price": 2.989,
    "periods": [
        {
            "label": "Early Morning Hours (05:00-07:00 UTC)",
            "period": "05:00-07:00",
            "is_active": true,
            "prices": {
                "less_than_200k": {
                    "price_sun": 17
                },
                "equal_131k": {
                    "price_sun": 17
                },
                "more_than_200k": {
                    "price_sun": 17
                }
            }
        },
        {
            "label": "Morning Hours (07:00-11:00 UTC)",
            "period": "07:00-11:00",
            "is_active": false,
            "prices": {
                "less_than_200k": {
                    "price_sun": 17
                },
                "equal_131k": {
                    "price_sun": 17
                },
                "more_than_200k": {
                    "price_sun": 17
                }
            }
        }
    ]
}

Поля ответа

ПолеТипОписание
statusstringВсегда "success" для успешных запросов
current_utc_timestringТекущее время сервера в UTC
current_utc_hourintegerТекущий час UTC (0-23)
active_periodstringВ настоящее время активный период тарификации
last_updatestringВремя последнего обновления цен
host_pricenumberТекущая цена хоста в TRX
periodsarrayМассив всех периодов тарификации
periods[].labelstringПонятное человеку название периода
periods[].periodstringДиапазон времени (HH:MM-HH:MM)
periods[].is_activebooleanАктивен ли данный период в настоящее время
periods[].prices.less_than_200k.price_sunintegerЦена в SUN для объема энергии < 200 000 единиц
periods[].prices.equal_131k.price_sunintegerЦена в SUN ровно для 131 000 единиц
periods[].prices.more_than_200k.price_sunintegerЦена в SUN для объема энергии > 200 000 единиц

Категории количества энергии

КатегорияОписаниеДиапазон энергии
less_than_200kНебольшие заказы< 200 000 единиц энергии
equal_131kСтандартные заказыРовно 131 000 единиц энергии
more_than_200kКрупные заказы> 200 000 единиц энергии

Периоды времени

API возвращает цены для 5 различных периодов времени:

ПериодДиапазон времени (UTC)Описание
Early Morning05:00-07:00Период пониженного спроса
Morning07:00-11:00Начало рабочих часов
Daytime11:00-21:00Пиковые рабочие часы
Evening21:00-23:00Вечерняя активность
Night23:00-05:00Период наименьшего спроса

Ограничения частоты запросов

К этому эндпоинту применяются следующие ограничения частоты запросов (на один IP-адрес):

ПериодЛимитОписание
1 минута1 запросМаксимум 1 запрос в минуту
1 час60 запросовМаксимум 60 запросов в час

Заголовки ограничения частоты запросов

http
RateLimit-Limit: 1
RateLimit-Remaining: 0
RateLimit-Reset: 21
X-RateLimit-Limit-Minute: 1
X-RateLimit-Remaining-Minute: 0
X-RateLimit-Limit-Hour: 60
X-RateLimit-Remaining-Hour: 59
Retry-After: 21

Превышение лимита запросов (429)

json
{
    "message": "API rate limit exceeded"
}

Ответы с ошибками

Ошибка аутентификации (401)

json
{
    "status": "error",
    "code": 401,
    "message": "Invalid API key or IP not in whitelist"
}

Внутренняя ошибка сервера (500)

json
{
    "status": "error",
    "message": "Internal server error"
}

Примечания

  • Тело запроса не требуется — это запрос типа GET
  • Все цены указаны в SUN (1 TRX = 1 000 000 SUN)
  • Цены варьируются в зависимости от объема энергии и времени суток (UTC)
  • Активный период: меняется в течение дня в зависимости от спроса
  • Ограничение частоты запросов: строгие лимиты из-за операций, создающих высокую нагрузку на базу данных
  • Обновление цен: цены периодически обновляются из базы данных
  • Часовые пояса: все временные метки указаны в UTC