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

POST /apiv2/order5m

Crie um pedido de aluguel de energy de 5 minutos por meio dos pools de energy internos da Netts.

URL do endpoint

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

Cabeçalhos da requisição

HeaderRequiredDescription
Content-TypeSimapplication/json
X-API-KEYSimSua chave de API do painel da Netts
X-Real-IPSimEndereço IP da sua lista de permissões

Corpo da requisição

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

Parâmetros

ParameterTypeRequiredDescription
amountintegerSimQuantidade de Energy a ser alugada (mínimo: 61.000, máximo: 650.000)
receiveAddressstringSimEndereço TRON que receberá a energy (formato TRC-20)

Limites de Energy

O endpoint de 5 minutos aceita quantidades de energy entre 61.000 e 650.000 unidades por pedido. Pedidos fora desse intervalo serão rejeitados com HTTP 400.

Informações do Provedor

Os pedidos de energy de 5 minutos são atendidos exclusivamente por meio dos pools de energy internos da Netts. Ao contrário do endpoint de 1 hora, provedores externos não são utilizados.

Disponibilidade e Estratégia de Repetição

Como as delegações vêm apenas de pools internos, pode haver indisponibilidade temporária durante períodos de alta demanda. Se você receber um erro 503, repita a requisição após um breve intervalo ou utilize como alternativa o endpoint de 1 hora, que tem acesso a múltiplos provedores externos.

Examples de Requisições

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

Resposta

Resposta de Sucesso (200 OK)

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

Sucesso com Ativação de Endereço (200 OK)

Quando o endereço do destinatário ainda não foi ativado na rede TRON, a Netts o ativa automaticamente. O custo de ativação é adicionado ao 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": "3636f97dde244fca17cdc0b2cf7fd157...",
            "delegateAddress": "TNp5gsJhBmZFXgCdgjMgr8pEZ8fHgXUHDq",
            "energy": 65050,
            "activationHash": "bab38070a64b237acc9110ecf5135acc..."
        }
    }
}

Campos da Resposta

CampoTypeDescription
detail.codeintegerSempre 10000 para pedidos bem-sucedidos
detail.msgstringMensagem de sucesso com o valor debitado
detail.data.orderIdstringID unificado do pedido (formato: 5M{id})
detail.data.paidTRXnumberCusto total em TRX (inclui a taxa de ativação, se aplicável)
detail.data.hashstringHash da transação de delegação
detail.data.delegateAddressstringEndereço do pool que delegou a energy
detail.data.energyintegerQuantidade de Energy + margem adicional (geralmente +50)
detail.data.activationHashstringPresente apenas se a ativação de endereço foi realizada

Respostas de erro

Quantidade Inválida de Energy (400)

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

Erro de Autenticação (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"
}

Serviço Indisponível (503)

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

Tratamento de Erros 503

Uma resposta 503 significa que os pools internos estão temporariamente em sua capacidade máxima. Estratégia recomendada:

  1. Aguarde de 2 a 3 segundos e repita o pedido de 5 minutos
  2. Se continuar indisponível, utilize como alternativa o endpoint de 1 hora, que faz uso de múltiplos provedores

Erro Interno do Servidor (500)

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

Referência de Códigos de Erro

CódigoDescriptionHTTP Status
10000Sucesso200
10000Sucesso (resposta em cache)208
-Requisição duplicada ainda em processamento409
1003Quantidade de Energy fora do intervalo400
1004Saldo insuficiente403
1005Endereço pagador do usuário não configurado400
5000Erro interno do servidor500
5003Serviço de energy indisponível503

Limites de taxa

Os seguintes limites de taxa se aplicam a este endpoint (por endereço IP):

PeríodoLimiteDescription
1 segundo50 requisiçõesMáximo de 50 requisições por segundo

Headers de Limite de Taxa

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

Limite de Taxa Excedido (429)

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

Idempotência

A API suporta idempotência para evitar o processamento de pedidos duplicados. Quando você envia várias requisições idênticas, o sistema garante que o pedido seja processado apenas uma vez.

Como Funciona a Idempotência

A exclusividade da requisição é determinada por uma combinação de:

  • Timestamp da requisição (janela de 2 segundos)
  • Quantidade de Energy
  • Endereço do destinatário
  • Chave de API

Cada requisição recebe uma janela de exclusividade de 2 segundos. Requisições com parâmetros idênticos dentro dessa janela são tratadas como duplicatas.

Fornecendo Sua Própria Chave

Você pode assumir o controle da idempotência enviando o header X-Idempotency-Key. Quando ele está presente, esse valor sozinho decide se uma requisição é uma repetição, e a combinação automática acima não é utilizada. Quando ele está ausente, nada muda — o servidor deriva a chave para você.

