API 文档
正在加载文档
最近更新时间: 2026-07-09 15:41:21
Base URL: https://api.qnaigc.com
本接口用于导出请求日志(monitor_log),是 log 查询接口的导出版本。提供两个接口:
GET /v2/stat/export_log:以 JSON 响应体返回(带统一包裹结构)。GET /v2/stat/export_log_file:以 JSON 文件形式返回(浏览器触发下载,响应体为裸数组)。两个接口的查询参数、鉴权方式、过滤与排序逻辑完全相同,仅返回结构不同(见下方各接口的响应说明)。
日志保留周期约为 30 天(以实际配置为准),请及时下载所需数据。
支持两种鉴权方式:
APIKey 认证:使用 APIKey 进行认证
Authorization: Bearer <APIKey>AK/SK 签名认证:使用七牛云标准的 AK/SK 签名认证
Authorization: Qiniu <AccessKey>:<EncodedSign>数字签名生成算法可参考文档站中「批量生成 APIKey」部分。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
start | string | 否 | 开始时间,格式为 RFC3339(2006-01-02T15:04:05Z07:00)。作为时间过滤的左闭边界(>=)。建议传入以限定查询范围。 |
end | string | 否 | 结束时间,格式为 RFC3339。作为时间过滤的右开边界(<)。当 start 与 end 同时传入时才会校验范围上限。 |
size | integer | 是 | 每页返回数据条数,范围为 1~500,无默认值,不传或越界将返回 400 错误。 |
page | integer | 否 | 页码,从 1 开始,不传或 <=0 时默认为 1。用于超出 500 条数据的分批导出。 |
model | string | 否 | 模型名称,用于过滤特定模型的请求日志。示例:deepseek/deepseek-v3.1 |
code | integer | 否 | HTTP 状态码过滤,精确匹配。0 或不传表示不限制(返回所有状态码)。示例:200 |
apikey | string | 否 | APIKey 值,用于过滤特定 APIKey 的请求日志,会同时匹配带或不带 Bearer 前缀的记录。示例:sk-xx |
请求头:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
Authorization | string | 是 | 支持 APIKey 与 AK/SK 两种鉴权方式 |
start_time)倒序排列,不支持自定义排序。start 与 end 同时传入时,end - start 不得超过 35 天,且 end 不得早于 start,否则返回 400 错误。start 或 end 其中一个时,不做范围上限校验(按单边过滤)。/v2/stat/export_log以项目统一响应结构返回 JSON,data 字段直接为日志数组。
请求示例:
curl --location "https://api.qnaigc.com/v2/stat/export_log?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=100&page=1" \
--header "Authorization: Bearer sk-xx"成功响应(200 OK)
{
"status": true,
"data": [
{
"id": "65a1f2c3...",
"model_id": "deepseek/deepseek-v3.1",
"api_key": "sk-***xxxx",
"start_time": "2024-01-01T10:00:00+08:00",
"end_time": "2024-01-01T10:00:02+08:00",
"server_type": "chat",
"code": 200,
"errors": null,
"state": "",
"usage": {
"input": 1024,
"output": 512,
"cached_input": 0,
"cache_creation": 0
},
"bo_usage": {
"input_tokens": 1024
},
"bo_usage_cost": {
"input_tokens": 0.001
}
}
]
}/v2/stat/export_log_file以文件形式返回。响应头包含:
Content-Disposition: attachment; filename=logs.json
Content-Type: application/json响应体为裸数组(没有 status / data 包裹),内容与 export_log 的 data 字段完全一致。
请求示例:
curl --location "https://api.qnaigc.com/v2/stat/export_log_file?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=100&page=1" \
--header "Authorization: Bearer sk-xx" \
-o logs.json成功响应(200 OK)
[
{
"id": "65a1f2c3...",
"model_id": "deepseek/deepseek-v3.1",
"api_key": "sk-***xxxx",
"start_time": "2024-01-01T10:00:00+08:00",
"end_time": "2024-01-01T10:00:02+08:00",
"server_type": "chat",
"code": 200,
"errors": null,
"state": "",
"usage": {
"input": 1024,
"output": 512
}
}
]注意区别:
export_log返回{"status":true,"data":[...]};export_log_file直接返回[...]。两者字段含义相同,仅包裹方式不同。
data[])| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 日志记录的唯一 ID(MongoDB 文档 _id) |
model_id | string | 请求所使用的模型标识 |
api_key | string | 发起请求的 APIKey(已脱敏处理) |
start_time | string | 请求开始时间,RFC3339 格式 |
end_time | string | 请求结束时间,RFC3339 格式 |
server_type | string | 服务类型,如 chat / image / video 等 |
code | integer | 上游返回的 HTTP 状态码 |
errors | array<string> | 错误信息列表,无错误时为 null |
state | string | 请求状态标识 |
usage | object | 用量统计。key 因模型类型不同而异,常见包括 input、output、cached_input、cache_creation(文本/对话类),tts_bytes(TTS)、asr_ms(ASR)、ocr_requests(OCR)、search_requests(搜索)、video_second(视频)等;无用量数据时为 null |
bo_usage | object | BO 计费用量明细(按计费项 key 聚合),无数据时省略 |
bo_usage_cost | object | BO 计费用量对应的费用(人民币元),无数据时省略 |
接口对错误采用两种返回风格:
status:false + error 对象)| HTTP 状态码 | 触发条件 | 响应示例 |
|---|---|---|
400 | 参数错误:size 越界、时间格式非法、时间范围超过 35 天、end 早于 start 等 | {"status":false,"error":{"message":"invalid size,should be between 1 and 500","type":"param err"}} |
401 | AK/SK 签名无效或缺失 | {"status":false,"error":{"message":"invalid ak/sk sign","type":"authorization err"}} |
status:false(项目统一错误风格)| 场景 | 响应示例 |
|---|---|
| APIKey 无效或未提供鉴权 | {"status":false,"error":"UNAUTHENTICATED"} |
| 服务器内部错误(如数据库查询失败) | {"status":false,"error":"INTERNAL_ERROR"} |
⚠️ 注意:鉴权失败(APIKey 模式)与服务器内部错误返回的是 HTTP 200,需以响应体中的
"status": false判断是否成功。
curl --location "https://api.qnaigc.com/v2/stat/export_log?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=100&page=1" \
--header "Authorization: Bearer sk-xx"curl --location "https://api.qnaigc.com/v2/stat/export_log?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=100&page=1&model=deepseek/deepseek-v3.1" \
--header "Authorization: Qiniu <AccessKey>:<EncodedSign>"curl --location "https://api.qnaigc.com/v2/stat/export_log_file?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=100&page=1" \
--header "Authorization: Bearer sk-xx" \
-o logs.json单次最多返回 500 条(size 上限为 500)。如需导出 1500 条,需分 3 次请求,每次仅修改 page,其余参数保持不变:
# 第 1 批:page=1, size=500
curl --location "https://api.qnaigc.com/v2/stat/export_log?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=500&page=1" \
--header "Authorization: Bearer sk-xx"
# 第 2 批:page=2, size=500
curl --location "https://api.qnaigc.com/v2/stat/export_log?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=500&page=2" \
--header "Authorization: Bearer sk-xx"
# 第 3 批:page=3, size=500
curl --location "https://api.qnaigc.com/v2/stat/export_log?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=500&page=3" \
--header "Authorization: Bearer sk-xx"export_log 返回 {status, data} 包裹;export_log_file 返回裸数组并触发文件下载。参数、鉴权、过滤与排序逻辑完全一致。start 与 end 同时传入时,跨度上限为 35 天,且 end 不得早于 start;单边传入不校验上限。size 必填:范围为 1~500,无默认值,不传或越界返回 400。page 分批,每次仅改 page、其余参数不变。start_time 倒序,不支持自定义。2006-01-02T15:04:05Z07:00),按东八区解析。api_key 已做脱敏处理,非完整明文。"status" 字段判断。这篇文档有帮助吗?
正在加载反馈服务…