# 1折AI · 完整文档
# Claude 与 GPT API 接入文档
Source: https://1zheai.com/docs/
Markdown: https://1zheai.com/docs/index.md
---
title: Claude 与 GPT API 接入文档
description: 用 1折AI 的 API 密钥调用 Claude 与 GPT:接口地址、各工具的接入方法、计费规则和排错。
---
1折AI 提供 Claude 和 OpenAI / GPT API,支持 Anthropic Messages、OpenAI Responses 和 Chat Completions。常用接口包括:Anthropic 原生的 `/v1/messages`,以及 OpenAI 兼容的 `/v1/chat/completions`。你手上的代码和工具,一般只要改两处:Base URL 和 API 密钥(API key)。
```text
Anthropic Base URL https://1zheai.com
OpenAI Base URL https://1zheai.com/v1
API Key sk-...(在控制台创建)
```
价格是官方美元标价乘一个折扣(当前折扣见[价格页](https://1zheai.com/pricing/)),缓存读写也按同一个折扣算。
Claude 与 OpenAI / GPT 文本模型已上线,完整列表见[支持的模型](/docs/models/)。
## 你想做什么
Claude Code、Codex CLI、Cursor、Cline、Cherry Studio 和 CC Switch。先看支持范围,再按步骤配置。
从 Anthropic SDK、OpenAI SDK 或 curl 开始,继续了解流式输出。
机器可读文档、页面清单和可复制的 AI 接入任务说明。
注册、创建 API 密钥,完成第一条请求。
## 查阅与支持
查找端点、协议、示例和兼容范围。
查看费用、调用记录与排错路径。
## 用之前最常问的
检查返回字段和用量;这些检查不能单独证明模型来源。
缓存怎么开、怎么看命中、命中后便宜多少。
401、404、429、5xx 分别是什么情况。
支付方式、7 天退款、发票规则。
---
# 快速开始
Source: https://1zheai.com/docs/quickstart/
Markdown: https://1zheai.com/docs/quickstart.md
---
title: 快速开始
description: 注册 1折AI、创建 API 密钥、用一条 curl 调通 Claude,再接到 Claude Code 等工具里。
---
目标:5 分钟内拿到一个 API 密钥(API key),并亲眼看到 Claude 的回包。
打开 [1zheai.com/register](https://1zheai.com/register) 注册。调用是按量扣余额的,所以要先充值,最低 ¥100,支持微信、支付宝、Stripe(银行卡)和 USDT。7 天内没用完的额度可以原路退回,规则见[充值、退款与发票](/docs/billing/)。
进入[控制台](https://1zheai.com/console),左侧菜单点「API 密钥」,再点右上角「创建 API 密钥」,填个名字后保存。API 密钥以 `sk-` 开头,在列表里点复制图标复制下来存好。细节见[获取与管理 API 密钥](/docs/api-keys/)。
把 API 密钥放进环境变量,再用 curl 调一次 Anthropic 原生接口:
```bash title="macOS / Linux"
export ONEZHE_API_KEY="sk-你的Key"
curl https://1zheai.com/v1/messages \
-H "x-api-key: $ONEZHE_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"max_tokens": 128,
"messages": [{"role": "user", "content": "用一句话解释什么是 HTTP"}]
}'
```
```powershell title="Windows PowerShell"
$env:ONEZHE_API_KEY = "sk-你的Key"
$body = @{
model = "claude-sonnet-5-5"
max_tokens = 128
messages = @(@{ role = "user"; content = "用一句话解释什么是 HTTP" })
} | ConvertTo-Json -Depth 5
Invoke-RestMethod -Uri "https://1zheai.com/v1/messages" -Method Post `
-Headers @{ "x-api-key" = $env:ONEZHE_API_KEY; "anthropic-version" = "2023-06-01" } `
-ContentType "application/json; charset=utf-8" `
-Body ([System.Text.Encoding]::UTF8.GetBytes($body))
```
`ONEZHE_API_KEY` 只是示例变量名,用什么名字都行。
成功时返回 HTTP 200,结构和官方一致。重点看两处:`model` 是不是你请求的模型,`usage` 里的 token 数。下面是 2026-10-15 实测的回包:
```json
{
"model": "claude-sonnet-5-5",
"id": "msg_011Cg3G8HQmyTrnqSBX6o6Pw",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "HTTP(超文本传输协议)是一种基于请求-响应模式的应用层协议,用于在客户端(如浏览器)和服务器之间传输网页、图片、API 数据等内容。"
}
],
"container": null,
"stop_reason": "end_turn",
"stop_sequence": null,
"stop_details": null,
"usage": {
"input_tokens": 530,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 0
},
"output_tokens": 69,
"output_tokens_details": {"thinking_tokens": 0},
"service_tier": "standard",
"inference_geo": "global"
},
"input_transformations": [],
"diagnostics": null,
"context_management": {"applied_edits": []}
}
```
`input_tokens` 比这句提问本身多出几百,是这类客户端(curl、SDK、第三方工具)每次请求附带的系统提示,按输入计费,Claude Code 不附带,见[系统提示的计费](/docs/pricing-explained/#系统提示的计费)。
再去控制台左侧的「使用日志」,能看到刚才这一笔:时间、所用 API 密钥(「令牌」列)、模型、输入 / 输出 token、缓存读写和费用。
## 下一步
接到你常用的工具里:
两个环境变量就够。
不想手改配置文件就用它。
自定义 Base URL 的写法和限制。
已有 OpenAI 代码,只改 base_url。
请求失败的话,先看[错误码与排错](/docs/troubleshooting/)。想核对返回的字段和用量,看[核对模型和用量](/docs/verify-model/)。
---
# 获取与管理 API 密钥
Source: https://1zheai.com/docs/api-keys/
Markdown: https://1zheai.com/docs/api-keys.md
---
title: 获取与管理 API 密钥
description: 在 1折AI 控制台创建 sk- 开头的 API 密钥,以及怎么存放、轮换、在泄露时止损。
---
一个 API 密钥(API key)对应一份调用权限,扣的是你账户的余额。这页讲怎么建、怎么放、出事了怎么办。
## 创建 API 密钥
打开 [1zheai.com/console](https://1zheai.com/console)。
左侧菜单点「API 密钥」,再点右上角「创建 API 密钥」。名称填一个能看出用途的名字,比如 `claude-code-macbook`、`ci-staging`,其它项不改也能用,点「保存更改」。
表单里可以设置的项:
| 表单项 | 默认 | 说明 |
|---|---|---|
| 名称 | 空 | 调用日志里按这个名字区分 API 密钥 |
| 过期时间 | 永不过期 | 可选 1 小时、1 天、1 个月,或指定具体日期和时间 |
| 数量 | 1 | 一次建多个,名称会自动加随机后缀 |
| 「无限配额」开关 | 打开 | 关掉后出现「额度 (USD)」,这个 API 密钥最多只能花这么多美元 |
| 模型限制(在「高级设置」里) | 空,表示所有模型都能用 | 选了模型后,这个 API 密钥只能调这些模型 |
| IP 白名单(在「高级设置」里) | 空,表示不限 | 只允许列出的 IP 或 CIDR 网段调用 |
API 密钥以 `sk-` 开头。复制后放进密码管理器或环境变量,不要贴进聊天、截图或代码仓库。
## 一个工具一个 API 密钥
建议每个工具、每台机器各建一个 API 密钥。好处有三个:
- 调用日志按 API 密钥区分,哪个工具花了多少钱一眼能看出来。
- 某个 API 密钥泄露了,只删那一个,其它工具不受影响。
- 团队里谁的 API 密钥谁负责,离职或换机器时删除对应的 API 密钥。
## 放在哪里
```bash title="Shell 配置(macOS / Linux)"
# 写进 ~/.zshrc 或 ~/.bashrc,只在本机生效
export ONEZHE_API_KEY="sk-你的Key"
```
```powershell title="Windows(当前用户,持久)"
[Environment]::SetEnvironmentVariable("ONEZHE_API_KEY", "sk-你的Key", "User")
# 重新打开终端后生效
```
```bash title=".env(项目本地)"
# .env 要写进 .gitignore
ONEZHE_API_KEY=sk-你的Key
```
Claude Code 的项目级 `.claude/settings.json` 通常会提交进仓库,Claude Code 官方文档也明确建议不要把凭据写在这里。API 密钥放用户级的 `~/.claude/settings.json`,或者项目里不提交的 `.claude/settings.local.json`。
## 泄露了怎么办
1. 在「API 密钥」列表里找到它,点「操作」列的「禁用」图标,或者在「⋯」菜单里选「删除」。禁用后立刻失效,再用它调用会返回 401 `Invalid token`。
2. 新建一个 API 密钥,换到用到它的地方。
3. 打开调用日志(控制台菜单「使用日志」),点「展开」,在「令牌名称」里填这个 API 密钥的名字筛选,看最近的调用里有没有不是你发起的。
## 常见问题
能,API 密钥不绑定工具。只是混用以后日志里分不清是谁花的,所以还是建议分开建。
多数是。常见原因:复制时带了空格或换行、API 密钥已删除、填进了工具里错误的字段。逐项排查见[错误码与排错](/docs/troubleshooting/)。
默认永不过期。创建或编辑时可以在「过期时间」里设一个时间,过期后再调用返回 401 `Invalid token`,和 API 密钥写错时的回包一样。列表的「过期」列显示每个 API 密钥的过期时间。
---
# 支持的模型
Source: https://1zheai.com/docs/models/
Markdown: https://1zheai.com/docs/models.md
---
title: 支持的模型
description: 1折AI 的 Claude 与 OpenAI / GPT 文本模型,以及通过 API 查询最新可用模型的方法。
---
Claude 与 OpenAI / GPT 文本模型已上线。下方列出模型 ID,最新可用范围以接口返回为准。
查看[公开模型与价格](https://1zheai.com/pricing/)了解报价;已登录用户可前往[控制台 · 模型](https://1zheai.com/model-catalog)查询模型并查看接入方式。
## 模型列表
请求里的 `model` 必须和下表的 ID 完全一致,包括日期后缀。
| 模型 ID | 系列 | 说明 |
|---|---|---|
| `claude-fable-5-1` | Fable 5.1 | |
| `claude-fable-5` | Fable 5 | |
| `claude-opus-5-5` | Opus 5.5 | |
| `claude-opus-5` | Opus 5 | |
| `claude-opus-4-8` | Opus 4.8 | |
| `claude-opus-4-7` | Opus 4.7 | |
| `claude-opus-4-6` | Opus 4.6 | |
| `claude-opus-4-5-20251101` | Opus 4.5 | 带日期的固定版本 ID |
| `claude-sonnet-5-5` | Sonnet 5.5 | |
| `claude-sonnet-5` | Sonnet 5 | |
| `claude-sonnet-4-6` | Sonnet 4.6 | |
| `claude-sonnet-4-5-20250929` | Sonnet 4.5 | 带日期的固定版本 ID |
| `claude-haiku-5-5` | Haiku 5.5 | |
| `claude-haiku-4-5-20251001` | Haiku 4.5 | 带日期的固定版本 ID |
每个模型的单价(输入、输出、缓存读、缓存写)见[价格页](https://1zheai.com/pricing/)。模型的能力、上下文长度和发布说明以 [Anthropic 官方模型文档](https://platform.claude.com/docs/en/about-claude/models/overview) 为准。
## 两种接口都能调
上表的模型都可以通过 Anthropic 原生 `/v1/messages` 和 OpenAI 兼容 `/v1/chat/completions` 调用,模型 ID 写法相同。需要缓存、thinking、工具调用等 Claude 特有参数时,用原生接口,见 [Base URL 与鉴权](/docs/base-url/)。
## OpenAI / GPT 模型
- `gpt-5.6-luna`
- `gpt-5.6-sol`
- `gpt-5.6-terra`
- `gpt-6-astra`
GPT 可用于 [OpenAI SDK](/docs/quickstart-openai-sdk/) 和 [Codex CLI](/docs/quickstart-codex/)。不同模型的接口和计费方式以[控制台模型目录](https://1zheai.com/model-catalog)为准。
## 用接口查最新列表
模型会随官方发布增减,以接口返回为准:
```bash title="用你的 Key 查"
curl https://1zheai.com/v1/models \
-H "Authorization: Bearer sk-你的Key"
```
```bash title="公开价格接口(不需要 Key)"
curl -s https://1zheai.com/api/pricing | jq -r '.data[].model_name'
```
## 怎么选
不知道选哪个时,可以这样起步:
| 场景 | 建议 |
|---|---|
| 日常写代码、Claude Code 主力 | `claude-sonnet-5-5` |
| 复杂重构、难排查的问题 | `claude-opus-5-5` |
| 子任务、摘要、分类等轻活 | `claude-haiku-5-5` |
在 Claude Code 里怎么把 opus / sonnet / haiku 三档映射到具体模型,见 [Claude Code 接入](/docs/quickstart-claude-code/)。
## 常见问题
先核对 ID 拼写和日期后缀,再用上面的 `/v1/models` 确认你的 API 密钥(API key)能看到这个模型。其他服务商的自定义模型名(比如加了前缀、后缀的)在这里用不了。
模型不存在或当前不可用时,网关返回 HTTP 404。Anthropic 原生响应的 `error.type` 为 `not_found_error`;OpenAI 兼容响应的 `error.code` 为 `model_not_found`。
先核对 ID 和密钥可用模型列表,不要反复重试同一个错误 ID。模型存在但暂时没有健康的上游服务时才可能返回 503,见[错误码与排错](/docs/troubleshooting/)。
正常情况下回包 `model` 就是你请求的 ID。如果对不上,把请求时间和回包发到 support@1zheai.com,也可以照[核对模型和用量](/docs/verify-model/)做一遍检查。
---
# Claude 与 GPT 工具接入教程
Source: https://1zheai.com/docs/integrations/
Markdown: https://1zheai.com/docs/integrations.md
---
title: Claude 与 GPT 工具接入教程
description: Claude Code、Codex CLI、OpenCode、OpenClaw、WorkBuddy、Hermes Agent、Cursor、Cline、Cherry Studio 和 CC Switch 的 API 配置教程与支持范围。
---
按你正在使用的工具进入教程。下面的状态整理自现有接入文档,不代表所有工具版本均已通过端到端验证。工具升级后,请重新完成页面中的调用验证。
## 编程工具
Anthropic 原生接入。环境变量、配置文件和常见问题。
通过 Responses 接口调用 OpenAI / GPT 模型。
区分 v1 与 v2 配置,自定义 OpenAI 兼容供应商。
OpenAI 兼容接入。先查看自定义密钥的适用范围与界面差异。
优先使用 Anthropic 模式,也提供 OpenAI Compatible 配置。
## 桌面助手
在聊天客户端中添加自定义供应商。
通过模型设置添加自定义地址,注意完整 URL 与协议开关。
## Agent 平台
配置自定义 Anthropic 提供商与默认 Agent 模型。
通过模型向导或命名 provider 配置 Chat Completions。
OpenCode、OpenClaw、WorkBuddy 和 Hermes Agent 教程已核对官方配置,本站端到端验证尚未完成。请按教程核对实际版本并验证调用。
## 配置管理
管理 Claude Code 的供应商配置,减少手工切换。
## 其他支持自定义 API 的工具
先检查工具是否能设置 API 地址、密钥和模型 ID,再根据协议选择配置:
| 工具支持的协议 | 本站接口 | 下一步 |
| --- | --- | --- |
| Anthropic Messages | `/v1/messages` | 核对客户端是否自动追加 `/v1`,参考[地址说明](/docs/base-url/) |
| OpenAI Chat Completions | `/v1/chat/completions` | 通常 Base URL 填 `https://1zheai.com/v1`;完整端点字段除外 |
| OpenAI Responses | `/v1/responses` | Base URL 填 `https://1zheai.com/v1`,参考 [Codex CLI](/docs/quickstart-codex/) |
| 仅支持官方账号登录 | 不使用本站 API 密钥 | 核对工具是否另有自定义供应商设置 |
## 怎么确认配置成功
1. 按教程选择协议和 Base URL;各工具是否需要 `/v1`,见[地址对照表](/docs/base-url/)。
2. 从[支持的模型](/docs/models/)中选择当前可用模型。
3. 发起一次简短请求,检查工具是否正常返回。
4. 在[调用日志](/docs/usage-logs/)中核对对应调用;不要只凭回复内容判断请求经过了哪个供应商。
遇到问题先看[错误码与排错](/docs/troubleshooting/)。自己写程序时进入[开发指南](/docs/guides/)。
---
# Claude Code 接入
Source: https://1zheai.com/docs/quickstart-claude-code/
Markdown: https://1zheai.com/docs/quickstart-claude-code.md
---
title: Claude Code 接入
description: 把 Claude Code 接到 1折AI:用 ANTHROPIC_BASE_URL 和 ANTHROPIC_AUTH_TOKEN(环境变量或 settings.json),附 Windows 写法、模型映射、VS Code 插件和常见报错。
---
Claude Code 只需要两个变量:`ANTHROPIC_BASE_URL` 指向我们,`ANTHROPIC_AUTH_TOKEN` 填你的 API 密钥(API key)。不需要登录 Anthropic 账号。
## 最短路径
已经装好 Claude Code、手里有 API 密钥的话,把下面两行写进 `~/.claude/settings.json`,然后运行 `claude`:
```json title="~/.claude/settings.json"
{
"env": {
"ANTHROPIC_BASE_URL": "https://1zheai.com",
"ANTHROPIC_AUTH_TOKEN": "sk-你的Key"
}
}
```
文件已经存在的话,把这两项合并进已有的 `env`,不要覆盖其它配置。
## 完整步骤
已经装过可以跳过。以下命令来自 [Claude Code 官方安装文档](https://code.claude.com/docs/en/setup):
```bash title="macOS / Linux"
curl -fsSL https://claude.ai/install.sh | bash
```
```powershell title="Windows PowerShell"
irm https://claude.ai/install.ps1 | iex
```
```bash title="Homebrew"
brew install --cask claude-code
```
```bash title="npm(需要 Node.js 22+)"
npm install -g @anthropic-ai/claude-code
```
用 npm 装时不要加 `sudo`。
在[控制台](https://1zheai.com/console)新建一个 API 密钥,建议专门给这台机器的 Claude Code 用。见[获取与管理 API 密钥](/docs/api-keys/)。
settings.json 的位置:macOS / Linux 是 `~/.claude/settings.json`,Windows 是 `%USERPROFILE%\.claude\settings.json`。
```json title="settings.json(推荐)"
{
"env": {
"ANTHROPIC_BASE_URL": "https://1zheai.com",
"ANTHROPIC_AUTH_TOKEN": "sk-你的Key"
}
}
```
```bash title="macOS / Linux 环境变量"
# 写进 ~/.zshrc 或 ~/.bashrc,然后重开终端
export ANTHROPIC_BASE_URL="https://1zheai.com"
export ANTHROPIC_AUTH_TOKEN="sk-你的Key"
```
```powershell title="Windows PowerShell"
# 持久写入当前用户,重开终端后生效
[Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://1zheai.com", "User")
[Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", "sk-你的Key", "User")
# 只在当前窗口生效
$env:ANTHROPIC_BASE_URL = "https://1zheai.com"
$env:ANTHROPIC_AUTH_TOKEN = "sk-你的Key"
```
```bat title="Windows CMD"
setx ANTHROPIC_BASE_URL "https://1zheai.com"
setx ANTHROPIC_AUTH_TOKEN "sk-你的Key"
```
`ANTHROPIC_BASE_URL` 填根地址,不要加 `/v1`,Claude Code 会自己拼 `/v1/messages`。
在项目目录运行 `claude`,进去后输入 `/status`。看两行:
- base URL 一行显示 `https://1zheai.com`
- 凭据一行显示来源是 `ANTHROPIC_AUTH_TOKEN`
然后问一句话,再去[调用日志](/docs/usage-logs/)看有没有新的记录。有,就接通了。
不想进交互界面的话,也可以用非交互模式试一次(2026-10-15 实测返回 `ok`):
```bash
claude -p "say ok" --model claude-sonnet-4-6
```
## 为什么用 ANTHROPIC_AUTH_TOKEN
Claude Code 有两个变量都能放 API 密钥,区别如下([官方说明](https://code.claude.com/docs/en/authentication)):
| 变量 | 发送方式 | 行为 |
|---|---|---|
| `ANTHROPIC_AUTH_TOKEN` | `Authorization: Bearer <值>` | 设置后立即生效,不弹确认 |
| `ANTHROPIC_API_KEY` | `x-api-key: <值>` | 交互模式下首次会弹窗问你是否使用这个 API 密钥 |
两种我们都支持,推荐 `ANTHROPIC_AUTH_TOKEN`。**两个只设一个**:如果系统里还留着以前官方的 `ANTHROPIC_API_KEY`,删掉它,免得混用出 401。
另外两条容易踩的规则:
- `settings.json` 的 `env` 和终端 export 设了同一个变量时,**以 settings.json 为准**。改了终端变量没生效,先看 settings.json。
- 不要把 API 密钥写进项目的 `.claude/settings.json`,这个文件通常会提交进仓库。要按项目区分,用不提交的 `.claude/settings.local.json`。
## 模型映射
Claude Code 里的 `opus`、`sonnet`、`haiku`、`fable` 是别名,可以用环境变量指定它们对应的具体模型。Haiku 那一档还会被 Claude Code 用来跑一些后台小任务。
| 变量 | 作用 | 示例值 |
|---|---|---|
| `ANTHROPIC_MODEL` | 启动时使用的模型 | `claude-sonnet-5-5` |
| `ANTHROPIC_DEFAULT_OPUS_MODEL` | `opus` 别名指向 | `claude-opus-5-5` |
| `ANTHROPIC_DEFAULT_SONNET_MODEL` | `sonnet` 别名指向 | `claude-sonnet-5-5` |
| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | `haiku` 别名和后台任务用的模型 | `claude-haiku-5-5` |
| `ANTHROPIC_DEFAULT_FABLE_MODEL` | `fable` 别名指向 | `claude-fable-5-1` |
```json title="~/.claude/settings.json(带模型映射)"
{
"env": {
"ANTHROPIC_BASE_URL": "https://1zheai.com",
"ANTHROPIC_AUTH_TOKEN": "sk-你的Key",
"ANTHROPIC_MODEL": "claude-sonnet-5-5",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5-5",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5-5",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-5-5"
}
}
```
模型 ID 必须是[支持的模型](/docs/models/)里的。运行中也可以用 `/model claude-opus-5-5` 临时切换。
## VS Code 插件
Claude Code 的 VS Code 插件在启动前会检查凭据,官方建议把变量写在 VS Code 自己的用户设置里(命令面板 → Preferences: Open User Settings (JSON)):
```json title="VS Code settings.json"
{
"claudeCode.environmentVariables": [
{ "name": "ANTHROPIC_BASE_URL", "value": "https://1zheai.com" },
{ "name": "ANTHROPIC_AUTH_TOKEN", "value": "sk-你的Key" }
]
}
```
只写在 `~/.claude/settings.json` 时,插件自己的登录检查可能读不到。
## 可选设置
| 变量 | 作用 |
|---|---|
| `API_TIMEOUT_MS` | 请求超时,默认 600000(10 分钟),长任务容易超时可以调大 |
| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` | 关掉自动更新、遥测、错误上报等非必要流量。注意设成 `0` 或 `false` 也算开启,要关掉必须删除这个变量 |
| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` | 遇到 "Extra inputs are not permitted" 一类 400 时用 |
| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1` | 让 `/model` 列表从 `/v1/models` 拉取可用模型 |
`CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1` 已实测可用(Claude Code 2.1.296,2026-10-15):启动后 debug 日志里出现 `[gatewayDiscovery] cached 14 models`,14 个模型和[支持的模型](/docs/models/)一致。
不要设置 `DISABLE_PROMPT_CACHING`,它会关掉缓存,账单会明显变高,见 [Prompt Caching](/docs/prompt-caching/)。
## 常见问题
Claude Code 没读到 API 密钥。检查变量名拼写;用环境变量的话确认是在新开的终端里启动;用 settings.json 的话确认 JSON 格式正确(多一个逗号就会整体失效)。
API 密钥复制不完整,或者 `ANTHROPIC_API_KEY` 和 `ANTHROPIC_AUTH_TOKEN` 同时存在且其中一个是旧值。两个只留一个。更多见[错误码与排错](/docs/troubleshooting/)。
`ANTHROPIC_BASE_URL` 多写了 `/v1`。改成 `https://1zheai.com`。
这是 Claude Code 用 Haiku 档跑后台小任务。想换成别的模型,设置 `ANTHROPIC_DEFAULT_HAIKU_MODEL`。
删掉(或注释掉)上面两个变量就回到官方登录。经常切换的话用 [CC Switch](/docs/quickstart-cc-switch/),点一下就换。
不会产生关联。接入 1折AI 时 Claude Code 用的是我们的 API 密钥,不登录你的 Anthropic 账号。
---
# Codex CLI 接入
Source: https://1zheai.com/docs/quickstart-codex/
Markdown: https://1zheai.com/docs/quickstart-codex.md
---
title: Codex CLI 接入
description: OpenAI Codex CLI 接入 1折AI 的配置方法(~/.codex/config.toml 的 model_providers),通过 Responses 接口调用 GPT 模型。
---
OpenAI / GPT 模型已上线。Codex CLI 使用 OpenAI Responses 接口(`/v1/responses`),通过本站 API 密钥接入。可用模型与价格见[模型目录](https://1zheai.com/model-catalog)。
下面先把 Codex 自定义供应商的配置方式讲清楚,格式来自 [Codex 官方配置文档](https://developers.openai.com/codex/config-reference)。
## 配置文件
Codex 的配置在 `~/.codex/config.toml`。自定义供应商只能写在这个用户级文件里,项目里的 `.codex/config.toml` 设置 `model_provider` 会被忽略。
```toml title="~/.codex/config.toml"
model_provider = "onezhe"
model = "gpt-6-astra"
[model_providers.onezhe]
name = "1折AI"
base_url = "https://1zheai.com/v1"
env_key = "ONEZHE_API_KEY"
wire_api = "responses"
```
示例使用 `gpt-6-astra`,可替换为你的密钥支持的其他 GPT 模型 ID。
几个字段的意思:
| 字段 | 说明 |
|---|---|
| `model_provider` | 使用哪个供应商,对应下面 `[model_providers.]` 的 id。`openai`、`ollama`、`lmstudio` 是保留名,不能用 |
| `base_url` | 要带 `/v1` |
| `env_key` | Codex 从这个环境变量里读 API 密钥(API key),名字要和你 export 的完全一致 |
| `wire_api` | 官方文档写明目前只支持 `responses`,省略时也是它 |
然后把 API 密钥放进环境变量:
```bash title="macOS / Linux"
export ONEZHE_API_KEY="sk-你的Key"
```
```powershell title="Windows PowerShell"
[Environment]::SetEnvironmentVariable("ONEZHE_API_KEY", "sk-你的Key", "User")
```
## 安装 Codex
以下命令来自 Codex 官方文档:
```bash title="npm"
npm install -g @openai/codex
```
```bash title="Homebrew"
brew install --cask codex
```
```bash title="macOS / Linux 脚本"
curl -fsSL https://chatgpt.com/codex/install.sh | sh
```
```powershell title="Windows"
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
```
## 常见问题
`env_key` 写的变量名和你实际 export 的不一致,或者在设置环境变量之前就打开了终端。两边名字核对一遍,重开终端再试。
不能。Codex 官方配置文档里 `wire_api` 只接受 `responses`。只提供 Chat Completions 接口的服务需要额外的协议转换工具才能接 Codex。
在[模型目录](https://1zheai.com/model-catalog)查看当前模型,并把模型 ID 填入 `model`。启动 Codex 后发起简短请求,在[调用日志](/docs/usage-logs/)中核对模型和状态。
---
# OpenCode 接入 Claude API
Source: https://1zheai.com/docs/quickstart-opencode/
Markdown: https://1zheai.com/docs/quickstart-opencode.md
---
title: OpenCode 接入 Claude API
description: OpenCode 配置 1折AI Claude API 中转的地址、密钥与模型教程,包含协议选择、配置示例、验证步骤和常见错误。
---
使用 OpenCode 的自定义供应商功能连接 1折AI。先[创建 API 密钥](/docs/api-keys/),并确认[当前可用模型](/docs/models/);下文模型 ID 是示例,请按你的密钥权限调整。
官方配置核对日期:2026-10-15。以下配置依据官方文档整理,本站端到端验证尚未完成;请先完成简短问答和工具调用验证,再用于长任务。OpenAI / GPT 模型已上线,模型列表与价格见[模型说明](/docs/models/)。
## OpenCode v1 配置
依据 [官方 v1 Providers](https://opencode.ai/docs/providers/):运行 `/connect`,选择 Other,provider ID 输入 `onezhe`,填写本站 API Key。在项目 `opencode.json` 合并:
```json
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"onezhe": {
"npm": "@ai-sdk/openai-compatible",
"name": "1折AI",
"options": { "baseURL": "https://1zheai.com/v1" },
"models": {
"claude-sonnet-4-6": { "name": "Claude Sonnet 4.6" }
}
}
}
}
```
随后 `/models` 选择该 provider 的模型。`/connect` 只保存凭据,不代替 provider 配置。这里明确选择 Chat Completions 的 SDK;不能误换为用于 Responses 的 `@ai-sdk/openai`。官方也允许通过 `options.apiKey: "{env:ONEZHE_API_KEY}"` 引用环境变量。
## OpenCode v2 配置
依据 [官方 v2 Providers](https://opencode.ai/v2/docs/providers),使用原生 v2 字段,不能与上方 v1 混写。在项目 `opencode.jsonc` 合并:
```json
{
"$schema": "https://opencode.ai/config.json",
"providers": {
"onezhe": {
"name": "1折AI",
"env": ["ONEZHE_API_KEY"],
"package": "@opencode/ai/providers/openai-compatible",
"settings": { "baseURL": "https://1zheai.com/v1" },
"models": {
"claude-sonnet-4-6": { "name": "Claude Sonnet 4.6" }
}
}
}
}
```
在启动 OpenCode 的进程环境提供 `ONEZHE_API_KEY`,然后 `/models` 选择 `onezhe/claude-sonnet-4-6`。v2 主要差异是 `providers`、`package`、`settings`,而非 v1 的 `provider`、`npm`、`options`。请先用 `opencode --version` 确认所用大版本。
若要使用原生 Anthropic,v1 官方允许覆盖 `provider.anthropic.options.baseURL`,示例包含 `/v1`;v2 列出 `@opencode/ai/providers/anthropic-compatible`。本教程走明确的 OpenAI 兼容配置,不能据模型名称自行更换协议或承诺缓存、工具调用都已验证。
## 验证接入与排错
1. 保存并重新加载配置,确认当前选中的是 `onezhe` 供应商或你添加的自定义模型。
2. 发送一句简短问题,确认能够返回;随后尝试一个可撤销的小任务,单独确认工具调用和多轮对话。
3. 打开[调用日志](/docs/usage-logs/),核对请求时间、模型、状态与用量。一次文本回复成功不代表所有 Agent 能力都已兼容。
4. 遇到 404,核对本文地址和协议是否配套;遇到 401,核对密钥来源和进程是否读取到环境变量;遇到 429,查看限流信息后再重试。更多情况见[错误码与排错](/docs/troubleshooting/)。
密钥只保存在本地环境或工具的凭据存储中,不要提交到代码仓库、截图或公开日志。后台服务可能不继承终端环境变量;辅助模型、搜索和其他工具也可能有独立的供应商设置,需要分别检查。
## 费用与其他接入方式
查看[Claude API 实时价格](https://1zheai.com/pricing/)和[计费规则](/docs/pricing-explained/)。需要其他客户端时返回[工具接入目录](/docs/integrations/);自己编写程序可用[SDK 与开发指南](/docs/guides/)。
---
# Cursor 接入
Source: https://1zheai.com/docs/quickstart-cursor/
Markdown: https://1zheai.com/docs/quickstart-cursor.md
---
title: Cursor 接入
description: 在 Cursor 里用自定义 OpenAI API 密钥和 Base URL 调用 1折AI 的 Claude 模型,以及哪些功能不会走自定义 API 密钥。
---
Cursor 允许在设置里填自己的 API 密钥(API key),聊天模型会用这个 API 密钥发请求。下面是接 1折AI 的做法,以及几个必须先知道的限制。
先了解这三点再动手:
- Cursor 官方说明里,**自定义 API 密钥只对聊天模型生效,Tab 补全始终用 Cursor 自己的模型**。
- 请求会先经过 Cursor 的服务器再发给你填的地址,所以 Base URL 必须是公网可访问的(`https://1zheai.com/v1` 没问题,本地 `localhost` 代理不行)。
- "Override OpenAI Base URL" 这个开关不在 Cursor 的官方文档里,下面的界面描述来自 Cursor 论坛和社区教程,Cursor 改版后可能变化。
## 配置
Cursor → **Cursor Settings** → **Models**,找到 Keys 区域。
```text
OpenAI API Key sk-你的Key(1折AI 的 Key)
Override OpenAI Base URL https://1zheai.com/v1
```
Base URL 要带 `/v1`。
在模型列表里点 **Add model**,输入模型 ID,例如 `claude-sonnet-5-5`,然后打开它的开关。模型 ID 见[支持的模型](/docs/models/)。
在 Chat 面板选刚加的模型,发一条消息。回复正常后,到控制台[调用日志](/docs/usage-logs/)确认这笔调用。
## 已知问题
Cursor 论坛有反馈:设置了 Override OpenAI Base URL 后,名字以 `claude-` 开头的模型可能会被 Cursor 当成 Anthropic 模型,交给 Anthropic 的 API 密钥处理,或者直接报错。选择 Claude 时,模型 ID 以 `claude-` 开头,如果遇到这个问题,先清空 Cursor 里填过的 Anthropic API 密钥再试。
参考:[论坛帖 144899](https://forum.cursor.com/t/anthropic-models-break-when-override-openai-baseurl-is-set/144899)、[论坛帖 146998](https://forum.cursor.com/t/override-anthropic-base-url-automatically-switches-on-when-using-anthropic-byok/146998)。
## 常见问题
不会。按 Cursor 官方说明,Tab 补全一直用 Cursor 自带的模型,不走你的 API 密钥。
先确认 Base URL 带了 `/v1`。社区反馈 Verify 按钮对非 OpenAI 的模型名不一定通过,可以直接在 Chat 里发一条消息测试,以调用日志里有没有记录为准。
社区教程普遍反馈只有 Chat 走自定义 API 密钥,Agent、Apply、Inline Edit 等功能可能仍然走 Cursor 自己的后端。以你实际在调用日志里看到的记录为准。
如果你主要想用 Claude 写代码,[Claude Code](/docs/quickstart-claude-code/)(命令行或 VS Code 插件)和 [Cline](/docs/quickstart-cline/) 对自定义地址的支持更完整。
---
# Cline 接入
Source: https://1zheai.com/docs/quickstart-cline/
Markdown: https://1zheai.com/docs/quickstart-cline.md
---
title: Cline 接入
description: 在 VS Code 的 Cline 插件里接入 1折AI:Anthropic 自定义 Base URL,或 OpenAI Compatible 两种方式。
---
Cline 是 VS Code 里的编程 Agent 插件。两种方式都能接 1折AI,推荐 Anthropic 方式,Claude 的原生能力(包括缓存)更完整。
## 方式一:Anthropic(推荐)
打开 Cline 设置,**API Provider** 选 **Anthropic**。
- **Anthropic API Key**(填 API 密钥):`sk-你的Key`
- 勾选 **Use custom base URL**,填 `https://1zheai.com`(不要加 `/v1`)
在模型下拉里选一个 1折AI [支持的模型](/docs/models/),比如 `claude-sonnet-5-5`。
## 方式二:OpenAI Compatible
**API Provider** 选 **OpenAI Compatible**。
| 字段 | 值 |
|---|---|
| Base URL | `https://1zheai.com/v1` |
| API Key | `sk-你的Key` |
| Model ID | `claude-sonnet-5-5` |
点 **Verify** 确认连接,然后在 Cline 里发一个小任务。
在 Model Configuration 里可以填上下文窗口和最大输出长度,按 [Anthropic 官方模型文档](https://platform.claude.com/docs/en/about-claude/models/overview) 填写对应模型的数值。
## 常见问题
Anthropic 方式走原生 `/v1/messages`,缓存、thinking 等能力最完整;OpenAI Compatible 走 `/v1/chat/completions`,胜在通用。用 Claude 模型时优先选 Anthropic。
Anthropic 方式的地址不要带 `/v1`;OpenAI Compatible 方式的地址必须带 `/v1`。两者正好相反。
---
# Cherry Studio 接入
Source: https://1zheai.com/docs/quickstart-cherry-studio/
Markdown: https://1zheai.com/docs/quickstart-cherry-studio.md
---
title: Cherry Studio 接入
description: 在 Cherry Studio 添加 1折AI 为自定义服务商,选 Anthropic 或 OpenAI 端点,填根地址、API 密钥和模型。
---
Cherry Studio 是桌面端的 AI 对话客户端,可以把 1折AI 添加成一个自定义服务商。
## 配置
设置(齿轮图标)→ **模型服务** → 列表下方的 **+ 添加服务商**。
| 字段 | 填什么 |
|---|---|
| 提供商名称 | `1折AI` |
| API 密钥 | `sk-你的Key` |
| 端点 | 选 **Anthropic**(推荐)或 **OpenAI** |
| API 地址 | `https://1zheai.com` |
API 地址只填根地址,Cherry Studio 会按所选协议自动补上 `/v1/...`。不要把 `/v1/messages`、`/v1/chat/completions` 这类完整路径粘进去,也不要在末尾加 `#`(`#` 结尾表示不再自动补路径)。
点 **获取模型列表**,从返回的列表里添加要用的模型;或者点 **+** 手动输入模型 ID,比如 `claude-sonnet-5-5`。只有加进列表的模型才会出现在对话的模型选择里。
打开服务商页面右上角的启用开关,回到对话界面,选 1折AI 下的模型发一条消息。
## 选 Anthropic 还是 OpenAI 端点
| 端点 | 适合 |
|---|---|
| Anthropic | 想用 extended thinking 等 Claude 原生能力;Cherry Studio 的 Agent 功能也要求 Anthropic 协议 |
| OpenAI | 习惯 OpenAI 格式,或要和其他 OpenAI 兼容服务统一管理 |
两种端点用的是同一个 API 密钥(API key)和同一套模型 ID。
## 常见问题
先检查 API 密钥有没有多余空格;再确认 API 地址是 `https://1zheai.com`,没有多写路径。获取不到也不影响使用,手动输入模型 ID 也能用。
API 地址写成了完整路径,或者末尾加了 `#`。改回根地址 `https://1zheai.com`。
---
# WorkBuddy 接入 Claude API
Source: https://1zheai.com/docs/quickstart-workbuddy/
Markdown: https://1zheai.com/docs/quickstart-workbuddy.md
---
title: WorkBuddy 接入 Claude API
description: WorkBuddy 配置 1折AI Claude API 中转的地址、密钥与模型教程,包含协议选择、配置示例、验证步骤和常见错误。
---
使用 WorkBuddy 的自定义供应商功能连接 1折AI。先[创建 API 密钥](/docs/api-keys/),并确认[当前可用模型](/docs/models/);下文模型 ID 是示例,请按你的密钥权限调整。
官方配置核对日期:2026-10-15。以下配置依据官方文档整理,本站端到端验证尚未完成;请先完成简短问答和工具调用验证,再用于长任务。OpenAI / GPT 模型已上线,模型列表与价格见[模型说明](/docs/models/)。
依据 [官方模型配置](https://www.workbuddy.cn/docs/workbuddy/From-Beginner-to-Expert-Guide/Function-Description/Model):设置 → 模型 → 添加模型 → 自定义/Custom。填写本站密钥、模型 `claude-sonnet-4-6`。
采用完整请求地址配置:高级配置开启「自定义协议」,URL 填 `https://1zheai.com/v1/chat/completions`,保存后在对话模型选择器选该模型。官方说明开启此开关会直接使用所填 URL,不做路径校验和自动补全;关闭时会按标准 `/chat/completions` 补全。因此完整 URL 与开关必须配套描述。
这里的「自定义协议」不表示可以把 OpenAI 请求自动转换成 Anthropic 请求,不能填 `/v1/messages` 后就宣称原生 Claude 协议接通。优先采用 UI,不提供未经核实的 `models.json` 手工格式。官方页面同时出现当前本地配置路径和旧 `~/.codebuddy/models.json` 迁移说明,避免据此把旧路径写成通用现行路径。界面上的工具能力标记也不能替代本站端到端验证。
## 验证接入与排错
1. 保存并重新加载配置,确认当前选中的是 `onezhe` 供应商或你添加的自定义模型。
2. 发送一句简短问题,确认能够返回;随后尝试一个可撤销的小任务,单独确认工具调用和多轮对话。
3. 打开[调用日志](/docs/usage-logs/),核对请求时间、模型、状态与用量。一次文本回复成功不代表所有 Agent 能力都已兼容。
4. 遇到 404,核对本文地址和协议是否配套;遇到 401,核对密钥来源和进程是否读取到环境变量;遇到 429,查看限流信息后再重试。更多情况见[错误码与排错](/docs/troubleshooting/)。
密钥只保存在本地环境或工具的凭据存储中,不要提交到代码仓库、截图或公开日志。后台服务可能不继承终端环境变量;辅助模型、搜索和其他工具也可能有独立的供应商设置,需要分别检查。
## 费用与其他接入方式
查看[Claude API 实时价格](https://1zheai.com/pricing/)和[计费规则](/docs/pricing-explained/)。需要其他客户端时返回[工具接入目录](/docs/integrations/);自己编写程序可用[SDK 与开发指南](/docs/guides/)。
---
# OpenClaw 接入 Claude API
Source: https://1zheai.com/docs/quickstart-openclaw/
Markdown: https://1zheai.com/docs/quickstart-openclaw.md
---
title: OpenClaw 接入 Claude API
description: OpenClaw 配置 1折AI Claude API 中转的地址、密钥与模型教程,包含协议选择、配置示例、验证步骤和常见错误。
---
使用 OpenClaw 的自定义供应商功能连接 1折AI。先[创建 API 密钥](/docs/api-keys/),并确认[当前可用模型](/docs/models/);下文模型 ID 是示例,请按你的密钥权限调整。
官方配置核对日期:2026-10-15。以下配置依据官方文档整理,本站端到端验证尚未完成;请先完成简短问答和工具调用验证,再用于长任务。OpenAI / GPT 模型已上线,模型列表与价格见[模型说明](/docs/models/)。
依据 [自定义提供商](https://docs.openclaw.ai/gateway/config-tools/custom-providers) 与 [配置示例](https://docs.openclaw.ai/gateway/configuration-examples),在 `~/.openclaw/openclaw.json` 合并:
```json
{
"agents": {
"defaults": {
"model": { "primary": "onezhe/claude-sonnet-4-6" },
"models": { "onezhe/claude-sonnet-4-6": { "alias": "1折AI Claude" } }
}
},
"models": {
"mode": "merge",
"providers": {
"onezhe": {
"baseUrl": "https://1zheai.com",
"apiKey": "${ONEZHE_API_KEY}",
"api": "anthropic-messages",
"models": [
{ "id": "claude-sonnet-4-6", "name": "Claude Sonnet 4.6" }
]
}
}
}
}
```
确保实际运行 Gateway 的进程可读取 `ONEZHE_API_KEY`;终端中的环境变量不一定传给已有后台服务。[官方 Synthetic 文档](https://docs.openclaw.ai/providers/synthetic) 明确 Anthropic 客户端自动追加 `/v1`,因此这里不带 `/v1`,也不填完整 `/v1/messages`。
改用 Chat Completions 时,成对替换为 `baseUrl: "https://1zheai.com/v1"` 和 `api: "openai-completions"`。虽然名称含 completions,此适配器对应 `/v1/chat/completions`;不要误选 `openai-responses`。已有模型允许列表需保留其他条目并加入新模型。示例未编造成本或上下文参数;若当前安装版本校验需要额外元数据,先核实实际模型能力再补充。
## 验证接入与排错
1. 保存并重新加载配置,确认当前选中的是 `onezhe` 供应商或你添加的自定义模型。
2. 发送一句简短问题,确认能够返回;随后尝试一个可撤销的小任务,单独确认工具调用和多轮对话。
3. 打开[调用日志](/docs/usage-logs/),核对请求时间、模型、状态与用量。一次文本回复成功不代表所有 Agent 能力都已兼容。
4. 遇到 404,核对本文地址和协议是否配套;遇到 401,核对密钥来源和进程是否读取到环境变量;遇到 429,查看限流信息后再重试。更多情况见[错误码与排错](/docs/troubleshooting/)。
密钥只保存在本地环境或工具的凭据存储中,不要提交到代码仓库、截图或公开日志。后台服务可能不继承终端环境变量;辅助模型、搜索和其他工具也可能有独立的供应商设置,需要分别检查。
## 费用与其他接入方式
查看[Claude API 实时价格](https://1zheai.com/pricing/)和[计费规则](/docs/pricing-explained/)。需要其他客户端时返回[工具接入目录](/docs/integrations/);自己编写程序可用[SDK 与开发指南](/docs/guides/)。
---
# Hermes Agent 接入 Claude API
Source: https://1zheai.com/docs/quickstart-hermes/
Markdown: https://1zheai.com/docs/quickstart-hermes.md
---
title: Hermes Agent 接入 Claude API
description: Hermes Agent 配置 1折AI Claude API 中转的地址、密钥与模型教程,包含协议选择、配置示例、验证步骤和常见错误。
---
使用 Hermes Agent 的自定义供应商功能连接 1折AI。先[创建 API 密钥](/docs/api-keys/),并确认[当前可用模型](/docs/models/);下文模型 ID 是示例,请按你的密钥权限调整。
官方配置核对日期:2026-10-15。以下配置依据官方文档整理,本站端到端验证尚未完成;请先完成简短问答和工具调用验证,再用于长任务。OpenAI / GPT 模型已上线,模型列表与价格见[模型说明](/docs/models/)。
依据 [官方 Providers](https://hermes-agent.nousresearch.com/docs/integrations/providers):终端运行 `hermes model` → Custom endpoint,API mode 明确选择 `chat_completions`,Base URL 填 `https://1zheai.com/v1`,填写密钥和模型。不要选 ChatGPT/Codex 登录,它是另一种接入方式。
可复用的命名 provider 配置,合并到 `~/.hermes/config.yaml`:
```yaml
providers:
onezhe:
api: https://1zheai.com/v1
key_env: ONEZHE_API_KEY
transport: chat_completions
default_model: claude-sonnet-4-6
model:
provider: custom:onezhe
default: claude-sonnet-4-6
```
在 `~/.hermes/.env` 本地提供:
```dotenv
ONEZHE_API_KEY=sk-替换为本站密钥
```
已配置后可在对话中切换 `/model custom:onezhe:claude-sonnet-4-6`。`/model` 不能代替终端 `hermes model` 创建新 provider。官方支持 `anthropic_messages` 传输,但本教程使用 Chat Completions,避免按 URL 自动猜测协议。`OPENAI_BASE_URL` 不是所有自定义 provider 的通用配置;应使用上面的显式配置。
## 验证接入与排错
1. 保存并重新加载配置,确认当前选中的是 `onezhe` 供应商或你添加的自定义模型。
2. 发送一句简短问题,确认能够返回;随后尝试一个可撤销的小任务,单独确认工具调用和多轮对话。
3. 打开[调用日志](/docs/usage-logs/),核对请求时间、模型、状态与用量。一次文本回复成功不代表所有 Agent 能力都已兼容。
4. 遇到 404,核对本文地址和协议是否配套;遇到 401,核对密钥来源和进程是否读取到环境变量;遇到 429,查看限流信息后再重试。更多情况见[错误码与排错](/docs/troubleshooting/)。
密钥只保存在本地环境或工具的凭据存储中,不要提交到代码仓库、截图或公开日志。后台服务可能不继承终端环境变量;辅助模型、搜索和其他工具也可能有独立的供应商设置,需要分别检查。
## 费用与其他接入方式
查看[Claude API 实时价格](https://1zheai.com/pricing/)和[计费规则](/docs/pricing-explained/)。需要其他客户端时返回[工具接入目录](/docs/integrations/);自己编写程序可用[SDK 与开发指南](/docs/guides/)。
---
# 用 CC Switch 接入
Source: https://1zheai.com/docs/quickstart-cc-switch/
Markdown: https://1zheai.com/docs/quickstart-cc-switch.md
---
title: 用 CC Switch 接入
description: 在 CC Switch 里用自定义配置添加 1折AI,给 Claude Code 一键切换供应商,不用手改 settings.json。
---
[CC Switch](https://github.com/farion1231/cc-switch) 是一个桌面工具,帮你管理 Claude Code、Codex 等命令行工具的供应商配置。添加一次之后,在官方账号、1折AI 和其他供应商之间切换只要点一下。
## 安装
- macOS:`brew install --cask cc-switch`
- Windows / Linux:到 [GitHub Releases](https://github.com/farion1231/cc-switch/releases) 下载安装包
## 给 Claude Code 添加 1折AI
在侧栏选中 **Claude Code**,点页头右侧的 **添加供应商**(+ 号)。
1折AI 目前不在 CC Switch 的预设列表里,选列表最上面的 **自定义配置**。
名称填 `1折AI`,配置编辑框里的 `env` 写成:
```json
{
"env": {
"ANTHROPIC_BASE_URL": "https://1zheai.com",
"ANTHROPIC_AUTH_TOKEN": "sk-你的Key"
}
}
```
想同时固定模型,加上 `ANTHROPIC_MODEL` 等变量,写法见 [Claude Code 接入](/docs/quickstart-claude-code/)的模型映射一节。
点页脚的 **添加**,然后在供应商列表里启用 1折AI。CC Switch 会把配置写进 Claude Code 的 `~/.claude/settings.json`,Claude Code 不用重启就会用新的供应商。
在 Claude Code 里运行 `/status`,base URL 应该是 `https://1zheai.com`。再发一条消息,到控制台[调用日志](/docs/usage-logs/)确认有记录。
CC Switch 官方示例用的是 `ANTHROPIC_API_KEY`,两个变量都能用。我们推荐 `ANTHROPIC_AUTH_TOKEN`,原因见 [Claude Code 接入](/docs/quickstart-claude-code/)。
## 获取模型列表
编辑供应商时,模型输入框旁边的 **获取模型列表** 按钮会用你的 API 密钥(API key)调用 `/v1/models`,列出可用模型,选一个填进去。
## Codex
CC Switch 也能管理 Codex 的供应商。配置本站 Base URL、API 密钥与 GPT 模型,见 [Codex CLI 接入](/docs/quickstart-codex/)。
## 常见问题
先在 CC Switch 里确认 1折AI 是启用状态;再检查终端里有没有 export 过 `ANTHROPIC_BASE_URL` 或 `ANTHROPIC_AUTH_TOKEN`。Claude Code 以 settings.json 为准,但手动 export 的旧变量容易让人误判,建议都清掉,统一交给 CC Switch 管理。
API 密钥填错或已删除。重新复制一次 API 密钥,注意不要带空格。
---
# 开发指南
Source: https://1zheai.com/docs/guides/
Markdown: https://1zheai.com/docs/guides.md
---
title: 开发指南
description: 选择 SDK 或 HTTP 接入方式,从第一条请求到流式输出与缓存。
---
已有代码可以从对应 SDK 开始;尚未选择技术栈时,先用 curl 验证调用,再接入应用。
使用 Claude 原生协议,查看 Python 与 TypeScript 示例。
使用 OpenAI SDK 调用 GPT 或 Claude,配置模型 ID 与接口地址。
直接查看 HTTP 请求,排除 SDK 配置差异。
确认端点、协议和适用范围。
## 接入后继续完善
- [流式输出](/docs/streaming/):处理增量响应和断流。
- [Prompt Caching](/docs/prompt-caching/):了解使用条件和结果核对方式。
- [错误码与排错](/docs/troubleshooting/):按具体错误定位配置或上游问题。
- [用量日志与对账](/docs/usage-logs/):核对请求记录。
使用现成软件时,可直接进入[工具接入](/docs/integrations/)。
---
# Anthropic SDK 接入(Python / TypeScript)
Source: https://1zheai.com/docs/quickstart-anthropic-sdk/
Markdown: https://1zheai.com/docs/quickstart-anthropic-sdk.md
---
title: Anthropic SDK 接入(Python / TypeScript)
description: 用 Anthropic 官方 SDK 调 1折AI:base_url 填 https://1zheai.com,原生支持缓存、流式、工具调用和 thinking。
---
Anthropic 官方 SDK 走原生 `/v1/messages`,Claude 的所有参数都能直接用。改的地方只有 `base_url` 和 `api_key`。
## 安装
```bash title="Python"
pip install anthropic
```
```bash title="TypeScript / Node.js"
npm install @anthropic-ai/sdk
```
## 调用
```python title="Python"
import os
import anthropic
client = anthropic.Anthropic(
base_url="https://1zheai.com",
api_key=os.environ["ONEZHE_API_KEY"],
)
message = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(message.model)
print(message.content[0].text)
print(message.usage)
```
```typescript title="TypeScript"
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://1zheai.com",
apiKey: process.env.ONEZHE_API_KEY,
});
const message = await client.messages.create({
model: "claude-sonnet-5-5",
max_tokens: 1024,
messages: [{ role: "user", content: "用一句话介绍你自己" }],
});
console.log(message.model);
console.log(message.content);
console.log(message.usage);
```
`base_url` 填根地址,不要加 `/v1`。
## 流式输出
```python title="Python"
with client.messages.stream(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "写一首四行的诗"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
```
```typescript title="TypeScript"
const stream = client.messages.stream({
model: "claude-sonnet-5-5",
max_tokens: 1024,
messages: [{ role: "user", content: "写一首四行的诗" }],
});
stream.on("text", (text) => process.stdout.write(text));
await stream.finalMessage();
```
## 带缓存的调用
把长且固定的内容放进 `system`,加上 `cache_control`:
```python title="Python"
message = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
system=[
{
"type": "text",
"text": LONG_PROJECT_CONTEXT, # 每次都一样的长文本
"cache_control": {"type": "ephemeral"},
}
],
messages=[{"role": "user", "content": "根据上面的说明回答:..."}],
)
print(message.usage.cache_creation_input_tokens, message.usage.cache_read_input_tokens)
```
第二次调用时 `cache_read_input_tokens` 大于 0 就是命中了。细节见 [Prompt Caching](/docs/prompt-caching/)。
## 用环境变量
官方 SDK 会读取 `ANTHROPIC_BASE_URL` 和 `ANTHROPIC_API_KEY`,构造客户端时不传参数也行:
```bash
export ANTHROPIC_BASE_URL="https://1zheai.com"
export ANTHROPIC_API_KEY="sk-你的Key"
```
然后构造客户端时不传参数:
```python
client = anthropic.Anthropic() # 自动读取上面两个变量
```
如果这台机器上 Claude Code 也读这两个变量,它们会一起切到 1折AI,这通常正是你想要的。
## 常见问题
`base_url` 多写了 `/v1`。Anthropic SDK 会自己拼 `/v1/messages`。
检查 API 密钥(API key);另外,环境里如果同时存在 `ANTHROPIC_AUTH_TOKEN`(比如以前给 Claude Code 设的旧值),SDK 也会读它,把旧值删掉再试。
---
# OpenAI SDK 接入(Python / Node)
Source: https://1zheai.com/docs/quickstart-openai-sdk/
Markdown: https://1zheai.com/docs/quickstart-openai-sdk.md
---
title: OpenAI SDK 接入(Python / Node)
description: 用 OpenAI 官方 SDK 调 1折AI 的 GPT 与 Claude 模型:只改 base_url 和 api_key,附流式示例和环境变量写法。
---
已经有用 OpenAI SDK 写的代码,换成 1折AI 只要改两个参数:`base_url` 和 `api_key`。模型名填入当前可用的 GPT 或 Claude 模型 ID。
## 安装
```bash title="Python"
pip install openai
```
```bash title="Node.js"
npm install openai
```
## 调用
```python title="Python"
import os
from openai import OpenAI
client = OpenAI(
base_url="https://1zheai.com/v1",
api_key=os.environ["ONEZHE_API_KEY"],
)
resp = client.chat.completions.create(
model="gpt-5.6-sol",
messages=[{"role": "user", "content": "用一句话解释什么是 prompt caching"}],
)
print(resp.model)
print(resp.choices[0].message.content)
print(resp.usage)
```
```javascript title="Node.js"
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://1zheai.com/v1",
apiKey: process.env.ONEZHE_API_KEY,
});
const resp = await client.chat.completions.create({
model: "gpt-5.6-sol",
messages: [{ role: "user", content: "用一句话解释什么是 prompt caching" }],
});
console.log(resp.model);
console.log(resp.choices[0].message.content);
console.log(resp.usage);
```
`base_url` 要带 `/v1`。
## 流式输出
```python title="Python"
stream = client.chat.completions.create(
model="gpt-5.6-sol",
messages=[{"role": "user", "content": "写一首四行的诗"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
```
```javascript title="Node.js"
const stream = await client.chat.completions.create({
model: "gpt-5.6-sol",
messages: [{ role: "user", content: "写一首四行的诗" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
```
## 用环境变量,不改代码
OpenAI 官方 SDK(Python 和 Node)会读取 `OPENAI_BASE_URL` 和 `OPENAI_API_KEY`。代码里不传参数时,设置这两个变量就能切过来:
```bash
export OPENAI_BASE_URL="https://1zheai.com/v1"
export OPENAI_API_KEY="sk-你的Key"
```
注意这会影响同一环境里所有用 OpenAI SDK 的程序。
## 什么时候换 Anthropic SDK
OpenAI 兼容接口适合"已有代码、只想换模型"。如果你需要 Prompt Caching 的 `cache_control`、extended thinking、Claude 的工具调用格式,用 [Anthropic SDK](/docs/quickstart-anthropic-sdk/) 走原生接口更合适。
## 常见问题
`base_url` 少了 `/v1`。OpenAI SDK 只会在后面拼 `/chat/completions`。
可以。OpenAI / GPT 模型已上线,请使用[支持的模型](/docs/models/)中你的密钥可调用的模型 ID。
---
# curl 调用
Source: https://1zheai.com/docs/quickstart-curl/
Markdown: https://1zheai.com/docs/quickstart-curl.md
---
title: curl 调用
description: 不装任何 SDK,用 curl 调 1折AI 的 /v1/messages 和 /v1/chat/completions,查模型列表、测缓存、看流式输出。
---
curl 是确认"API 密钥(API key)和地址到底通没通"最快的办法。下面每条都能直接复制,先把 API 密钥放进环境变量:
```bash
export ONEZHE_API_KEY="sk-你的Key"
```
Windows 用户建议在 WSL 或 Git Bash 里跑这些命令;PowerShell 的写法见[快速开始](/docs/quickstart/)。
## Anthropic 原生:/v1/messages
```bash
curl https://1zheai.com/v1/messages \
-H "x-api-key: $ONEZHE_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"max_tokens": 128,
"messages": [{"role": "user", "content": "ping"}]
}'
```
## OpenAI 兼容:/v1/chat/completions
```bash
curl https://1zheai.com/v1/chat/completions \
-H "Authorization: Bearer $ONEZHE_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"messages": [{"role": "user", "content": "ping"}]
}'
```
## 模型列表:/v1/models
```bash
curl https://1zheai.com/v1/models \
-H "Authorization: Bearer $ONEZHE_API_KEY"
```
## 流式输出
加 `"stream": true`,并用 `-N` 关掉 curl 的缓冲,才能看到逐段返回:
```bash
curl -N https://1zheai.com/v1/messages \
-H "x-api-key: $ONEZHE_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"max_tokens": 128,
"stream": true,
"messages": [{"role": "user", "content": "从一数到五"}]
}'
```
事件格式见[流式输出](/docs/streaming/)。
## 测缓存
同一条请求连发两次,第二次回包的 `usage.cache_read_input_tokens` 大于 0 就说明命中。`system` 里的文本需要达到模型的最小可缓存长度,完整脚本见[核对模型和用量](/docs/verify-model/),原理见 [Prompt Caching](/docs/prompt-caching/)。
```bash
curl https://1zheai.com/v1/messages \
-H "x-api-key: $ONEZHE_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"max_tokens": 32,
"system": [{
"type": "text",
"text": "把一段至少 512 token、每次都一样的长文本放在这里",
"cache_control": {"type": "ephemeral"}
}],
"messages": [{"role": "user", "content": "ping"}]
}'
```
## 排查时加上 -i
```bash
curl -i https://1zheai.com/v1/models -H "Authorization: Bearer $ONEZHE_API_KEY"
```
`-i` 会打印状态码和响应头。状态码含义见[错误码与排错](/docs/troubleshooting/)。
---
# 流式输出
Source: https://1zheai.com/docs/streaming/
Markdown: https://1zheai.com/docs/streaming.md
---
title: 流式输出
description: 在 1折AI 上用流式输出:Anthropic 原生的 SSE 事件序列、OpenAI 兼容的 chunk 格式,以及断流时怎么处理。
---
长回答用流式输出(`"stream": true`),首字更快出来,也不容易因为单个请求时间太长被中间网络掐断。两种协议都支持,格式各自和官方一致。
## Anthropic 原生
请求里加 `"stream": true`,返回的是 Server-Sent Events。一次正常的流按这个顺序(来自 [Anthropic Streaming 文档](https://platform.claude.com/docs/en/build-with-claude/streaming)):
| 事件 | 含义 |
|---|---|
| `message_start` | 消息开始,带模型和初始 `usage` |
| `content_block_start` | 一个内容块开始(文本、thinking、tool_use) |
| `content_block_delta` | 内容增量,文本在 `delta.text` 里 |
| `content_block_stop` | 这个内容块结束 |
| `message_delta` | 消息级更新,带 `stop_reason` 和最终的输出 token 数 |
| `message_stop` | 整条消息结束 |
中间可能穿插 `ping` 事件,可以忽略;出错时会收到 `error` 事件。
```bash
curl -N https://1zheai.com/v1/messages \
-H "x-api-key: $ONEZHE_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5-5","max_tokens":128,"stream":true,
"messages":[{"role":"user","content":"从一数到五"}]}'
```
用 SDK 时不用自己解析事件,见 [Anthropic SDK](/docs/quickstart-anthropic-sdk/) 的流式示例。
## OpenAI 兼容
`/v1/chat/completions` 加 `"stream": true`,返回 `data: {...}` 形式的 chunk,文本在 `choices[0].delta.content` 里,最后以 `data: [DONE]` 结束。SDK 示例见 [OpenAI SDK](/docs/quickstart-openai-sdk/)。
`[DONE]` 前的最后一个 chunk 带 `usage`,`choices` 是空数组。不传 `stream_options.include_usage` 也会返回。2026-10-15 实测的完整流:
```text
data: {"id":"msg_011Cg3ERqM8nN58LxLt7TVuG","object":"chat.completion.chunk","created":1792031230,"model":"claude-sonnet-4-6","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"msg_011Cg3ERqM8nN58LxLt7TVuG","object":"chat.completion.chunk","created":1792031230,"model":"claude-sonnet-4-6","choices":[{"index":0,"delta":{"content":"ok"},"finish_reason":null}]}
data: {"id":"msg_011Cg3ERqM8nN58LxLt7TVuG","object":"chat.completion.chunk","created":1792031230,"model":"claude-sonnet-4-6","choices":[{"index":0,"delta":{"content":""},"finish_reason":"stop"}]}
data: {"id":"msg_011Cg3ERqM8nN58LxLt7TVuG","object":"chat.completion.chunk","created":1792031230,"model":"claude-sonnet-4-6","choices":[],"usage":{"prompt_tokens":370,"completion_tokens":4,"total_tokens":374}}
data: [DONE]
```
处理 chunk 时先判断 `choices` 是否为空,上面 OpenAI SDK 页的示例已经这样写了。
## 流断了怎么办
- 先看是不是代理:关掉代理直连再试。
- 客户端的读超时要比模型生成时间长,长输出时调大超时设置。
- 收到 `error` 事件里的 `overloaded_error`,等几秒重试,见[错误码与排错](/docs/troubleshooting/)。
## 中途断开怎么计费
中途断开的请求不是整笔免费,按断开前已经生成的输出 token 计费,记录在调用日志里。计费的输出可能比客户端实际收到的多一些。2026-10-15 实测,让模型从 1 数到 600,客户端在第 4 秒断开时收到了 188 行(约 380 个输出 token),调用日志记的输出是 750 token。不需要的长输出,与其中途断开,不如一开始就把 `max_tokens` 设小。
---
# Prompt Caching 使用与计费
Source: https://1zheai.com/docs/prompt-caching/
Markdown: https://1zheai.com/docs/prompt-caching.md
---
title: Prompt Caching 使用与计费
description: 在 1折AI 上使用 Claude Prompt Caching:怎么开、最小长度、怎么确认命中、命中后怎么计费,以及 Claude Code 的缓存行为。
---
Prompt Caching 让重复发送的长前缀(系统提示、工具定义、长文档、对话历史)只在第一次按写入计费,之后按读取计费。缓存读取的官方单价通常只有输入价的十分之一,我们在此基础上再乘 1.9 折。
## 先说结论
- **Claude Code 默认就开着缓存**,接上就生效。
- 自己写代码调用时,在要缓存的内容块上加 `cache_control`,用原生 `/v1/messages`。OpenAI 兼容接口目前不缓存。
- 判断有没有命中,只看回包 `usage.cache_read_input_tokens` 是不是大于 0。
- 缓存默认活 5 分钟,每次命中会重新计时。也可以用 `"ttl": "1h"` 写入 1 小时缓存,写入价更高。
## 怎么开
在 system、tools 或 messages 的内容块上加 `"cache_control": {"type": "ephemeral"}`,这个块及它之前的内容会被缓存。一次请求最多 4 个缓存断点。
```bash
curl https://1zheai.com/v1/messages \
-H "x-api-key: $ONEZHE_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"max_tokens": 256,
"system": [
{
"type": "text",
"text": "这里放一段很长、每次都一样的内容:项目说明、代码规范、参考文档……",
"cache_control": {"type": "ephemeral"}
}
],
"messages": [{"role": "user", "content": "根据上面的规范,审查这段代码:..."}]
}'
```
被缓存的前缀太短时,请求照常处理,只是不缓存,也不会报错。最小长度因模型而异,见下表。
## 最小可缓存长度
以下来自 [Anthropic 官方文档](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)(2026-10-14):
| 最小 token 数 | 模型 |
|---|---|
| 512 | Fable 5.1、Fable 5、Opus 5.5、Opus 5、Sonnet 5.5、Haiku 5.5 |
| 1,024 | Opus 4.8、Sonnet 5、Sonnet 4.6、Sonnet 4.5 |
| 2,048 | Opus 4.7 |
| 4,096 | Opus 4.6、Opus 4.5、Haiku 4.5 |
## 确认命中
同样的请求连发两次(间隔不超过 5 分钟),对比两次的 `usage`。下面是 2026-10-15 用 `claude-sonnet-5-5` 实测的结果,system 里放了约 1.8 万 token 的固定文本:
```json title="第一次:写入缓存"
{
"input_tokens": 23,
"cache_creation_input_tokens": 17920,
"cache_read_input_tokens": 0,
"cache_creation": {"ephemeral_5m_input_tokens": 17920, "ephemeral_1h_input_tokens": 0},
"output_tokens": 4
}
```
```json title="第二次:命中缓存"
{
"input_tokens": 23,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 17920,
"cache_creation": {"ephemeral_5m_input_tokens": 0, "ephemeral_1h_input_tokens": 0},
"output_tokens": 4
}
```
第二次 `cache_read_input_tokens` 大于 0 就说明缓存在被读取。每一笔的缓存写入和读取 token 也会出现在[调用日志](/docs/usage-logs/)的 Token 列里,读取记为「缓存↓」,写入记为「↑」。
## 怎么计费
| 类型 | 官方单价 | 1折AI 单价 |
|---|---|---|
| 缓存写入(5 分钟) | 输入价 × 1.25 | 官方价 × 1.9 折 |
| 缓存写入(1 小时) | 输入价 × 2 | 官方价 × 1.9 折 |
| 缓存读取 | 输入价 × 0.1(Opus 5.5、Sonnet 5.5 为 0.05,Fable 5.1 为 0.025) | 官方价 × 1.9 折 |
写入比普通输入贵 25%,所以只缓存会被重复用到的内容。一段前缀只要被读到一次就已经划算:写一次加读一次是 1.25 + 0.1 = 1.35 倍输入价,不缓存发两次是 2 倍。完整算例见[价格与计费](/docs/pricing-explained/)。
### 1 小时缓存
在 `cache_control` 里加 `"ttl": "1h"`,缓存会保留 1 小时,适合间隔超过 5 分钟、但仍会反复用到的前缀:
```json
"cache_control": {"type": "ephemeral", "ttl": "1h"}
```
写入按输入价的 2 倍计,读取和 5 分钟缓存一样。回包里写入的 token 出现在 `cache_creation.ephemeral_1h_input_tokens`。2026-10-15 用同一段 3,144 token 的前缀各写入一次,按调用日志里的费用复算,写入部分分别正好是输入价的 1.25 倍和 2 倍。只有间隔经常超过 5 分钟时,1 小时缓存才划算。
## Claude Code 的缓存
Claude Code 会自动给系统提示、工具定义和对话历史打缓存断点,[官方说明在这里](https://code.claude.com/docs/zh-CN/prompt-caching)。想让它命中得更好:
- 一个会话里连续干活,别中途长时间停下。缓存 5 分钟没被用到就过期了。
- 同一个会话里的后续请求会读缓存。2026-10-15 实测,一次两轮的 Claude Code 任务,第二轮缓存读取 31,440 token、写入 115 token。新开一个会话时,第一轮可能要重新写入整段前缀(实测约 3 万 token),这一笔会比后面的贵。
- 少在会话中途改 `CLAUDE.md`、切换 MCP 服务器或换模型,这些都会让前缀变化。
- 不要设置 `DISABLE_PROMPT_CACHING=1`,这个环境变量会关掉所有模型的缓存。
## OpenAI 兼容接口能用缓存吗
目前不能。2026-10-15 实测,在 `/v1/chat/completions` 的 system 消息里放约 3,100 token 的固定文本,连发两次,不管内容块上加不加 `cache_control`,两次的 `usage` 都是:
```json
{"prompt_tokens": 3167, "completion_tokens": 4, "total_tokens": 3171}
```
没有 `prompt_tokens_details.cached_tokens`,调用日志里的缓存读取和写入也都是 0,整段按输入价计费。需要缓存的场景请用 `/v1/messages`(Anthropic SDK 或 Claude Code)。
## 常见问题
缓存写进去了,但下一次没读到。按顺序排查:两次请求是否超过 5 分钟;断点前的内容是否一字不差(时间戳、随机 ID 放进 system 会让每次都不同);是否换了模型;前缀是否达到上面的最小长度。
每一笔的缓存读取、缓存写入 token 都在调用日志里,可以自己算:缓存读取 ÷(输入 + 缓存写入 + 缓存读取)。
---
# API 参考
Source: https://1zheai.com/docs/api-reference/
Markdown: https://1zheai.com/docs/api-reference.md
---
title: API 参考
description: 查找已记录的接口、请求示例和协议差异,明确兼容范围。
---
这里汇总本站现有接口说明与请求示例。本站已提供 Claude 与 OpenAI / GPT 模型。请按模型和工具选择对应协议,具体模型以你的密钥可用列表为准。
## 接口索引
| 接口 | 用途 | 说明与示例 |
| --- | --- | --- |
| `POST /v1/messages` | Anthropic 原生对话 | [地址与请求头](/docs/base-url/)、[Anthropic SDK](/docs/quickstart-anthropic-sdk/)、[curl](/docs/quickstart-curl/) |
| `POST /v1/chat/completions` | OpenAI 兼容对话 | [OpenAI SDK](/docs/quickstart-openai-sdk/)、[curl](/docs/quickstart-curl/) |
| `POST /v1/responses` | OpenAI Responses | [Codex CLI](/docs/quickstart-codex/) |
| `GET /v1/models` | 查询密钥可用的模型 | [模型列表](/docs/models/)、[请求方式](/docs/base-url/) |
| `POST /v1/messages/count_tokens` | 输入 token 计数 | [接口说明](/docs/base-url/) |
## 兼容范围
Claude 原生能力优先参考 Anthropic 接入教程。切换协议前,核对所需能力在对应教程中的说明;不要仅凭请求成功推断工具调用、缓存或长任务均受支持。
Codex 使用 `/v1/responses`,见 [Codex CLI 接入](/docs/quickstart-codex/)。当前可用模型以[模型说明](/docs/models/)及你的密钥实际返回的列表为准。
## 响应与故障
两种协议的事件格式与断流处理。
按状态码和错误信息定位问题。
本页是接口索引,尚未提供完整参数 Schema 或可下载的 OpenAPI 规范。需要具体请求时,使用上面的 SDK 与 curl 示例。
---
# Base URL、接口与鉴权
Source: https://1zheai.com/docs/base-url/
Markdown: https://1zheai.com/docs/base-url.md
---
title: Base URL、接口与鉴权
description: 1折AI 的 Base URL、可用接口、请求头写法,以及不同工具里要不要加 /v1。
---
所有请求都发到同一个域名,按协议分两套路径。
```text
https://1zheai.com
```
## 可用接口
| 接口 | 协议 | 用途 |
|---|---|---|
| `POST /v1/messages` | Anthropic 原生 | 对话。Claude Code、Anthropic SDK、Cline(Anthropic 模式)走这里 |
| `POST /v1/chat/completions` | OpenAI 兼容 | 对话。OpenAI SDK、Cursor、Cherry Studio(OpenAI 模式)走这里 |
| `GET /v1/models` | OpenAI 兼容 | 列出你的 API 密钥(API key)能用的模型 |
| `POST /v1/messages/count_tokens` | Anthropic 原生 | 计算一段输入的 token 数,不产生对话,不扣费 |
`count_tokens` 的请求体和 `/v1/messages` 一样(`model`、`messages`,可以带 `system` 和 `tools`),回包只有一个字段:
```json
{"input_tokens":19}
```
`count_tokens` 只数你发送的内容。用 SDK、curl 或第三方工具实际调用时,每次请求还会附带一段系统提示,按输入 token 计费(Claude Code 不附带),见[系统提示的计费](/docs/pricing-explained/#系统提示的计费)。
Prompt Caching、extended thinking、工具调用这些 Claude 特有的能力,用原生 `/v1/messages` 最稳。OpenAI 兼容接口适合已有 OpenAI 代码、只想换个模型的场景。
## 要不要加 /v1
不同工具对 Base URL 的理解不一样,这是接入时最常见的坑:
| 工具 / SDK | 填什么 | 原因 |
|---|---|---|
| Claude Code(`ANTHROPIC_BASE_URL`) | `https://1zheai.com` | 工具自己会拼 `/v1/messages` |
| Anthropic SDK(`base_url`) | `https://1zheai.com` | 同上 |
| OpenAI SDK(`base_url`) | `https://1zheai.com/v1` | SDK 只拼 `/chat/completions` |
| Cursor(Override OpenAI Base URL) | `https://1zheai.com/v1` | 同 OpenAI SDK |
| Cherry Studio | `https://1zheai.com` | 会自动补 `/v1/...` |
| Cline(OpenAI Compatible) | `https://1zheai.com/v1` | 同 OpenAI SDK |
规律:Anthropic 系填根地址,OpenAI 系填到 `/v1`。填错的典型表现是 404。
## 鉴权请求头
API 密钥放在请求头里,两种写法都可以:
```text title="Anthropic 原生"
x-api-key: sk-你的Key
anthropic-version: 2023-06-01
content-type: application/json
```
```text title="Bearer(两种协议都支持)"
Authorization: Bearer sk-你的Key
content-type: application/json
```
- 调 `/v1/messages` 时按官方协议带上 `anthropic-version`,目前的值是 `2023-06-01`。实测不带也能调通,但官方 SDK 和工具都会带,自己写请求时也照带。
- Claude Code 的 `ANTHROPIC_AUTH_TOKEN` 发的是 `Authorization: Bearer`,`ANTHROPIC_API_KEY` 发的是 `x-api-key`,两种我们都认。
- 需要 beta 功能时,照官方文档带上 `anthropic-beta` 头。带上不认识的值不会报错,所以某个 beta 功能是否生效,以回包里的实际效果为准。
## 检查 API 密钥是否可用
```bash
curl https://1zheai.com/v1/models \
-H "Authorization: Bearer sk-你的Key"
```
返回模型列表说明 API 密钥和地址都对。返回 401 是 API 密钥的问题,回包长这样(2026-10-15 实测):
```json
{"error":{"code":"","message":"Invalid token (request id: 202610150244361675490398268d9d6eKJPmcph)","type":"authentication_error"}}
```
用 `x-api-key` 和 `anthropic-version` 头请求 `/v1/models` 时,返回的是 Anthropic 格式的模型列表(`data[].id`、`display_name`、`has_more`),Claude Code 的模型自动发现读的就是这个格式。
其它情况见[错误码与排错](/docs/troubleshooting/)。
## 速率限制
目前不对 API 密钥设速率限制。收到 429,通常是上游负载高,稍后重试即可,批量任务加指数退避。详见[错误码与排错](/docs/troubleshooting/)。
## 网络
连接超时或 TLS 报错时,先确认终端走的网络:开着全局代理的话,关掉代理直连再试一次;公司网络有出口白名单的,需要放行 `1zheai.com`。
---
# 账户与支持
Source: https://1zheai.com/docs/support/
Markdown: https://1zheai.com/docs/support.md
---
title: 账户与支持
description: 管理费用与调用记录,定位接入问题,并提供必要的排错信息。
---
## 费用与账户
了解费用构成和计算说明。
查询支付与售后规则。
定位每次调用并核对费用。
查看创建、存放和轮换说明。
## 调用遇到问题
先查看[错误码与排错](/docs/troubleshooting/),再核对[地址与协议](/docs/base-url/)以及[工具限制](/docs/integrations/)。检查模型和用量的方法见[核对模型和用量](/docs/verify-model/)。
如果仍需要帮助,请通过控制台或官网公布的支持渠道提供:发生时间与时区、工具及版本、模型 ID、HTTP 状态码、请求 ID(如有)、脱敏后的错误信息,以及是否能用最小请求复现。
不要发送完整 API 密钥、认证请求头或包含私人内容的完整对话。
---
# 价格与计费
Source: https://1zheai.com/docs/pricing-explained/
Markdown: https://1zheai.com/docs/pricing-explained.md
---
title: 价格与计费
description: 1折AI 怎么计价:官方美元标价乘一个折扣,缓存读写同折扣;附一次调用的完整算例。
---
一句话:**所有模型按 Anthropic 官方美元标价计价,统一乘一个折扣,当前是 1.9 折。** 输入、输出、缓存读、缓存写都用这同一个折扣。实时折扣和每个模型的单价在[价格页](https://1zheai.com/pricing/)。
## 一次调用扣多少
每次调用按回包 `usage` 里的四类 token 分别计费:
```text
费用 = ( 输入 token × 输入单价
+ 缓存写入 token × 缓存写单价
+ 缓存读取 token × 缓存读单价
+ 输出 token × 输出单价 ) ÷ 1,000,000
每一项单价 = 官方美元单价(每百万 token)× 折扣
```
四类 token 对应回包里的字段:
| 计费项 | `usage` 字段(Anthropic 原生) | 官方单价相对输入价 |
|---|---|---|
| 输入 | `input_tokens` | 1× |
| 缓存写入 | `cache_creation_input_tokens` | 1.25×(5 分钟缓存),2×(1 小时缓存,`"ttl": "1h"`) |
| 缓存读取 | `cache_read_input_tokens` | 0.1×(Opus 5.5、Sonnet 5.5 为 0.05×,Fable 5.1 为 0.025×) |
| 输出 | `output_tokens` | 按模型,见价格页 |
缓存的官方倍数来自 [Anthropic Prompt Caching 文档](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)。我们不改这些比例,只在最后乘折扣。
1 小时缓存的写入 token 单独记在 `cache_creation.ephemeral_1h_input_tokens`,按输入价的 2 倍再乘折扣计费,2026-10-15 已按调用日志复算核对。价格页列出的缓存写入单价是 5 分钟缓存的。
## 算例
下面的单价是为了演示随手取的整数,不对应具体模型;真实单价看价格页。
假设某模型官方单价(每百万 token):输入 $3,输出 $15,缓存写 $3.75,缓存读 $0.30。一次 Claude Code 请求的 `usage` 是:
```json
{
"input_tokens": 2000,
"cache_creation_input_tokens": 1500,
"cache_read_input_tokens": 30000,
"output_tokens": 800
}
```
按官方价:
| 项 | token | 官方单价 | 官方费用 |
|---|---|---|---|
| 输入 | 2,000 | $3 | $0.006 |
| 缓存写入 | 1,500 | $3.75 | $0.005625 |
| 缓存读取 | 30,000 | $0.30 | $0.009 |
| 输出 | 800 | $15 | $0.012 |
| 合计 | | | $0.032625 |
在 1折AI 实际扣费 = $0.032625 × 1.9 折。
同一请求如果缓存没命中,那 30,000 token 会按输入价算,单这一项就是 $0.09,整笔变成原来的三倍多。所以对 Claude Code 这类反复发送长上下文的工具,**缓存命中率对账单的影响比单价更大**,开法和检查方法见 [Prompt Caching](/docs/prompt-caching/)。
## 系统提示的计费
Claude API 来自官方订阅账号池。通过 Claude Code 调用不附带额外内容。其他客户端(SDK、curl 和第三方工具)的每次请求会附带一段系统提示,按输入 token 计费:Sonnet 4.6 约 350 token,5.x 系列约 500 token。这部分和你自己发送的内容一起算在回包 `usage` 的 `input_tokens` 里。
2026-10-15 用 curl 发一句「Reply with just: ok」的实测:
| 模型 | `count_tokens` 计数 | 实际 `input_tokens` | 附带的系统提示(约) |
|---|---|---|---|
| Sonnet 4.6 | 19 | 370 | 350 token |
| 5.x 系列 | 18–19 | 510–530 | 约 500 token |
- `count_tokens` 只数你发送的内容,不含这段系统提示。用 SDK、curl 或第三方工具预估费用时,把上表的数加上;Claude Code 不需要。
- 调用日志里记录的输入 token 已经包含这部分,按上面的公式复算,结果和日志里的扣费一致。
- 请求越短,这部分占比越高;长上下文请求里占比很小。
## 余额与币种
- 扣费按上面的美元算法计算,从你的账户余额里扣。余额以美元计。
- 人民币充值按实时汇率换算成美元余额。
## 为什么只有一个数
所有模型、输入输出和缓存读写都只乘一个折扣,拿它直接和官方价比。每一笔扣费在[调用日志](/docs/usage-logs/)里都能按上面的公式复算。
## 常见问题
最常见的原因是缓存没命中:两次请求之间隔得太久(默认缓存 5 分钟)、上下文前半段变了、或者换了模型。打开调用日志对比两笔的缓存读取 token 就能看出来。
打折,和输入输出是同一个折扣。缓存写入、缓存读取的单价都是官方单价乘 1.9 折。
通过 Claude Code 调用不附带额外内容。其他客户端(SDK、curl 和第三方工具)的每次请求会附带一段系统提示,按输入 token 计费:Sonnet 4.6 约 350 token,5.x 系列约 500 token。实测数据见[系统提示的计费](#系统提示的计费)。
在调用日志里找到这笔,拿四类 token 数和价格页的单价代进上面的公式,结果应该和日志里的扣费一致。对不上的话把这条日志的时间和模型发给我们。
---
# 用量日志与对账
Source: https://1zheai.com/docs/usage-logs/
Markdown: https://1zheai.com/docs/usage-logs.md
---
title: 用量日志与对账
description: 在 1折AI 控制台的调用日志里看每一次调用的模型、四类 token 和扣费,并按公式复算一笔账。
---
每一次调用都会在调用日志里留下一条明细。这页讲怎么看、怎么对账。
## 在哪里看
[控制台](https://1zheai.com/console) 左侧菜单 →「使用日志」(地址 `https://1zheai.com/usage-logs`),页面标题是「通用日志」。
顶部可以按时间范围筛选,点「展开」后还能按模型名称、API 密钥名称(「令牌名称」)、请求 ID 和日志类型筛选。筛好后点「搜索」;「导出」把当前筛选结果下载下来,方便在表格里对账。
## 每条日志有什么
| 列 | 内容 |
|---|---|
| 时间 | 请求发生的时间 |
| 令牌 | 这次调用用的 API 密钥名称 |
| 模型 | 实际调用的模型 ID |
| 流 | 「流」或「非流」,以及输出速度(t/s) |
| Token | 第一行是「输入 / 输出」token;有缓存时下面多一行,「缓存↓」后是缓存读取 token,「↑」后是缓存写入 token |
| 费用 | 这次调用扣的美元金额 |
| 耗时 | 总耗时;流式请求还会显示首字时间 |
| 详情 | 这次调用的单价等明细 |
被网关拒绝的请求(API 密钥无效、余额不足、模型写错等)不扣费。上游返回错误的请求费用为 0。流式请求中途断开不是整笔免费,见[流式输出](/docs/streaming/)。
## 对一笔账
按时间和模型找到要核对的那一条,记下 Token 列里的输入、输出、缓存读取(缓存↓)和缓存写入(↑)四个数。
在[价格页](https://1zheai.com/pricing/)找到该模型的输入、输出、缓存读、缓存写单价(已经乘过折扣)。
```text
扣费 = ( 输入 × 输入单价
+ 缓存写入 × 缓存写单价
+ 缓存读取 × 缓存读单价
+ 输出 × 输出单价 ) ÷ 1,000,000
```
结果应该和日志里的扣费一致。四舍五入可能带来最后一位的差别。
对不上的话,把这条日志的时间、模型和截图发给我们。
## 用日志看缓存效果
在 Claude Code 这类工具里,大部分输入应该落在"缓存读取"这一列。如果连续几条都是大量"缓存写入"、"缓存读取"却很少,说明缓存没在复用,原因和改法见 [Prompt Caching](/docs/prompt-caching/)。
一个粗略的命中率:缓存读取 ÷(输入 + 缓存写入 + 缓存读取)。
## 和你自己的统计对不上
- Claude Code 会用 Haiku 级模型做一些后台小任务,所以日志里会出现你没主动选过的模型。见 [Claude Code 接入](/docs/quickstart-claude-code/)的模型映射。
- 日志里的输入 token 比你发送的内容多出几百:用 SDK、curl 或第三方工具调用时,每次请求会附带一段系统提示,按输入计费(Claude Code 不附带),见[系统提示的计费](/docs/pricing-explained/#系统提示的计费)。
- 一次工具里的"对话"可能对应很多次 API 调用(每次工具调用一轮),日志是按 API 调用记录的。
---
# 充值、退款与发票
Source: https://1zheai.com/docs/billing/
Markdown: https://1zheai.com/docs/billing.md
---
title: 充值、退款与发票
description: 1折AI 怎么充值、最低金额、支持的支付方式、7 天未用额度退款规则,以及各支付方式能开什么发票。
---
按量付费:先充值,调用时从余额里扣,没有月卡和套餐。
## 充值
| 项 | 说明 |
|---|---|
| 最低金额 | ¥100 |
| 支付方式 | 微信支付、支付宝、Stripe(银行卡)、USDT |
| 入口 | [控制台](https://1zheai.com/console) 左侧菜单「钱包」→「添加资金」 |
| 怎么扣费 | 官方美元标价 × 1.9 折,见[价格与计费](/docs/pricing-explained/) |
人民币充值按实时汇率换算成美元余额。
## 退款
**充值 7 天内,没用掉的额度可以退,原路退回到你付款的账户。** 已经用掉的部分按调用日志里的扣费计算,不退。
在调用日志里看这笔充值之后的消耗,可退金额 = 充值金额 − 已用金额。
发邮件到 support@1zheai.com,写明账户、充值时间和支付方式。
第一次用,建议先充 ¥100,按[核对模型和用量](/docs/verify-model/)把检查跑一遍,再在你的真实任务里用几天。不满意,7 天内没用完的部分可以退。
## 发票
| 支付方式 | 能开什么 |
|---|---|
| 微信支付 / 支付宝 | 可开发票,另收付款金额的 6% |
| Stripe(银行卡) | Stripe invoice(英文) |
| USDT | 不提供发票 |
开发票、企业采购和对公转账,发邮件到 support@1zheai.com 联系。
## 常见问题
够你把一个模型在真实任务里认真试一轮:核对脚本、缓存读取、对账都能跑一遍。试完不满意,7 天内没用完的额度原路退回,所以门槛不等于试错成本。
余额扣完后,请求返回 HTTP 403,回包里是 `Insufficient user quota`(`/v1/messages` 上 `error.type` 为 `billing_error`,`/v1/chat/completions` 上为 `insufficient_quota`)。被拒绝的请求不扣费,充值到账后可以继续用。
通过 Claude Code 调用不附带额外内容。其他客户端(SDK、curl 和第三方工具)的每次请求会附带一段系统提示,按输入 token 计费:Sonnet 4.6 约 350 token,5.x 系列约 500 token。说明和实测数据见[系统提示的计费](/docs/pricing-explained/#系统提示的计费)。
退款规则是充值后 7 天内的未用额度。超过 7 天的情况请单独联系我们说明。
---
# 核对模型和用量
Source: https://1zheai.com/docs/verify-model/
Markdown: https://1zheai.com/docs/verify-model.md
---
title: 核对模型和用量
description: 用调用日志和五项检查,核对每次调用的模型、token 用量和费用。
---
## 调用日志
每次调用都记入控制台的[调用日志](/docs/usage-logs/),列出模型,输入、输出、缓存读取和缓存写入的 token 用量,以及费用。
## 五项检查
下面的检查对照 Anthropic 接口的公开格式,用于发现返回字段和格式上的差异。
| 检查 | 预期结果 | 需要留意 |
|---|---|---|
| 1. 返回的 `model` 字段 | 与请求的模型 ID 一致 | 返回其他模型名,或没有该字段 |
| 2. 缓存读取 | 满足缓存条件的同一请求在缓存有效期内发送两次,第二次的 `cache_read_input_tokens` 大于 0 | 始终为 0,或 `usage` 中没有缓存字段 |
| 3. 工具调用 ID | `tool_use` 块的 `id` 以 `toolu_` 开头 | 其他格式,或模型不按要求调用工具 |
| 4. 流式事件顺序 | 依次出现 `message_start`、`content_block_start`、`content_block_delta`、`message_delta` 和 `message_stop` | 只有 OpenAI 格式的 `data:` 块,或事件缺失、顺序错乱 |
| 5. 真实任务对照 | 用一道固定任务,与官方 API 或其他可信来源对比结果 | 结果明显变差、拒答异常或频繁截断 |
这些检查只能发现字段和格式上的差异,不能单独确认实际使用的模型。`model` 字段可以被改写,格式也可以被模仿。
## 用脚本完成前四项
需要 `bash`、`curl` 和 `jq`。脚本会发起五次小调用,其中一次缓存写入约 1.8 万 token,按正常价格计费。
```bash title="verify.sh"
#!/usr/bin/env bash
# 用法:ONEZHE_API_KEY=sk-你的API密钥 bash verify.sh [模型ID]
set -euo pipefail
BASE="https://1zheai.com"
MODEL="${1:-claude-sonnet-5-5}"
H=(-H "x-api-key: $ONEZHE_API_KEY" -H "anthropic-version: 2023-06-01" -H "content-type: application/json")
echo "== 1. model 字段"
curl -s "$BASE/v1/messages" "${H[@]}" \
-d "$(jq -n --arg m "$MODEL" '{model:$m,max_tokens:16,messages:[{role:"user",content:"ping"}]}')" \
| jq 'if .error then .error else {id, model, usage} end'
echo "== 2. 缓存:同一请求发两次,看第二次的 cache_read_input_tokens"
LONG=$(printf '这是一段用来测试缓存的固定文本,内容不重要,长度够就行。%.0s' {1..600})
BODY=$(jq -n --arg m "$MODEL" --arg t "$LONG" '{model:$m,max_tokens:16,
system:[{type:"text",text:$t,cache_control:{type:"ephemeral"}}],
messages:[{role:"user",content:"ping"}]}')
for i in 1 2; do
curl -s "$BASE/v1/messages" "${H[@]}" -d "$BODY" | jq -c 'if .error then .error else .usage end'
done
echo "== 3. 工具调用 ID"
curl -s "$BASE/v1/messages" "${H[@]}" \
-d "$(jq -n --arg m "$MODEL" '{model:$m,max_tokens:256,
tools:[{name:"get_weather",description:"查询城市天气",
input_schema:{type:"object",properties:{city:{type:"string"}},required:["city"]}}],
tool_choice:{type:"auto"},
messages:[{role:"user",content:"北京今天天气怎么样"}]}')" \
| jq -r 'if .error then .error.message else (.content[]? | select(.type=="tool_use") | .id) end'
echo "== 4. 流式事件序列"
curl -sN "$BASE/v1/messages" "${H[@]}" \
-d "$(jq -n --arg m "$MODEL" '{model:$m,max_tokens:32,stream:true,messages:[{role:"user",content:"数到三"}]}')" \
| grep '^event:' | uniq
```
第 3 项用的是 `tool_choice: auto`。Sonnet 5.5 等 5.x 模型不支持强制指定工具(`{"type":"tool"}` 或 `{"type":"any"}`),会返回 400 `does not support forced tool_choice`。
2026-10-15 用 `claude-sonnet-5-5` 实测的输出如下(第 1 项只保留了关键字段):
```text
== 1. model 字段
{
"id": "msg_011Cg3Esh8zeEdLeXAPVALKe",
"model": "claude-sonnet-5-5",
"usage": {
"input_tokens": 518,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"output_tokens": 12,
...
}
}
== 2. 缓存:同一请求发两次,看第二次的 cache_read_input_tokens
{"input_tokens":23,"cache_creation_input_tokens":17920,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":17920,"ephemeral_1h_input_tokens":0},"output_tokens":4,"output_tokens_details":{"thinking_tokens":0},"service_tier":"standard","inference_geo":"global"}
{"input_tokens":23,"cache_creation_input_tokens":0,"cache_read_input_tokens":17920,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":4,"output_tokens_details":{"thinking_tokens":0},"service_tier":"standard","inference_geo":"global"}
== 3. 工具调用 ID
toolu_01UPsdyKX8M9fJTTkDoSKHXA
== 4. 流式事件序列
event: message_start
event: content_block_start
event: ping
event: content_block_delta
event: content_block_stop
event: message_delta
event: message_stop
```
`ping` 事件是否出现、出现在哪个位置并不固定,不影响判断。
## thinking 块
开启 thinking 后,返回的 `thinking` 块带 `signature` 字段,也可以作为一项格式检查。5.x 模型的写法和 4.x 不同,2026-10-15 实测:
| 模型 | `thinking` 参数 | 结果 |
|---|---|---|
| `claude-sonnet-4-6` | `{"type":"enabled","budget_tokens":1024}` | 返回 `thinking` 块,有思考文本和 `signature` |
| `claude-sonnet-5` | `{"type":"enabled","budget_tokens":1024}` 或 `{"type":"adaptive"}` | 都能用 |
| `claude-sonnet-5-5` | `{"type":"adaptive"}` | 能用;传 `enabled` 返回 400,提示只支持 adaptive |
5.x 模型的 `thinking` 块默认只有 `signature`,思考文本为空字符串。需要看到思考摘要时,加上 `"display": "summarized"`:
```json
"thinking": {"type": "adaptive", "display": "summarized"}
```
使用第三方检测网站时,建议新建一个专用的 API 密钥,测完后删除。
## 发现不一致时
发邮件至 support@1zheai.com,附上请求时间、模型 ID、完整的返回内容(删去 API 密钥)和对应的检查项。返回内容或错误信息中的 request id 可以帮助定位这次调用。
## 常见问题
不可靠。模型的自我介绍受系统提示影响,在某些提示下会答错自己的版本。核对返回的字段和事件格式更有参考价值。
Claude Code 会用 Haiku 模型处理部分后台任务,调用日志里会出现对应的记录。可以用 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 环境变量指定这类任务使用的模型,见 [Claude Code 接入](/docs/quickstart-claude-code/)。不使用 Claude Code 时出现这种情况,请把请求时间发至 support@1zheai.com。
---
# 错误码与排错
Source: https://1zheai.com/docs/troubleshooting/
Markdown: https://1zheai.com/docs/troubleshooting.md
---
title: 错误码与排错
description: 调用 1折AI 时遇到 401、404、429、529、5xx、超时和 Claude Code 报错时,原因和处理办法。
---
先按顺序过一遍下面的清单,大多数问题在前三步就能找到。
## 排查顺序
1. **地址**:Anthropic 系工具填 `https://1zheai.com`,OpenAI 系填 `https://1zheai.com/v1`。见 [Base URL 与鉴权](/docs/base-url/)。
2. **API 密钥(API key)**:是否完整(没有多余空格、换行)、是否已被删除、是否填进了正确的字段。
3. **余额**:控制台里余额是否充足。
4. **模型 ID**:是否和[支持的模型](/docs/models/)里的完全一致。
5. **网络**:关掉代理直连再试一次。
6. **还不行**:拿一条最小的 curl 复现(见下),把回包和时间发给我们。
```bash title="最小复现"
curl -i https://1zheai.com/v1/messages \
-H "x-api-key: sk-你的Key" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5-5","max_tokens":16,"messages":[{"role":"user","content":"ping"}]}'
```
`-i` 会把状态码和响应头一起打印出来,排查时很有用。
## 错误码速查
| 状态码 | 常见原因 | 怎么办 |
|---|---|---|
| 400 | 请求体有问题:参数名错、字段类型错、`max_tokens` 超过模型上限、带了上游不认的 beta 字段 | 看 `message` 里指出的字段;Claude Code 的情况见下文"Extra inputs are not permitted" |
| 401 | API 密钥无效、已删除、已禁用、已过期、自身额度用完,或没带、放错了请求头 | 回包都是 `Invalid token`,逐项检查;Anthropic 原生用 `x-api-key` 或 `Authorization: Bearer` |
| 403 | 账户余额不足(`billing_error` / `insufficient_quota`);这个 API 密钥没开通该模型;请求 IP 不在这个 API 密钥的白名单里(都是 `permission_error`) | 充值,或在「API 密钥」页编辑这个 API 密钥的模型限制和 IP 白名单 |
| 404 | 路径不对,或模型不存在 / 当前不可用 | `Invalid URL` 核对地址;`not_found_error` / `model_not_found` 核对模型 ID 和可用列表 |
| 413 | 请求体太大 | 减少一次发送的内容,大文件分段 |
| 429 | 上游临时限流。目前我们不对 API 密钥设速率限制 | 稍后重试,批量任务加指数退避 |
| 503 | 模型存在但暂时没有健康的上游服务,或服务临时故障 | 稍后重试;持续失败时提供请求 ID 联系支持 |
| 500 / 502 | 网关或上游临时故障 | 稍后重试;持续出现发邮件到 support@1zheai.com |
| 504 | 请求超时 | 长输出用流式;调大客户端超时 |
| 529 | 上游 Anthropic 过载(`overloaded_error`) | 等几秒重试,或临时换一个模型 |
Anthropic 官方错误类型(`invalid_request_error`、`authentication_error`、`rate_limit_error`、`overloaded_error` 等)的完整含义见[官方 Errors 文档](https://platform.claude.com/docs/en/api/errors)。
上游返回的错误,状态码和 `message` 原样带回,`message` 末尾加上本次请求的 request id。走 `/v1/messages` 时外层是官方的 `{"type":"error","error":{...}}` 结构,`error.type` 按状态码填官方类型;走 `/v1/chat/completions` 时是 OpenAI 的 `{"error":{...}}` 结构。
## 实测回包
下面是 2026-10-15 对 `/v1/messages` 实测的真实回包。走 `/v1/chat/completions` 时内容相同,外层没有 `"type":"error"`,`error` 里多一个 `code` 字段。
```json title="401 API 密钥无效、禁用、过期或额度用完"
{"error":{"message":"Invalid token (request id: 202610150244355244812608268d9d6T1pY7T84)","type":"authentication_error"},"type":"error"}
```
```json title="403 账户余额不足"
{"error":{"type":"billing_error","message":"Insufficient user quota, remaining quota: $0.000000 (request id: 202610150244418753787808268d9d67YNhvwXd)"},"type":"error"}
```
```json title="403 API 密钥没开通该模型"
{"error":{"message":"This token has no access to model claude-sonnet-4-6 (request id: 202610150244377127013108268d9d6yCiFOxJA)","type":"permission_error"},"type":"error"}
```
```json title="403 IP 不在白名单"
{"error":{"message":"Your IP address is not on this token's allowlist (request id: 202610150244409011371208268d9d63tJvd5GD)","type":"permission_error"},"type":"error"}
```
```json title="400 上游参数错误"
{"error":{"type":"invalid_request_error","message":"messages: Unexpected role \"robot\". Allowed roles are \"user\", \"assistant\" or \"system\" (request id: 202610150245008404167198268d9d6sajV9TX3)"},"type":"error"}
```
```json title="404 路径不存在"
{"error":{"message":"Invalid URL (POST /v1/nonexistent)","type":"invalid_request_error","param":"","code":""}}
```
模型不存在或不可用时的 404 说明见[支持的模型](/docs/models/)。回包里的 request id 对应你的这一次请求,反馈问题时带上它。
## 按症状排查
### 401 / Invalid token
- API 密钥复制时多了空格或换行,重新复制一次。
- API 密钥已在控制台删除或禁用,或者已过期、自身额度已用完。这几种情况的回包都是同一句 `Invalid token`。
- Claude Code 里同时设置了 `ANTHROPIC_API_KEY` 和 `ANTHROPIC_AUTH_TOKEN`,而其中一个是旧值:两个只留一个,推荐 `ANTHROPIC_AUTH_TOKEN`。
- `settings.json` 的 `env` 会覆盖终端里 export 的同名变量,改了终端变量不生效时,检查 `~/.claude/settings.json`。
### 404 / Invalid URL
先看错误类型:`not_found_error` 或 `model_not_found` 要检查[模型 ID 与可用列表](/docs/models/)。`Invalid URL` 则检查 `/v1`:OpenAI SDK、Cursor、Cline(OpenAI Compatible)要填到 `https://1zheai.com/v1`;Claude Code 和 Anthropic SDK 只填 `https://1zheai.com`,填了 `/v1` 会变成 `/v1/v1/messages`。
### 403 / error code: 1010
回包只有 `error code: 1010` 这一行、没有 JSON,说明请求在到达网关前被拦下了。目前已知用 Python 标准库 `urllib` 直接发请求会遇到(它默认的 User-Agent 是 `Python-urllib/3.x`)。在请求头里加一个自己的 `User-Agent`,或者改用官方 SDK、`requests`、`httpx`。
### 429 太多请求
目前不对 API 密钥设速率限制。收到 429,通常是上游负载高,稍后重试即可。批量任务建议加指数退避:失败后等一段时间再试,每次等待时间翻倍,并自己用队列控制并发。
### 529 / overloaded_error
上游 Anthropic 暂时过载,和你的 API 密钥、余额无关。等几秒重试;赶时间的话临时换到同系列的另一个模型。
### 超时、流式中途断开
- 长回答尽量用流式(`"stream": true`),不容易被中间网络设备掐断。
- Claude Code 可以用 `API_TIMEOUT_MS` 调大超时,默认 600000(10 分钟)。
- 开着代理的话,先关代理试一次,很多断流来自代理节点。
### Claude Code:直接进了登录界面
说明 Claude Code 没读到你的 API 密钥。在 Claude Code 里运行 `/status`,看 base URL 和凭据来源两行;为空就回到 [Claude Code 接入](/docs/quickstart-claude-code/)检查环境变量或 `settings.json`。
### Claude Code:Extra inputs are not permitted / context_management 报 400
Claude Code 会在请求里带一些实验性的 beta 字段,严格的上游不认就会报 400。设置下面的环境变量关掉它们(来自 Claude Code 官方 LLM gateway 文档):
```bash
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
```
### 余额充足但调用失败
- 如果只有某个模型失败,可能是该模型暂时不可用、ID 写错,或者这个 API 密钥设了模型限制(403 `This token has no access to model …`)。
- 如果全部失败且是 401,看看这个 API 密钥是不是设了额度上限并且已经用完,或者已经过期。在「API 密钥」页的「额度 ($)」和「过期」两列能看到。
- 其它情况看上面的错误码表。
## 还是没解决
发邮件到 support@1zheai.com,附上时间、模型 ID、你用的工具和版本、`curl -i` 的完整输出(删掉 API 密钥)。
---
# AI 与自动化
Source: https://1zheai.com/docs/ai/
Markdown: https://1zheai.com/docs/ai.md
---
title: AI 与自动化
description: 让 AI 助手按需读取文档,了解现有机器读取入口和文档 MCP 的状态。
---
你可以让 AI 助手先读取本站文档,再协助配置工具或编写调用代码。普通文档阅读与模型 API 调用是两件事:读取公开文档不需要提供 API 密钥。
## 可用的机器读取入口
| 入口 | 用途 |
| --- | --- |
| [llms.txt](/docs/llms.txt) | 按栏目发现文档,选择需要读取的页面 |
| [文档清单](/docs/docs-manifest.json) | 获取页面标题、所属栏目、网页与 Markdown 地址 |
| [完整文档文本](/docs/llms-full.txt) | 一次读取全部页面;内容较长,优先按页读取 |
| [首页 Markdown](/docs/index.md) | 阅读不含站点导航的源文档内容 |
每篇文章都有对应的 Markdown 地址,例如 `/docs/quickstart-claude-code/` 对应 `/docs/quickstart-claude-code.md`。也可以使用页面顶部的“复制本页”。Markdown 中可能保留卡片等文档组件标记。
## 交给 AI 的接入任务
复制任务说明,让助手先查支持范围,再配置并验证。
按工具选择协议、地址和模型配置。
## 文档 MCP 状态
本站目前尚未提供可连接的文档 MCP 服务端。请先使用上面的文档地址,或将页面内容复制给助手;不要把模型 API 的 Base URL 当作 MCP 地址。
文档 MCP 的用途是搜索与读取公开资料。账户查询、密钥管理等操作属于另一类能力,不能由公开文档入口获得。
---
# 让 AI 帮你接入
Source: https://1zheai.com/docs/agent-workflow/
Markdown: https://1zheai.com/docs/agent-workflow.md
---
title: 让 AI 帮你接入
description: 可复制的接入任务说明,帮助 AI 先读取资料、核对限制,再完成配置与验证。
---
## 复制任务说明
把下面的说明交给能够读取网页的 AI 助手,并补充工具名称与操作系统。如果助手无法联网,先通过[机器读取入口](/docs/ai/)获取对应文章内容。
```text
请帮助我将现有工具或应用接入 1折AI。
目标工具与版本:[填写]
操作系统或编程语言:[填写]
先读取 https://1zheai.com/docs/llms.txt,找到目标工具或 SDK 的文档。
再读取该页 Markdown,以及 API 参考和模型说明。
要求:
1. 先说明当前支持范围和工具配置要求。
2. 根据目标工具确定 Base URL,不要统一添加或删除 /v1。
3. 模型 ID 以当前文档和密钥可用模型列表为准,不要猜测。
4. 查看现有配置,只修改必要字段,保留其他供应商配置。
5. 使用环境变量或工具提供的凭据存储方式;不要把密钥写入源码、
对话、日志或提交记录。需要密钥时,让我在本地安全配置。
6. 执行会产生费用的测试前,说明测试内容并取得我的同意。
7. 用一次最小请求验证,再提示我在调用日志里核对记录。
8. 如果验证失败,保留脱敏的状态码与请求 ID,按排错文档处理;
不要用反复重试掩盖配置问题。
9. 最后说明修改位置、验证结果、剩余限制及恢复原配置的方法。
```
## 判断是否完成
完成配置不等于完成接入。应同时确认工具返回正常、实际使用的模型符合预期,并且能在[调用日志](/docs/usage-logs/)找到对应记录。
本页是可复制的任务说明,并非已安装的 Agent Skill 或 MCP 服务。任何助手仍需要具备读取文档和操作本地配置的相应能力。
---