调用明细
一次调用一行,按时间倒序分页。 ### 不返回的字段 调用日志里的上游诊断字段(上游账号标识、上游原始错误体、逐段延迟明细) **不在这里返回**。它们会点名具体的上游账号并附带厂商原始报文;你需要知道的是 请求失败了以及大致原因,而不是我们的哪个上游账号服务了它。 失败原因看 `status` 与 `http_status`。完整错误码表见 [错误码](/docs/errors)。
一次调用一行,按时间倒序分页。
不返回的字段
调用日志里的上游诊断字段(上游账号标识、上游原始错误体、逐段延迟明细) 不在这里返回。它们会点名具体的上游账号并附带厂商原始报文;你需要知道的是 请求失败了以及大致原因,而不是我们的哪个上游账号服务了它。
失败原因看 status 与 http_status。完整错误码表见
错误码。
Authorization: Bearer sk-juc-...
前缀必须是恰好 Bearer (首字母大写 + 单个空格)。bearer、BEARER
或用制表符分隔都会被判为无效。
除 API Key 外,也接受 OAuth 设备访问令牌(仅限 oauth_access 类型的 JWT;
普通网页会话令牌会被拒绝)。
In: header
Query Parameters
窗口起点。接受 RFC 3339 时间串或裸的 Unix 秒数。省略时为 end 前 7 天。
无法解析的值会回落到默认窗口而不是报错——这是只读统计接口,把日期敲错的 调用方拿到「这是最近一周」比拿到一个还得去翻文档的 400 更有用。
窗口终点(不含)。接受 RFC 3339 或 Unix 秒数,省略时为当前时间。
模型名模糊匹配(不区分大小写)。
按状态精确过滤。
Value in
- "ok"
- "upstream_error"
- "quota_exceeded"
- "banned"
- "internal_error"
- "unauthorized"
按端点精确过滤。
Value in
- "chat_completions"
- "responses"
- "embeddings"
- "image_generation"
- "image_edit"
- "image_variation"
- "audio_speech"
- "audio_transcription"
- "audio_translation"
- "rerank"
- "video_generation"
每页条数,1–200,默认 50。超出范围的值回落到默认值。
1 <= value <= 20050偏移量,默认 0。
0 <= value0Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/open/logs"{ "total": 1284, "limit": 50, "offset": 0, "logs": [ { "id": "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f", "request_id": "3f8a1c2e-5b4d-4e6f-9a0b-1c2d3e4f5a6b", "created_at": "2026-08-14T02:41:07Z", "endpoint": "chat_completions", "model": "gpt-5.4", "tokens_in": 3120, "tokens_out": 244, "cached_tokens_in": 2816, "cache_creation_tokens_in": 0, "cost": "0.01482000", "currency": "CNY", "billing_source": "balance", "status": "ok", "http_status": 200, "latency_ms": 2841, "stream": true, "reasoning_effort": "medium", "api_key_name": "生产环境" } ]}列出可用模型分组 GET
返回本次凭证实际能路由到的模型分组,以及每个分组作用在基础价格上的倍率—— 最终价格是 `模型单价 × rate_multiplier`。 返回的是**交集**:账户本身可访问的分组,再与 Key 的 `allowed_groups` 取交。 因为这才是用这个凭证发请求时真正会被路由到的范围。 `billing_source` 说明该分组从哪里扣费:`plan_only` 只扣套餐配额, `balance_only` 只扣余额。
创建消息(Anthropic 兼容) POST
与 Anthropic Messages API 兼容。把官方 SDK 的 `base_url` 指向 `https://api.jucode.cn/anthropic`,或给 Claude Code 设置 `ANTHROPIC_BASE_URL`,即可直接使用。 注意路径**不在** `/v1` 下——完整路径是 `/anthropic/v1/messages`。 ### 两条执行路径,行为不同 **原生路径**——当路由到的上游本身就是 Anthropic 时,你的原始请求字节会被 直接转发(仅改写 `model`)。所有字段,包括本文档未列出的 `top_k`、`thinking`、`cache_control` 等,都会保留。 **桥接路径**——当路由到的是非 Anthropic 上游(如 OpenAI 兼容厂商)时,网关 会把请求降级翻译成 Chat Completions,再把响应还原成 Anthropic 格式。此时 **只有下列字段会保留**,其余字段被静默丢弃: `model` `max_tokens` `system` `messages` `stream` `temperature` `top_p` `stop_sequences` `tools` `tool_choice` `metadata` 你无法预先知道会走哪条路径——它取决于后台的模型路由配置。如果你依赖某个 Anthropic 专有参数,请确认该模型确实路由到 Anthropic 上游。 ### 与官方 API 的差异 - `max_tokens` 在官方 API 中是必填的,本网关**不强制**。仅当 `> 0` 时才转发。 - 桥接路径下 `message_start` 事件的 `usage` 字段恒为 `0`,真实用量在结尾的 `message_delta` 中给出。 - 桥接路径的 SSE **没有 `[DONE]` 哨兵**,以 `event: message_stop` 结束。 - 上游返回的 `reasoning_content`(DeepSeek 系非标准字段)会被转换成 Anthropic 的 `thinking` 块。 - **认证失败(401)返回的是 OpenAI 格式的错误体**,不是 Anthropic 格式。这是 因为认证中间件在进入本路由的处理器之前就已拒绝。Anthropic SDK 的错误解析 可能无法识别该响应体。