Skip to content

GET /apiv2/prices

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

URL эндпоинта

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

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

ЗаголовокОбязательныйОписание
X-API-KEYДаВаш API ключ
X-Real-IPДаIP адрес из белого списка

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

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

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

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"Статус: {data.get('status')}")
    print(f"Текущее UTC время: {data.get('current_utc_time')}")
    print(f"Активный период: {data.get('active_period')}")
    print(f"Цена хоста: {data.get('host_price')} TRX")
    
    print("\nПериоды цен:")
    for period in data.get('periods', []):
        is_active = period.get('is_active', False)
        active_marker = " *АКТИВНЫЙ*" if is_active else ""
        print(f"\n{period.get('label')}{active_marker}:")
        print(f"  Время: {period.get('period')}")
        
        prices = period.get('prices', {})
        print(f"  < 200k энергии: {prices.get('less_than_200k', {}).get('price_sun')} sun")
        print(f"  = 131k энергии: {prices.get('equal_131k', {}).get('price_sun')} sun")  
        print(f"  > 200k энергии: {prices.get('more_than_200k', {}).get('price_sun')} sun")
else:
    print(f"Ошибка: {data.get('message', 'Неизвестная ошибка')}")

Node.js

javascript
const axios = require('axios');

const url = 'https://netts.io/apiv2/prices';
const headers = {
    'Content-Type': 'application/json',
    'X-API-KEY': 'your_api_key',
    'X-Real-IP': 'your_whitelisted_ip'
};

async function getPrices() {
    try {
        const response = await axios.post(url, {}, { headers });
        const prices = response.data.data;
        console.log('Текущие цены на энергию:');
        Object.entries(prices).forEach(([period, price]) => {
            console.log(`${period}: ${price} TRX`);
        });
    } catch (error) {
        console.error('Error:', error.response.data);
    }
}

getPrices();

PHP

php
<?php
$url = 'https://netts.io/apiv2/prices';
$headers = [
    'Content-Type: application/json',
    'X-API-KEY: your_api_key',
    'X-Real-IP: your_whitelisted_ip'
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{}');

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode == 200) {
    $data = json_decode($response, true);
    echo "Текущие цены на энергию:\n";
    foreach ($data['data'] as $period => $price) {
        echo "$period: $price TRX\n";
    }
} else {
    echo "Error: HTTP $httpCode\n";
    echo $response;
}
?>

Ответ

Успешный ответ (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": "Ранние утренние часы (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": "Утренние часы (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)Описание
Раннее утро05:00-07:00Период низкого спроса
Утро07:00-11:00Начало рабочих часов
День11:00-21:00Пиковые рабочие часы
Вечер21:00-23:00Вечерняя активность
Ночь23: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