文档目录

订单接口 — API 参考

购买租赁与订单状态查询。v1 版本不支持单笔订单主动取消:POST /v1/orders 采用同步扣款,订单绝不会处于未支付的悬挂队列中,created 状态极难被外界观测到。3002 order_not_cancellable 仅属于 POST /v1/batches/{id}/cancel 批量取消接口(已经开始处理的接收项无法取消)。

方法路径概览
GET/v1/orders订单列表
POST/v1/orders创建并支付订单
GET/v1/orders/{orderId}获取订单详情
POST/v1/orders/{orderId}/reclaim到期前提前归还资源

基于 openapi.yaml 在构建时生成。基准 URL 为 https://api.tenergy.me/v1,Nile 测试网环境为 https://api-nile.tenergy.me/v1(详见环境说明)。下述每个请求均遵循身份鉴权规范进行签名,除非鉴权行另有说明。

订单列表

GET /v1/orders · listOrders

鉴权: API 密钥 (HMAC)。

按时间倒序排列。多个过滤条件之间为逻辑 AND 关系。

传入 format=csv 将以流式方式返回包含所有匹配订单的 text/csv 文件(忽略 limit 和 cursor 分页参数),字段列与 JSON 格式严格对应:每个 Order 字段对应一列,activation.* 与 failure.* 扁平展开,delegate_hashes 用空格分隔。以 =、+、-、@ 或制表符开头的单元格会自动前置 ' 防止表格软件公式注入。

请求参数

参数名位置类型必选说明
statusqueryarray of enum订单状态过滤(created, paid, allocating, delegated, confirmed, active, expired, reclaimed, failed, refunded)。可重复传参匹配多状态。
resourcequeryenum: energy, bandwidth, activation资源类型过滤。
receiverquerystring接收地址过滤。
client_order_idquerystring精确匹配。网络超时重试排查订单最有效途径。
created_afterquerystring (date-time)
created_beforequerystring (date-time)
fromquerystring (date-time)创建时间起始边界(闭区间,含)。
toquerystring (date-time)创建时间截止边界(开区间,不含)。
formatqueryenum: json, csv导出格式。
limitqueryinteger单页数量。
cursorquerystring上次响应中 next_cursor 返回的不透明游标。

响应

状态码含义
200OK
400格式错误的请求 —— 无效 JSON、未知字段或字段类型错误。
401缺少、格式错误或已被拒绝的凭据。
429请求过于频繁。
500服务端内部错误。

响应字段

字段类型必选说明
dataarray of object (Order)是
data[].idstring是平台全局订单 ID。
data[].client_order_idstring | null业务方自定义订单 ID。
data[].account_idstring是
data[].batch_idstring | null由批量任务生成的订单时附带批次 ID。
data[].subscription_idstring | null由自动订阅生成的订单时附带订阅 ID。
data[].resourceenum: energy, bandwidth, activation是资源类别。
data[].amountinteger | null下单购买的资源数量。
data[].delivered_amountinteger | null链上实际质押完成的资源数量。
data[].partialboolean若为 true 表示部分质押到账,差额已自动按比例原路退款(详见 refunded_amount_sun)。部分交付属于标记字段而非状态枚举:订单依然经历 confirmed → active 正常流转。
data[].tierenum: 5m, 15m, 1h, 1d, 3d, 30d | null租赁周期。
data[].duration_secondsinteger | null租赁持续秒数。
data[].receiverstring是Base58Check 编码的 TRON 地址(以 T 开头,34 个字符)。
data[].sourceenum: api, dashboard, transfer, bot, subscription, batch, proxy订单产生来源。
data[].statusenum: created, paid, allocating, delegated, confirmed, active, expired, reclaimed, failed, refunded是订单业务状态机。
data[].confirm_statusenum: unconfirmed, confirmed, confirm_failed是链上交易确认状态。unconfirmed 仅表示区块尚未收录,不代表失败。
data[].price_sun_per_unitinteger | null结算单价。
data[].pay_amount_suninteger (int64)资源本身的扣款金额。
data[].activate_amount_suninteger (int64)目标地址激活服务费(已激活地址为 0)。
data[].total_amount_suninteger (int64)是实际扣费总计(pay_amount_sun + activate_amount_sun)。
data[].refunded_amount_suninteger (int64)截止目前已退款总额(失败、退款或部分交付差额)。
data[].delegate_hashstring | null首笔链上质押交易哈希(等同于 delegate_hashes[0])。
data[].delegate_hashesarray of string属于该订单的所有链上质押交易哈希(大额分拆质押时有多条)。
data[].delegated_atstring (date-time) | null链上质押广播时间。
data[].reclaim_hashstring | null提前回收资源的链上解质押交易哈希。
data[].reclaimed_atstring (date-time) | null提前回收时间。
data[].expires_atstring (date-time) | null质押租期截止时间。
data[].activationobject账户链上激活处理结果。
data[].activation.performedboolean是否执行了激活操作。
data[].activation.hashstring | null激活交易哈希。
data[].activation.amount_suninteger (int64)激活扣费金额。
data[].memostring | null订单业务备注。
data[].created_atstring (date-time)是
data[].updated_atstring (date-time)
data[].failurenull | object失败详情(仅针对 failed 状态订单有效)。
data[].failure.codeinteger是
data[].failure.slugstring是
data[].failure.messagestring是
data[].failure.atstring (date-time)
next_cursorstring | null是下页游标;末页为 null。

