Back to Blog

Developer / C01

MERX REST API: 46个TRON能量交易接口

MERX REST API 提供46个接口,覆盖TRON能量和带宽交易的完整生命周期 - 从跨八家供应商的实时价格发现到订单执行、账户管理、链上查询以及自动化常备订单。本文将详细介绍API架构、认证模型、接口分组、速率限制、错误处理,以及curl、JavaScript和Python的实用代码示例。

为什么统一API至关重要

TRON能量市场分散在多个供应商之间,每家都有自己的API格式、认证方案和定价模型。如果开发者想以最优价格完成一笔USDT转账,就必须逐一对接每个供应商,处理故障切换逻辑,并持续监控价格。

MERX将这一切整合到一个REST API中。一个API密钥、一个认证头、一种错误格式、一套SDK。平台每30秒轮询所有已连接的供应商,将订单路由到最便宜的可用来源,并在链上验证委托。

API版本路径为 /api/v1/,并将保持向后兼容。所有接口返回统一信封格式的JSON。

认证

MERX使用API密钥认证。每个需要认证的请求必须包含 X-API-Key 头。

API密钥可通过 merx.exchange 的MERX控制面板创建,也可通过 /api/v1/keys 接口以编程方式创建。每个密钥拥有一组权限,控制其可执行的操作。

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

密钥格式为 sk_live_ 后跟64个十六进制字符。原始密钥仅在创建时显示一次。MERX仅存储bcrypt哈希值,因此丢失的密钥无法恢复 - 只能撤销并重新生成。

密钥权限

创建API密钥时,您可以分配一个或多个权限:

权限授权访问的接口
create_ordersPOST /orders, POST /ensure
view_ordersGET /orders, GET /orders/:id
view_balanceGET /balance, GET /history
broadcastPOST /chain/broadcast

这允许您为监控面板创建只读密钥,为自动化交易系统创建受限密钥。

响应信封

每个响应遵循相同的结构:

{
  "data": { ... }
}

错误响应:

{
  "error": {
    "code": "INSUFFICIENT_FUNDS",
    "message": "Account balance too low for the requested operation",
    "details": { "required": 150000000, "available": 42000000 }
  }
}

错误代码为机器可读的字符串。details 字段为可选项,提供调试上下文信息。

接口分组

46个接口分为九组。以下是完整的接口映射。

价格 (6个接口)

这些接口为公开接口 - 无需API密钥。

方法路径描述
GET/api/v1/prices所有供应商的当前价格
GET/api/v1/prices/best指定资源类型的最低价供应商
GET/api/v1/prices/history历史价格数据
GET/api/v1/prices/stats市场汇总统计
GET/api/v1/prices/analysis趋势分析和购买建议
GET/api/v1/orders/preview下单前的成本预览

订单 (3个接口)

方法路径描述
POST/api/v1/orders创建能量或带宽订单
GET/api/v1/orders带分页和过滤的订单列表
GET/api/v1/orders/:id获取订单详情及成交明细

账户 (7个接口)

方法路径描述
GET/api/v1/balance当前TRX和USDT余额
GET/api/v1/deposit/info充值地址和备注
POST/api/v1/deposit/prepare准备充值交易
POST/api/v1/deposit/submit提交充值证明
POST/api/v1/withdraw提取TRX或USDT
GET/api/v1/history订单执行历史
GET/api/v1/history/summary账户汇总统计

API密钥 (3个接口)

方法路径描述
GET/api/v1/keys列出所有API密钥
POST/api/v1/keys创建新的API密钥
DELETE/api/v1/keys/:id撤销API密钥

认证 (2个接口)

方法路径描述
POST/api/v1/auth/register创建新账户
POST/api/v1/auth/login认证并获取JWT令牌

估算 (2个接口)

方法路径描述
POST/api/v1/estimate估算交易所需能量和成本
POST/api/v1/ensure确保地址上有最低资源

Webhook (3个接口)

方法路径描述
POST/api/v1/webhooks创建Webhook订阅
GET/api/v1/webhooks列出Webhook订阅
DELETE/api/v1/webhooks/:id删除Webhook

常备订单和监控 (7个接口)

方法路径描述
POST/api/v1/standing-orders创建常备订单
GET/api/v1/standing-orders列出常备订单
GET/api/v1/standing-orders/:id获取常备订单详情
DELETE/api/v1/standing-orders/:id取消常备订单
POST/api/v1/monitors创建资源监控
GET/api/v1/monitors列出活跃监控
DELETE/api/v1/monitors/:id取消监控

链上代理 (10个接口)

这些接口通过MERX代理TRON网络查询,无需客户端直接调用TronGrid。

