能量 API 文档

最后更新:2026年8月24日 · 接口版本 v1

概述

TRXAPI 能量 API 是一组简单的 REST 接口,让你把 TRON 能量委托直接集成到自己的应用或业务系统中:交易所提币通道、支付商户的代付系统、批量转账工具等都可以程序化下单、对账与监控。

核心流程只有三步:下单(getenergy)→ 轮询或等待回调(order / webhook)→ 对账(balance)。所有委托都是公开的链上交易,每个订单都会返回链上交易哈希 txid,可在任意区块浏览器独立核验。

  • 计费方式:从你的预付余额中按单扣费;余额通过客户中心充值。
  • 能量规格:单笔支持 65000130000 能量;时长支持 1 小时或 24 小时。
  • 失败自动退款:订单最终失败时,费用自动退回余额,无需人工申请。
接口域名https://api.trxapi.io
鉴权方式?apikey=YOUR_API_KEY
响应格式JSON · {code, message, data}
成功标识code = 200

接口总览

接口方法说明
/api/v1/openapi/getenergyGET下单租能量(65000 / 130000,1h / 24h)
/api/v1/openapi/activationGET激活从未使用过的 TRON 地址
/api/v1/openapi/orderGET按 orderId 查询订单状态与 txid
/api/v1/openapi/balanceGET查询商户预付余额
/api/v1/openapi/node/…GET / POST节点直连查询,免费(见节点 API 文档
Webhook 回调POST(服务器 → 你)订单终态主动通知,在客户中心配置

📄 机器可读描述:OpenAPI 3.0 文件,可导入 Postman / Apifox 等工具直接调试。

快速开始

  1. 客户中心注册账户并完成余额充值(支持 TRX / USDT)。
  2. 在客户中心「API 密钥」页创建 apikey。密钥仅在创建时完整显示一次,请妥善保存。
  3. 发起第一笔下单请求(把示例中的地址与密钥替换为你自己的):
# 1) rent 65,000 energy for 1 hour
curl "https://api.trxapi.io/api/v1/openapi/getenergy?apikey=YOUR_API_KEY&add=TR7NHqjeKQx...&value=65000&hour=1"

# 2) poll the order until it reaches a terminal state
curl "https://api.trxapi.io/api/v1/openapi/order?apikey=YOUR_API_KEY&orderId=10001"

# 3) check your prepaid balance
curl "https://api.trxapi.io/api/v1/openapi/balance?apikey=YOUR_API_KEY"
💡 能量通常在下单后数秒内到账。生产环境建议配置 Webhook 回调(见下文),可免去轮询。

鉴权与安全

所有接口都通过 URL 参数 apikey 鉴权。每个商户可创建独立密钥,密钥在服务端以哈希形式存储。

  • 不要在前端暴露密钥。apikey 只应出现在你的服务端代码中,切勿写入网页、App 或小程序等客户端。
  • 不要泄露完整请求 URL。密钥通过 URL 传递,日志、截图、公开仓库中都可能带出密钥;如怀疑泄露,请立即在客户中心重置。
  • 密钥与账户的关系:同一账户下所有密钥共用预付余额,以及同一个 Webhook 回调地址与签名密钥。
  • apikey 无效或被禁用时返回 code=501

通用约定

所有接口的响应都是统一的 JSON 信封:

{
  "code": 200,          // 200 = success, otherwise an error code
  "message": "SUCCESS", // human-readable, do NOT branch on it
  "data": { /* endpoint-specific payload */ },
  "traceId": "7c2c1d6f..."
}
  • code 判断结果,不要依赖 message 文案——文案可能随语言或版本变化。
  • TRON 地址均为 Base58 格式(T 开头、34 位)。
  • 金额字段为字符串,单位 TRX(余额以 TRX 计价)。
  • 目前所有业务接口均为 GET 请求,参数通过 query string 传递。

下单租能量

GET/api/v1/openapi/getenergy下单租能量

向指定地址委托能量。下单成功即从你的预付余额扣费,能量通常数秒内到账;若最终失败,费用会自动退回。

请求参数
参数必填说明
apikey商户密钥,在客户中心创建获取
add接收能量的 TRON 地址(T 开头 34 位)
value能量数量,仅支持 65000 或 130000
hour委托时长(小时),仅支持 1 或 24
traceId选填,链路追踪 ID(最长 36 位),原样回显便于对账
响应字段(data)
orderId订单号,用于查询订单状态与对账
amount本单扣费金额(TRX)
balance扣费后的账户余额(TRX)
txid链上委托交易哈希,可在区块浏览器查验
# 请求:下单租 65000 能量 1 小时
curl "https://api.trxapi.io/api/v1/openapi/getenergy?apikey=YOUR_API_KEY&add=TR7NHqjeKQx...&value=65000&hour=1"

# 响应
{
  "code": 200,
  "message": "SUCCESS",
  "data": {
    "orderId": "10001",
    "amount": "16.9",
    "balance": "1263.60",
    "txid": "a1b2c3d4..."
  },
  "traceId": "7c2c1d6f..."
}
⚠️ 接收地址必须是已激活地址(有过至少一笔链上交易)。向从未激活的地址下单会失败——请先调用下方的「地址激活」接口。

地址激活

GET/api/v1/openapi/activation地址激活

为未激活的 TRON 地址完成链上激活,返回激活交易哈希。地址已激活会返回 702001。

请求参数
参数必填说明
apikey商户密钥,在客户中心创建获取
add待激活的 TRON 地址(T 开头 34 位)
响应字段(data)
add被激活的地址
txid激活交易哈希
amount本单扣费金额(TRX)
# 请求:激活地址
curl "https://api.trxapi.io/api/v1/openapi/activation?apikey=YOUR_API_KEY&add=TR7NHqjeKQx..."

# 响应
{
  "code": 200,
  "message": "SUCCESS",
  "data": {
    "add": "TR7NHqjeKQx...",
    "txid": "a1b2c3d4...",
    "amount": "2.5"
  }
}
💡 已激活的地址会返回 code=702001(地址已激活),该情况不扣费,可安全地重复调用。

查询订单

GET/api/v1/openapi/order查询订单

凭下单返回的 orderId 查询订单当前状态与链上交易哈希,建议下单后轮询直至终态。

请求参数
参数必填说明
apikey商户密钥,在客户中心创建获取
orderId下单接口返回的订单号
订单状态
processing处理中,能量委托进行中
completed已完成,能量已到账
failed已失败,费用自动退回余额
# 请求:查询订单状态
curl "https://api.trxapi.io/api/v1/openapi/order?apikey=YOUR_API_KEY&orderId=10001"

# 响应
{
  "code": 200,
  "message": "SUCCESS",
  "data": {
    "orderId": "10001",
    "status": "completed",
    "txid": "a1b2c3d4..."
  }
}
💡 轮询建议:下单后每 2–3 秒查询一次,直到状态变为 completedfailed;也可以配置 Webhook 回调,由服务器主动通知终态,无需轮询。

查询余额

GET/api/v1/openapi/balance查询余额

查询你(商户)在本平台的预付余额,用于自助对账与充值提醒。该余额是你在 TRXAPI 的服务账户余额,不代表也不涉及你外部钱包中的资产。

请求参数
参数必填说明
apikey商户密钥,在客户中心创建获取
响应字段(data)
balance商户预付余额(TRX 计价)
currency计价币种(TRX)
# 请求:查询商户余额
curl "https://api.trxapi.io/api/v1/openapi/balance?apikey=YOUR_API_KEY"

# 响应
{
  "code": 200,
  "message": "SUCCESS",
  "data": {
    "balance": "1280.50",
    "currency": "TRX"
  }
}

代码示例

完整的「下单 → 轮询到终态」流程(生产环境建议配置 Webhook 获取终态通知,替代轮询)。注意:URL 中含 &,在 shell 中调用时务必给整个 URL 加引号。

# Python — order and poll until terminal state
import time, requests

BASE = "https://api.trxapi.io/api/v1/openapi"
KEY  = "YOUR_API_KEY"

def rent(address, value=65000, hour=1, trace=None):
    params = {"apikey": KEY, "add": address, "value": value, "hour": hour}
    if trace: params["traceId"] = trace
    r = requests.get(f"{BASE}/getenergy", params=params, timeout=15).json()
    assert r["code"] == 200, r
    return r["data"]["orderId"]

def wait_done(order_id, timeout=60):
    deadline = time.time() + timeout
    while time.time() < deadline:
        r = requests.get(f"{BASE}/order", params={"apikey": KEY, "orderId": order_id}, timeout=15).json()
        if r["code"] == 200 and r["data"]["status"] in ("completed", "failed"):
            return r["data"]
        time.sleep(2)
    raise TimeoutError(order_id)

order_id = rent("TR7NHqjeKQx...", trace="withdraw-8801")
print(wait_done(order_id))
// Node.js 18+ — order and poll (native fetch)
const BASE = 'https://api.trxapi.io/api/v1/openapi';
const KEY  = process.env.TRXAPI_KEY;

async function call(path, params) {
  const qs = new URLSearchParams({ apikey: KEY, ...params });
  const res = await fetch(`${BASE}/${path}?${qs}`);
  const body = await res.json();
  if (body.code !== 200) throw new Error(`code ${body.code}`);
  return body.data;
}

const { orderId } = await call('getenergy', { add: 'TR7NHqjeKQx...', value: 65000, hour: 1 });
for (;;) {
  const o = await call('order', { orderId });
  if (o.status !== 'processing') { console.log(o); break; }
  await new Promise(r => setTimeout(r, 2000));
}

订单回调(Webhook)

订单进入终态(成功或失败)时,服务器会主动向你在客户中心配置的回调地址 POST 一条 JSON 通知,无需轮询。回调为账户级配置:名下所有 API Key 共用同一回调地址与签名密钥。

POSTPOST 你的回调地址订单回调(Webhook)
回调内容(JSON body)
参数说明
event事件类型:order.completed(成功)或 order.failed(失败)
orderId订单号,与下单接口返回的 orderId 一致
status订单终态:completed 或 failed
txid链上交易哈希(成功时有值,失败为空)
timestamp服务器发送时的 Unix 秒级时间戳
请求头
X-Timestamp发送时间戳(秒),参与签名计算
X-Signature签名:sha256=<hex(HMAC-SHA256)>,用于验证来源与完整性
# 服务器 → 你的回调地址
POST https://your-domain.com/webhook
X-Timestamp: 1712345678
X-Signature: sha256=9f86d081884c...

{
  "event": "order.completed",
  "orderId": "10001",
  "status": "completed",
  "txid": "a1b2c3d4...",
  "timestamp": 1712345678
}

# 验签:用你的密钥按下式计算,与 X-Signature 比对
sig = "sha256=" + hex(hmac_sha256(secret, ts + "." + rawBody))

验签示例

# Python (Flask)
import hmac, hashlib

def verify(secret: str, ts: str, raw_body: bytes, header_sig: str) -> bool:
    mac = hmac.new(secret.encode(), f"{ts}.".encode() + raw_body, hashlib.sha256)
    expected = "sha256=" + mac.hexdigest()
    return hmac.compare_digest(expected, header_sig)
// Node.js (Express — use the raw body, not the parsed JSON)
const crypto = require('crypto');

function verify(secret, ts, rawBody, headerSig) {
  const expected = 'sha256=' + crypto.createHmac('sha256', secret)
    .update(ts + '.' + rawBody).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(headerSig));
}
重试机制

