调用记录 & 账户流水查询 API

查看 Markdown 原文

概述

提供两个对外查询接口,用于拉取当前账户的调用记录(每次生成任务的明细)与账户流水(余额变动明细)。

两个接口均采用游标分页(基于记录 ID 倒序翻页),相比传统页码分页,可避免深度翻页带来的性能下降,单次查询返回不超过 100 条。

接口用途路径
调用记录查询查询生成任务的调用明细GET /api/v2/open/records
账户流水查询查询账户余额变动明细GET /api/v2/open/transactions

通用说明

认证方式

所有接口均使用 Bearer Token (API Key) 认证。

参数名类型必填说明
AuthorizationstringBearer {API_KEY}

游标分页机制

  • 首页请求不传 lastId,从最新记录开始返回。
  • 响应返回 nextLastIdhasMore
  • hasMore = true 时,将 nextLastId 作为下一次请求的 lastId 参数,即可获取下一页。
  • hasMore = false 时,nextLastId0,表示已无更多数据。
  • 记录按创建时间(ID)倒序返回,即最新的在最前。

通用分页参数:

参数名类型必填默认值说明
lastIdint0游标:上一页响应返回的 nextLastId;首页不传
limitint20每页数量,最大 100,超过自动按 100 处理

通用响应信封

{
  "code": 0,
  "msg": "success",
  "data": {
    "list": [],
    "nextLastId": 0,
    "hasMore": false
  }
}
字段名类型说明
listarray数据列表,元素结构见各接口
nextLastIdint下一页游标;作为下次请求的 lastId。为 0 表示无更多数据
hasMorebool是否还有下一页

一、调用记录查询

接口信息

  • 接口路径: /api/v2/open/records
  • 请求方法: GET
  • 认证方式: Bearer Token (API Key)

请求参数(Query)

参数名类型必填说明
lastIdint游标,见「游标分页机制」
limitint每页数量,默认 20,最大 100
statusstring状态筛选:success / processing / failed
modelstring按模型名模糊筛选
startDatestring开始日期,格式 YYYY-MM-DD
endDatestring结束日期,格式 YYYY-MM-DD(含当天)

成功响应

{
  "code": 0,
  "msg": "success",
  "data": {
    "list": [
      {
        "taskId": "task_20260601_abc123",
        "modelType": "video",
        "modelName": "Seedance 2.0",
        "modelVersion": "2.0",
        "genType": "t2v",
        "resolution": "1080p",
        "duration": 5,
        "amount": "0.500000",
        "status": "success",
        "createdTime": "2026-06-01T12:30:45+08:00"
      }
    ],
    "nextLastId": 884512,
    "hasMore": true
  }
}

列表字段说明

字段名类型说明
taskIdstring任务 ID
modelTypestring任务类型:image(图片)/ video(视频)/ audio(音频)
modelNamestring模型名称
modelVersionstring模型版本
genTypestring生成类型,如 t2i(文生图)/ t2v(文生视频)/ i2v(图生视频)
resolutionstring分辨率,如 1080p
durationint时长(秒),图片类任务为 0
amountstring本次任务实际消费金额,失败任务为 0.000000
statusstring任务状态:success / processing / failed
createdTimestring创建时间(RFC3339 格式)

请求示例

# 首页,每页 50 条,仅看成功的任务
curl -X GET "https://api.apiverse.ai/api/v2/open/records?limit=50&status=success" \
  -H "Authorization: Bearer your_api_key_here"

# 下一页:使用上一次响应返回的 nextLastId
curl -X GET "https://api.apiverse.ai/api/v2/open/records?limit=50&status=success&lastId=884512" \
  -H "Authorization: Bearer your_api_key_here"

二、账户流水查询

接口信息

  • 接口路径: /api/v2/open/transactions
  • 请求方法: GET
  • 认证方式: Bearer Token (API Key)

请求参数(Query)

参数名类型必填说明
lastIdint游标,见「游标分页机制」
limitint每页数量,默认 20,最大 100
typestring类型筛选:recharge(充值)/ freeze(冻结)/ unfreeze(解冻)/ charge(扣费)
startDatestring开始日期,格式 YYYY-MM-DD
endDatestring结束日期,格式 YYYY-MM-DD(含当天)

