Back to Blog

Developer / C01

API REST de MERX: 46 Endpoints para Comercio de Energía TRON

La API REST de MERX proporciona 46 endpoints que cubren el ciclo de vida completo del comercio de energía y bandwidth de TRON - desde el descubrimiento de precios en tiempo real a través de ocho proveedores hasta la ejecución de órdenes, gestión de cuentas, consultas en cadena y órdenes permanentes automatizadas. Este artículo recorre la arquitectura de la API, el modelo de autenticación, grupos de endpoints, límites de velocidad, manejo de errores y ejemplos prácticos de código en curl, JavaScript y Python.

Por qué una API Unificada es Importante

El mercado de energía TRON está fragmentado entre múltiples proveedores, cada uno con su propio formato de API, esquema de autenticación y modelo de precios. Un desarrollador que quiere el mejor precio en una transferencia USDT tiene que integrarse con cada proveedor individualmente, manejar la lógica de conmutación por error y monitorear los precios continuamente.

MERX consolida todo eso en una única API REST. Una clave API, un encabezado de autenticación, un formato de error, un conjunto de SDKs. La plataforma consulta todos los proveedores conectados cada 30 segundos, enruta órdenes a la fuente más barata disponible y verifica delegaciones en cadena.

La API está versionada en /api/v1/ y mantendrá compatibilidad hacia atrás. Todos los endpoints devuelven JSON en un formato de envolvente consistente.

Autenticación

MERX utiliza autenticación mediante clave API. Cada solicitud autenticada debe incluir el encabezado X-API-Key.

Las claves API se crean en el panel de MERX en merx.exchange o programáticamente a través del endpoint /api/v1/keys. Cada clave tiene un conjunto de permisos que controla qué operaciones puede realizar.

curl -H "X-API-Key: sk_live_your_key_here" \
  https://merx.exchange/api/v1/balance

Las claves siguen el formato sk_live_ seguido de 64 caracteres hexadecimales. La clave sin procesar se muestra exactamente una vez en el momento de la creación. MERX almacena solo el hash bcrypt, por lo que las claves perdidas no pueden recuperarse - deben revocarse y reemplazarse.

Permisos de Clave

Al crear una clave API, asigna uno o más permisos:

Data table
PermisoOtorga acceso a
create_ordersPOST /orders, POST /ensure
view_ordersGET /orders, GET /orders/:id
view_balanceGET /balance, GET /history
broadcastPOST /chain/broadcast

Esto permite crear claves de solo lectura para paneles de monitoreo y claves restringidas para sistemas de comercio automatizado.

Envolvente de Respuesta

Cada respuesta sigue la misma estructura:

{
  "data": { ... }
}

En caso de error:

{
  "error": {
    "code": "INSUFFICIENT_FUNDS",
    "message": "Saldo de cuenta muy bajo para la operación solicitada",
    "details": { "required": 150000000, "available": 42000000 }
  }
}

Los códigos de error son cadenas legibles por máquina. El campo details es opcional y proporciona contexto para depuración.

Grupos de Endpoints

Los 46 endpoints se organizan en nueve grupos. Aquí está el mapa completo.

Precios (6 endpoints)

Estos endpoints son públicos - no se requiere clave API.

Data table
MétodoRutaDescripción
GET/api/v1/pricesPrecios actuales de todos los proveedores
GET/api/v1/prices/bestProveedor más barato para un tipo de recurso
GET/api/v1/prices/historyDatos de precios históricos
GET/api/v1/prices/statsEstadísticas agregadas del mercado
GET/api/v1/prices/analysisAnálisis de tendencias y recomendación de compra
GET/api/v1/orders/previewPrevisualización de costo antes de colocar una orden

Órdenes (3 endpoints)

Data table
MétodoRutaDescripción
POST/api/v1/ordersCrear una nueva orden de energía o bandwidth
GET/api/v1/ordersListar órdenes con paginación y filtros
GET/api/v1/orders/:idObtener detalles de la orden con desglose de ejecuciones