以 HTTP 2xx 视为成功。失败按 1 分钟 / 5 分钟 / 30 分钟 / 2 小时 / 6 小时退避重试,最多 6 次,仍失败则标记为 failed。发送记录可在客户中心「回调通知」页查看。

⚠️ 安全要点:务必用「原始请求体(raw body)」参与验签,不要用重新序列化后的 JSON;验签失败的请求应直接丢弃;建议同时校验 X-Timestamp 与当前时间的偏差(如 5 分钟内)以防重放。回调可能因重试而重复送达,请按 orderId 做幂等处理。

错误码

所有响应均返回 codecode=200 表示成功,其余为对应错误。请以 code 判断结果,不要依赖 message 文案。

# example: order rejected for insufficient balance
{
  "code": 502,
  "message": "Insufficient balance",
  "data": null
}
codemessage说明
200SUCCESS请求成功,结果见 data
500失败 / ERROR请求失败:参数错误 / 下单失败 / 服务暂时不可用,请稍后重试
501账户禁用 / Account disabledapikey 不存在或已被禁用
502余额不足 / Insufficient balance你的预付余额不足,请先充值
429超出限额 / Rate limited超出每秒频率或当日请求总量限额(仅节点直连 API),请降低频率或次日再试,可联系客服提额
702001地址已激活 / Address already activated地址已激活,无需重复激活;此项不扣费
100002通道繁忙 / Channel busy委托通道暂时繁忙,请稍后重试;本次不扣费,已扣部分自动退回
提示:为保障服务稳定,能量委托采用多通道自动路由。若返回 100002,表示当前通道暂时繁忙,请稍后重试;该情况下不会扣费,已扣部分自动退回。如需专属通道与更高并发,请通过 [email protected] 联系商务。

