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

POST /apiv2/order5m ​

Cree una orden de alquiler de energy de 5 minutos a través de los pools internos de energy de Netts.

URL del Endpoint ​

POST https://netts.io/apiv2/order5m

Encabezados de Solicitud ​

EncabezadoRequeridoDescripción
Content-TypeSíapplication/json
X-API-KEYSíSu clave API del panel de Netts
X-Real-IPSíDirección IP de su lista blanca

Cuerpo de Solicitud ​

json
{
    "amount": 65000,
    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"
}

Parámetros ​

ParámetroTipoRequeridoDescripción
amountenteroSíCantidad de Energy a alquilar (mínimo: 61.000, máximo: 650.000)
receiveAddresscadenaSíDirección TRON que recibirá la energy (formato TRC-20)

Límites de Energy

El endpoint de 5 minutos acepta cantidades de energy de entre 61.000 y 650.000 unidades por orden. Las solicitudes fuera de este rango se rechazarán con HTTP 400.

Información del Proveedor ​

Las órdenes de energy de 5 minutos se completan exclusivamente a través de los pools internos de energy de Netts. A diferencia del endpoint de 1 hora, no se utilizan proveedores externos.

Disponibilidad y Estrategia de Reintento

Dado que las delegaciones provienen únicamente de pools internos, es posible que haya falta de disponibilidad temporal durante períodos de alta demanda. Si recibe un error 503, reintente la solicitud tras una breve pausa o recurra al endpoint de 1 hora, que tiene acceso a múltiples proveedores externos.

Ejemplos de Solicitudes ​

cURL ​

bash
curl -X POST https://netts.io/apiv2/order5m \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip" \
  -d '{
    "amount": 65000,
    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"
  }'

Python ​

python
import requests

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

payload = {
    "amount": 65000,
    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"
}

response = requests.post(url, headers=headers, json=payload)
data = response.json()

if response.status_code == 200:
    detail = data.get('detail', {})
    order_data = detail.get('data', {})
    print(f"Order ID: {order_data.get('orderId')}")
    print(f"Transaction Hash: {order_data.get('hash')}")
    print(f"Energy Delivered: {order_data.get('energy')}")
    print(f"Cost: {order_data.get('paidTRX')} TRX")
    print(f"Delegate Address: {order_data.get('delegateAddress')}")
elif response.status_code == 503:
    # Pool temporarily unavailable - retry or fallback to 1h
    print("Pool busy, retrying in 2 seconds...")
else:
    error_detail = data.get('detail', data)
    print(f"Error Code: {error_detail.get('code', 'N/A')}")
    print(f"Error Message: {error_detail.get('msg', error_detail)}")

Respuesta ​

Respuesta Exitosa (200 OK) ​

json
{
    "detail": {
        "code": 10000,
        "msg": "Successful, 1.430 TRX deducted",
        "data": {
            "orderId": "5Mb4ee11ef86",
            "paidTRX": 1.43,
            "hash": "3636f97dde244fca17cdc0b2cf7fd1572a9b4c6d8e0f1a3b5c7d9e1f3a5b7c9d",
            "delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq",
            "energy": 65050
        }
    }
}

Éxito con Activación de Dirección (200 OK) ​

Cuando la dirección receptora no ha sido activada en la red TRON, Netts la activa automáticamente. El coste de activación se añade al total:

json
{
    "detail": {
        "code": 10000,
        "msg": "Successful, 1.430 TRX for energy + 1.100 TRX for address activation",
        "data": {
            "orderId": "5Mb4ee11ef86",
            "paidTRX": 2.53,
            "hash": "3636f97dde244fca17cdc0b2cf7fd1572a9b4c6d8e0f1a3b5c7d9e1f3a5b7c9d",
            "delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq",
            "energy": 65050,
            "activationHash": "bab38070a64b237acc9110ecf5135acc4d6e8f0a2b4c6d8e0f2a4b6c8d0e2f4a"
        }
    }
}

Campos de Respuesta ​

CampoTipoDescripción
detail.codeenteroSiempre 10000 para órdenes exitosas
detail.msgcadenaMensaje de éxito con el importe deducido
detail.data.orderIdcadenaID unificado de la orden (formato: 5M{id})
detail.data.paidTRXnúmeroCoste total en TRX (incluye la tarifa de activación si corresponde)
detail.data.hashcadenaHash de la transacción de delegación
detail.data.delegateAddresscadenaDirección del pool que delegó la energy
detail.data.energyenteroCantidad de Energy + margen adicional (normalmente +50)
detail.data.activationHashcadenaSolo presente si se realizó la activación de la dirección

Respuestas de Error ​

Cantidad de Energy Inválida (400) ​

json
{
    "code": 1003,
    "msg": "Energy amount must be between 61000 and 650000. Requested: 50000"
}

