/user,日志服务为 /log。实际访问地址还应拼接网关或服务的主机地址。{
"traceId": "链路ID",
"code": 200,
"message": "成功",
"data": {},
"extraData": null
}code=200 表示成功,其他值表示失败。失败时 data 可能为 null。| 项目 | 内容 |
|---|---|
| URL | POST /user/open/wallet/balance |
| 权限 | 余额查询权限 |
| 说明 | 查询个人或租户的账户余额 |
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
userType | integer | 是 | 用户类型:1 个人,2 租户 |
userId | long | 条件 | userType=1 时必传 |
tenantId | long | 条件 | userType=2 时必传 |
{
"userType": 1,
"userId": 10001
}data| 字段 | 类型 | 说明 |
|---|---|---|
availableBalance | string | 剩余可用总余额 |
cashBalance | string | 现金账户金额;个人查询不返回 |
creditBalance | string | 授信剩余金额;个人查询不返回 |
creditUsedAmount | string | 授信已用金额;个人查询不返回 |
couponBalance | string | 剩余可用赠金 |
couponUsedAmount | string | 已用赠金 |
{
"traceId": "abc123",
"code": 200,
"message": "成功",
"data": {
"availableBalance": "100.00",
"cashBalance": "80.00",
"couponBalance": "20.00",
"couponUsedAmount": "5.00"
}
}| 项目 | 内容 |
|---|---|
| URL | POST /log/open/call/list |
| 权限 | 调用日志查询权限 |
| 说明 | 按时间、模型、供应商等条件滚动分页查询消费调用记录 |
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
userType | integer | 是 | 1 个人,2 租户 |
userId | string | 条件 | 个人必传;租户可选。 |
tenantId | long | 条件 | 租户查询必传 |
startTime | string | 否 | 开始时间,格式 yyyy-MM-dd HH:mm:ss |
endTime | string | 否 | 结束时间,格式 yyyy-MM-dd HH:mm:ss |
modelId | string[] | 否 | 模型 ID 列表 |
supplierId | string[] | 否 | 供应商列表; |
apiKey | long[] | 否 | API 密钥 ID 列表 |
modelTypes | string[] | 否 | 模型类型列表 |
beforeId | long | 否 | 查询上一页,传上一响应的 beforeId;不能与 afterId 同时传入 |
afterId | long | 否 | 查询下一页,传上一响应的 afterId;不能与 beforeId 同时传入 |
pageSize | integer | 否 | 每页条数,默认 20,最大 100 |
beforeId 和 afterId:{
"userType": 2,
"tenantId": 20001,
"startTime": "2026-09-01 00:00:00",
"endTime": "2026-09-30 23:59:59",
"modelTypes": ["文本模型"],
"pageSize": 20
}data(OpenCallPageVO)| 字段 | 类型 | 说明 |
|---|---|---|
records | CallDTO[] | 调用记录列表,记录结构见下表 |
total | long | 查询结果总数 |
size | long | 本页条数 |
current | long | 当前页码;继承自分页对象 |
pages | long | 总页数;继承自分页对象 |
beforeId | long | 当前页第一条记录 ID,用于查询上一页 |
afterId | long | 当前页最后一条记录 ID,用于查询下一页 |
hasPrevious | boolean | 是否存在上一页 |
hasNext | boolean | 是否存在下一页 |
data 的返回实体为 OpenCallPageVO,该实体继承 MyBatis-Plus Page<CallDTO>;其中 records 元素为 CallDTO。完整字段如下(时间字段格式为 yyyy-MM-dd HH:mm:ss):| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 主键;必须使用字符串,避免前端 long 精度丢失 |
invokeType | integer | 调用类型:0 未知,1 系统测试,2 用户消费 3 企业用户 4 学校用户 |
invokeTime | datetime | 调用发起时间 |
consumptionId | string | 消费 ID;用户消费调用时存在 |
keyId | long | 数据密钥 ID |
keyValue | string | API Key 值 |
userId | long | 用户 ID |
userIp | string | 用户 IP |
modelType | string | 模型类型 |
modelCapabilities | string | 模型能力 |
modelId | string | 模型 ID |
modelName | string | 模型名称 |
supplierId | string | 供应商 ID |
supplierName | string | 供应商名称 |
tokenInput | integer | 输入 token 数 |
tokenOutput | integer | 输出 token 数 |
tokenCacheCreate | long | token 缓存创建量(5分钟) |
tokenCacheCreate1h | long | 1 小时 token 缓存创建量 |
tokenCacheHit | long | token 缓存命中量 |
imageOutput / imageInput | long | 图片输出 / 输入量 |
videoOutput / videoInput | long | 视频输出 / 输入量 |
documentOutput / documentInput | long | 文档输出 / 输入量 |
thinkingOutput | long | 思考输出量 |
audioOutput / audioInput | long | 音频输出 / 输入量 |
charInput | long | 字符输入量 |
tokenTotal | integer | token 总量 |
sell | string | 用户向平台支付的费用 |
requestApp | string | 请求应用 |
throughput | integer | 本次调用吞吐量 |
endReason | string | 结束原因,如停止标记、长度限制、内容过滤、工具调用 |
responseStatus | string | 响应状态:成功 / 失败 |
firstLatency | long | 首 token 延迟 |
totalLatency | long | 总延迟 |
stream | integer | 是否流式调用 |
keepStream | boolean | 流保持类型:true keepStream ,false noKeepStream |
trainPolicy | integer | 训练策略 |
endpoint | string | 请求端点 |
requestAt | datetime | 调用发起时间 |
createAt | datetime | 创建时间 |
consumptionType | integer | 消费类型:1 余额,2 赠金,3 组合支付,4 免费,5 信用支付 |
couponAmount | string | 赠金消耗 |
upstreamId | string | 上游调用 ID |
chatId | string | 会话 ID |
isDefault | integer | 是否默认 Key:1 是,0 否 |
callType | string | 调用类型:sync / async |
taskId | string | 任务 ID |
taskStatus | string | 任务状态:created、processing、success、failed |
tenantId | long | 租户 ID |
tenantName | string | 租户名称 |
userName | string | 用户名称 |
responsesStatusCode | integer | 上游真实返回的 HTTP 状态码 |
upstreamStatusCode | integer | 归一后的上游状态码 |
resourceId | long | 最终落到的资源 ID |
resourceChain | integer[] | 本次请求实际经过的资源链路 |
retryCount | integer | 实际重试次数 |
dealerPrice | number | 经销商扣后价 |
parentDealerId | long | 上游经销商 ID |
ledgerStatus | integer | 分账状态:0 不可分账,1 可分账 |
enterpriseDisplayName | string | 企业池脱敏名;非企业路由时为空 |
creditAmount | string | 信用金额 |
cacheHitRate | string | 缓存命中率,范围 0~1 |
cacheSaveAmount | string | 缓存节省金额,按 sell 口径 |
memoryProjectId | string | 记忆仓库 ID |
memoryRepoName | string | 记忆仓库名称 |
keyType | integer | 密钥类型:0 个人,1 组织 |
streamStatus | string | 流状态 JSON;正常示例 {\"endReason\":\"done\"} |
streamStatusCode | integer | 流状态码:1 正常完成,0 异常 |
{
"traceId": "abc123",
"code": 200,
"message": "成功",
"data": {
"records": [
{
"id": "987654321",
"invokeTime": "2026-09-30 14:20:00",
"userId": 10001,
"modelId": "gpt-4o",
"modelName": "GPT-4o",
"tokenInput": 120,
"tokenOutput": 80,
"tokenTotal": 200,
"sell": "0.0120",
"responseStatus": "success"
}
],
"total": 1,
"size": 1,
"beforeId": 987654321,
"afterId": 987654321,
"hasPrevious": false,
"hasNext": false
}
}| 项目 | 内容 |
|---|---|
| URL | POST /log/open/dict/list |
| 权限 | 调用日志查询权限 |
| 说明 | 返回指定查询类型的筛选字典 |
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
userType | integer | 是 | 1 个人,2 租户 |
userId | string | 条件 | 个人必传;查询 api_key 时必传;租户可选 |
tenantId | long | 条件 | 租户查询必传 |
dictType | string | 是 | 字典类型,见下表 |
dictType 取值:| 值 | 返回内容 |
|---|---|
model | 模型列表:modelId、modelName |
supplier | 供应商列表:supplierId、supplierName、enterpriseDisplayName |
user | 有消费记录的用户列表:userId、userName;仅租户可查 |
model_type | 模型类型:itemName、itemValue、sort |
api_key | 用户使用过的 API 密钥:keyId、脱敏后的 keyValue;userId 必传 |
{
"userType": 1,
"userId": "10001",
"dictType": "model"
}datadata 为数组,元素结构取决于 dictType。示例:{
"traceId": "abc123",
"code": 200,
"message": "成功",
"data": [
{
"modelId": "gpt-4o",
"modelName": "GPT-4o"
}
]
}