WanAPIs 开发者文档

快速接入 WanAPIs

使用一个 OpenAI 兼容 API Key 调用 GPT、Claude、Gemini、DeepSeek、图像、视频和语音模型。现有项目通常只需要替换 base_url 和 API Key。

介绍

WanAPIs 是统一 AI API 网关,提供 OpenAI 兼容接口、多渠道路由、失败转移、模型市场、调用日志和透明计费。你可以把不同上游的模型统一放在一个 endpoint 下管理。

兼容 OpenAI

支持常用 SDK、Chat Completions、Responses 和工具调用。

统一模型市场

在一个页面查看模型能力、供应商、价格和调用入口。

生产级稳定性

通过多渠道、分组、重试和日志降低上游波动影响。

快速开始

  1. 注册账号进入控制台创建账号并完成邮箱验证。
  2. 创建 API Key在令牌页面生成密钥,并按项目设置额度。
  3. 替换 Base URL把 OpenAI SDK 的 baseURL 改成 https://api.wanapis.com/v1。
  4. 选择模型从模型市场或定价页选择模型 ID。
cURL
curl https://api.wanapis.com/v1/chat/completions \
  -H "Authorization: Bearer $WANAPIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-pro",
    "messages": [
      { "role": "user", "content": "用三句话解释 RAG" }
    ]
  }'

认证

所有请求都需要在 Header 中携带 Bearer Token。不要把 API Key 放在前端浏览器代码里,建议通过你的后端服务转发请求。

项目说明示例
Base URLOpenAI 兼容 API 根地址https://api.wanapis.com/v1
Header请求认证方式Authorization: Bearer sk-...
Content-TypeJSON 请求体application/json

密钥管理

推荐按项目创建不同 API Key,设置额度上限。上线后通过日志页观察模型、分组、耗时和扣费。

Chat Completions

兼容 /v1/chat/completions,适合多数现有 OpenAI SDK、聊天机器人、Agent 和工具调用项目。

Node.js
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.WANAPIS_API_KEY,
  baseURL: "https://api.wanapis.com/v1",
});

const response = await client.chat.completions.create({
  model: "deepseek-v4-pro",
  messages: [{ role: "user", content: "写一个 TypeScript 重试函数" }],
});

console.log(response.choices[0].message.content);
Python
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["WANAPIS_API_KEY"],
    base_url="https://api.wanapis.com/v1",
)

response = client.chat.completions.create(
    model="gemini-3.5-flash",
    messages=[{"role": "user", "content": "给我一个产品发布清单"}],
)

print(response.choices[0].message.content)

Responses API

需要使用新一代 Responses 工作流时,可以调用 /v1/responses。如果遇到上游 503 或高负载,建议在业务侧增加指数退避重试。

Responses
curl https://api.wanapis.com/v1/responses \
  -H "Authorization: Bearer $WANAPIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "input": "分析这段日志并给出排障步骤"
  }'

模型市场

模型市场会从 WanAPIs 定价接口同步数据,按视频、图像、LLM、音频分类展示能力、供应商和价格。

客户端 / IDE 集成

这是重点内容。所有支持自定义 base_url 的 OpenAI / Anthropic 兼容客户端都可以接入 WanAPIs。推荐先把本机配置跑通,再接 VS Code 插件: Claude Code → CC Switch → Codex Desktop → Codex CLI → VS Code

1. Claude Code(推荐)

Anthropic 官方 CLI agent。配 WanAPIs 后可使用 claude-opus-4-7claude-sonnet-4-6 等 Claude 系列模型。
Claude Code
# 1. 安装,需要 Node.js >= 18
npm i -g @anthropic-ai/claude-code

# 2. 配环境变量,建议写入 ~/.zshrc 或 ~/.bashrc
export ANTHROPIC_BASE_URL="https://api.wanapis.com"
export ANTHROPIC_AUTH_TOKEN="sk-xxx"

# 3. 在项目目录启动
cd your-project && claude

首次进入会让你选择模型。确认安装可运行 claude --version

2. CC Switch(桌面 GUI 切换器)

CC Switch 可以统一管理 Claude Code / Codex / Gemini CLI 等 agent 的 provider,一键切换 base_url 和 token。

CC Switch 配置示意