As regras são as mesmas de /apiv2/order1h:

HeaderX-Idempotency-Key
FormatoExatamente 64 caracteres hexadecimais em minúsculas — um digest SHA-256
Tempo de vida24 horas a partir da primeira requisição contendo essa chave
EscopoSua conta. O mesmo valor enviado por uma conta diferente nunca retorna o seu resultado

Uma chave em qualquer outro formato — um UUID com traços, base64, hexadecimal em maiúsculas — é rejeitada com 400 antes que o pedido seja feito e antes de qualquer cobrança:

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

Derive a chave a partir da sua chave de API para que ela seja exclusiva para a sua conta e reproduzível em uma nova tentativa — o exemplo detalhado está na página de 1 hora. Inclua o período de aluguel na mensagem a ser processada pelo hash: alugar para o mesmo endereço por 5 minutos e por 1 hora são pedidos diferentes, e reutilizar uma única chave para ambos retorna a resposta do primeiro pedido para a segunda requisição.

Fazendo Dois Pedidos Idênticos

A mesma armadilha do endpoint de hora em hora, com uma janela maior. Dois pedidos idênticos — a mesma quantidade para o mesmo endereço — são indistinguíveis de uma repetição, e apenas o momento da chegada os separa.

Sem uma chave própria:

Intervalo entre as duas requisiçõesO que acontece
Dentro da mesma janela de 2 segundosA segunda requisição é considerada uma repetição. Ela não é executada: você recebe 208 e a resposta do primeiro pedido. Nada é cobrado por ela
Mais de dois segundos de intervaloDuas chaves diferentes — ambos os pedidos são criados e ambos são cobrados

Portanto, deixe mais de dois segundos entre dois pedidos idênticos e verifique o código de status: 208 significa que o pedido que você acabou de enviar não foi criado.

Fazer uma pausa é um contorno, não uma solução definitiva — ela também separa as requisições que você nunca teve a intenção de repetir, como uma nova tentativa após um timeout ou uma mensagem reenviada pela sua fila, e cada uma delas se torna um pedido separado com uma cobrança separada. Enviar sua própria chave é o que realmente resolve a questão: um novo nonce para um novo pedido, o nonce da primeira tentativa para uma repetição. A explicação completa está na página de 1 hora.

Códigos de Status HTTP para Requisições Duplicadas

Status CodeNomeDescription
200OKPedido processado com sucesso (primeira requisição)
208Already ReportedO pedido já foi processado, retornando resposta em cache
409ConflictA requisição está sendo processada no momento, não tente novamente

Requisição Duplicada - Já Processada (208)

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

Requisição Duplicada - Ainda em Processamento (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
}

Melhores Práticas

  • Não envie requisições paralelas com os mesmos parâmetros - aguarde cada resposta
  • Trate respostas 409 aguardando, e não tentando novamente de imediato
  • Verifique o campo idempotency.cached para identificar respostas em cache

Comparação: Pedidos de 5 Minutos vs 1 Hora

RecursoPedido de 5 MinutosPedido de 1 Hora
Endpoint/apiv2/order5m/apiv2/order1h
Duração5 minutos1 hora
Intervalo de Energy61.000 - 650.00061.000 - 3.000.000
ProvedoresApenas pools internos da NettsPools internos + provedores externos
PreçoMais baixo (tarifa de 5 minutos)Tarifa horária padrão
DisponibilidadePode ser limitada durante picosAlta (fallback com múltiplos provedores)
Melhor paraPequenas transações frequentesEntregas grandes ou garantidas

Notas

  • A Energy é entregue instantaneamente após a realização do pedido com sucesso (geralmente entre 0,5 e 2 segundos)
  • Timeout de resposta da API: Máximo de 10 segundos (inclui tentativas internas de repetição)
  • Ativação de endereço: Se o endereço do destinatário não estiver ativado, a Netts o ativa pelo preço de custo. O custo de ativação é cobrado apenas uma vez por endereço
  • Duração: Fixa de 5 minutos (300 segundos)
  • Quantidade mínima de Energy: 61.000 unidades
  • Quantidade máxima de Energy: 650.000 unidades por pedido
  • Margem de Energy: +50 unidades adicionadas automaticamente (gratuitamente)
  • Formato do ID do pedido: 5M{id} para rastreamento unificado
  • Preço: Dinâmico com base na hora do dia por meio da API de Preços
  • Rate Limiting: 50 requisições por segundo por endereço IP
  • Apenas pools internos: Se os pools atingirem a capacidade máxima, tente novamente após um breve intervalo ou use o endpoint de 1 hora como alternativa