Cuenta (7 endpoints)

Data table
MétodoRutaDescripción
GET/api/v1/balanceSaldos actuales de TRX y USDT
GET/api/v1/deposit/infoDirección de depósito y memo
POST/api/v1/deposit/preparePreparar una transacción de depósito
POST/api/v1/deposit/submitEnviar comprobante de depósito
POST/api/v1/withdrawRetirar TRX o USDT
GET/api/v1/historyHistorial de ejecución de órdenes
GET/api/v1/history/summaryEstadísticas agregadas de la cuenta

Claves API (3 endpoints)

Data table
MétodoRutaDescripción
GET/api/v1/keysListar todas las claves API
POST/api/v1/keysCrear una nueva clave API
DELETE/api/v1/keys/:idRevocar una clave API

Autenticación (2 endpoints)

Data table
MétodoRutaDescripción
POST/api/v1/auth/registerCrear una nueva cuenta
POST/api/v1/auth/loginAutenticarse y recibir un token JWT

Estimación (2 endpoints)

Data table
MétodoRutaDescripción
POST/api/v1/estimateEstimar energía y costo para una transacción
POST/api/v1/ensureAsegurar recursos mínimos en una dirección

Webhooks (3 endpoints)

Data table
MétodoRutaDescripción
POST/api/v1/webhooksCrear una suscripción a webhook
GET/api/v1/webhooksListar suscripciones a webhooks
DELETE/api/v1/webhooks/:idEliminar un webhook

Órdenes Permanentes y Monitores (7 endpoints)

Data table
MétodoRutaDescripción
POST/api/v1/standing-ordersCrear una orden permanente
GET/api/v1/standing-ordersListar órdenes permanentes
GET/api/v1/standing-orders/:idObtener detalles de la orden permanente
DELETE/api/v1/standing-orders/:idCancelar una orden permanente
POST/api/v1/monitorsCrear un monitor de recursos
GET/api/v1/monitorsListar monitores activos
DELETE/api/v1/monitors/:idCancelar un monitor

Proxy de Cadena (10 endpoints)

Estos endpoints hacen proxy de consultas de la red TRON a través de MERX, eliminando la necesidad de que los clientes llamen a TronGrid directamente.

Data table
MétodoRutaDescripción
GET/api/v1/chain/account/:addressInformación de cuenta y recursos
GET/api/v1/chain/balance/:addressSaldo de TRX
GET/api/v1/chain/resources/:addressDesglose de energía y bandwidth
GET/api/v1/chain/transaction/:txidDetalles de la transacción
GET/api/v1/chain/block/:numberBloque por número (o el más reciente)
GET/api/v1/chain/parametersParámetros de la cadena
GET/api/v1/chain/history/:addressHistorial de transacciones de la dirección
POST/api/v1/chain/read-contractLlamar a una función de contrato constante
POST/api/v1/chain/broadcastTransmitir una transacción firmada
GET/api/v1/address/:addr/resourcesResumen de recursos de la dirección

x402 Pago Por Uso (3 endpoints)

Data table
MétodoRutaDescripción
POST/api/v1/x402/invoiceCrear una factura de pago
GET/api/v1/x402/invoice/:idVerificar estado de la factura
POST/api/v1/x402/verifyVerificar pago y ejecutar orden

Endpoints Clave en Detalle

GET /api/v1/prices

Devuelve precios actuales de todos los proveedores activos. No se requiere autenticación. Este es el endpoint que llama para ver el mercado completo de un vistazo.

curl https://merx.exchange/api/v1/prices

Respuesta (abreviada):

{
  "data": [
    {
      "provider": "sohu",
      "is_market": false,
      "energy_prices": [
        { "duration_sec": 3600, "price_sun": 24 },
        { "duration_sec": 86400, "price_sun": 30 }
      ],
      "bandwidth_prices": [],
      "available_energy": 5000000,
      "available_bandwidth": 0,
      "fetched_at": 1743292800
    }
  ]
}

