Referencia de API de Alquiler de Energía Tron: Endpoints REST e Integración
Documentación completa de la API REST para la delegación de Energía de TronEnergy. Endpoint POST /delegate, autenticación HMAC, formatos de solicitud/respuesta, códigos de error y límites de velocidad.
URL base:https://api.tronnrg.comAutenticación: Ninguna requerida. Todos los endpoints son públicos.
Límite de velocidad: 20 solicitudes/segundo por IP
Dirección de pago:TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx (Solo API, no para alquileres manuales)
Cómo Funciona
Tres pasos. Sin clave API, sin registro, sin conexión de billetera. La propiedad se verifica criptográficamente.
Enviar TRX — Envía 4 TRX (o más) a la dirección de pago. 4 TRX = 65,000 energía. 8 TRX = 130,000. Lineal.
Firmar — Firma el mensaje {tx_hash}:{delegate_to} usando la billetera que envió los TRX. Esto demuestra que autorizaste la delegación.
Reclamar — POST /delegate con tx_hash, delegate_to, y signature. La energía llega en ~3 segundos.
Dirección de Pago
TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx
Dirección de pago de API solamente. Esta dirección es para integraciones programáticas a través de la API. No la uses para alquileres de energía manuales. La dirección de alquiler manual es diferente y está disponible en .tronnrg.com.
Envía TRX a esta dirección. El hash de transacción de tu pago es tu token para activar la delegación. Cada hash solo se puede usar una vez.
TRX Enviados
Energía Delegada
Caso de Uso
4 TRX
65,000
Transferencia USDT estándar a una billetera existente (pedido mínimo)
8 TRX
130,000
Transferencia USDT a un destinatario por primera vez
16 TRX
260,000
Cuatro transferencias estándar en un pedido
40 TRX
650,000
Diez transferencias estándar
100 TRX
1,625,000
~25 transferencias estándar — común para plataformas pequeñas
1,000 TRX
16,250,000
Pedido máximo, ~250 transferencias estándar
Cualquier cantidad entre estos valores
trx × 16,250
Totalmente lineal. Sin niveles, sin paquetes, sin descuentos.
Fórmula:energy = trxSent × 16,250. Límites: mín 4 TRX (65,000 energía), máx 1,000 TRX (16,250,000 energía). Ambos se aplican a nivel de API — los montos por debajo del mínimo se rechazan con below_minimum y se reembolsan; los montos por encima del máximo se rechazan antes de la delegación.
POST /delegate
POST/delegate
Solicita una delegación de energía. Debes haber enviado TRX a la dirección de pago en-chain. Proporciona el hash de la transacción, la dirección del destinatario y una firma que demuestre que eres el remitente.
Parámetro
Tipo
Descripción
tx_hash
string
requerido
Hash hexadecimal de 64 caracteres del pago en TRX
delegate_to
string
requerido
Dirección Tron que recibirá la energía
signature
string
requerido
tronWeb.trx.signMessageV2() de tronWeb.trx.signMessageV2(). Demuestra que eres el remitente del pago.
ID de referencia de TronNRG. Guárdalo para consultas de soporte.
energy
number
Energía total delegada
cost
number
TRX cobrados
status
string
"delegated" en caso de éxito
delegations
array
Hashes de transacciones de delegación en-chain. Cada tx es verificable en TronScan. Este es tu comprobante.
GET /health
GET/health
Verificación de disponibilidad para herramientas de monitoreo y uptime. Devuelve 200 OK cuando el proceso API está activo. No verifica nodos proveedores ni upstream.
Respuesta 200
{ "status": "ok" }
Códigos de Error
Cada respuesta de error tiene error (estable, legible por máquina) y message (legible por humanos). Siempre verifica error en tu código.
Código
HTTP
Significado
invalid_tx_hash
400
No es una cadena hexadecimal de 64 caracteres
invalid_address
400
No es una dirección Tron válida
missing_signature
400
No se proporcionó firma
invalid_signature
401
No se pudo verificar la firma
signature_mismatch
403
La dirección del firmante no coincide con el remitente del pago
hash_already_used
409
El hash de la transacción ya ha sido reclamado
payment_verification_failed
404 / 400
La verificación en-chain del pago falló. Lee el campo message para conocer la causa específica: transacción no encontrada aún (404, reintentar en unos segundos), destinatario incorrecto, no es una transferencia de TRX, o está por debajo del mínimo de 4 TRX.
delegation_failed
400 / 500
El proveedor no pudo entregar energía. Si la falla ocurrió después de verificar el pago, se cola automáticamente un reembolso. Consulta el objeto refund cuando esto suceda.
rate_limited
429
Demasiadas solicitudes por segundo desde esta IP. El límite es 20/seg.
server_error
500
Error interno inesperado. Reintentar en unos segundos.
const result = awaitfetch('https://api.tronnrg.com/delegate', { ... })
.then(r => r.json());
if (result.error) {
switch (result.error) {
case'payment_verification_failed':
// Most common cause: tx not yet indexed. Wait 3s and retry.// Read result.message for the specific cause.break;
case'hash_already_used':
// Already claimed. Don't retry.break;
case'signature_mismatch':
// Signer != payment sender. Sign with the same key that sent TRX.break;
case'delegation_failed':
// Refund queued automatically if payment was verified.if (result.refund) console.log('Refund queued:', result.refund);
break;
}
}
result = requests.post('https://api.tronnrg.com/delegate', json=data).json()
if'error'in result:
if result['error'] == 'payment_verification_failed':
# Most common cause: tx not yet indexed. Wait 3s and retry.passelif result['error'] == 'hash_already_used':
# Already claimed. Don't retry.passelif result['error'] == 'signature_mismatch':
# Signer != payment sender. Sign with the same key.passelif result['error'] == 'delegation_failed':
# Refund queued automatically if payment was verified.pass
if (isset($result['error'])) {
switch ($result['error']) {
case'payment_verification_failed':
// Most common cause: tx not yet indexed. Wait 3s and retry.break;
case'hash_already_used':
// Already claimed. Don't retry.break;
case'signature_mismatch':
// Signer != payment sender. Sign with the same key.break;
case'delegation_failed':
// Refund queued automatically if payment was verified.break;
}
}
Reembolsos
Si la delegación falla después de que se verifique su pago, un reembolso en TRX se encola automáticamente y se envía de vuelta a la dirección del remitente en la cadena. Busque el objeto de reembolso en la respuesta de error.
Error con reembolso
{
"error": "delegation_failed",
"message": "Energy delegation failed. Your payment will be refunded.",
"ref": "nrg_d_43",
"refund": {
"type": "queued",
"to": "TSenderAddress",
"amount": 4
}
}
Ejemplo Completo
Flujo completo de extremo a extremo: envía TRX, firma, reclama con reintentos. Copia y ejecuta.
const API = 'https://api.tronnrg.com';
const ADDR = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx';
async functionrentEnergy(delegateTo, trxAmount = 4) {
// 1. Send TRX to the payment addressconst payment = await tronWeb.trx.sendTransaction(ADDR, trxAmount * 1e6);
// 2. Sign: proves you are the senderconst message = `${payment.txid}:${delegateTo}`;
const signature = await tronWeb.trx.signMessageV2(message);
// 3. Claim delegation (retry if tx not indexed yet)let result;
for (let i = 0; i < 3; i++) {
result = awaitfetch(`${API}/delegate`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
tx_hash: payment.txid,
delegate_to: delegateTo,
signature,
}),
}).then(r => r.json());
if (!result.error) break;
if (result.error !== 'payment_verification_failed') throw newError(result.message);
await newPromise(r => setTimeout(r, 3000));
}
if (result.error) throw newError(result.message);
return result;
}
// Usage — send any amount between 4 and 1,000 TRXconst result = awaitrentEnergy('TWalletThatNeedsEnergy', 4); // 4 TRX → 65k energy// rentEnergy(addr, 8) // → 130,000 energy (new-wallet transfer)// rentEnergy(addr, 40) // → 650,000 energy (10 transfers)// rentEnergy(addr, 1000) // → 16,250,000 energy (max)
console.log(result.energy); // trxAmount × 16,250
console.log(result.delegations[0].tx); // on-chain tx hash
console.log(result.ref); // "nrg_d_42"
import requests
import time
API = 'https://api.tronnrg.com'
ADDR = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx'defrent_energy(delegate_to, trx_amount=4):
# 1. Send TRX to ADDR (via your Tron library)
tx_hash = send_trx(ADDR, trx_amount) # your TRX send function# 2. Sign: proves you are the sender
message = f'{tx_hash}:{delegate_to}'
signature = tron.trx.sign_message_v2(message)
# 3. Claim delegation (retry if tx not indexed yet)for attempt inrange(3):
result = requests.post(f'{API}/delegate', json={
'tx_hash': tx_hash,
'delegate_to': delegate_to,
'signature': signature,
}).json()
if'error'not in result:
return result
if result['error'] != 'payment_verification_failed':
raiseException(result['message'])
time.sleep(3)
raiseException('Transaction not found after retries')
# Usage
result = rent_energy('TWalletThatNeedsEnergy', 4)
print(f"Delegated: {result['energy']} energy")
print(f"Delegation tx: {result['delegations'][0]['tx']}")
print(f"Ref: {result['ref']}")
# 1. Send TRX to TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx# Pricing is linear at 16,250 energy per TRX.# Min 4 TRX (65,000 energy), max 1,000 TRX (16.25M energy).# (use your wallet or tronweb CLI)# 2. Sign the message {tx_hash}:{delegate_to} (proves you are the sender)# (use tronWeb.trx.signMessageV2 in your code)# 3. Claim delegation with tx hash + signature
curl -X POST https://api.tronnrg.com/delegate \
-H "Content-Type: application/json" \
-d '{
"tx_hash": "YOUR_PAYMENT_TX_HASH",
"delegate_to": "TWalletThatNeedsEnergy",
"signature": "YOUR_SIGNATURE"
}'# Response includes delegations[].tx — the on-chain hash you can verify on TronScan