入口codex / claude 分组 -> 右上角 +
NameWanAPIs
Base URLhttps://api.wanapis.com
API Keysk-xxx
启用保存后点击启用 / Switch to
CC Switch
# 从 GitHub Releases 下载:
# https://github.com/farion1231/cc-switch/releases

# 1. 打开 CC Switch
# 2. 进入 codex 或 claude 分组
# 3. 点击右侧 + 添加 WanAPIs
# 4. 保存后点击启用 / Switch to
# 5. 重启 Codex、VS Code 或 Claude Code

保存后请重启 Codex、VS Code 或 Claude Code,避免旧配置继续驻留在进程环境中。

3. Codex 桌面端(macOS / Windows)

OpenAI 官方 Codex 桌面应用。桌面端、CLI 和 IDE 扩展共用 ~/.codex/config.toml;Windows 原生路径是 %USERPROFILE%\.codex\config.toml

Codex Desktop 配置项

认证方式API Key
配置文件~/.codex/config.toml
Windows%USERPROFILE%\.codex\config.toml
Providermodel_provider = "wanapis"
Base URLhttps://api.wanapis.com/v1
Wire APIresponses
~/.codex/config.toml
model = "gpt-5.5"
model_provider = "wanapis"

[model_providers.wanapis]
name = "WanAPIs"
base_url = "https://api.wanapis.com/v1"
wire_api = "responses"
env_key = "WANAPIS_API_KEY"
环境变量
# macOS / Linux,写入 ~/.zshrc 或 ~/.bashrc 后重开终端
export WANAPIS_API_KEY="sk-xxx"

# Windows PowerShell,持久写入当前用户环境变量
[Environment]::SetEnvironmentVariable("WANAPIS_API_KEY", "sk-xxx", "User")
  1. 1. 安装并打开 Codex 桌面端,在认证方式里选择 API Key,不使用 ChatGPT 账号登录模式。
  2. 2. 创建上面的 config.toml 文件,把模型和 provider 指向 WanAPIs。
  3. 3. 设置 WANAPIS_API_KEY 后重启 Codex 桌面端;如果同时使用 VS Code/Cursor,也一起重启。
  4. 4. Windows 原生 Codex 和 WSL Codex 不共用同一个 home;WSL 里需要单独写 ~/.codex/config.toml,或设置 CODEX_HOME 指向同一目录。

模型选择

推荐代码任务优先用 gpt-5.5claude-sonnet-4.7。如果某个模型不支持 Responses 格式或工具调用,先在模型市场换一个支持工具调用的模型验证。

4. Codex CLI

OpenAI 官方代码 agent。推荐使用 responses wire API,并把 provider 写入 ~/.codex/config.toml
Codex CLI
# 1. 安装
npm i -g @openai/codex

# 2. 编辑 ~/.codex/config.toml
cat > ~/.codex/config.toml <<'EOF'
model = "gpt-5.5"
model_provider = "wanapis"

[model_providers.wanapis]
name = "WanAPIs"
base_url = "https://api.wanapis.com/v1"
wire_api = "responses"
env_key = "WANAPIS_API_KEY"
EOF

# 3. 设置 token
export WANAPIS_API_KEY="sk-xxx"

# 4. 在项目目录启动;它会读取同一个 ~/.codex/config.toml
cd your-project && codex

5. VS Code 插件

分两类:官方 Codex / Claude Code 插件通常复用本机 CLI 配置;Cline、Continue、Roo Code 等第三方插件直接在插件设置里填 URL、Key 和模型。

官方 Codex 插件(openai.chatgpt)

在 VS Code 扩展市场安装 openai.chatgpt 这个插件不在聊天框里填 Base URL;先把 ~/.codex/config.toml 配好,然后重启 VS Code。官方 Codex 扩展会复用本机 Codex 配置中的 model 和 provider 设置。

官方 Codex 插件配置路径

安装入口VS Code -> openai.chatgpt
配置文件~/.codex/config.toml
base_urlhttps://api.wanapis.com/v1
env_keyWANAPIS_API_KEY
生效方式保存配置后重启 VS Code
~/.codex/config.toml
model = "gpt-5.5"
model_provider = "wanapis"

[model_providers.wanapis]
name = "WanAPIs"
base_url = "https://api.wanapis.com/v1"
wire_api = "responses"
env_key = "WANAPIS_API_KEY"

Claude Code VS Code 插件