Cada entrada de proveedor incluye los niveles de precios (por duración), capacidad disponible y la marca de tiempo del último sondeo exitoso.

POST /api/v1/orders

Crea una orden de energía o bandwidth. La plataforma compara la orden con los proveedores disponibles y enruta al más barato que pueda cumplirla.

curl -X POST https://merx.exchange/api/v1/orders \
  -H "X-API-Key: sk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: unique-request-id-123" \
  -d '{
    "resource_type": "ENERGY",
    "order_type": "MARKET",
    "amount": 65000,
    "target_address": "TJYpFDq5cVnRJey8Xt8HfaRtNkqFTZwBb",
    "duration_sec": 3600
  }'

Respuesta:

{
  "data": {
    "id": "ord_a1b2c3d4",
    "status": "PENDING",
    "created_at": "2026-03-30T12:00:00.000Z"
  }
}

El encabezado Idempotency-Key previene órdenes duplicadas si se reintenta la misma solicitud. Si la clave ha sido vista antes, la API devuelve la orden original en lugar de crear una nueva.

Tipos de orden:

GET /api/v1/orders/:id

Devuelve la orden con sus detalles de ejecución - qué proveedores cumplieron la orden, a qué precio y los IDs de transacción en cadena.

curl -H "X-API-Key: sk_live_your_key_here" \
  https://merx.exchange/api/v1/orders/ord_a1b2c3d4
{
  "data": {
    "id": "ord_a1b2c3d4",
    "resource_type": "ENERGY",
    "order_type": "MARKET",
    "status": "FILLED",
    "amount": 65000,
    "target_address": "TJYpFDq5cVnRJey8Xt8HfaRtNkqFTZwBb",
    "duration_sec": 3600,
    "total_cost_sun": 1560000,
    "fills": [
      {
        "provider": "sohu",
        "amount": 65000,
        "price_sun": 24,
        "cost_sun": 1560000,
        "delegation_tx": "abc123def456...",
        "verified": true,
        "tronscan_url": "https://tronscan.org/#/transaction/abc123def456..."
      }
    ]
  }
}

POST /api/v1/estimate

Estima la energía y bandwidth requeridos para una operación TRON, luego compara el costo de alquiler contra el costo de quema de TRX.

curl -X POST https://merx.exchange/api/v1/estimate \
  -H "Content-Type: application/json" \
  -d '{
    "operation": "trc20_transfer",
    "to_address": "TJYpFDq5cVnRJey8Xt8HfaRtNkqFTZwBb",
    "amount": "1000000"
  }'
{
  "data": {
    "energy_required": 65000,
    "bandwidth_required": 345,
    "rental_cost": {
      "energy": {
        "best_price_sun": 24,
        "best_provider": "sohu",
        "cost_trx": "1.560"
      }
    },
    "total_rental_trx": "1.905",
    "total_burn_trx": "27.645",
    "savings_percent": 93.1
  }
}

Este endpoint es útil para mostrar a los usuarios exactamente cuánto ahorran alquilando energía a través de MERX versus quemar TRX.

Límites de Velocidad

Los límites de velocidad se aplican por dirección IP usando ventanas deslizantes.

Data table
Grupo de endpointsLímiteVentana
Precios (público)300 solicitudes1 min
Predeterminado (general)100 solicitudes1 min
Balance60 solicitudes1 min
Historial60 solicitudes1 min
Órdenes10 solicitudes1 min
Retiros5 solicitudes1 min
Broadcast20 solicitudes1 min
Registro5 solicitudes1 hora

Cuando se excede un límite de velocidad, la API devuelve HTTP 429 con el formato de error estándar:

{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Límite de velocidad excedido"
  }
}

Los encabezados de límite de velocidad (RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset) se incluyen en todas las respuestas siguiendo el estándar de borrador IETF.

Códigos de Error