Error de Autenticación (401) ​

json
{
    "detail": "Invalid API key or IP not in whitelist"
}

Saldo Insuficiente (403) ​

json
{
    "code": 1004,
    "msg": "Insufficient funds. Required: 1.43 TRX, Available: 0.50 TRX"
}

Servicio No Disponible (503) ​

json
{
    "code": 5003,
    "msg": "Service temporarily unavailable. Energy delegation failed after retries."
}

Gestión de Errores 503

Una respuesta 503 significa que los pools internos están temporalmente al límite de su capacidad. Estrategia recomendada:

  1. Espere 2-3 segundos y reintente la orden de 5 minutos
  2. Si sigue sin estar disponible, recurra al endpoint de 1 hora, que utiliza múltiples proveedores

Error Interno del Servidor (500) ​

json
{
    "code": 5000,
    "msg": "Internal server error occurred"
}

Referencia de Códigos de Error ​

CódigoDescripciónEstado HTTP
10000Éxito200
10000Éxito (respuesta en caché)208
-Solicitud duplicada aún en procesamiento409
1003Cantidad de Energy fuera de rango400
1004Saldo insuficiente403
1005Dirección pagadora del usuario no configurada400
5000Error interno del servidor500
5003Servicio de Energy no disponible503

Límites de Tasa ​

Se aplican los siguientes límites de tasa a este endpoint (por dirección IP):

PeríodoLímiteDescripción
1 segundo50 solicitudesMáximo 50 solicitudes por segundo

Encabezados de Límite de Tasa ​

http
RateLimit-Limit: 50
RateLimit-Remaining: 49
RateLimit-Reset: 1
X-RateLimit-Limit-Second: 50
X-RateLimit-Remaining-Second: 49

Límite de Tasa Excedido (429) ​

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

Idempotencia ​

La API admite idempotencia para evitar el procesamiento de órdenes duplicadas. Cuando envía múltiples solicitudes idénticas, el sistema garantiza que la orden se procese solo una vez.

Cómo Funciona la Idempotencia ​

La singularidad de la solicitud se determina mediante una combinación de:

  • Marca de tiempo de la solicitud (ventana de 2 segundos)
  • Cantidad de Energy
  • Dirección del receptor
  • Clave API

A cada solicitud se le asigna una ventana de singularidad de 2 segundos. Las solicitudes con parámetros idénticos dentro de esta ventana se tratan como duplicadas.

Proporcionar Su Propia Clave ​

Puede tomar el control de la idempotencia enviando el encabezado X-Idempotency-Key. Cuando está presente, ese valor por sí solo decide si una solicitud es una repetición, y no se utiliza la combinación automática anterior. Cuando está ausente, nada cambia: el servidor deduce la clave por usted.

Las reglas son las mismas que en /apiv2/order1h:

EncabezadoX-Idempotency-Key
FormatoExactamente 64 caracteres hexadecimales en minúsculas: un resumen SHA-256
Tiempo de vida24 horas a partir de la primera solicitud que contenga esa clave
AlcanceSu cuenta. El mismo valor enviado por una cuenta diferente nunca devolverá su resultado

Una clave con cualquier otra forma (un UUID con guiones, base64, hexadecimal en mayúsculas) se rechaza con 400 antes de que se cree la orden y antes de que se cobre nada:

json
{
    "detail": "Invalid idempotency key format. Must be 64-character hexadecimal string."
}

Deduzca la clave a partir de su clave API para que sea única para su cuenta y reproducible en un reintento; el ejemplo práctico se encuentra en la página de 1 hora. Incluya el período de alquiler en el mensaje al que aplique el hash: alquilar la misma dirección durante 5 minutos y durante 1 hora son órdenes diferentes, y reutilizar una clave para ambas devolverá la respuesta de la primera orden para la segunda solicitud.

Realizar Dos Órdenes Idénticas ​

La misma trampa que en el endpoint horario, con una ventana más amplia. Dos órdenes idénticas (la misma cantidad a la misma dirección) son indistinguibles de un reintento, y solo el momento de llegada las separa.

Sin una clave propia:

Intervalo entre las dos solicitudesQué sucede
Dentro de la misma ventana de 2 segundosLa segunda solicitud se toma como una repetición. No se ejecuta: obtiene 208 y la respuesta de la primera orden. No se le cobra nada por ella
Con más de dos segundos de diferenciaDos claves diferentes: ambas órdenes se procesan y ambas se cobran

Por lo tanto, deje más de dos segundos entre dos órdenes idénticas y lea el código de estado: 208 significa que la orden que acaba de enviar no se ejecutó.