在 VS Code 扩展市场安装 Claude Code 核心不是在插件里单独填 URL,而是先确认终端里的 claude 已经能正常连接 WanAPIs;插件会复用本机 ~/.claude 配置。改完配置后重启 VS Code。

Claude Code 插件检查项

CLI 验证终端运行 claude 能正常对话
环境变量ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN
配置目录~/.claude/settings.json / config.json
常见动作修改配置后重启 VS Code

Cline(原 Claude Dev,推荐)

打开 Cline 侧边栏,点击设置齿轮,Provider 选择 OpenAI Compatible 然后填写 Base URL、API Key 和 Model ID。

Cline 设置面板

API ProviderOpenAI Compatible
Base URLhttps://api.wanapis.com/v1
API Keysk-xxx
Model IDclaude-opus-4-7
验证点击 Verify 或发起一次对话
Cline settings
API Provider: OpenAI Compatible
Base URL: https://api.wanapis.com/v1
API Key:  sk-xxx
Model:    claude-opus-4-7
# 也可以使用 gpt-5.5 / gemini-3.5-flash / deepseek-v4-pro

Continue

Continue 当前推荐使用 YAML 配置。打开 Continue 设置里的配置文件,给 models 增加一个 provider: openai 模型,并通过 apiBase 指向 WanAPIs。

~/.continue/config.yaml
name: WanAPIs
version: 0.0.1
schema: v1

models:
  - name: WanAPIs Claude Opus 4.7
    provider: openai
    model: claude-opus-4-7
    apiBase: https://api.wanapis.com/v1
    apiKey: sk-xxx
    roles:
      - chat
      - edit
      - apply

Roo Code

打开 Roo Code 侧边栏设置,API Provider 选择 OpenAI Compatible Roo Code 官方文档说明这里需要填 Base URL、API Key 和 Model ID;如果模型不支持工具调用,需要换成支持 tool calling 的模型。

Roo Code 设置面板

API ProviderOpenAI Compatible
Base URLhttps://api.wanapis.com/v1
API Keysk-xxx
Modelgpt-5.5 / claude-opus-4-7
注意优先选择支持工具调用的模型

6. 桌面客户端 / 浏览器扩展

通用配置:Provider 选 OpenAI 兼容 Base URL 填 https://api.wanapis.com/v1,API Key 填 sk-xxx
  • CherryStudio:中文圈常用桌面 LLM 客户端,适合多 provider 切换。
  • ChatBox:跨平台桌面客户端,设置简单。
  • NextChat / ChatGPT-Next-Web:Web / 桌面双形态,支持自部署。
  • LobeChat:Web 客户端,支持插件生态。
  • Page Assist / Sider:浏览器扩展侧边栏 LLM。

异步任务

图片、视频和其它长耗时任务建议走异步任务接口或控制台任务能力,避免公网入口超时。任务创建后通过任务 ID 轮询状态,或配置回调地址接收结果。

提交图片任务
POST /v1/images/gpt-image-2/generation

# 模型名放在 URL 路径;body 与同步接口一致
# {"prompt": "...", "size": "1024x1024", "image_urls": [...]}
# 立即返回: {"data":[{"status":"submitted","task_id":"task_xxx"}]}
提交视频任务
POST /v1/video/generations

# 模型名放在请求体的 model 字段(OpenAI 兼容)
# {"model": "doubao-seedance-2.0", ...}
查询任务 / 下载结果
# 图片任务:轮询通用任务接口
GET /v1/tasks/{task_id}

# status: submitted | processing | completed | failed
# 完成后图片在 data.result.image_urls(数组,可能是 data URL/base64)

# 视频任务:改用视频专用接口
GET /v1/video/generations/{task_id}   # 地址在 metadata.url

长任务建议

视频生成、图片编辑、Midjourney 类任务通常耗时较长。业务侧应保存 task id,并为 pending、running、failed、completed 状态分别处理。

图片生成

图片生成走 OpenAI 兼容的同步入口 POST /v1/images/generations,模型名放在请求体 model 字段。gpt-image-2 用 prompt 出图,加 image_urls 即变图生图(图像编辑)。响应同步返回,图片在 data[0].b64_json(base64 PNG)。

gpt-image-2

通用图片模型,文生图 + 图生图(图像编辑),参考图最多 16 张。

flux / imagen / seedream