Data table
CódigoHTTPDescripción
UNAUTHORIZED401Clave API inválida o faltante
RATE_LIMITED429Demasiadas solicitudes
VALIDATION_ERROR400Cuerpo o parámetros de solicitud fallaron en validación
INVALID_ADDRESS400No es una dirección TRON válida
INSUFFICIENT_FUNDS400Saldo de cuenta demasiado bajo
BELOW_MINIMUM_ORDER400Monto de orden por debajo del mínimo del proveedor
DUPLICATE_REQUEST409Clave de idempotencia ya utilizada
ORDER_NOT_FOUND404Orden o recurso no existe
PROVIDER_UNAVAILABLE404Ningún proveedor puede cumplir la solicitud
INTERNAL_ERROR500Error del lado del servidor

Inicio Rápido con SDKs

Si bien la API REST se puede llamar directamente con cualquier cliente HTTP, MERX proporciona SDKs oficiales para JavaScript y Python que manejan autenticación, análisis de errores y seguridad de tipos.

JavaScript / TypeScript

npm install merx-sdk
import { MerxClient } from 'merx-sdk'

const merx = new MerxClient({ apiKey: 'sk_live_your_key_here' })

// Obtener todos los precios
const prices = await merx.prices.list()

// Crear una orden
const order = await merx.orders.create({
  resource_type: 'ENERGY',
  amount: 65000,
  target_address: 'TJYpFDq5cVnRJey8Xt8HfaRtNkqFTZwBb',
  duration_sec: 3600,
})

// Verificar estado de la orden
const details = await merx.orders.get(order.id)

Python

pip install merx-sdk
from merx import MerxClient

client = MerxClient(api_key="sk_live_your_key_here")

# Obtener todos los precios
prices = client.prices.list()

# Crear una orden
order = client.orders.create(
    resource_type="ENERGY",
    amount=65000,
    target_address="TJYpFDq5cVnRJey8Xt8HfaRtNkqFTZwBb",
    duration_sec=3600,
)

# Verificar estado de la orden
details = client.orders.get(order.id)

WebSocket para Datos en Tiempo Real

Además de la API REST, MERX proporciona un endpoint WebSocket en wss://merx.exchange/ws para actualizaciones de precios en tiempo real. Los cambios de precio se empujan a los clientes conectados a medida que suceden, con actualizaciones llegando cada 30 segundos por proveedor.

La conexión WebSocket admite filtrado de proveedores - suscribirse solo a los proveedores que te importan e ignorar el resto.

Órdenes Permanentes

Las órdenes permanentes automatizan compras de energía basadas en disparadores. Puede establecer un umbral de precio, un horario o una condición de saldo, y la plataforma ejecuta órdenes automáticamente dentro de su presupuesto especificado.

Los tipos de disparador incluyen price_below, price_above, schedule, balance_below y provider_available. Los tipos de acción incluyen buy_resource, ensure_resources, deposit_trx y notify_only.

Esto hace que MERX sea adecuado para gestión de infraestructura completamente automatizada - establezca sus reglas una vez, y la plataforma maneja la ejecución.

Lo Que Viene Después

La API de MERX está diseñada para desarrolladores y empresas que necesitan acceso confiable y rentable a los recursos de la red TRON. Ya sea que esté construyendo un procesador de pagos, una aplicación DeFi o un intercambio, la API proporciona los componentes básicos para gestionar energía y bandwidth programáticamente.

La documentación completa de la API está disponible en merx.exchange/docs. El SDK de JavaScript está en GitHub y npm. El SDK de Python está en PyPI.


Enlaces:

Pruébalo Ahora con IA

Agregue MERX a Claude Desktop o cualquier cliente compatible con MCP -- sin instalación, sin clave API necesaria para herramientas de solo lectura:

{
  "mcpServers": {
    "merx": {
      "url": "https://merx.exchange/mcp/sse"
    }
  }
}

Pregúntale a tu agente de IA: "¿Cuál es la energía TRON más barata en este momento?" y obtén precios actuales de todos los proveedores conectados.

Documentación completa de MCP: merx.exchange/docs/tools/mcp-server


All Articles