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

Time Status API

Получение информации о статусе адресов в Host Mode — для всех адресов вашего аккаунта или для одного адреса.

Доступны два эндпоинта:

  1. POST /apiv2/time/status — статус всех ваших адресов (с опциональной пагинацией и сводной информацией на уровне аккаунта).
  2. GET /apiv2/time/status/{address} — статус одного конкретного адреса.

POST /apiv2/time/status

URL эндпоинта

POST https://netts.io/apiv2/time/status

Аутентификация

Передайте ваш API-ключ в теле запроса (api_key) или в заголовке X-API-KEY. IP-адрес запроса должен находиться в белом списке, настроенном для вашего API-ключа.

Тело запроса

json
{
    "api_key": "your_api_key",
    "page": 1,
    "page_size": 50
}
ParameterTypeRequiredDescription
api_keystringДаAPI-ключ (или заголовок X-API-KEY).
pageintegerНетНомер страницы, ≥ 1. Требует page_size.
page_sizeintegerНетКоличество адресов на странице, 1–100. Требует page.

Пагинация: если указаны оба параметра page и page_size, результаты разбиваются на страницы и возвращается объект pagination. Без них возвращаются все адреса (до 1000), отсортированные по времени создания (сначала новые).

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

cURL (все адреса):

bash
curl -X POST https://netts.io/apiv2/time/status \
  -H "Content-Type: application/json" \
  -d '{ "api_key": "YOUR_API_KEY_HERE" }'

cURL (с пагинацией):

bash
curl -X POST https://netts.io/apiv2/time/status \
  -H "Content-Type: application/json" \
  -d '{ "api_key": "YOUR_API_KEY_HERE", "page": 1, "page_size": 50 }'

Python:

python
import requests

resp = requests.post(
    "https://netts.io/apiv2/time/status",
    json={"api_key": "YOUR_API_KEY_HERE"},  # add "page"/"page_size" to paginate
    timeout=30,
)
result = resp.json()

if result["code"] == 0:
    for a in result["data"]["addresses"]:
        # cycles_remaining is None in infinity mode — no limit to count down
        left = "unlimited" if a["cycles_remaining"] is None else f"{a['cycles_remaining']} left"
        print(a["address"], a["mode"], a["status"], left,
              f"spent {a['total_spent']} TRX")
else:
    print("Error:", result["msg"])

Node.js:

javascript
const axios = require('axios');

axios.post('https://netts.io/apiv2/time/status', { api_key: 'YOUR_API_KEY_HERE' })
    .then(({ data: result }) => {
        if (result.code === 0) {
            result.data.addresses.forEach(a => {
                // cycles_remaining is null in infinity mode — no limit to count down
                const left = a.cycles_remaining === null ? 'unlimited' : `${a.cycles_remaining} left`;
                console.log(a.address, a.mode, a.status, left, `spent ${a.total_spent} TRX`);
            });
        } else {
            console.error('Error:', result.msg);
        }
    })
    .catch(err => console.error('Request failed:', err.response?.data || err.message));

Ответ

json
{
    "code": 0,
    "msg": "Status retrieved successfully",
    "data": {
        "summary": {
            "total_addresses": 3,
            "active_addresses": 2,
            "infinity_mode_count": 1,
            "total_cycles_ordered": 25,
            "total_open_orders": 3
        },
        "order_statistics": {
            "total_orders": 12,
            "open_orders": 3,
            "closed_orders": 9,
            "total_cycles_in_open_orders": 25,
            "total_delegations": 340,
            "total_amount_spent": 1502.4471
        },
        "addresses": [
            {
                "address": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
                "status": "active",
                "mode": "normal",
                "cycles_ordered": 25,
                "cycle_set": 25,
                "cycles_completed": 10,
                "cycles_remaining": 15,
                "cycles_total_lifetime": 214,
                "current_cycle_no": 3,
                "open_orders": 1,
                "total_spent": 962.1184,
                "bandwidth_delegated": true,
                "created_at": "2026-07-08T12:00:00.000000",
                "updated_at": "2026-07-09T10:00:00.000000"
            },
            {
                "address": "TYn8Y3khEsLJW2ChVWFMSMeRDow6KcbMTF",
                "status": "active",
                "mode": "infinity",
                "cycles_ordered": null,
                "cycle_set": 0,
                "cycles_completed": 83,
                "cycles_remaining": null,
                "cycles_total_lifetime": 115,
                "current_cycle_no": 5,
                "open_orders": 1,
                "total_spent": 519.1234,
                "bandwidth_delegated": true,
                "created_at": "2026-07-08T08:00:00.000000",
                "updated_at": "2026-07-09T09:30:00.000000"
            }
        ],
        "timestamp": "2026-07-09T12:34:50.123456"
    }
}

С пагинацией data также содержит:

json
"pagination": {
    "page": 1,
    "page_size": 50,
    "total_items": 150,
    "total_pages": 3,
    "has_next": true,
    "has_prev": false
}

Поля summary

ПолеОписание
total_addressesКоличество адресов в вашем аккаунте
active_addressesАдреса, активные в данный момент
infinity_mode_countАктивные адреса, работающие в режиме infinity
total_cycles_orderedСумма заказанных циклов по открытым заказам (заказы infinity исключены)
total_open_ordersКоличество открытых заказов по всем адресам

Поля order_statistics