Una pausa es una solución provisional, no definitiva: también separa las solicitudes que nunca tuvo intención de repetir, como un reintento tras un tiempo de espera o un mensaje entregado de nuevo por su cola, y cada una de ellas se convierte en una orden independiente con un cargo independiente. Enviar su propia clave es lo que realmente lo soluciona: un nuevo nonce para una nueva orden, el nonce del primer intento para un reintento. La explicación completa se encuentra en la página de 1 hora.

Códigos de Estado HTTP para Solicitudes Duplicadas ​

Código de EstadoNombreDescripción
200OKOrden procesada con éxito (primera solicitud)
208Already ReportedLa orden ya fue procesada, devolviendo respuesta en caché
409ConflictLa solicitud se está procesando actualmente, no reintente

Solicitud Duplicada - Ya Procesada (208) ​

json
{
    "detail": {
        "code": 10000,
        "msg": "Successful, 1.430 TRX deducted",
        "data": {
            "hash": "3636f97dde244fca17cdc0b2cf7fd1572a9b4c6d8e0f1a3b5c7d9e1f3a5b7c9d",
            "energy": 65050,
            "orderId": "5Mb4ee11ef86",
            "paidTRX": 1.43,
            "delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq"
        }
    },
    "idempotency": {
        "status": "completed",
        "cached": true,
        "original_created_at": "2026-03-21T08:53:52.498000"
    }
}

Solicitud Duplicada - Aún en Proceso (409) ​

json
{
    "success": false,
    "error": "duplicate_request_processing",
    "message": "This request is currently being processed. Please wait and do not retry.",
    "retry_after_seconds": 3
}

Mejores Prácticas ​

  • No envíe solicitudes paralelas con los mismos parámetros; espere a cada respuesta
  • Gestione las respuestas 409 esperando, no reintentando de inmediato
  • Compruebe el campo idempotency.cached para identificar respuestas en caché

Comparación: Órdenes de 5 Minutos frente a 1 Hora ​

CaracterísticaOrden de 5 MinutosOrden de 1 Hora
Endpoint/apiv2/order5m/apiv2/order1h
Duración5 minutos1 hora
Rango de Energy61.000 - 650.00061.000 - 3.000.000
ProveedoresSolo pools internos de NettsPools internos + proveedores externos
PrecioMás bajo (tarifa de 5 minutos)Tarifa por hora estándar
DisponibilidadPuede ser limitada en horas picoAlta (respaldo de múltiples proveedores)
Ideal paraTransacciones pequeñas frecuentesEntregas grandes o garantizadas

Cuentas Postpago ​

Las cuentas con facturación postpago utilizan el mismo endpoint, URL, encabezados y cuerpo de solicitud que todos los demás. La diferencia radica en cómo se paga la orden:

  • No se deduce nada de su depósito. Cada orden exitosa se añade al saldo pendiente de su cuenta en la moneda de liquidación acordada en su contrato. Usted la paga mediante factura, de acuerdo con su contrato.
  • Su cuenta tiene un límite de crédito. Mientras el importe adeudado se encuentre dentro del límite, las órdenes se aceptan incluso con un depósito de cero.
  • Solo se facturan los servicios entregados. Una orden rechazada o no ejecutada no cuesta nada.
  • Si la dirección receptora debe activarse, la activación forma parte de la misma orden y se factura como un cargo independiente.

La facturación postpago es habilitada por Netts para una cuenta previa solicitud. Cada respuesta le indica cómo se paga la orden: paymentMode es postpaid o prepaid.

Campos adicionales de solicitud ​

ParámetroTipoRequeridoDescripción
testbooleanoNotrue — calcula solo el precio. No se ordena, entrega ni factura nada
freezePricebooleanoNotrue — fija el precio según su contrato durante 60 segundos. No se ordena ni factura nada
quoteIdcadenaNoRealiza la orden al precio de una cotización emitida por freezePrice
priceCurrencycadenaNoTRX (predeterminado) o la moneda de su contrato, como en settlement.asset. Para cuentas postpago, los importes en la moneda de su contrato siempre se incluyen

quoteId no se puede combinar con test ni freezePrice. Cualquier otro campo en el cuerpo de la solicitud será rechazado.

Comprobación de precio (test: true) ​

json
{
    "amount": 65000,
    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
    "test": true
}
json
{
    "detail": {
        "code": 10010,
        "msg": "Test calculation",
        "data": {
            "amount": 65000,
            "unitPriceSun": "19",
            "discount": null,
            "energyTRX": "1.235000",
            "activationTRX": "1.100000",
            "wouldCostTRX": "2.335000",
            "paidTRX": 0,
            "paymentMode": "postpaid",
            "activationCheck": "inactive",
            "alt": {"USDC": {"energy": "0.409088", "activation": "0.364370", "total": "0.773458"}},
            "fxAt": "2026-10-19T07:16:12.548894+00:00"
        }
    }
}
CampoDescripción
unitPriceSunPrecio por unidad de energy en SUN, incluyendo su descuento personal si tiene uno
discountSu descuento personal (type, value) o null
energyTRX / activationTRX / wouldCostTRXEnergy, activación (si la dirección la necesita) y total, en TRX
activationCheckinactive — la dirección será activada y facturada; active — sin activación; unknown — no se pudo comprobar en este momento
alt.<currency>Los mismos importes en la moneda de su contrato
fxAtHora del tipo de cambio utilizado para los importes en la moneda de su contrato