方法路径描述
GET/api/v1/chain/account/:address账户信息和资源
GET/api/v1/chain/balance/:addressTRX余额
GET/api/v1/chain/resources/:address能量和带宽详细分解
GET/api/v1/chain/transaction/:txid交易详情
GET/api/v1/chain/block/:number按编号查询区块(或最新区块)
GET/api/v1/chain/parameters链参数
GET/api/v1/chain/history/:address地址交易历史
POST/api/v1/chain/read-contract调用只读合约函数
POST/api/v1/chain/broadcast广播已签名交易
GET/api/v1/address/:addr/resources地址资源汇总

x402按次付费 (3个接口)

方法路径描述
POST/api/v1/x402/invoice创建支付账单
GET/api/v1/x402/invoice/:id查询账单状态
POST/api/v1/x402/verify验证支付并执行订单

核心接口详解

GET /api/v1/prices

返回所有活跃供应商的当前定价。无需认证。这是您一览市场全貌时调用的接口。

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

响应(简略版):

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

每个供应商条目包含价格层级(按时长分类)、可用容量以及最后一次成功轮询的时间戳。

POST /api/v1/orders

创建能量或带宽订单。平台根据可用供应商进行匹配,路由到能够履行订单的最低价供应商。

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

响应:

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

Idempotency-Key 头用于防止相同请求重试时产生重复订单。如果该密钥之前已使用过,API将返回原始订单而非创建新订单。

订单类型:

GET /api/v1/orders/:id

返回订单及其成交详情 - 哪些供应商完成了订单、以何种价格成交,以及链上交易ID。

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

估算TRON操作所需的能量和带宽,然后比较租赁成本与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
  }
}

此接口用于向用户准确展示通过MERX租赁能量相比直接燃烧TRX可以节省多少成本。

速率限制

速率限制按IP地址使用滑动窗口机制应用。

接口组别限制窗口
价格(公开)300次请求1分钟
默认(通用)100次请求1分钟
余额60次请求1分钟
历史记录60次请求1分钟
订单10次请求1分钟
提现5次请求1分钟
广播20次请求1分钟
注册5次请求1小时

超出速率限制时,API返回HTTP 429,使用标准错误格式:

{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Rate limit exceeded"
  }
}

速率限制头(RateLimit-LimitRateLimit-RemainingRateLimit-Reset)按照IETF草案标准包含在所有响应中。

错误代码

代码HTTP描述
UNAUTHORIZED401无效或缺少API密钥
RATE_LIMITED429请求过多
VALIDATION_ERROR400请求体或参数验证失败
INVALID_ADDRESS400不是有效的TRON地址
INSUFFICIENT_FUNDS400账户余额不足
BELOW_MINIMUM_ORDER400订单金额低于供应商最低限额
DUPLICATE_REQUEST409幂等性密钥已被使用
ORDER_NOT_FOUND404订单或资源不存在
PROVIDER_UNAVAILABLE404没有供应商可以完成该请求
INTERNAL_ERROR500服务端错误

SDK快速入门

虽然REST API可以通过任何HTTP客户端直接调用,但MERX提供了JavaScript和Python的官方SDK,处理认证、错误解析和类型安全。

JavaScript / TypeScript

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

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

// 获取所有价格
const prices = await merx.prices.list()

// 创建订单
const order = await merx.orders.create({
  resource_type: 'ENERGY',
  amount: 65000,
  target_address: 'TJYpFDq5cVnRJey8Xt8HfaRtNkqFTZwBb',
  duration_sec: 3600,
})

// 查询订单状态
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")

# 获取所有价格
prices = client.prices.list()

# 创建订单
order = client.orders.create(
    resource_type="ENERGY",
    amount=65000,
    target_address="TJYpFDq5cVnRJey8Xt8HfaRtNkqFTZwBb",
    duration_sec=3600,
)

# 查询订单状态
details = client.orders.get(order.id)

WebSocket实时数据

除REST API外,MERX还提供 wss://merx.exchange/ws 上的WebSocket接口用于实时价格更新。价格变动会在发生时即刻推送给已连接的客户端,每个供应商每30秒更新一次。

WebSocket连接支持供应商过滤 - 仅订阅您关注的供应商,忽略其余供应商。

常备订单

常备订单基于触发条件自动执行能量采购。您可以设置价格阈值、时间计划或余额条件,平台在您指定的预算内自动执行订单。

触发类型包括 price_belowprice_aboveschedulebalance_belowprovider_available。操作类型包括 buy_resourceensure_resourcesdeposit_trxnotify_only

这使得MERX适用于全自动化的基础设施管理 - 设定规则一次,平台负责执行。

后续发展

MERX API专为需要可靠、低成本访问TRON网络资源的开发者和企业而设计。无论您是在构建支付处理器、DeFi应用还是交易所,该API都提供了以编程方式管理能量和带宽的基础模块。

完整的API文档请访问 merx.exchange/docs。JavaScript SDK发布在 GitHubnpm。Python SDK发布在 PyPI


链接:


All Articles