接入文档
Waytocc 接入文档
Waytocc 是一个综合网关 —— 对话(Claude / GPT)、AI Agent(Claude Code / Codex)和生图(gpt-image-2),三类接口互相独立,各用各的密钥。先选你要用的:
概览
对话:Claude · GPT
Anthropic、OpenAI 两种协议原生兼容,真模型直连,支持流式。
AI Agent
Claude Code、Codex 改个 Base URL 就接上,跑长任务、写代码。
生图:gpt-image-2
文生图 / 图生图,OpenAI 兼容,中文 prompt 原生支持。
官方协议兼容
沿用各家官方 SDK,只改 Base URL,代码一行不用动。
住宅 IP 直连
上游走海外住宅出口,稳定、低风控。
按量计费
对话按 token、生图按张,¥1=$1 充值,余额用量实时可见。
拿到密钥
- 1. 打开 waytocc.com,用邮箱注册。
- 2. 进「钱包」充值任意套餐。
(有朋友的邀请码?充值时填上,首充有加送 + 体验额度) - 3. 到「API 密钥」页点「新建密钥」。密钥只显示这一次,立刻复制保存!
下面例子里的 YOUR_API_KEY 全部换成你的密钥(形如 sk-...)。
Claude 对话(Messages API)
Waytocc 提供真 Claude 对话接口,完全兼容 Anthropic 的 POST /v1/messages。鉴权用 x-api-key(或 Authorization: Bearer),模型填 claude-opus-5。
curl https://api.waytocc.com/v1/messages \
-H "x-api-key: YOUR_CLAUDE_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"model":"claude-opus-5","max_tokens":1024,"stream":true,"messages":[{"role":"user","content":"用一句话介绍你自己"}]}'返回与 Anthropic 官方完全一致,文本在 content[0].text。建议带 stream:true —— 长回答非流式在边缘约 100 秒可能 524 超时。按 token 计费(输入 + 输出),用量在「用量历史」可见。
GPT 对话(OpenAI 兼容)
同一个网关也提供 OpenAI 兼容的对话接口 POST /v1/chat/completions,模型填 gpt-5.6-sol(同代还有 gpt-5.6-terra / gpt-5.6-luna,更省的有 gpt-5.4 / gpt-5.4-mini),鉴权用 Authorization: Bearer。
curl https://api.waytocc.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_OPENAI_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.6-sol","stream":true,"messages":[{"role":"user","content":"用一句话介绍你自己"}]}'返回与 OpenAI 官方一致,文本在 choices[0].message.content(流式在 delta.content)。建议带 stream:true,按 token 计费。
用 Claude Code
因为对话接口是 Anthropic 兼容的,官方 Claude Code 直接把 Base URL 指过来就能用 —— 设两个环境变量即可,密钥用 Claude 分组的那把。
npm i -g @anthropic-ai/claude-code
export ANTHROPIC_BASE_URL=https://api.waytocc.com
export ANTHROPIC_AUTH_TOKEN=YOUR_CLAUDE_KEY
claudeANTHROPIC_BASE_URL 用根域名(不带 /v1),ANTHROPIC_AUTH_TOKEN 填你的密钥。其它 Anthropic 兼容客户端(Cline、各类 SDK)同理。
用 Codex CLI
OpenAI 官方 Codex CLI 也能直接接 Waytocc —— 放好下面两个文件(密钥用 ChatGPT 分组的那把),进任意项目跑 codex 即可。
1. ~/.codex/config.toml(放在文件开头)
model_provider = "OpenAI"
model = "gpt-5.6-sol"
review_model = "gpt-5.6-sol"
model_reasoning_effort = "xhigh"
disable_response_storage = true
network_access = "enabled"
windows_wsl_setup_acknowledged = true
model_context_window = 1000000
model_auto_compact_token_limit = 900000
[model_providers.OpenAI]
name = "OpenAI"
base_url = "https://api.waytocc.com/v1"
wire_api = "responses"
requires_openai_auth = true2. ~/.codex/auth.json
{ "OPENAI_API_KEY": "YOUR_OPENAI_KEY" }base_url 指向 https://api.waytocc.com/v1,模型 gpt-5.6-sol。安装:npm i -g @openai/codex。若报 403 dispatch,同 GPT 对话:把密钥分组切到 ChatGPT 那一组。
文生图(Text → Image)
给一句 prompt,生成一张图。POST /v1/images/generations,JSON 请求体。复制下面任意一种,把密钥换上直接跑。
curl -sS -m 185 https://api.waytocc.com/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "a red panda eating bamboo, studio lighting",
"n": 1,
"response_format": "b64_json"
}' \
| python3 -c "import sys,json,base64; d=json.load(sys.stdin); open('out.png','wb').write(base64.b64decode(d['data'][0]['b64_json'])); print('saved out.png')"成功返回 data[0].b64_json(图片的 base64),解码写文件即可。
图生图(Image → Image)
传一张图 + 一句 prompt,在原图基础上改。POST /v1/images/edits,multipart/form-data(图片放 image 字段)。注意 endpoint 是复数 edits。
curl -sS -m 185 https://api.waytocc.com/v1/images/edits \
-H "Authorization: Bearer YOUR_API_KEY" \
-F model=gpt-image-2 \
-F [email protected] \
-F prompt="put the subject in a snowy forest at night" \
-F response_format=b64_json \
| python3 -c "import sys,json,base64; d=json.load(sys.stdin); open('out.png','wb').write(base64.b64decode(d['data'][0]['b64_json'])); print('saved out.png')"把 input.png 换成你自己的图(PNG / JPG / WebP),返回格式和文生图一样。
参数说明
model是固定 gpt-image-2(注意是 -2)。prompt是想生成 / 修改成什么样,越具体越好,支持中文。image图生图必填图生图上传的原图,multipart 的 image 字段(PNG/JPG/WebP)。n否生成几张,默认 1。size否尺寸偏好(1024x1024 / 1024x1536 / 1536x1024 / auto)。实际输出尺寸由上游模型决定,可能与请求不同,计费按实际输出落档 —— 见「价格」。response_format否建议 b64_json(默认);url 为内部受控地址,不可公开访问。返回格式
成功返回 200,图片在 data[0].b64_json 里,是纯 base64(无需去前缀),直接解码写文件即可。
{
"created": 1781184210,
"data": [
{ "b64_json": "iVBORw0KGgoAAAANSUhEUg..." }
],
"usage": {
"input_tokens": 8,
"output_tokens": 0,
"total_tokens": 8
}
}生成视频
视频是异步任务,分两步:POST 提交拿到 task_id,然后轮询到 succeeded 再取下载地址。提交返回 200 只代表任务受理成功,响应里不含视频。
# 1. 提交任务,立刻返回 task_id
curl -sS -X POST https://api.waytocc.com/catech/v1/video/generations \
-H "Authorization: Bearer YOUR_VIDEO_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-cn-2-0-mini",
"input": { "prompt": "一只橘猫在窗台上伸懒腰" },
"parameters": { "resolution": "480p", "duration": 4, "ratio": "16:9" }
}'
# → {"id":"task_xxx","object":"video.job","status":"queued"}
# 2. 轮询,succeeded 后取 result.data[0].url
curl -sS https://api.waytocc.com/catech/v1/video/generations/task_xxx \
-H "Authorization: Bearer YOUR_VIDEO_KEY"
# 3. 下载(地址自带签名,不要再带 Authorization)
curl -sS -o out.mp4 "$VIDEO_RESULT_URL"轮询建议 10 秒一次。实测 4 秒 480p 约 3–4 分钟出片,分辨率和时长越高越久,客户端超时预算请留够 15 分钟。
{
"id": "task_1QvxGoG1YYOaGNVkpTTCxrxELDrAnrlx",
"object": "video.job",
"type": "video.generation",
"status": "succeeded",
"progress": 100,
"model": "seedance-cn-2-0-mini",
"result": {
"data": [
{ "url": "https://....vod.cn-north-1.volcvideo.com/...?auth_key=..." }
]
}
}参考生视频
不用先选模式 —— 传了什么素材,就是什么模式。素材可以是公网 https 地址,也可以是 data: 开头的 base64 内联(没有对象存储时很方便)。也可以用 parameters.mode 显式指定,显式优先。
都不传t2v纯文生视频input.image_urli2v_first_frame这张图作为视频首帧image_url + end_image_urli2v_first_last_frame从首帧过渡到尾帧input.reference_images[]multi_ref多图参考,保持主体一致再加 reference_videos[] / reference_audios[]multi_ref_vid全模态参考(图 + 视频 + 音频)# 全模态参考:图 + 视频 + 音频一起给,不需要传 mode
curl -sS -X POST https://api.waytocc.com/catech/v1/video/generations \
-H "Authorization: Bearer YOUR_VIDEO_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-cn-2-0",
"input": {
"prompt": "让参考图中的主体跟随参考视频的镜头节奏运动",
"reference_images": ["https://example.com/subject.jpg"],
"reference_videos": ["https://example.com/motion.mp4"],
"reference_audios": ["https://example.com/beat.mp3"]
},
"parameters": { "resolution": "720p", "duration": 5, "ratio": "16:9" }
}'
# 首尾帧:给两张图,自动识别为 i2v_first_last_frame
curl -sS -X POST https://api.waytocc.com/catech/v1/video/generations \
-H "Authorization: Bearer YOUR_VIDEO_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-cn-2-0",
"input": {
"prompt": "画面从日出过渡到黄昏,动作自然连贯",
"image_url": "https://example.com/first.png",
"end_image_url": "https://example.com/last.png"
},
"parameters": { "resolution": "720p", "duration": 5 }
}'
# 没有对象存储?素材直接内联 base64
# "reference_images": ["data:image/jpeg;base64,/9j/4AAQSkZJRg..."]参考素材必须是上游能直接访问的地址,不需要登录或 Cookie;用 base64 内联则没有这个限制。
模型与档位
seedance-cn-2-0720p / 1080p / 4k4–15 秒seedance-cn-2-0-fast480p / 720p / 1080p4–15 秒seedance-cn-2-0-mini480p / 720p4–15 秒分辨率按模型限定 —— seedance-cn-2-0 没有 480p,mini 没有 1080p,传错会直接报错并列出该模型的允许档位。
视频参数
model是见上方模型表。input.prompt是所有模式都必填,参考生视频也要写。input.image_url否首帧图;在多图参考模式下则作为一张参考图。input.end_image_url否尾帧图,必须和 image_url 一起传。input.reference_images否参考图数组,元素为 URL 或 data: base64 字符串。input.reference_videos否参考视频数组。input.reference_audios否参考音频数组。parameters.duration否整数秒,4 到 15,默认 5。parameters.resolution否按模型限定,默认该模型最低档。parameters.ratio否16:9 / 4:3 / 3:4 / 9:16 / 1:1 / 21:9 / adaptive,默认 16:9。parameters.generate_audio否默认 true。设为 false 只是没有音轨,不会更便宜。parameters.seed否整数且不小于 -1,固定后同参数可复现。parameters.mode否通常不用传,会按你给的素材自动判断。价格
gpt-image-2 · 1K 档按张¥0.13 / 张gpt-image-2 · 2K 档按张¥0.20 / 张gpt-image-2 · 4K 档按张¥0.27 / 张对话(Claude / GPT)按 token输入 + 输出分别计价生图是按张固定收费,token 用量不参与结算 —— 同一张图,提示词多长、返回多少 token 都不影响价格。
档位由实际返回图片的尺寸决定,不是请求里的 size 参数:请求 1024×1024 并不保证按 1K 档结算;无法归类的尺寸按 2K 档计。文生图和图生图价格相同,差别只在实际输出尺寸。
对话按 token 计费(输入 + 输出)。充值 ¥1 = $1 配额,用量与花费在控制台「用量历史」实时可见。
Base URL
每种协议的 Base URL 写法不同 —— 各家官方 SDK 对「版本段该由谁补」的约定不一样:
https://api.waytocc.com/v1https://api.waytocc.comAnthropic 的 SDK 会自己补 /v1,所以用根域名;OpenAI SDK 认为 Base URL 已经带版本号,所以要写到 /v1。
常用端点
错误码
401密钥无效鉴权头不对或密钥被删。检查是否完整复制,并使用对应协议的鉴权头。403余额不足 / 无权限账户余额用尽 → 去钱包充值;或密钥分组不允许该接口。429触发限流短时请求过多。降低并发,稍后重试;或联系客服调额。5xx / 超时上游临时波动重试即可。建议指数退避,重试 2–3 次,客户端超时设 ≥180s。常见问题
出图很慢 / 超时怎么办?+
单张通常 20–60 秒,属正常。请把客户端超时设到 180 秒以上(示例里是 -m 185 / timeout=185)。一直转圈多半是网络,换个网络再试。
支持哪些尺寸?返回的图和我请求的不一样?+
size 接受 1024x1024 / 1024x1536 / 1536x1024 / auto,但它是偏好而不是保证 —— 实际返回的尺寸由上游模型决定,经常与请求值不同。计费看实际返回的那张图落在哪个档位,所以请求 1024x1024 并不保证按 1K 档收费。在意成本就以「用量历史」里的实际扣费为准。
response_format 该用 b64_json 还是 url?+
请用 b64_json(默认推荐)。直接拿到图片 base64 自己落盘,稳定可靠。注意:url 返回的是内部受控地址,不能公开访问,客户端请勿依赖。
b64_json 要不要去掉前缀?+
不用。返回的就是纯 base64,直接 base64 解码写文件即可(见示例),无需拼接 data:image/png;base64, 前缀。
图生图能传多张图吗?+
用 multipart 上传,字段名是 image,常见 PNG/JPG/WebP 都行。endpoint 是复数 /v1/images/edits。prompt 里描述你想怎么改这张图。
model not found / 模型名报错?+
图像模型 ID 必须是 gpt-image-2(注意是 -2)。对话模型名见上方各节,填错会直接报模型不存在。
怎么调 Claude / 对话?+
用 POST /v1/messages(Anthropic 兼容),模型填 claude-opus-5,鉴权用 x-api-key 或 Authorization: Bearer。关键:要用 Claude 分组的密钥(和图像密钥是两把),否则会报 403 does not allow /v1/messages dispatch。详见上方「Claude 对话」。
能用官方 Claude Code 吗?+
能。export ANTHROPIC_BASE_URL=https://api.waytocc.com(根域名,不带 /v1),export ANTHROPIC_AUTH_TOKEN=你的 Claude 分组密钥,然后直接跑 claude。见上方「用 Claude Code」。
对话为什么建议 stream:true?+
非流式的长回答在 CDN 边缘约 100 秒会 524 超时。带 stream:true 边出边传,既不超时体验也更好。
搞不定?找客服
接不通、报错、余额不对,都可以找我们。