其它图片模型请以模型市场实际显示为准。

参数类型必填说明
modelstring固定 gpt-image-2。
promptstring图片描述或改写指令,中英文均可。
image_urlsstring[]图生图/图像编辑的参考图:公网 URL 或 base64 data URL(可混用),最多 16 张。
sizestring像素格式 WxH 只决定画面比例(如 1024x1024 方图、1536x1024 横图);比例字符串如 16:9 不认。输出总分辨率固定约 1.5MP(约 1254×1254),更大尺寸 / 4k 不会得到更多像素。
ninteger生成张数,默认 1。
文生图(Text-to-image)
curl https://api.wanapis.com/v1/images/generations \
  -H "Authorization: Bearer $WANAPIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "一只橘猫坐在窗台上看夕阳,水彩画风格",
    "size": "1024x1024"
  }'

图生图(图像编辑):同一入口,加上 image_urls 传参考图(公网 URL 或 data:image/png;base64,... 内联图,可多张),prompt 作为改写指令。

图生图 / 图像编辑(Image-to-image)
curl https://api.wanapis.com/v1/images/generations \
  -H "Authorization: Bearer $WANAPIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "把这张图改成夜景霓虹赛博朋克风格,保留猫的主体",
    "image_urls": [
      "https://example.com/cat.png"
    ]
  }'
响应(同步返回)
{
  "created": 1783144062,
  "data": [
    { "b64_json": "iVBORw0KGgoAAAANSUhEUgAA...<base64 PNG>" }
  ]
}

实测要点

① 图片以 base64 返回在 data[0].b64_json,base64 解码即得 PNG。② 单张约 40–60 秒,接近 Cloudflare 100 秒上限;更慢/更大的任务建议走异步任务入口避免超时(见「异步任务」)。③ size 用像素格式(如 1536x1024)才生效,比例格式(16:9)当前会被忽略。

视频生成

视频生成统一归到视频能力目录下。模型配置方法放在本目录下,例如 Seedance 2.0、Veo、Kling、Vidu 等。所有视频模型默认使用异步任务模式:提交 POST /v1/video/generations(模型名放请求体 model 字段),再轮询任务结果。

Seedance 2.0

字节豆包视频生成,支持文生视频、图生视频、首尾帧和参考素材。

Veo / Kling / Vidu

其它视频模型后续会按同样结构补充独立配置方法。

Seedance 2.0

Seedance 2.0 是字节豆包视频生成模型,适合文生视频、图生视频、首尾帧过渡和参考素材驱动的视频任务。WanAPIs 使用异步任务接口封装长耗时调用:提交任务立即返回 task_id 立即返回,再轮询 /v1/video/generations/{task_id} 获取结果。

提交路径(OpenAI 兼容)

WanAPIs 视频提交入口是 POST /v1/video/generations(单数 video),模型名放在请求体的 model 字段,不放在 URL。轮询 GET /v1/video/generations/{task_id};完成后视频可经 GET /v1/videos/{task_id}/content 下载。

请求参数约定(重要)

清晰度、比例、首尾帧/参考素材等参数放在 metadata 对象里(resolution / ratio / content / generate_audio),时长用顶层 seconds(字符串,如 "5"),简单图生视频可直接用顶层 images 传参考图。把 resolution 写在顶层会被忽略,导致按默认 720p 出图。首尾帧用 metadata.content 数组,每项带 role(first_frame / last_frame / reference_image)。

doubao-seedance-2.0

标准版,画面质量优先,适合正式素材生成。

doubao-seedance-2.0-fast

速度版,适合草稿、批量预览和低延迟场景。

doubao-seedance-2.0-face

人像 / 面部一致性场景优先使用,具体可用性以模型市场为准。

doubao-seedance-2.0-pro

高质量或增强版本,如模型市场未显示则代表当前不可用。

文生视频
curl https://api.wanapis.com/v1/video/generations \
  -H "Authorization: Bearer $WANAPIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0",
    "prompt": "一只橘猫在清晨的窗边伸懒腰,镜头缓慢推进,柔和自然光,电影感",
    "seconds": "5",
    "metadata": {
      "resolution": "720p",
      "ratio": "16:9",
      "generate_audio": true
    }
  }'