最佳实践

下单与重试

  • 传入 traceId用你自己系统的唯一业务号(如提币单号)作为 traceId,响应中原样回显,方便把订单与内部系统对上。
  • 失败重试要克制:收到 100002(通道繁忙)时等待数秒再重试;收到 500 时先检查参数,不要无脑循环重试。
  • 谨防重复下单:下单为普通 GET 请求,超时后盲目重发可能产生重复订单与重复扣费;请以业务单号加锁,超时先查询订单再决定是否重下。
  • 下单前校验地址:在你自己的系统中先校验地址格式(T 开头 34 位),并对新地址先走激活接口,能显著降低失败率。

对账

  • 每笔订单以 orderId + txid 双重记录;终态以订单查询或 Webhook 为准。
  • 定时调用余额接口做余额告警(低于阈值提醒充值),避免业务高峰期因 502(余额不足)中断。
  • 所有委托都可在区块浏览器按 txid 独立核验,对外争议时以链上记录为准。

安全

  • apikey 只放服务端;进入版本库前用环境变量注入。
  • Webhook 必须验签 + 时间戳容差校验 + 按 orderId 幂等。
  • 我们绝不会索取你的钱包私钥、助记词或钱包密码——任何这类要求都是假冒,详见安全说明

常见问题

如何获得 apikey?
在客户中心(login.trxapi.io)注册账户,进入「API 密钥」页创建。密钥仅在创建时完整显示一次,之后只能重置不能查看。
支持 POST 或 JSON body 下单吗?
能量业务接口目前均为 GET + query string,简单稳定、便于调试。需要 POST 转发的是节点直连 API(见节点文档),JSON body 会原样转发给 TRON 节点。
下单接口有频率限制吗?
能量业务接口按正常商户用量不设硬性限流;节点直连 API 默认每天百万次、每秒 5 次,足够大部分项目与中小企业使用。如有大并发批量委托需求,请联系 [email protected] 开通专属通道。
费用是怎么扣的?失败会退款吗?
下单成功即从预付余额扣费,响应中的 amount 是本单扣费金额。订单最终失败(status=failed)时费用自动退回余额;返回 100002 时不扣费,已扣部分自动退回。
如何确认能量真的到账了?
用响应中的 txid 或接收地址在任意 TRON 区块浏览器查询,核对委托到账、能量数量与时长三项。链上记录与订单不符时,请附 orderId 与 txid 联系 [email protected]
如何联调测试?
建议先用最小套餐(65,000 能量 / 1 小时)小额真实下单联调,并在区块浏览器核验到账;联调中遇到问题请附 traceId 与 orderId 联系 [email protected]
📮 技术支持与商务合作:[email protected]。需要查询链上数据(区块、账户、交易)?请阅读波场节点 API 文档