AI Proxy Node AI Proxy Node 文档

接入文档

本站完全兼容 OpenAI / Anthropic 两家原生协议,原 SDK 仅需替换 Base URL 即可使用。

基础信息

Base URLhttps://aiproxynode.com
OpenAI 兼容前缀/v1/*
Claude 原生前缀/v1/messages/claude/v1/messages
认证方式Authorization: Bearer sk-xxxxxxx-api-key: sk-xxxxxx

OpenAI 兼容协议

按 OpenAI 官方 ChatCompletions 协议调用即可。模型名使用各家官方名,本站会自动路由到对应上游。

Python
from openai import OpenAI

client = OpenAI(
    api_key="sk-xxxxxx",
    base_url="https://aiproxynode.com/v1",
)

# 通过 OpenAI 协议调任意模型
for model in ["claude-sonnet-4-6", "claude-haiku-4-5", "deepseek-chat", "deepseek-reasoner"]:
    resp = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": "Hi"}],
    )
    print(model, "->", resp.choices[0].message.content)

多模态(图像输入)

Python
resp = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "图里写了什么?"},
            {"type": "image_url", "image_url": {"url": "https://example.com/x.png"}},
        ],
    }],
)

Function Calling / Tools

Python
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "查询某城市天气",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

resp = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "北京天气如何?"}],
    tools=tools,
)

Claude 原生接口

使用 Anthropic 官方 SDK 时,把 base_url 改为 https://aiproxynode.com 即可。

Python
import anthropic

client = anthropic.Anthropic(
    api_key="sk-xxxxxx",
    base_url="https://aiproxynode.com",
)

resp = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hi"}],
)
print(resp.content[0].text)

IDE 客户端接入(Claude Code / Cline / Cursor / Continue)

⚠ 创建 Token 时请选对分组

aiproxynode 一个 token 只绑定一个分组,跨分组不会自动转发:

  • kiro 分组 — 跑 Claude 系列模型 (sonnet / opus / haiku)
  • gptpuls 分组 — 跑 GPT 系列模型 (gpt-5.5 / 5.4 / 5.3-codex)

如果在客户端看到 no available channels under group X,通常是 token 分组与 model 不匹配。

⚡ 一键配置脚本

不想手抄环境变量?下载对应脚本本地运行,脚本会自动备份现有配置并写入新配置。

场景所需分组Windows (.ps1)macOS (.sh)
VSCode + Claude Codekiro下载下载
Claude Desktop + CLIkiro下载下载
VSCode + Cline (走 GPT)gptpuls下载下载
Cursor + Claudekiro下载下载
Cursor 混用 (运行时选 Claude/GPT)运行时选下载下载

使用方法:右键链接 → 另存到本地 → Windows 右键 .ps1 用 PowerShell 运行 / macOS 终端 bash setup-xxx.sh

脚本会提示输入 token 并自动写好配置;不在脚本内做在线验证,首次使用建议在客户端发一条消息确认连通。

常见的 IDE 内 AI 助手都支持通过环境变量或设置项指向自定义 Anthropic 兼容端点。以下是几款常用客户端的接入方法。

Claude Code(VSCode 扩展 / CLI)

Anthropic 官方 Claude Code 通过 ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKEN 两个环境变量切换到本站:

Windows · PowerShell
# 系统级永久生效(推荐)
[Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://aiproxynode.com", "User")
[Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", "sk-xxxxxx", "User")
# 重启 VSCode 后生效
macOS / Linux · bash/zsh
# 写入 ~/.zshrc 或 ~/.bashrc
export ANTHROPIC_BASE_URL="https://aiproxynode.com"
export ANTHROPIC_AUTH_TOKEN="sk-xxxxxx"
# 重启 VSCode / 终端后生效

如果只想在某次会话里临时切换:

CLI
ANTHROPIC_BASE_URL=https://aiproxynode.com \
ANTHROPIC_AUTH_TOKEN=sk-xxxxxx \
claude --model claude-sonnet-4-6
默认模型选择

Claude Code 启动后默认查询本站 /v1/models 拉模型列表,本站当前 Claude 模型可见下方模型列表。运行 /model 命令可在会话中切换。推荐日常用 claude-sonnet-4-6,强推理用 claude-opus-4-7,便宜大量调用用 claude-haiku-4-5

Cline / Roo Code(VSCode 扩展)

  1. 打开 Cline 设置(齿轮图标)
  2. API ProviderAnthropic
  3. Use custom base URL 勾上,填 https://aiproxynode.com
  4. API Key 填本站令牌 sk-xxxxxx
  5. Modelclaude-sonnet-4-6claude-opus-4-7

Cursor

Cursor 不提供 Anthropic Base URL 自定义入口,所有第三方接入都走 OpenAI 兼容协议。在 Cursor Settings → Models 页面:

先看:3 个常见踩坑(80% 配置失败由此引起)
  • 不要同时启用 Anthropic API Key:Cursor 已知 bug — 同时开启 Anthropic Key 与 Override OpenAI Base URL,所有 Claude 调用会返回 422 错误。本站令牌只能填在 OpenAI API Key 框。
  • 模型名不要直接照抄官方:Cursor 会把 claude-sonnet-4-6gpt-4o 这类"看起来是官方模型"的名字优先路由到 Cursor 自家通道,导致请求根本不到本站。请使用本站专属前缀名(见下文步骤 3)。
  • 添加后还得做两件事:自定义模型加进列表后,必须打开右侧开关 toggle ON,并且在聊天框模型下拉里手动选中它,否则 Cursor 仍走默认 Auto/built-in 模型。
  1. 关闭 Anthropic API Key 开关。如果之前开过,请关掉并清空 Anthropic Key 输入框。
  2. 展开 API Keys 段 → 打开 OpenAI API Key 开关 → 输入框粘贴本站令牌 sk-xxxxxx
  3. 打开 Override OpenAI Base URL 开关 → URL 框填 https://aiproxynode.com/v1
  4. 滚到上方 Models 列表,找到 Add or search model 输入框,按下表新增(输完按 Enter):
    填入的别名实际调用的模型用途
    aiproxy/sonnetclaude-sonnet-4-6日常代码、平衡性能与价格(推荐)
    aiproxy/haikuclaude-haiku-4-5轻量任务、最便宜
    aiproxy/opusclaude-opus-4-7强推理、复杂任务
    使用别名而非官方模型名是为了避开 Cursor 的"built-in 优先"路由。站长需先在 new-api 的渠道 → 模型重定向里把这些别名映射到对应的真实模型;普通用户直接照抄即可,无需配置。
  5. 把每个新加的模型右侧开关都打开(ON)。仅添加不开关,Cursor 不会把它们暴露到聊天模型下拉里。
  6. 打开任一聊天/Agent 会话,点左下角模型选择器,从下拉中选中刚加的 aiproxy/sonnet(或其他)。不主动选中的话,Cursor 默认走 Auto = 内置模型,请求不会到本站
如何验证已经走到本站
  1. 在 Cursor 中发一句测试消息
  2. 登录 aiproxynode.com 控制台 → 日志,刷新看是否出现刚才那条请求
  3. 能在日志里看到 → 配置成功;看不到 → 大概率没勾步骤 5 或没在步骤 6 选中
关于 Cursor 内置模型 (GPT-5.4 / Opus 4.6 等)

列表顶部预置的那些模型走 Cursor 自家订阅通道,与本站无关。即使你正确配了 OpenAI Base URL,只要在聊天框里选了内置模型,请求仍会走 Cursor 通道而非本站。

Tab 补全与 Apply 仍走 Cursor 自家

即使配置正确,Cursor 的 Tab 自动补全 和聊天回复的 Apply 应用到文件 这两个功能由 Cursor 自家小模型驱动,不会走本站。只有 Chat/Agent 主对话才走自定义模型。

Continue(VSCode / JetBrains 扩展)

编辑 ~/.continue/config.json,在 models 数组里添加:

config.json
{
  "models": [
    {
      "title": "Claude Sonnet 4.6 via AiProxyNode",
      "provider": "anthropic",
      "model": "claude-sonnet-4-6",
      "apiKey": "sk-xxxxxx",
      "apiBase": "https://aiproxynode.com"
    }
  ]
}
推荐使用 OpenAI 兼容协议

除非业务强依赖 Claude 原生特性(如 tool_use 块、content blocks 结构),优先用 OpenAI 兼容协议 — 调试工具与生态最完整。

流式输出

所有模型都支持流式(Server-Sent Events):

Python
stream = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "写一首五言绝句"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)
curl
curl https://aiproxynode.com/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [{"role": "user", "content": "写诗"}],
    "stream": true
  }'

视频生成 (Seedance SR)

基于 Seedance 2.0 + 超分管线,支持文生视频 / 图生视频 / 视频参考,可选自动生成同步音频。任务异步执行,创建后轮询查结果。

端点

操作方法URL
创建任务POSThttps://aiproxynode.com/v1/videos
查询任务GEThttps://aiproxynode.com/v1/videos/{task_id}
⚠ token 需在 seedance 分组下

aiproxynode 一个 token 只绑定一个分组。请到控制台为视频用途单独创建 token,并把分组选为 seedance;用别的分组调用会返回 no available channel under group X

可用 SKU

model输出单价 (¥/任务)
seedance-2-0-sr-720p720p (480p 底模 + 超分)0.95
seedance-2-0-sr-1080p1080p (720p 底模 + 超分)1.79

创建任务

请求体字段

字段类型必填默认说明
modelstring见上表 SKU
promptstring条件文本提示词;无 images/videos 时必填,500 字内为佳。台词放双引号内
durationint5时长(秒),范围 4–15
ratiostringadaptive16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive
generate_audiobooltrue是否生成同步音频(人声+音效+BGM)。需要纯静音视频请显式传 false
audiosarray参考音频(风格/情绪参考,非人声克隆),见下方音频章节
imagesarray图生视频参考帧
videosarray视频参考
seedint复现种子
negative_promptstring负向提示
fpsint输出帧率

文生视频(带音频)

把台词放在双引号内能优化对白效果:

curl
curl -X POST https://aiproxynode.com/v1/videos \
  -H "Authorization: Bearer sk-xxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-sr-720p",
    "prompt": "一对情侣在咖啡馆窗边对坐。女生轻笑说\"今天天气真好啊\",男生回答\"是啊,我们出去走走吧\",电影质感",
    "duration": 8,
    "ratio": "16:9",
    "generate_audio": true
  }'

纯静音视频

curl
curl -X POST https://aiproxynode.com/v1/videos \
  -H "Authorization: Bearer sk-xxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-sr-720p",
    "prompt": "neon city street in the rain at night",
    "duration": 5,
    "generate_audio": false
  }'

图生视频(URL 数组,最常用)

最简写法就是塞 URL 字符串数组,默认作为参考帧 (reference_image):

curl
curl -X POST https://aiproxynode.com/v1/videos \
  -H "Authorization: Bearer sk-xxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-sr-720p",
    "prompt": "a calm beach scene, gentle waves",
    "duration": 5,
    "images": [
      "https://cdn.example.com/scene1.jpg",
      "https://cdn.example.com/scene2.jpg"
    ]
  }'

图生视频(首尾帧,需 role)

要明确指定首帧 / 尾帧时,改用对象数组并写 role:

curl
curl -X POST https://aiproxynode.com/v1/videos \
  -H "Authorization: Bearer sk-xxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-sr-1080p",
    "prompt": "smooth transition from day to night",
    "duration": 8,
    "images": [
      {"url": "https://cdn.example.com/day.jpg",   "role": "first_frame"},
      {"url": "https://cdn.example.com/night.jpg", "role": "last_frame"}
    ]
  }'

两种写法都接受:"images": ["url1", "url2"] 等价于 "images": [{"url":"url1","role":"reference_image"}, ...]videos(默认 reference_video)、audios(默认 reference_audio)同理。需要 first_frame/last_frame 等具体角色时必须用对象写法。

音频参数详解

generate_audio(推荐使用)

audios(参考音频,非人声克隆)

提供 1–3 段参考音频,模型按其风格/情绪/语速等特征生成新音频。不是把这段音频原样嵌进视频,也不会克隆里面的人声。

最简写法 — URL 字符串数组,默认作为 reference_audio:

json
{
  "model": "seedance-2-0-sr-720p",
  "prompt": "..., 一个温柔的女声轻声说道",
  "audios": ["https://cdn.example.com/voice_sample.wav"]
}

对象写法(等价,只有需要显式带 role 时才用):

json
{
  "audios": [
    {"url": "https://cdn.example.com/voice_sample.wav", "role": "reference_audio"}
  ]
}

规格要求(来自上游):

⚠ 想"把人声原样配进视频"做不到

本接口的 audios 只参考音色/情绪,不嵌入原音轨。如果你的目标是把现成的人声配到生成的视频里,需要拿到视频后用 ffmpeg / Premiere 等工具自己合成。

创建响应

json
{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxxxxxxxxxx",
  "object": "video",
  "model": "seedance-2-0-sr-720p",
  "status": "in_progress",
  "progress": 0,
  "created_at": 1782628820
}

记下 id(或 task_id,两者相同)用于轮询。

轮询任务

curl
curl https://aiproxynode.com/v1/videos/task_xxxxxxxxxxxxxxxxxxxxxxxx \
  -H "Authorization: Bearer sk-xxxxxx"

状态值

status含义
queued排队中
in_progress生成中,继续轮询
completed完成,metadata.url 是带音轨的成品视频
failed失败,error 字段含原因

完成响应

json
{
  "id": "task_xxx",
  "task_id": "kz-cgt-...",
  "object": "video",
  "model": "seedance-2-0-sr-720p",
  "status": "completed",
  "progress": 100,
  "created_at": 1782628820,
  "completed_at": 1782629100,
  "metadata": {
    "url": "https://bk-hs-p-bj-lizhen.tos-cn-beijing.volces.com/.../xxx_output.mp4"
  }
}
⚠ 视频 URL 24h 内有效

上游返回的 metadata.url 是签名链接,默认 24 小时过期。请在到期前下载或转存到自有存储。

轮询建议

Python 最小示例

Python
import time, requests

API = "https://aiproxynode.com"
TOKEN = "sk-xxxxxx"  # seedance 分组下的 token
H = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}

r = requests.post(f"{API}/v1/videos", headers=H, json={
    "model": "seedance-2-0-sr-720p",
    "prompt": '一只猫在沙滩漫步,海浪声轻拍。猫"喵"地叫了一声',
    "duration": 5,
    "ratio": "16:9",
    "generate_audio": True,
}).json()
tid = r["id"]

while True:
    s = requests.get(f"{API}/v1/videos/{tid}", headers=H, timeout=30).json()
    if s["status"] == "completed":
        print(s["metadata"]["url"]); break
    if s["status"] == "failed":
        raise RuntimeError(s.get("error"))
    time.sleep(10)

模型列表

常用模型直接使用官方模型名调用即可。完整可用模型与定价见 主站 → 模型广场

OpenAI

本站目前未开通 OpenAI 渠道,建议改用 claude-sonnet-4-6(综合能力对标 GPT-4o)或 deepseek-chat(高性价比)。后续上线 OpenAI 渠道时此处会同步更新。

Anthropic Claude

推荐使用上述 alias 形式调用。当前活跃版本对应的 dated 形式(claude-haiku-4-5-20251001 / claude-sonnet-4-5-20250929 / claude-opus-4-5-20251101)同样可用——Anthropic 官方 SDK 与 Claude Code 在内部会把 alias 映射成 dated 名发出,无需手动指定。已退役的旧 dated(如 claude-sonnet-4-20250514)会返回 503 model_not_found

DeepSeek

视频生成 (Seedance SR)

异步任务,需调 视频生成接口 创建并轮询。token 必须在 seedance 分组下。

本站当前未开通 Moonshot / 豆包 / Qwen / GLM / Gemini / OpenAI 渠道,请勿调用上述模型名(会返回 503 No available channel)。完整可用模型与定价以 主站模型广场为准。

错误码

HTTP错误类型说明
400invalid_request_error请求参数错误,常见为缺字段或字段类型错
401authentication_errorAPI Key 不正确或被禁用
402insufficient_quota余额不足或令牌额度耗尽
403forbidden令牌无该模型权限
404not_found模型名不存在或已下线
429rate_limit_exceeded触发限流,重试或降低并发
500internal_error上游或网关异常,请重试
502 / 503upstream_error上游临时不可用,自动重试或换模型
推荐做法

对外服务务必加幂等重试(指数退避),并对 5xx 失败做模型自动降级。