图生视频
curl https://api.wanapis.com/v1/video/generations \
  -H "Authorization: Bearer $WANAPIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0-fast",
    "prompt": "让照片中的人物自然转身看向镜头,微风吹动头发,背景保持一致",
    "images": ["https://example.com/portrait.jpg"],
    "seconds": "5",
    "metadata": {
      "resolution": "720p",
      "ratio": "adaptive"
    }
  }'
首尾帧过渡
curl https://api.wanapis.com/v1/video/generations \
  -H "Authorization: Bearer $WANAPIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0",
    "prompt": "从白天城市街景平滑过渡到夜晚霓虹灯街景,镜头向前移动",
    "seconds": "5",
    "metadata": {
      "resolution": "720p",
      "ratio": "16:9",
      "content": [
        {"type": "image_url", "role": "first_frame", "image_url": {"url": "https://example.com/day.jpg"}},
        {"type": "image_url", "role": "last_frame", "image_url": {"url": "https://example.com/night.jpg"}}
      ]
    }
  }'
项目说明示例
prompt视频生成提示词。写清主体、动作、场景、镜头、风格和限制条件。"电影感推镜"
seconds视频时长(秒),顶层字段,字符串。常用 "5" / "10",具体上限以模型实际返回为准。"5"
images图生视频参考图(顶层数组)。通常传 1 张;不带角色时默认作首帧/参考图。["https://...jpg"]
metadata.resolution输出清晰度,放在 metadata 里。480p / 720p / 1080p,具体以模型市场和上游返回为准。720p
metadata.ratio视频比例(metadata)。常用 16:9、9:16、1:1;图生视频也可用 adaptive。16:9
metadata.content首尾帧/参考素材数组(metadata),每项 type=image_url 并带 role:first_frame / last_frame / reference_image。first_frame
metadata.generate_audio是否生成同步音频(metadata)。开启后耗时可能更长。true
metadata.return_last_frame是否返回末帧(metadata),方便做连续镜头或下一段视频的首帧。true

提交响应

response
{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxx",
  "object": "video",
  "model": "doubao-seedance-2.0",
  "status": "queued",
  "progress": 0,
  "created_at": 1780000000
}

轮询任务

poll
curl https://api.wanapis.com/v1/video/generations/task_xxxxxxxxxxxxxxxxxxxxxxxxxx \
  -H "Authorization: Bearer $WANAPIS_API_KEY"
completed result
{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxx",
  "object": "video",
  "model": "doubao-seedance-2.0",
  "status": "completed",
  "progress": 100,
  "created_at": 1780000000,
  "completed_at": 1780000180,
  "metadata": {
    "url": "https://api.wanapis.com/v1/videos/task_xxxxxxxxxxxxxxxxxxxxxxxxxx/content"
  },
  "error": null
}

生产建议

任务状态为 queuedin_progress 时每 5 到 10 秒轮询一次即可;遇到 failed 时记录 task id、模型名和错误信息。图生视频请使用公网可访问的 HTTPS 图片 URL,避免上游无法拉取素材。

计费与额度

WanAPIs 按模型倍率和实际 token 或任务计费。文本模型可按输入和输出分别计算,任务类模型通常按次或按规格计费。

项目说明示例
输入价格model_ratio × $2 / 1M tokensinput_tokens
输出价格model_ratio × completion_ratio × $2 / 1M tokensoutput_tokens
额度单位控制台余额实时扣减,可在日志中核对$1 = 500,000 quota

错误与重试

API 返回标准 HTTP 状态码。建议对 429、500、502、503、504 做有限重试,对 400、401、403 直接提示配置或权限问题。

项目说明示例
401API Key 缺失或无效检查 Authorization Header
429触发限流或额度保护降低并发或更换分组
503上游或系统负载过高等待后重试,使用退避策略

迁移指南

从 OpenAI 官方或其它聚合平台迁移时,通常保留 SDK 和请求结构,只替换以下两项:

环境变量
OPENAI_API_KEY=$WANAPIS_API_KEY
OPENAI_BASE_URL=https://api.wanapis.com/v1

然后把模型 ID 改为 WanAPIs 模型市场中可用的模型。上线前建议先在低并发环境做 10 到 20 次请求,确认响应格式、token 统计和扣费符合预期。

支持

如果遇到渠道、计费、模型或响应格式问题,请带上请求时间、模型 ID、request id 和错误信息联系支持。