快速开始

按客户端分节:Claude Code、Codex CLI、opencode、通用 OpenAI SDK。每段命令都可以直接复制运行,只需把示例 key 换成你自己的。

环境变量是最快的一条路,不是唯一的一条
下面每节都先给环境变量的写法,因为它最短。但 coding 类客户端大多还有自己的配置文件(Claude Code 的 ~/.claude、Codex 的 ~/.codex/config.toml、opencode 的 opencode.json),配置文件里的 provider 设置通常优先于环境变量:如果你之前配过,导出环境变量不会生效,得去那里改 base_url 与鉴权。具体字段名以各客户端自己 的文档为准 —— 它们的配置格式变得比我们快,我们不在这里复述一份会过期的字段表。

0. 先建一个 API Key

登录后进入 令牌管理创建。Key 以 ak- 开头,只在创建时完整显示一次,之后只保留后 4 位。

建议在创建时就设好该 Key 的价格上限与允许模型:Key 级策略与账号级策略合并时更严的一方胜出,因此收紧 Key 不会被账号级设置放开。

已经登录?用控制台里的接入指南更省事
令牌管理页里每个 Key 都带一份**同款接入指南**,且新建成功那一刻会把明文 key 直接填进下面这些片段里(本页因为是公开文档,只能给占位符)。 它还多两个客户端场景:Windows 的 CMD / PowerShell 写法,以及 cc-switch 一键导入 —— 本页只覆盖 macOS / Linux。

1. Claude Code

Claude Code 走 anthropic 协议,打 POST /v1/messages。 base_url 是根地址,不带 /v1

shell
export ANTHROPIC_BASE_URL=https://api.akrouter.com
export ANTHROPIC_AUTH_TOKEN=ak-xxxxxxxxxxxxxxxxxxxxxxxx

claude

想常驻的话把两行 export 写进 ~/.zshrc~/.bashrc。 若你在 ~/.claude 的配置里已经写过 base_url 或 token,那份配置通常盖过环境变量 —— export 完没生效先去那里看一眼。

count_tokens 也已实现
Claude Code 在发请求前会调 POST /v1/messages/count_tokens 估算上下文占用, 以决定何时压缩历史。这个端点我们实现了 —— 缺了它,Claude Code 会退化到本地粗估, 表现为上下文压缩时机不准。

2. Codex CLI

Codex 走 openai_responses 协议,打 POST /v1/responses。 base_url /v1(与 Claude Code 相反,别抄错)。

Codex 不能只靠环境变量接入:它按 ~/.codex/config.toml 里的 provider 定义决定打哪个 wire API,凭据单独读 ~/.codex/auth.json。 两个文件缺一不可。

toml
# ~/.codex/config.toml
model_provider = "OpenAI"
model = "gpt-5.5"
disable_response_storage = true

[model_providers.OpenAI]
name = "OpenAI"
base_url = "https://api.akrouter.com/v1"
wire_api = "responses"
requires_openai_auth = false
http_headers = { "x-openai-actor-authorization" = "local-image-extension" }

key 放在另一个文件 ~/.codex/auth.json 里,不是 config.toml:

json
{ "OPENAI_API_KEY": "ak-xxxxxxxxxxxxxxxxxxxxxxxx" }
三个字段少一个就跑不通
  • wire_api = "responses" —— 少了会退回 chat/completions,Responses API 的 reasoning item 当场丢失,表现是「能用,但推理链断了」,不报错、难复现。
  • requires_openai_auth = false —— 我们不是 OpenAI 官方登录,写 true 会走不存在的 OAuth 流程。
  • 那行 http_headers —— 缺了直接 502
改完要完全退出 Codex 再重开,热重载读不到。 Codex 的配置字段变得比我们的文档快,以上仅为最小可用示例,字段名以 Codex 自己的文档为准。

3. opencode

opencode 在 ~/.config/opencode/opencode.json(不存在就新建)里声明 provider。 走 Anthropic 协议用 @ai-sdk/anthropic,此时 baseURL 要带 /v1(这是 ai-sdk 的要求,和 Claude Code 那节的根地址不是一回事,别混)。

json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "akrouter": {
      "npm": "@ai-sdk/anthropic",
      "name": "akrouter",
      "options": {
        "baseURL": "https://api.akrouter.com/v1",
        "apiKey": "ak-xxxxxxxxxxxxxxxxxxxxxxxx"
      },
      "models": {
        "claude-sonnet-5": { "name": "claude-sonnet-5" }
      }
    }
  }
}
models 的键要和对外模型名逐字一致
想走我们的 OpenAI 兼容口,就把 npm 换成 @ai-sdk/openai-compatiblebaseURL 换成 https://api.akrouter.com/v1。 不想把 key 写进会被提交的文件,可以把 apiKey 写成 {env:AKROUTER_API_KEY} 再从环境变量取。

4. OpenAI SDK / 通用客户端

任何兼容 OpenAI 的 SDK 都走 POST /v1/chat/completions

python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.akrouter.com/v1",
    api_key="ak-xxxxxxxxxxxxxxxxxxxxxxxx",
)

resp = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "hello"}],
    stream=True,
)
for chunk in resp:
    print(chunk.choices[0].delta.content or "", end="")
typescript
import OpenAI from 'openai'

const client = new OpenAI({
  baseURL: 'https://api.akrouter.com/v1',
  apiKey: process.env.AKROUTER_API_KEY,
})

const stream = await client.chat.completions.create({
  model: 'gpt-5.5',
  messages: [{ role: 'user', content: 'hello' }],
  stream: true,
})

5. cc-switch(一键导入)

cc-switch 是一个跨平台的供应商切换器,统一托管 Claude Code / Codex 这些客户端的配置文件, 一键就能在多个供应商之间切换。装了它之后,下面的链接会直接唤起它并弹出导入确认框 —— 不用你手动改任何文件。按你要接的客户端选一个:

本页链接里带的是占位符 key
公开文档没有你的真实 key,上面两个链接填的是占位符 ak-xxxxxxxxxxxxxxxxxxxxxxxx —— 导入后需要在 cc-switch 里把它换成你自己的。已登录的话更省事: 令牌管理 页里每个 Key 的接入指南都有同款一键导入,且会直接把真实 key 填进链接里,点了就能用。

点了没反应 = 本机还没装 cc-switch。浏览器会拦截未知协议,这是正常的,先去装一下再回来点。

模型名

请求里填的是对外模型名(如 claude-sonnet-5), 不是某个商户的上游模型名。路由会在支持该模型的所有在架渠道里挑一条, 并在响应头回传实际选中的渠道。

下一步