创建并支付订单

POST /v1/orders · createOrder

鉴权: API 密钥 (HMAC)。

为指定接收地址购买资源租赁,并直接从账户余额中扣除相应资金。

响应不代表已完成链上质押。 返回 201 意味着订单已被受理、完成扣款并派发到底层供应层;status 字段反映当次响应时刻的处理进度。绝大多数情况下交付是同步完成的,接口将在几秒内直接返回附带 delegate_hash 的订单对象 —— 此时状态为 confirmed 或 active。请将 confirmed 与 active 一视同仁:均代表资源已成功交付到接收方地址上。 若供应层需要更多时间撮合,状态会体现为 allocating —— 建议轮询 GET /v1/orders/{id} 或监听 order.confirmed Webhook 回调。

注意检查 partial 字段。 若部分配额质押成功而部分未达,订单会以 partial: true 返回,此时 delivered_amount 小于 amount,未交付差额已自动退回账户余额。

幂等性保证。 务必传递 client_order_id。重试相同 ID 且内容一致的请求将返回原订单及 HTTP 200,不重复扣费。发生网络超时时,请直接重试完全相同的请求。

价格保护。 支持传入 quote_id(严格按锁价金额扣费)或 max_price_sun(若市场最新牌价超出该值则拒绝下单并返回 3006 price_above_limit)。

请求参数

参数名位置类型必选说明
Idempotency-Keyheaderstring客户端指定的安全重试幂等键(8–128 个字符)。

请求体

JSON (OrderRequest),必填。

字段类型必选说明
client_order_idstring账户内唯一的自定义业务订单号。强烈建议必传以实现完美幂等。
quote_idstring来自 POST /v1/quotes 的有效报价单 ID。用于锁定扣费金额。
resourceenum: energy, bandwidth, activation资源类别。
amountinteger采购数量。
tierenum: 5m, 15m, 1h, 1d, 3d, 30d租赁周期。
receiverstringBase58Check 编码的 TRON 地址(以 T 开头,34 个字符)。
activateboolean若地址未激活是否自动激活并收取激活费。设置为 false 时遇未激活地址将返回 3004 receiver_not_activated 并不扣费。
max_price_suninteger (int64)最高可接受扣费上限(SUN)。防止无报价单时的行情滑点。
memostring | null自定义备注信息。

来自规范的请求体示例(示意数值):

json
{
  "client_order_id": "acme-2026-09-11-000418",
  "resource": "energy",
  "amount": 65000,
  "tier": "1h",
  "receiver": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
  "activate": true
}

响应

状态码含义
200该 client_order_id 已存在且请求内容一致:返回已存在订单,不重复扣费。
201订单创建成功并已完成扣款。
400格式错误的请求 —— 无效 JSON、未知字段或字段类型错误。
401缺少、格式错误或已被拒绝的凭据。
402账户余额不足。
409幂等请求体冲突或对象状态冲突。
422语法合法但逻辑上无法满足操作要求。
429请求过于频繁。
500服务端内部错误。
503服务暂时不可用(故障安全:未持久化且未扣款)。