Cotización de precio fijo (freezePrice: true) ​

Utilice una cotización para fijar el precio según su contrato antes de ordenar.

  1. Envíe la orden con "freezePrice": true. La respuesta tiene el código 10011 (Quote issued), los mismos campos que una comprobación de precio, más quoteId y expiresAt.
  2. En un plazo de 60 segundos, envíe la orden con "quoteId": "<quoteId>" y la misma amount y receiveAddress.
  3. La orden se factura al precio cotizado (el precio según su contrato en el momento de la cotización), incluso si el precio cambia entretanto.

Una cotización se puede utilizar una sola vez y solo para el mismo producto: una cotización de 5 minutos no puede pagar una orden de 1 hora. Una cotización caducada o ya utilizada se rechaza y no se ordena nada.

json
{
    "amount": 65000,
    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
    "quoteId": "q_4f540f16a2c94b7f8e3d1a6b5c0e9d72"
}

Orden exitosa ​

json
{
    "detail": {
        "code": 10000,
        "msg": "Successful, 1.24 TRX service cost, postpaid",
        "data": {
            "orderId": "5M5f557d2fba",
            "paidTRX": 1.235,
            "hash": "c1fafd8ef7fb6b7fb8a729120756b26e611f401275cb4f7a04fe2bafd75b13da",
            "delegateAddress": "TR3qZsdmkFcvP729Md3PwXzktFQkMoUzjg",
            "energy": 65000,
            "paymentMode": "postpaid",
            "energyTRX": "1.235000",
            "activationTRX": "0.000000",
            "totalTRX": "1.235000"
        }
    }
}
CampoDescripción
paidTRXCoste del servicio en TRX. Para cuentas postpago no se deduce del depósito
paymentModepostpaid
energyTRX / activationTRX / totalTRXImportes exactos, 6 decimales
quoteId, altPresentes cuando la orden se realizó con una cotización: el ID de cotización y los importes cotizados

Todos los demás campos son los mismos que para las órdenes prepago.

Límite de crédito alcanzado (402) ​

json
{
    "detail": {
        "code": 1004,
        "msg": "Postpaid credit limit reached.",
        "paymentMode": "postpaid",
        "reason": "limit_reached"
    }
}

La orden no se ejecuta y no se factura nada. Se aceptarán nuevas órdenes una vez que se registre su pago o se incremente su límite.

Códigos de error postpago ​

CódigoHTTPDescripción
10010200Resultado de comprobación de precio (test)
10011200Cotización emitida (freezePrice)
1004402Límite de crédito postpago alcanzado
4100400Solicitud inválida
4101400priceCurrency no admitida
4102400quoteId combinado con test o freezePrice
4103409Cotización ya utilizada
4104409Cotización caducada
4105409Clave de idempotencia ya utilizada para una solicitud diferente
4106404Cotización no encontrada
4107409Los parámetros de la orden difieren de la cotización
4108400Formato de quoteId inválido
4109422No disponible para subcuentas
5032503Precio no disponible temporalmente
5033503Tipo de cambio no disponible temporalmente
5034503Facturación no disponible temporalmente — la orden no fue aceptada
5036503Comprobación de crédito no disponible temporalmente — reintente más tarde

Para todas las respuestas 4xx y 503 anteriores no se ordena nada ni se factura nada.

Notas ​

  • La Energy se entrega al instante tras completarse la orden con éxito (normalmente en 0,5-2 segundos)
  • Tiempo de espera de respuesta de la API: Máximo 10 segundos (incluye intentos de reintento internos)
  • Activación de dirección: Si la dirección del receptor no está activada, Netts la activa a precio de coste. El coste de activación se cobra solo una vez por dirección
  • Duración: Fija de 5 minutos (300 segundos)
  • Cantidad mínima de Energy: 61.000 unidades
  • Cantidad máxima de Energy: 650.000 unidades por orden
  • Margen de Energy: +50 unidades añadidas automáticamente (sin cargo)
  • Formato de ID de orden: 5M{id} para seguimiento unificado
  • Precios: Dinámicos según la hora del día mediante la API de Precios
  • Límite de tasa: 50 solicitudes por segundo por dirección IP
  • Solo pools internos: Si los pools están a su máxima capacidad, reintente tras una breve pausa o utilice el endpoint de 1 hora como alternativa de respaldo