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

API de Estado de Tiempo (Time Status API)

Obtenga información de estado para direcciones en Host Mode — todas las direcciones de su cuenta o una sola dirección.

Existen dos endpoints:

  1. POST /apiv2/time/status — estado de todas sus direcciones (con paginación opcional y resumen a nivel de cuenta).
  2. GET /apiv2/time/status/{address} — estado de una dirección específica.

POST /apiv2/time/status

URL del endpoint

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

Autenticación

Proporcione su clave de API en el cuerpo de la solicitud (api_key) o en el encabezado X-API-KEY. La IP de la solicitud debe estar en la lista blanca configurada para su clave de API.

Cuerpo de la solicitud

json
{
    "api_key": "your_api_key",
    "page": 1,
    "page_size": 50
}
ParámetroTipoRequeridoDescripción
api_keystringClave de API (o encabezado X-API-KEY).
pageintegerNoNúmero de página, ≥ 1. Requiere page_size.
page_sizeintegerNoDirecciones por página, 1–100. Requiere page.

Paginación: si se proporcionan tanto page como page_size, los resultados se paginan y se incluye un objeto pagination. Sin ellos, se devuelven todas las direcciones (hasta 1000), ordenadas por fecha de creación (las más recientes primero).

Solicitudes de ejemplo

cURL (todas las direcciones):

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

cURL (paginado):

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));

Respuesta

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"
    }
}

Con paginación, data también contiene:

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

Campos de summary

CampoDescripción
total_addressesNúmero de direcciones en su cuenta
active_addressesDirecciones actualmente activas
infinity_mode_countDirecciones activas ejecutándose en infinity mode
total_cycles_orderedSuma de ciclos ordenados en órdenes abiertas (se excluyen órdenes infinitas)
total_open_ordersNúmero de órdenes abiertas en todas las direcciones

Campos de order_statistics

CampoDescripción
total_ordersTodas las órdenes creadas históricamente
open_ordersÓrdenes actualmente abiertas
closed_ordersÓrdenes cerradas
total_cycles_in_open_ordersCiclos en órdenes abiertas (infinity excluido)
total_delegationsDelegaciones realizadas efectivamente en todas sus direcciones
total_amount_spentCobrado efectivamente, en TRX — la suma realmente descontada de su saldo

Campos del objeto Address

CampoTipoDescripción
addressstringDirección TRON
statusstring"active" o "inactive"
modestring"normal", "infinity", u "off" (cuando está inactiva)
cycles_orderedinteger | nullCiclos ordenados en órdenes abiertas. null en infinity mode
cycle_setintegerValor de cycle_set almacenado para la dirección
cycles_completedintegerCiclos utilizados desde la última vez que se inició la dirección. Se reinicia cuando detiene el modo o se agotan los ciclos ordenados
cycles_remaininginteger | nullcycles_ordered − cycles_completed. null en infinity mode
cycles_total_lifetimeintegerTodas las delegaciones para esta dirección a lo largo de todo su historial. Nunca se reinicia
current_cycle_nointeger | nullPosición de la delegación actual desde la última vez que se inició la dirección. null cuando no hay ninguna delegación activa
open_ordersintegerNúmero de órdenes abiertas para la dirección
total_spentnumberCobrado efectivamente para esta dirección, en TRX
bandwidth_delegatedbooleanIndica si el ancho de banda está actualmente delegado. El ancho de banda es gratuito y está incluido en el precio del ciclo
created_atstringMarca de tiempo ISO de cuando fue añadida
updated_atstringMarca de tiempo ISO de la última actualización

Infinity mode. cycles_ordered y cycles_remaining son null, no 0 — no hay límite para realizar una cuenta regresiva. Trate null como "ilimitado" y no lo interprete como "no quedan ciclos". cycles_completed sigue reportando un número real.

Tres contadores de ciclos, tres significados. cycles_completed cuenta únicamente desde la última vez que se inició la dirección, cycles_total_lifetime cuenta todo su historial y current_cycle_no es la posición de la delegación actual. Es normal que difieran; para una misma dirección puede ver 83, 115 y 5 al mismo tiempo.

Errores

Todos los errores utilizan code = -1:

msgCausa
API key required in body or X-API-KEY headerNo se proporcionó la clave de API
Invalid API key or IP not in whitelistError de autenticación
Page number must be >= 1page es menor a 1
Page size must be >= 1page_size es menor a 1
Page size must be <= 100page_size es mayor a 100
Database error getting statusError temporal del lado del servidor — reintente
Internal server errorError inesperado — reintente o contacte a soporte

GET /apiv2/time/status/

Estado de una sola dirección.

URL del endpoint

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

Autenticación

Envíe su clave de API en el encabezado X-API-KEY. La IP de la solicitud debe estar en la lista blanca.

Solicitud de ejemplo

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())

Respuesta

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 utiliza los mismos campos que el objeto de dirección anterior.

Errores

code = -1, por ejemplo:

msgCausa
API key required in X-API-KEY headerEncabezado faltante
Invalid API key or IP not in whitelistError de autenticación
Address not found or doesn't belong to userDirección desconocida para esta cuenta
Database error getting address statusError temporal del lado del servidor — reintente
Internal server errorError inesperado — reintente o contacte a soporte

Códigos de estado HTTP

Ambos endpoints devuelven sus errores con HTTP 200 y un code negativo; verifique code, no el estado HTTP. Los cuerpos de error siempre incluyen "data": null.

Algunos errores se devuelven antes de que la solicitud llegue al endpoint. Utilizan un estado distinto de 200 y una estructura de cuerpo diferente:

HTTPCuerpoCausa
402{"detail": {"code": 1004, "msg": "Insufficient funds. Minimum balance is 4 TRX. Please top up your account."}}El saldo de la cuenta es insuficiente
403{"detail": {"code": 1005, "msg": "API key is blocked. Contact support."}}La clave de API está bloqueada — contacte a soporte
422{"detail": [ … ]}Solo POST — el cuerpo de la solicitud falló la validación: un campo tiene un tipo incorrecto, o se enviaron page/page_size sin api_key. Tenga en cuenta que no hay campo code en esta respuesta

Endpoints relacionados

Notas

  • Los endpoints de estado son de solo lectura.
  • Solo se devuelven las direcciones pertenecientes a su cuenta.
  • Las marcas de tiempo son cadenas ISO 8601.