ПолеОписание
total_ordersВсе созданные за все время заказы
open_ordersОткрытые в данный момент заказы
closed_ordersЗакрытые заказы
total_cycles_in_open_ordersЦиклы по открытым заказам (infinity исключены)
total_delegationsФактически выполненные делегирования по всем вашим адресам
total_amount_spentФактически списано, в TRX — сумма, реально списанная с вашего баланса

Поля объекта адреса

ParameterTypeDescription
addressstringАдрес TRON
statusstring"active" или "inactive"
modestring"normal", "infinity" или "off" (когда неактивен)
cycles_orderedinteger | nullЗаказанные циклы в открытых заказах. null в режиме infinity
cycle_setintegerЗначение cycle_set, сохраненное для адреса
cycles_completedintegerИспользованные циклы с момента последнего запуска адреса. Сбрасывается при остановке режима или исчерпании заказанных циклов
cycles_remaininginteger | nullcycles_ordered − cycles_completed. null в режиме infinity
cycles_total_lifetimeintegerВсе делегирования для этого адреса за всю его историю. Никогда не сбрасывается
current_cycle_nointeger | nullПорядковый номер текущего делегирования с момента последнего запуска адреса. null, когда нет активного делегирования
open_ordersintegerКоличество открытых заказов для адреса
total_spentnumberФактически списано за этот адрес, в TRX
bandwidth_delegatedbooleanДелегирован ли Bandwidth в данный момент. Bandwidth предоставляется бесплатно и включен в стоимость цикла
created_atstringISO-метка времени добавления
updated_atstringISO-метка времени последнего обновления

Режим Infinity. Значения cycles_ordered и cycles_remaining равны null, а не 0 — лимит для обратного отсчета отсутствует. Интерпретируйте null как «неограниченно» и не расценивайте это как «циклы закончились». Поле cycles_completed по-прежнему возвращает реальное число.

Три счетчика циклов, три значения. cycles_completed считает циклы только с момента последнего запуска адреса, cycles_total_lifetime ведет подсчет за всю историю, а current_cycle_no указывает на номер текущего делегирования. Они и должны различаться — для одного адреса вы можете одновременно увидеть значения 83, 115 и 5.

Ошибки

Все ошибки возвращают code = -1:

msgПричина
API key required in body or X-API-KEY headerAPI-ключ не передан
Invalid API key or IP not in whitelistОшибка аутентификации
Page number must be >= 1page меньше 1
Page size must be >= 1page_size меньше 1
Page size must be <= 100page_size больше 100
Database error getting statusВременная ошибка на стороне сервера — повторите попытку
Internal server errorНепредвиденная ошибка — повторите попытку или обратитесь в поддержку

GET /apiv2/time/status/

Статус для одного адреса.

URL эндпоинта

GET https://netts.io/apiv2/time/status/{address}

Аутентификация

Передайте ваш API-ключ в заголовке X-API-KEY. IP-адрес запроса должен находиться в белом списке.

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

bash
curl -X GET "https://netts.io/apiv2/time/status/TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE" \
  -H "X-API-KEY: YOUR_API_KEY_HERE"
python
import requests

address = "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"
resp = requests.get(
    f"https://netts.io/apiv2/time/status/{address}",
    headers={"X-API-KEY": "YOUR_API_KEY_HERE"},
    timeout=30,
)
print(resp.json())

Ответ

json
{
    "code": 0,
    "msg": "Address status retrieved successfully",
    "data": {
        "address_info": {
            "address": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
            "status": "active",
            "mode": "normal",
            "cycles_ordered": 25,
            "cycle_set": 25,
            "cycles_completed": 10,
            "cycles_remaining": 15,
            "cycles_total_lifetime": 214,
            "current_cycle_no": 3,
            "open_orders": 1,
            "total_spent": 962.1184,
            "bandwidth_delegated": true,
            "created_at": "2026-07-08T12:00:00.000000",
            "updated_at": "2026-07-09T10:00:00.000000"
        },
        "timestamp": "2026-07-09T12:34:50.123456"
    }
}

Поле address_info использует те же поля, что и объект адреса выше.

Ошибки

code = -1, например:

msgПричина
API key required in X-API-KEY headerОтсутствует заголовок
Invalid API key or IP not in whitelistОшибка аутентификации
Address not found or doesn't belong to userНеизвестный адрес для этого аккаунта
Database error getting address statusВременная ошибка на стороне сервера — повторите попытку
Internal server errorНепредвиденная ошибка — повторите попытку или обратитесь в поддержку

Коды состояния HTTP

Оба эндпоинта возвращают свои ошибки с кодом HTTP 200 и отрицательным code — проверяйте code, а не статус HTTP. Тело ошибки всегда содержит "data": null.

Некоторые ошибки возвращаются до того, как запрос достигает эндпоинта. Они используют статус, отличный от 200, и другой формат тела:

HTTPТело ответаПричина
402{"detail": {"code": 1004, "msg": "Insufficient funds. Minimum balance is 4 TRX. Please top up your account."}}Баланс аккаунта слишком мал
403{"detail": {"code": 1005, "msg": "API key is blocked. Contact support."}}API-ключ заблокирован — обратитесь в поддержку
422{"detail": [ … ]}Только POST — тело запроса не прошло валидацию: поле имеет неверный тип, либо page/page_size были переданы без api_key. Обратите внимание, что в этом ответе нет поля code

Связанные эндпоинты

Примечания

  • Эндпоинты статуса предназначены только для чтения.
  • Возвращаются только адреса, принадлежащие вашему аккаунту.
  • Временные метки представляют собой строки в формате ISO 8601.