/v1返回当前 API version,用于连通性检查。该版本来自 https://api.trxforgas.com/v1。
API_BASE_URL="<在 WebApp 或 Telegram Bot 的 API User 中复制>" curl "$API_BASE_URL/v1"
{
"version": "x.y.z"
}返回字段
| 字段 | 含义 |
|---|---|
version | 当前 API 服务版本。 |
面向 API User 的新版 TRON 能量租赁接口。本文档以 ApiV1Controller 为准,覆盖账户查询、下单前报价、创建能量租赁订单、订单查询和自动充能订阅。历史客户仍可继续使用旧版 /api/*,新接入请使用 /v1/*。
Web2 使用 API User 账户;免账户的钱包付款请直接查看 Web3 专栏。
noticeUrl,系统会用 HTTP POST 推送充值和订单状态变化。POST /v1/quote/precount 获取本次下单的费用、能量数量和地址激活状态。POST /v1/energy-rental/orders;需要地址持续自动补能时调用 POST /v1/auto-energy/subscriptions。订单后续结果可通过回调通知接收。/v1/quote/precount 仅用于展示当前报价;下单时服务端会重新计算价格并按最新报价处理。批量订单总价以 finalFeeSun 为准。# 在 WebApp 或 Telegram Bot 的 API User 中配置 noticeUrl 和 IP 白名单
GET /v1/swap/info # TRX/USDT 参考汇率、报价时间、限额、手续费和兑换地址
GET /v1/myInfo
POST /v1/quote/precount
POST /v1/energy-rental/orders
GET /v1/orders/{id}
# or
GET /v1/orders/getByOrderNo?orderNo=EXT-20260516001
GET /v1/tasks/{taskId} # 查询地址激活进度
# Auto Energy
GET /v1/auto-energy/subscription-quote
POST /v1/auto-energy/subscriptions
GET /v1/auto-energy/subscriptions
GET /v1/auto-energy/subscriptions/{id}
POST /v1/auto-energy/subscriptions/{id}/close
API User 请求需要 x-api-key,并且调用服务器 IP 必须命中该 API User 的 IP 白名单。金额字段统一使用 SUN,1 TRX = 1,000,000 SUN。配置 noticeUrl 后,充值到账、订单成功和订单失败会异步推送到该回调地址;接入方仍应保留主动查询订单接口作为补偿查询。
除 GET /v1 版本检查外,所有 V1 接口都需要在请求头传入 x-api-key,并且调用源 IP 必须在该 API User 的 IP 白名单内。API Key 不要放在 query string 或请求体中。
| 项目 | 说明 |
|---|---|
| 读接口限流 | 按 API Key + 接口路径统计,默认 10 秒最多 30 次。 |
| 写接口限流 | 创建订单和创建订阅按 API Key + 接口路径统计,默认 10 秒最多 10 次。 |
| 订阅详情/关闭 | GET /v1/auto-energy/subscriptions/{id} 和 POST /v1/auto-energy/subscriptions/{id}/close 不单独限流,但仍会做 API Key、IP 白名单和封禁检查。 |
| 错误封禁 | 最近 7 日内可修正请求错误(包括参数/权限错误和余额不足)超过系统阈值时,触发一般处罚并返回 API_USER_BLOCKED。错误数回落至阈值以内后,下次 API 请求自动恢复;管理员也可提前解封。10 分钟内跨账户访问达到 3 次则触发安全封禁,只能由管理员解封。 |
| 不计入封禁的错误 | INVALID_PRICE_CONFIG、INSUFFICIENT_PLATFORM_ENERGY_CAPACITY、TRX_NEEDED_UNAVAILABLE、TIMEOUT、INTERNAL_ERROR 属于服务端或平台侧原因,不计入 API User 错误封禁。 |
| 回调验收 | 当前回调请求不附加额外签名头。建议使用 HTTPS、难猜测的回调路径或 token 参数。自动充能按 eventType + chargeId 幂等;chargeId 为空时按 eventType + subscriptionId 幂等。 |
API User 可以在 WebApp 或 Telegram Bot 的 API User 设置中配置 noticeUrl。系统只接受以 http:// 或 https:// 开头、能解析到公网地址的回调 URL;为空时不会创建 HTTP 回调通知。请填写直接返回 2xx 的最终接收地址,系统不跟随 HTTP 重定向。
POST 方法发送 application/json;charset=UTF-8 请求体。接入方返回任意 2xx HTTP 状态码即视为成功;非 2xx、超时或网络异常会记录为失败并按系统重试配置继续重试。每轮投递耗尽短重试后仍失败,累计错误加 1;成功不清零。当前地址累计错误超过系统配置阈值(默认 20)后暂停推送,并向用户和管理员发送一次停用提醒。修改为不同地址或由管理员重置错误后恢复后续推送,历史回调不会自动补发。| 场景 | type | 说明 |
|---|---|---|
| 充值到账 | deposit | 用户专属充值地址收到 TRX 并完成入账。 |
| 订单状态变化 | order | 能量订单成功、失败或完成后推送。自动充能托管分配不进入普通订单回调。 |
| 自动充能生命周期或收费 | autoEnergy | 首次供能、消耗补能、过夜收费、关闭中、失败和已关闭事件。 |
订单回调使用统一对外格式,并额外包含 callbackStatus、hash、hashes 和 activation。只有订单由自动激活流程创建,且该回调对应最终能量订单时,activation 才会有值;其他场景为 null。建议接入方按 type 分流处理。充值和订单回调使用对应记录/订单标识幂等;自动充能按 eventType + chargeId 幂等,无收费记录时按 eventType + subscriptionId 幂等。
{
"type": "deposit",
"id": 456,
"userId": 1,
"address": "T9z6yrJXuiJpfWhis3Ae9nHK7k65yM5AHP",
"fromAddress": "TQ8r...",
"amount": 10000000,
"txHash": "9c4f...",
"createdAt": "2026-05-16T12:00:00"
}
| 字段 | 含义 |
|---|---|
type | 回调类型。充值到账固定为 deposit。 |
id | 充值记录 ID,可用于幂等处理。 |
userId | API User 的系统用户 ID。 |
address | API User 专属充值地址,格式为 Base58Check。 |
fromAddress | 链上付款地址,格式为 Base58Check。 |
amount | 到账金额,单位 SUN。 |
txHash | 充值交易 Hash。 |
createdAt | 充值记录创建时间。 |
{
"type": "order",
"id": 123,
"orderNo": "EXT-20260516001",
"orderTime": 3600,
"orderType": 0,
"paidAmount": 1500000,
"receiverAddress": "TJqiMSSmRtm4LvXrYBWysz9DnNrFQDaBv9",
"resourceAmount": 65000,
"resourceType": 1,
"status": 1,
"callbackStatus": "SUCCESS",
"failReason": null,
"activation": null,
"hash": "ab12...",
"hashes": [
"ab12..."
],
"timeStamp": 1778918400000,
"times": 1,
"totalFee": 1500000,
"updatedAt": "2026-05-16 12:00:00",
"subscription": null
}
| 字段 | 含义 |
|---|---|
type | 回调类型。订单状态变化固定为 order。 |
id | 系统订单 ID,可用于幂等处理。 |
orderNo | 创建订单时传入的外部订单号;未传时可能为 null。 |
orderTime | 租期,单位秒。 |
orderType | 订单类型。 |
paidAmount | 实际支付或已冻结金额,单位 SUN;失败退款流程以该字段为准。 |
receiverAddress | 资源接收 TRON 地址,格式为 Base58Check。 |
resourceAmount | 本次委托的能量数量。 |
resourceType | 资源类型;当前能量订单为 1。 |
status | 0=待处理, 1=已委托, 2=已完成, 3=委托中, -1=失败, -2=已退款。 |
callbackStatus | SUCCESS=本次购买已成功;FAILED=订单失败;PENDING=待处理;UNKNOWN=其他处理中状态。 |
failReason | 对外失败原因。成功时为 null;用户可处理原因原样返回,服务端或平台侧原因统一返回 服务端错误。 |
activation | 本订单关联的地址激活信息;普通订单或未创建地址激活时为 null。 |
activation.taskId | 地址激活 ID,用于幂等和查询激活进度。 |
activation.status | 地址激活整体状态。 |
activation.failReason | 地址激活失败原因;处理中或成功时为 null。 |
activation.currentStep | 当前地址激活步骤。 |
activation.activationStatus | 地址激活链上交易状态。 |
activation.feeSun | 地址激活费,单位 SUN。 |
activation.feeTrx | 地址激活费,单位 TRX。 |
activation.paidAmountSun | 实际已扣激活金额,单位 SUN。 |
activation.paidAmountTrx | 实际已扣激活金额,单位 TRX。 |
activation.txHash | 地址激活交易 Hash;未发起或不可用时为 null。 |
activation.energyOrderId | 地址激活完成后创建的能量订单 ID;尚未创建或不适用时为 null。 |
activation.autoEnergySubscriptionId | 地址激活完成后创建的自动充能订阅 ID;尚未创建或不适用时为 null。 |
hash | 本次资源下发的第一笔链上交易 Hash;不可用时为 null。 |
hashes | 本次资源下发的全部链上交易 Hash;没有可返回交易时为空数组。 |
timeStamp | 订单创建时间戳,毫秒。 |
times | 转账次数。 |
totalFee | 订单金额,单位 SUN。链上直充多付成交时,该字段为命中的报价档位金额;实际支付金额见 paidAmount。 |
updatedAt | 订单最后更新时间。 |
{
"type": "autoEnergy",
"eventType": "AUTO_ENERGY_REPLENISHED",
"subscriptionId": 18,
"receiverAddress": "TJqiMSSmRtm4LvXrYBWysz9DnNrFQDaBv9",
"status": "ACTIVE",
"targetEnergy": 131000,
"smallTierMinimumAvailableEnergy": 64805,
"chargedTierEnergy": 65000,
"feeSun": 14000000,
"chargeId": 72,
"chargeType": "USAGE_TOPUP",
"chargeStatus": "SETTLED",
"coverageEndsAt": "2026-08-28T12:00:00",
"failReason": null,
"hashes": ["ab12..."],
"timeStamp": 1787918400000
}
eventType 可为 AUTO_ENERGY_STARTED、AUTO_ENERGY_REPLENISHED、AUTO_ENERGY_OVERNIGHT_CHARGED、AUTO_ENERGY_OVERNIGHT_REFUNDED、AUTO_ENERGY_CLOSING、AUTO_ENERGY_FAILED 或 AUTO_ENERGY_CLOSED。AUTO_ENERGY_OVERNIGHT_REFUNDED 表示系统在过夜费结算后发现此前仍有用能记录,已退回该笔过夜费。收费事件按 eventType + chargeId 幂等;chargeId 为空时按 eventType + subscriptionId 幂等。targetEnergy 是托管目标值,实际可用能量允许 ±0.3% 偏差。
/v1返回当前 API version,用于连通性检查。该版本来自 https://api.trxforgas.com/v1。
API_BASE_URL="<在 WebApp 或 Telegram Bot 的 API User 中复制>" curl "$API_BASE_URL/v1"
{
"version": "x.y.z"
}| 字段 | 含义 |
|---|---|
version | 当前 API 服务版本。 |
/v1/swap/info返回 TRX/USDT 兑换参考信息,包括当前参考汇率、报价获取时间、单笔限额、手续费规则和启用中的链上兑换地址。该接口适合 API User 在自己的页面或系统中展示兑换信息;它不是下单接口。
curl --request GET \ --url "$API_BASE_URL/v1/swap/info" \ --header 'x-api-key: <YOUR_API_KEY>'
{
"result": "SUCCESS",
"quote": {
"available": true,
"quoteTime": "2026-06-13T12:00:00Z",
"quoteAt": "2026-06-13T12:00:00Z",
"nextRefreshAt": "2026-06-13T12:01:00Z",
"refreshIntervalSeconds": 60,
"oneUsdtToTrx": "3.2",
"usdtToTrxInput": "5",
"usdtToTrxReferenceOutput": "16",
"hundredTrxToUsdt": "31.25",
"trxToUsdt": {
"enabled": true,
"direction": "TRX_TO_USDT",
"inputToken": "TRX",
"outputToken": "USDT",
"minInput": "10",
"maxInput": "5000",
"feeBps": 30,
"feePercent": "0.3",
"feeDeductionMode": "BEFORE_SWAP",
"feeToken": "TRX",
"minFee": "1"
},
"usdtToTrx": {
"enabled": true,
"direction": "USDT_TO_TRX",
"inputToken": "USDT",
"outputToken": "TRX",
"minInput": "5",
"maxInput": "3000",
"feeBps": 30,
"feePercent": "0.3",
"feeDeductionMode": "BEFORE_SWAP",
"feeToken": "USDT",
"minFee": "0.5"
},
"address": "TSwapAddress",
"addresses": [
"TSwapAddress"
]
},
"reason": null,
"message": null
}| 字段 | 含义 |
|---|---|
quote.available | 当前是否有可展示的参考汇率和启用中的兑换地址。 |
quote.quoteTime | 本次参考报价获取时间,ISO-8601 UTC 格式;页面展示汇率时应同时使用该时间说明报价来源时点。 |
quote.quoteAt | 同 quoteTime,保留给已有展示代码使用。 |
quote.nextRefreshAt | 下一次参考汇率刷新时间。 |
quote.refreshIntervalSeconds | 建议刷新间隔;当前为 60 秒。 |
quote.oneUsdtToTrx | 按 1 USDT 归一化后的 TRX 参考数量。 |
quote.usdtToTrxInput | 本次 USDT → TRX 参考报价实际使用的 USDT 输入数量;最低兑换额大于 1 时使用最低兑换额。 |
quote.usdtToTrxReferenceOutput | 与 usdtToTrxInput 对应的 TRX 参考输出数量。 |
quote.hundredTrxToUsdt | 每 100 TRX 对应的 USDT 参考数量。 |
quote.trxToUsdt | TRX 兑换 USDT 的开关、输入/输出币种、单笔输入限额和手续费规则。 |
quote.usdtToTrx | USDT 兑换 TRX 的开关、输入/输出币种、单笔输入限额和手续费规则。 |
quote.*.feeBps | 手续费比例,单位为基点;100 基点等于 1%。 |
quote.*.feePercent | 格式化后的手续费百分比数值,不包含百分号。 |
quote.*.feeDeductionMode | BEFORE_SWAP 表示从输入币种先扣手续费;AFTER_SWAP 表示兑换后从输出币种扣手续费。 |
quote.*.feeToken | 收取手续费的币种。 |
quote.*.minFee | 该方向的最低手续费,单位由 feeToken 指定。 |
quote.address | 首个启用中的链上兑换地址,便于直接展示或复制。 |
quote.addresses | 全部启用中的兑换地址列表。 |
/v1/myInfo查询 API User 可用余额、专属充值地址和脱敏 API Key。
curl --request GET \ --url "$API_BASE_URL/v1/myInfo" \ --header 'x-api-key: <YOUR_API_KEY>'
{
"result": "SUCCESS",
"account": {
"id": 1,
"name": "Demo API User",
"avaliableBalance": 10000000,
"addressForDeposit": "T9z6yrJXuiJpfWhis3Ae9nHK7k65yM5AHP",
"apiKeyMasked": "abcd...wxyz",
"noticeUrl": "",
"createdAt": "2026-05-16T12:00:00",
"updatedAt": "2026-05-16T12:00:00"
},
"reason": null,
"message": null
}
| 字段 | 含义 |
|---|---|
id | API User 的系统用户 ID。 |
name | API User 名称。 |
avaliableBalance | 可用余额,单位 SUN。 |
addressForDeposit | API User 专属充值地址,格式为 Base58Check。 |
apiKeyMasked | 脱敏后的 API Key,仅用于识别当前 Key。 |
noticeUrl | 当前配置的 HTTP 回调地址;未配置时为空字符串。 |
createdAt | API User 创建时间。 |
updatedAt | API User 最后更新时间。 |
/v1/quote/precount返回本次下单预计能量、费用、租期和接收地址状态。该接口不锁价。批量订单总价以 finalFeeSun 为准。
| 字段 | 是否必填 | 类型 | 说明 |
|---|---|---|---|
times | 是 | int | 购买份数,必须为正整数且不超过系统配置的单次上限(默认 20)。 |
receiverAddress | 是 | string | 资源接收 TRON 地址,格式为 Base58Check。 |
energyType | 否 | string | activated 或 noActivated,默认 activated。activated 按每次 65000 能量计算,noActivated 按每次 131000 能量计算;activated × 2 = 130000 与 noActivated × 1 = 131000 是两种不同订单。 |
durationHours | 否 | int | 整小时租期,默认 1;支持 1、4、8、24。 |
autoActivate | 否 | boolean | 默认 false。为 true 时,系统会先检查接收地址;只有未激活才追加激活费预估,已激活时 activationFeeSun=0。finalFeeSun 仍只表示能量费用。 |
curl --request POST \
--url "$API_BASE_URL/v1/quote/precount" \
--header 'x-api-key: <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"times": 1,
"receiverAddress": "TJqiMSSmRtm4LvXrYBWysz9DnNrFQDaBv9",
"energyType": "activated",
"durationHours": 1,
"autoActivate": true
}'{
"result": "SUCCESS",
"quote": {
"valid": true,
"reason": null,
"receiverAddress": "TJqiMSSmRtm4LvXrYBWysz9DnNrFQDaBv9",
"addressValid": true,
"addressActivated": true,
"energyType": "activated",
"times": 1,
"durationSeconds": 3600,
"durationHours": 1,
"energyAmount": 65000,
"finalFeeSun": 1500000,
"finalFeeTrx": "1.5",
"autoActivate": true,
"needActivation": false,
"activationFeeSun": 0,
"activationFeeTrx": "0",
"estimatedTotalFeeSun": 1500000,
"estimatedTotalFeeTrx": "1.5"
},
"reason": null,
"message": null
}
| 字段 | 含义 |
|---|---|
valid | 报价是否有效。为 false 时请查看 reason。 |
reason | 报价失败原因;报价成功时为 null。 |
receiverAddress | 请求中的资源接收 TRON 地址,格式为 Base58Check。 |
addressValid | 接收地址格式是否有效。 |
addressActivated | 接收地址当前是否已激活。 |
energyType | 报价使用的能量类型,activated 或 noActivated。 |
times | 本次报价的转账次数。 |
durationSeconds | 租期,单位秒。 |
durationHours | 租期,单位小时;支持 1、4、8、24。 |
energyAmount | 预计委托的能量数量。 |
finalFeeSun | 预计能量订单费用,单位 SUN;不包含激活费。 |
finalFeeTrx | 预计能量订单费用,单位 TRX;不包含激活费。 |
autoActivate | 本次请求是否要求自动激活未激活地址。 |
needActivation | 本次请求是否需要先执行地址激活。 |
activationFeeSun | 预估激活费,单位 SUN;仅 needActivation=true 时大于 0。 |
activationFeeTrx | 预估激活费,单位 TRX。 |
estimatedTotalFeeSun | 预估总费用,单位 SUN;等于能量费用加可能的激活费,不锁价。 |
estimatedTotalFeeTrx | 预估总费用,单位 TRX;不锁价。 |
/v1/energy-rental/orders创建一笔能量租赁订单。服务端会重新报价并按当前价格扣减 API User 可用余额。
| 字段 | 是否必填 | 类型 | 说明 |
|---|---|---|---|
times | 是 | int | 购买份数,必须为正整数且不超过系统配置的单次上限(默认 20)。 |
receiverAddress | 是 | string | 资源接收 TRON 地址,格式为 Base58Check。 |
orderNo | 是 | string | 外部订单号;同一个 API User 下不可重复。 |
energyType | 是 | string | activated 或 noActivated。activated 按每次 65000 能量计算,noActivated 按每次 131000 能量计算;activated × 2 = 130000 与 noActivated × 1 = 131000 是两种不同订单。 |
durationHours | 否 | int | 整小时租期,默认 1。 |
autoActivate | 否 | boolean | 默认 false。未激活地址是否自动激活。未传或 false 时保持原流程,未激活地址返回错误。即使传入 true,也只有地址未激活时才会创建激活任务并收取激活费。 |
当 autoActivate=true 且地址未激活时,响应的 order.activation 字段会返回地址激活信息,后续使用 GET /v1/tasks/{taskId} 查询激活进度;地址已激活时不创建激活、不冻结或扣除激活费,继续返回普通订单结构。
curl --request POST \
--url "$API_BASE_URL/v1/energy-rental/orders" \
--header 'x-api-key: <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"times": 1,
"orderNo": "EXT-20260516001",
"receiverAddress": "TJqiMSSmRtm4LvXrYBWysz9DnNrFQDaBv9",
"energyType": "activated",
"durationHours": 1,
"autoActivate": true
}'{
"result": "ACCEPTED",
"order": {
"id": 123,
"orderNo": "EXT-20260516001",
"orderTime": 3600,
"orderType": 0,
"paidAmount": 1500000,
"receiverAddress": "TJqiMSSmRtm4LvXrYBWysz9DnNrFQDaBv9",
"resourceAmount": 65000,
"resourceType": 1,
"status": 0,
"failReason": null,
"timeStamp": 1778918400000,
"times": 1,
"totalFee": 1500000,
"updatedAt": "2026-05-16 12:00:00",
"activation": null,
"subscription": null
},
"reason": null,
"message": null
}
order.activation 表示该订单关联的地址激活信息。普通订单为 null;当 autoActivate=true 且接收地址未激活时,创建接口会先返回带 activation 的订单请求信息,真实能量订单创建前 id、paidAmount、totalFee 等真实订单字段为 null。
| 字段 | 含义 |
|---|---|
id | 系统订单 ID;地址激活完成前尚未创建真实能量订单时为 null。 |
orderNo | 创建订单时传入的外部订单号;同一个 API User 下唯一。 |
orderTime | 租期,单位秒。 |
orderType | 订单类型;当前能量租赁订单为 0,真实订单创建前为 null。 |
paidAmount | 实际支付或已冻结金额,单位 SUN;真实订单创建前为 null。 |
receiverAddress | 资源接收 TRON 地址,格式为 Base58Check。 |
resourceAmount | 本次委托的能量数量;真实订单创建前为 null。 |
resourceType | 资源类型;当前能量订单为 1。 |
status | 0=待处理, 1=已委托, 2=已完成, 3=委托中, -1=失败, -2=已退款;真实订单创建前为 null。 |
failReason | 对外失败原因;成功或处理中时为 null。 |
timeStamp | 订单创建时间戳,毫秒;真实订单创建前为 null。 |
times | 转账次数。 |
totalFee | 订单金额,单位 SUN。链上直充多付成交时,该字段为命中的报价档位金额;实际支付金额见 paidAmount。真实订单创建前为 null。 |
updatedAt | 订单最后更新时间;真实订单创建前为 null。 |
activation | 地址激活信息;普通订单为 null。 |
activation.taskId | 地址激活 ID,用于查询激活进度。 |
activation.status | 地址激活整体状态。 |
activation.failReason | 地址激活失败原因;处理中或成功时为 null。 |
activation.currentStep | 当前地址激活步骤。 |
activation.activationStatus | 地址激活链上交易状态。 |
activation.feeSun | 地址激活费,单位 SUN。 |
activation.feeTrx | 地址激活费,单位 TRX。 |
activation.paidAmountSun | 已扣激活金额,单位 SUN。 |
activation.paidAmountTrx | 已扣激活金额,单位 TRX。 |
activation.txHash | 地址激活交易 Hash;未发起或不可用时为 null。 |
activation.energyOrderId | 地址激活完成后创建的能量订单 ID;尚未创建时为 null。 |
activation.autoEnergySubscriptionId | 地址激活完成后创建的自动充能订阅 ID;尚未创建或不适用时为 null。 |
/v1/orders/{id}按平台订单 ID 查询订单。只能查询当前 API User 自己的订单。
curl --request GET \ --url "$API_BASE_URL/v1/orders/123" \ --header 'x-api-key: <YOUR_API_KEY>'
{
"result": "SUCCESS",
"order": {
"id": 123,
"orderNo": "EXT-20260516001",
"orderTime": 3600,
"orderType": 0,
"paidAmount": 1500000,
"receiverAddress": "TJqiMSSmRtm4LvXrYBWysz9DnNrFQDaBv9",
"resourceAmount": 65000,
"resourceType": 1,
"status": 1,
"failReason": null,
"timeStamp": 1778918400000,
"times": 1,
"totalFee": 1500000,
"updatedAt": "2026-05-16 12:00:00",
"activation": null,
"subscription": null
},
"reason": null,
"message": null
}| 字段 | 含义 |
|---|---|
id | 系统订单 ID。 |
orderNo | 创建订单时传入的外部订单号;同一个 API User 下唯一。 |
orderTime | 租期,单位秒。 |
orderType | 订单类型;当前能量租赁订单为 0。 |
paidAmount | 实际支付或已冻结金额,单位 SUN;失败退款流程以该字段为准。 |
receiverAddress | 资源接收 TRON 地址,格式为 Base58Check。 |
resourceAmount | 本次委托的能量数量。 |
resourceType | 资源类型;当前能量订单为 1。 |
status | 0=待处理, 1=已委托, 2=已完成, 3=委托中, -1=失败, -2=已退款。 |
failReason | 对外失败原因;成功或处理中时为 null。 |
timeStamp | 订单创建时间戳,毫秒。 |
times | 转账次数。 |
totalFee | 订单金额,单位 SUN。链上直充多付成交时,该字段为命中的报价档位金额;实际支付金额见 paidAmount。 |
updatedAt | 订单最后更新时间。 |
activation | 本订单关联的地址激活信息;普通订单或未创建地址激活时为 null。 |
activation.taskId | 地址激活 ID,用于查询激活进度。 |
activation.status | 地址激活整体状态。 |
activation.failReason | 地址激活失败原因;处理中或成功时为 null。 |
activation.currentStep | 当前地址激活步骤。 |
activation.activationStatus | 地址激活链上交易状态。 |
activation.feeSun | 地址激活费,单位 SUN。 |
activation.feeTrx | 地址激活费,单位 TRX。 |
activation.paidAmountSun | 已扣激活金额,单位 SUN。 |
activation.paidAmountTrx | 已扣激活金额,单位 TRX。 |
activation.txHash | 地址激活交易 Hash;未发起或不可用时为 null。 |
activation.energyOrderId | 地址激活完成后创建的能量订单 ID;尚未创建或不适用时为 null。 |
activation.autoEnergySubscriptionId | 地址激活完成后创建的自动充能订阅 ID;尚未创建或不适用时为 null。 |
/v1/orders/getByOrderNo按外部订单号查询订单。适合接入方只保存自己的 orderNo 的场景。
curl --request GET \ --url "$API_BASE_URL/v1/orders/getByOrderNo?orderNo=EXT-20260516001" \ --header 'x-api-key: <YOUR_API_KEY>'
{
"result": "SUCCESS",
"order": {
"id": 123,
"orderNo": "EXT-20260516001",
"orderTime": 3600,
"orderType": 0,
"paidAmount": 1500000,
"receiverAddress": "TJqiMSSmRtm4LvXrYBWysz9DnNrFQDaBv9",
"resourceAmount": 65000,
"resourceType": 1,
"status": 1,
"failReason": null,
"timeStamp": 1778918400000,
"times": 1,
"totalFee": 1500000,
"updatedAt": "2026-05-16 12:00:00",
"activation": null,
"subscription": null
},
"reason": null,
"message": null
}| 字段 | 含义 |
|---|---|
id | 系统订单 ID。 |
orderNo | 创建订单时传入的外部订单号;同一个 API User 下唯一。 |
orderTime | 租期,单位秒。 |
orderType | 订单类型;当前能量租赁订单为 0。 |
paidAmount | 实际支付或已冻结金额,单位 SUN;失败退款流程以该字段为准。 |
receiverAddress | 资源接收 TRON 地址,格式为 Base58Check。 |
resourceAmount | 本次委托的能量数量。 |
resourceType | 资源类型;当前能量订单为 1。 |
status | 0=待处理, 1=已委托, 2=已完成, 3=委托中, -1=失败, -2=已退款。 |
failReason | 对外失败原因;成功或处理中时为 null。 |
timeStamp | 订单创建时间戳,毫秒。 |
times | 转账次数。 |
totalFee | 订单金额,单位 SUN。链上直充多付成交时,该字段为命中的报价档位金额;实际支付金额见 paidAmount。 |
updatedAt | 订单最后更新时间。 |
activation | 本订单关联的地址激活信息;普通订单或未创建地址激活时为 null。 |
activation.taskId | 地址激活 ID,用于查询激活进度。 |
activation.status | 地址激活整体状态。 |
activation.failReason | 地址激活失败原因;处理中或成功时为 null。 |
activation.currentStep | 当前地址激活步骤。 |
activation.activationStatus | 地址激活链上交易状态。 |
activation.feeSun | 地址激活费,单位 SUN。 |
activation.feeTrx | 地址激活费,单位 TRX。 |
activation.paidAmountSun | 已扣激活金额,单位 SUN。 |
activation.paidAmountTrx | 已扣激活金额,单位 TRX。 |
activation.txHash | 地址激活交易 Hash;未发起或不可用时为 null。 |
activation.energyOrderId | 地址激活完成后创建的能量订单 ID;尚未创建或不适用时为 null。 |
activation.autoEnergySubscriptionId | 地址激活完成后创建的自动充能订阅 ID;尚未创建或不适用时为 null。 |
/v1/tasks/{taskId}查询地址激活进度。只有在创建订单或自动充能订阅时开启 autoActivate 且接收地址未激活,系统才会在 activation 中返回 taskId;地址已激活时没有地址激活,也不会收取激活费。
curl --request GET \ --url "$API_BASE_URL/v1/tasks/1001" \ --header 'x-api-key: <YOUR_API_KEY>'
{
"result": "SUCCESS",
"activation": {
"taskId": 1001,
"status": "PROCESSING",
"failReason": null,
"currentStep": "EXECUTE_ACTIVATION",
"activationStatus": "PROCESSING",
"feeSun": 1200000,
"feeTrx": "1.2",
"paidAmountSun": 0,
"paidAmountTrx": "0",
"txHash": null,
"energyOrderId": null,
"autoEnergySubscriptionId": null
},
"reason": null,
"message": null
}/v1/auto-energy/subscription-quote返回当前首次 131000 能量费用、65000/131000 两档补能价格和独立隔夜费。报价不锁价;创建时可分别传入费用上限。
curl --request GET \ --url "$API_BASE_URL/v1/auto-energy/subscription-quote" \ --header 'x-api-key: <YOUR_API_KEY>'
{
"result": "SUCCESS",
"quote": {
"targetEnergy": 131000,
"smallTierMinimumAvailableEnergy": 64805,
"initialFeeSun": 28000000,
"smallRefillFeeSun": 14000000,
"fullRefillFeeSun": 28000000,
"overnightFeeSun": 2000000
},
"reason": null,
"message": null
}/v1/auto-energy/subscriptions为一个地址创建以 131000 Energy 为目标的持续托管分配。链上资源换算无法精确到整数,实际可用能量允许在目标值 ±0.3% 范围内波动。委托本身不过期;每次成功补能重新开始 24 小时计费窗口。
64805..130999(含边界)时按 65000 档计费,低于 64805 时按 131000 档计费;随后回收旧分配,并按 131000 目标重新计算委托量(允许 ±0.3% 偏差)。地址连续 24 小时未消耗时,不回收资源,只收独立隔夜费并继续维持委托。托管分配与普通订单分开记录,并使用自动充能专用回调。| 字段 | 是否必填 | 说明 |
|---|---|---|
receiverAddress | 是 | TRON Base58Check 接收地址。 |
maxInitialFeeSun | 否 | 首次 131000 能量费用上限。 |
maxOvernightFeeSun | 否 | 每次独立隔夜费授权上限。 |
autoActivate | 否 | 是否先激活未激活地址。 |
clientTaskNo | 否 | 激活任务幂等号。 |
maxActivationFeeSun | 否 | 地址激活费上限。 |
curl --request POST \
--url "$API_BASE_URL/v1/auto-energy/subscriptions" \
--header 'x-api-key: <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"receiverAddress": "TJqiMSSmRtm4LvXrYBWysz9DnNrFQDaBv9",
"maxInitialFeeSun": 30000000,
"maxOvernightFeeSun": 5000000,
"autoActivate": true,
"maxActivationFeeSun": 2000000
}'{
"result": "SUCCESS",
"subscription": {
"id": 18,
"receiverAddress": "TJqiMSSmRtm4LvXrYBWysz9DnNrFQDaBv9",
"status": "PENDING_ORDER",
"displayStatus": "PENDING_ORDER",
"targetEnergy": 131000,
"maxOvernightFeeSun": 5000000,
"currentDelegateHash": null,
"delegateHashes": [],
"lastChargeType": "INITIAL",
"lastChargeFeeSun": 28000000,
"currentOvernightFeeSun": 2000000,
"nextOvernightAt": null,
"activation": null
},
"reason": null,
"message": null
}/v1/auto-energy/subscriptions查询订阅、异步关闭订阅及查看独立计费流水。
| 接口 | 说明 |
|---|---|
GET /v1/auto-energy/subscriptions?page=1&pageSize=10 | 分页查询当前用户订阅。 |
GET /v1/auto-energy/subscriptions/{id} | 查询单个订阅。 |
POST /v1/auto-energy/subscriptions/{id}/close | 转为 CLOSING 并异步回收;完成后为 CLOSED。 |
GET /v1/auto-energy/subscriptions/{id}/billing-records?page=1&pageSize=10 | 推荐使用的对外安全计费流水,包含 INITIAL、USAGE_TOPUP、OVERNIGHT。 |
GET /v1/auto-energy/subscriptions/{id}/charges?page=1&pageSize=10 | 仅为兼容现有客户端保留的旧原始响应,新接入不再使用。 |
首次供能和消耗补能均按固定 86400 秒(24 小时)价格计费;过夜费为独立配置。订阅响应包含固定 targetEnergy=131000、公开委托 Hash、最近可用能量、下次过夜计费时间和最近收费摘要,不暴露内部资源分配 ID。计费记录包含收费类型、计价能量档位、费用、状态和覆盖区间。
无需注册、登录、API Key、预存余额或自建中转。获取付款指令 → 钱包链上转账 → 查询业务结果。接口复用现有链上直存业务。
Base URL: https://api.trxforgas.com · /web3/v1
使用本部署 options 返回的资产 ID 和合约地址,不要混用网络或向生产地址发送测试资产。以上公开地址随本接口版本部署后提供服务。
返回 assets、energy、swap、bridge。包括资产精度与合约、服务开关、能量套餐、Swap 方向和可用跨链路由。资产 ID 为本部署范围内的 chain:asset;金额统一使用最小单位整数字符串。
energy.packages[].packageId: activated-1h, noActivated-1h; durationSeconds = 3600.
Content-Type: application/json. 仅传所选业务的字段;额外字段会被拒绝,包括 durationHours、durationSeconds 等租期参数。
| type | 必填字段 | 可选字段 |
|---|---|---|
| energy | payerAddress, packageId | receiverAddress |
| swap | payerAddress, fromAsset, toAsset, amount | receiverAddress (必须等于付款人) |
| bridge | payerAddress, fromAsset, toAsset, amount, receiverAddress | — |
{"type":"energy","payerAddress":"YOUR_TRON_ADDRESS","packageId":"activated-1h"}
{"type":"swap","payerAddress":"YOUR_TRON_ADDRESS","fromAsset":"tron:trx","toAsset":"tron:usdt","amount":"100000000"}
{"type":"bridge","payerAddress":"SOURCE_WALLET","fromAsset":"FROM_OPTIONS","toAsset":"FROM_OPTIONS","amount":"RAW_INTEGER","receiverAddress":"DESTINATION_WALLET"}
响应含 payment(chain、asset、address、amount、可选 memo)、receive、已包含的 fee、priceLocked=false 和 rules。能量/Swap 返回 queryBy=paymentTxHash,不返回订单 id;跨链返回 queryBy=id、完整查询 id 和带时区 ISO 8601 的 expiresAt,请保存完整 id。
能量 receive 含 energyAmount、durationSeconds;Swap/跨链含 asset、estimatedAmount。Swap 预估到账金额已扣除响应中的服务费。询价失败不返回付款地址。
/web3/v1/status?type=energy&paymentChain=tron&paymentTxHash=HASH
/web3/v1/status?type=swap&paymentChain=tron&paymentTxHash=HASH
/web3/v1/status?type=bridge&id=COMPLETE_ID_FROM_QUOTE
哈希仅作为查询条件,不用于提交或确认付款。后台扫链独立于浏览器运行;历史能量直存也可查询,账户余额订单不会公开。同一 Swap 交易有多个入账事件时返回 payments[],逐项读取状态。
| status | 含义 |
|---|---|
| not_found | 尚未入库,或没有匹配的直存记录;不要重复付款。 |
| waiting_payment | 跨链订单等待付款。 |
| processing | 已发现付款,交付尚未完成。 |
| completed | 原有业务记录表明交付完成。 |
| settled | 多个入账事件均已结束,存在交付与退款混合结果;查看 payments[]。 |
| expired | 跨链付款窗口已关闭。 |
| refunding / refunded | 原有退款处理中 / 已记录完成。 |
| attention_required | 按原有规则需要排查或人工处理,不代表系统承诺自动重试或退款。 |
响应提供 message、nextPollSeconds、paymentTxHash、带链标识的 resultTxHashes、receive 及已有的 refund/refunds 记录。按 nextPollSeconds 轮询,0 表示停止;关闭页面前保存钱包付款哈希。
无需 Cookie 或域名白名单,fetch 使用 credentials: omit。CORS 支持 GET/POST/OPTIONS。按品牌和真实 IP 限速:POST quote 每 60 秒 20 次,其余请求(含预检)每 60 秒共 120 次;跨链另沿用原有付款地址限流。HTTP 429 返回 Retry-After: 60。请求 IP、接口、HTTP 状态和耗时纳入现有 API 请求统计。
错误统一为 code/message:INVALID_REQUEST、UNSUPPORTED_FIELD、INVALID_PACKAGE、INVALID_AMOUNT、UNSUPPORTED_ASSET、RECEIVER_MUST_BE_PAYER、INVALID_QUERY(400);NOT_FOUND(404);SOURCE_ADDRESS_IN_USE、QUOTE_NEEDS_REFRESH(409);RATE_LIMITED(429);UNAVAILABLE(503)。既有访问封禁可返回 HTTP 403 与 error=request_blocked。不要通过再次付款处理接口错误。
const base = 'https://api.trxforgas.com';
async function web3(path, body) {
const response = await fetch(base + '/web3/v1/' + path, {
method: body ? 'POST' : 'GET', credentials: 'omit',
headers: body ? { 'Content-Type': 'application/json' } : {},
body: body ? JSON.stringify(body) : undefined
});
const data = await response.json();
if (!response.ok) throw new Error(data.code + ': ' + data.message);
return data;
}
const options = await web3('options');
const energy = await web3('quote', { type: 'energy', payerAddress,
packageId: 'activated-1h' });
// Display energy.payment, then let the wallet send the transfer.
const result = await web3('status?' + new URLSearchParams({
type: 'energy', paymentChain: 'tron', paymentTxHash
}));
下载能量、Swap、跨链三个完整最小接入示例. 钱包签名由接入方钱包完成;示例不会自动发起付款。
| 错误码 | 含义 |
|---|---|
INVALID_REQUEST | 请求体、路径参数、查询参数或 JSON 类型不合法。 |
INVALID_API_KEY | 缺少或提供了无效的 x-api-key。 |
NOT_API_USER | 该 API Key 不属于 API User 账户。 |
USER_NOT_ACTIVE | API User 账户未启用。 |
IP_NOT_ALLOWED | 调用方 IP 不在该 API User 的白名单内。 |
RATE_LIMITED | 当前限流窗口内请求过多。 |
API_USER_BLOCKED | 一般处罚在近 7 日错误数回落至阈值后,于下次 API 请求自动解除;跨账户访问触发的安全封禁必须由管理员解除。 |
DUPLICATE_ORDER_NO | 同一个 API User 下已经使用过该 orderNo。 |
ORDER_NOT_FOUND | 订单不存在,或不属于当前 API User。 |
ORDER_ACCESS_DENIED | 订单存在,但不属于当前 API User。 |
SUBSCRIPTION_NOT_FOUND | 自动充能订阅不存在,或不属于当前 API User。 |
INVALID_RECEIVER_ADDRESS | receiverAddress 为空,或不是有效的 TRON Base58Check 地址。 |
RECEIVER_NOT_ACTIVATED | receiverAddress 未激活,不能接收能量委托。 |
INVALID_PRICE_CONFIG | 服务端价格配置异常,请联系管理员处理。 |
INVALID_ENERGY_TYPE | energyType 只能是 activated 或 noActivated。 |
INVALID_TIMES | times 必须是 1 到 20 的整数。 |
INVALID_ORDER_DURATION | 当前品牌不支持该 durationHours。 |
INSUFFICIENT_BALANCE | API User 可用余额不足。 |
INSUFFICIENT_PLATFORM_ENERGY_CAPACITY | 平台侧暂时无法满足本次资源需求,请稍后重试或联系管理员。 |
TRX_NEEDED_UNAVAILABLE | 服务端暂时无法计算委托所需的 TRX 数量,请稍后重试。 |
TIMEOUT | 订单在完成委托前超时,属于服务端处理结果。 |
INTERNAL_ERROR | 服务端发生未预期错误。请求准入检查暂不可用时返回 HTTP 500,不计入用户错误;请稍后重试。 |
下面的 JSON 是为 LLM / 自动化集成准备的精简契约摘要;完整机器可读规范请使用 OpenAPI JSON。
{
"apiVersion": "v1",
"apiRuntimeVersionUrl": "https://api.trxforgas.com/v1",
"baseUrl": "从 WebApp 或 Telegram Bot 的 API User 中读取。不要拼接旧版 /api 前缀。",
"auth": "x-api-key 请求头 + API User IP 白名单",
"limits": "读接口默认 10 秒 30 次,写接口默认 10 秒 10 次,按 API Key + 接口路径统计。一般处罚:近 7 日可修正错误超过系统阈值时返回 API_USER_BLOCKED;错误数回落至阈值以内后,下次 API 请求自动恢复,也可由管理员解封。安全封禁:10 分钟内跨账户访问达到 3 次,必须由管理员解封。服务端或平台侧错误不计入封禁。",
"callback": "配置 noticeUrl 后接收充值和普通订单状态回调;自动充能托管订单不进入普通订单回调,自动充能通过独立事件通知。",
"pricing": "使用 GET /v1/auto-energy/subscription-quote 获取首次、两档补能和独立隔夜费报价;创建时使用 maxInitialFeeSun 与 maxOvernightFeeSun 控制费用上限。",
"autoEnergy": "以 131000 Energy 为托管目标并允许 ±0.3% 链上换算偏差;64805 至 130999 按 65000 档计费,低于 64805 按 131000 档计费并按目标重新计算委托;空闲每 24 小时只收独立隔夜费。",
"paths": [
{
"method": "GET",
"path": "/v1",
"auth": false,
"purpose": "部署版本"
},
{
"method": "GET",
"path": "/v1/myInfo",
"auth": true,
"purpose": "API User 账户和充值地址"
},
{
"method": "GET",
"path": "/v1/swap/info",
"auth": true,
"purpose": "TRX/USDT 兑换参考汇率、报价时间、限额、手续费和兑换地址"
},
{
"method": "POST",
"path": "/v1/quote/precount",
"auth": true,
"purpose": "当前报价和接收地址激活状态检查"
},
{
"method": "POST",
"path": "/v1/energy-rental/orders",
"auth": true,
"purpose": "创建能量租赁订单"
},
{
"method": "GET",
"path": "/v1/orders/{id}",
"auth": true,
"purpose": "按平台订单 ID 查询"
},
{
"method": "GET",
"path": "/v1/orders/getByOrderNo",
"auth": true,
"purpose": "按外部 orderNo 查询"
},
{
"method": "GET",
"path": "/v1/tasks/{taskId}",
"auth": true,
"purpose": "查询自动激活 task 状态"
},
{
"method": "GET",
"path": "/v1/auto-energy/subscription-quote",
"auth": true,
"purpose": "查询自动充能订阅费"
},
{
"method": "POST",
"path": "/v1/auto-energy/subscriptions",
"auth": true,
"purpose": "创建自动充能订阅"
},
{
"method": "GET",
"path": "/v1/auto-energy/subscriptions",
"auth": true,
"purpose": "查询自动充能订阅列表"
},
{
"method": "GET/POST",
"path": "/v1/auto-energy/subscriptions/{id}",
"auth": true,
"purpose": "查询或中止订阅"
}
],
"moneyUnit": "SUN。1 TRX = 1,000,000 SUN。",
"status": {
"0": "待处理",
"1": "已委托",
"2": "已完成",
"3": "委托中",
"-1": "失败",
"-2": "已退款"
}
}