响应字段 (Order)

字段结构与 GET /v1/orders 列表项中的 Order 相同。

获取订单详情

GET /v1/orders/{orderId} · getOrder

鉴权: API 密钥 (HMAC)。

返回订单全量信息及两组专属明细:fills(订单簿档位吃单加权明细)与 delegations(链上真实质押交易及交易哈希)。

请求参数

参数名位置类型必选说明
orderIdpathstring是平台订单 ID(ord_…)或带 cid: 前缀的自定义业务订单号(如 cid:acme-2026-09-11-000418)。

响应

状态码含义
200OK
401缺少、格式错误或已被拒绝的凭据。
404目标对象不存在或属于其他账户。
429请求过于频繁。
500服务端内部错误。

响应字段

包含 Order 对象的全部通用字段,并附带以下特有字段:

字段类型必选说明
fillsarray of object是订单簿各档位撮合成交分布明细。
fills[].classenum: instant, market, deep是
fills[].amountinteger是该档位成交数量。
fills[].price_sunnumber | null是撮合成交单价。
delegationsarray of object是链上真实质押交易详情。
delegations[].amountinteger是该笔交易交付的能量数量。
delegations[].tx_idstring是链上交易广播哈希。

到期前提前归还资源

POST /v1/orders/{orderId}/reclaim · reclaimOrder

鉴权: API 密钥 (HMAC)。

提前解除对目标地址的资源委托质押。适用于转账已在链上打包确认后的场景:释放闲置能量供其他业务使用。

不予退款。 租赁与回收属于独立动作;提前释放资源不会退回任何租赁费用。

幂等性。 多次调用返回相同的 reclaim_hash 且无副作用。已自然到期的订单调用亦返回 200。

通过第三方同业市场补充撮合的订单不支持提前回收(将返回 3008 reclaim_unavailable)。

请求参数

参数名位置类型必选说明
orderIdpathstring是
Idempotency-Keyheaderstring客户端指定的安全重试幂等键。

响应

状态码含义
200资源已成功提前解质押(或此前已解质押)。
202解质押请求已受理,正在等待链上广播确认。可在几秒后重试查询或监听 order.reclaimed 回调。
401缺少、格式错误或已被拒绝的凭据。
404目标对象不存在或属于其他账户。
409无可回收资源(3007)或订单来自第三方渠道不支持提前回收(3008)。
429请求过于频繁。
500服务端内部错误。

响应字段 (Order)

返回更新后的完整 Order 对象。

来自规范的 200 响应示例(示意数值):

json
{
  "id": "ord_01J9Z5P8T3WQ",
  "client_order_id": "acme-2026-09-11-000418",
  "account_id": "acc_01J9Z4K2M7Q8",
  "resource": "energy",
  "amount": 65000,
  "delivered_amount": 65000,
  "partial": false,
  "tier": "1h",
  "duration_seconds": 3600,
  "receiver": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
  "source": "api",
  "status": "reclaimed",
  "confirm_status": "confirmed",
  "price_sun_per_unit": 20,
  "pay_amount_sun": 1300000,
  "activate_amount_sun": 0,
  "total_amount_sun": 1300000,
  "refunded_amount_sun": 0,
  "delegate_hash": "a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90",
  "delegate_hashes": ["a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90"],
  "delegated_at": "2026-09-11T18:04:07.900Z",
  "reclaim_hash": "51fa77da06e8fbebf504fbf088d1d9611059398d51fa77da06e8fbebf504fbf0",
  "reclaimed_at": "2026-09-11T18:12:31.000Z",
  "expires_at": "2026-09-11T19:04:07.900Z",
  "activation": {"performed":false,"hash":null,"amount_sun":0},
  "created_at": "2026-09-11T18:04:05.400Z",
  "updated_at": "2026-09-11T18:12:31.000Z",
  "failure": null
}

    ↑ ↓ 切换 · Enter 打开 · Esc 关闭