成功响应

{
  "code": 0,
  "msg": "success",
  "data": {
    "list": [
      {
        "txId": "tx_20260601_xyz789",
        "type": "charge",
        "amount": "0.500000",
        "beforeBalance": "1000.500000",
        "afterBalance": "1000.000000",
        "relatedId": "task_20260601_abc123",
        "model": "Seedance 2.0",
        "remark": "任务扣费",
        "createdTime": "2026-06-01T12:30:50+08:00"
      }
    ],
    "nextLastId": 552301,
    "hasMore": true
  }
}

列表字段说明

字段名类型说明
txIdstring交易 ID
typestring交易类型:recharge / freeze / unfreeze / charge
amountstring交易金额
beforeBalancestring变动前余额
afterBalancestring变动后余额
relatedIdstring关联 ID(任务扣费类为任务 ID,充值类为充值单号)
modelstring关联任务的模型名称;无关联任务(如充值)时为空字符串
remarkstring备注
createdTimestring交易时间(RFC3339 格式)

请求示例

# 首页,仅看扣费记录
curl -X GET "https://api.apiverse.ai/api/v2/open/transactions?limit=50&type=charge" \
  -H "Authorization: Bearer your_api_key_here"

# 下一页
curl -X GET "https://api.apiverse.ai/api/v2/open/transactions?limit=50&type=charge&lastId=552301" \
  -H "Authorization: Bearer your_api_key_here"

完整翻页示例

Python

import requests

BASE = "https://api.apiverse.ai/api/v2/open/records"
HEADERS = {"Authorization": "Bearer your_api_key_here"}

last_id = 0
all_records = []
while True:
    params = {"limit": 100}
    if last_id:
        params["lastId"] = last_id
    resp = requests.get(BASE, headers=HEADERS, params=params).json()
    data = resp["data"]
    all_records.extend(data["list"])
    if not data["hasMore"]:
        break
    last_id = data["nextLastId"]

print(f"共拉取 {len(all_records)} 条调用记录")

JavaScript

async function fetchAllRecords() {
  const base = 'https://api.apiverse.ai/api/v2/open/records';
  const headers = { Authorization: 'Bearer your_api_key_here' };
  let lastId = 0;
  const all = [];

  while (true) {
    const params = new URLSearchParams({ limit: '100' });
    if (lastId) params.set('lastId', String(lastId));
    const resp = await fetch(`${base}?${params}`, { headers }).then((r) => r.json());
    const data = resp.data;
    all.push(...data.list);
    if (!data.hasMore) break;
    lastId = data.nextLastId;
  }
  console.log(`共拉取 ${all.length} 条调用记录`);
  return all;
}

注意事项

  1. 游标翻页:请始终使用响应返回的 nextLastId 作为下一页的 lastId,不要自行构造或递增该值。
  2. 单次上限limit 最大为 100,传入更大值时按 100 处理。
  3. 数据范围:接口返回当前 API Key 所属账户的全部记录。
  4. 金额格式:所有金额字段均为字符串,保留 6 位小数,避免浮点精度问题。
  5. 时间筛选startDate / endDate 按自然日筛选,endDate 含当天全天。
  6. 稳定排序:记录按 ID 倒序返回;翻页期间若有新记录写入,不会影响已翻页数据的连续性(新数据只会出现在首页)。

关于大模型(LLM)用量

  • 本组接口(调用记录 / 账户流水)覆盖的是网关本站的生成任务与钱包流水。
  • 大模型(LLM)的用量与消费不在本接口返回范围内:LLM 按 token 聚合计量,消费在账户余额中结算,不会以逐条记录/逐笔流水的形式出现在这里。
  • 大模型的用量与消费汇总请前往控制台「用量」/「账单」页面查看。

错误码说明

错误码说明解决方案
10005未授权 / API Key 无效检查 Authorization 头与 API Key 是否正确
90003系统内部异常稍后重试或联系技术支持

错误响应示例

{
  "code": 10005,
  "msg": "未授权",
  "data": null
}