ZeroWorks API 接入文档
通过统一的 OpenAI 兼容接口调用模型。将 SDK 的 Base URL 指向 ZeroWorks,即可使用账户可访问的模型、自定义路由和团队额度。
- Base URL
/api/modelservice/v1 - 鉴权:API Key,使用 Authorization: Bearer 请求头。
- 协议:模型目录、Chat Completions 与 SSE 流式响应。
示例从 ZERO_WORKS_API_KEY 环境变量读取密钥。请在自己的服务端设置;不要将 Key 放进网页、公开客户端或代码仓库。
一、Base URL 与请求头
OpenAI SDK 使用下面的完整地址。curl 在此地址后追加 /models 或 /chat/completions,无需再添加 /v1。
| 请求头 | 值 |
|---|---|
| Authorization | Bearer <YOUR_API_KEY> |
| Content-Type | application/json(POST 请求) |
二、可用模型
使用自己的 Key 查询可用模型,取返回 data 数组中的 id。目录以当前账户和 Key 权限为准;团队 Key 返回已绑定路由的别名,请求中的 model 必须匹配该别名。
: "${ZERO_WORKS_API_KEY:?Set ZERO_WORKS_API_KEY first}"
curl --fail-with-body --silent --show-error \
--url '/api/modelservice/v1/models' \
--request GET \
--header "Authorization: Bearer $ZERO_WORKS_API_KEY"响应结构示例(示意,非真实调用结果):
{
"object": "list",
"data": [
{
"id": "YOUR_MODEL_ID",
"object": "model"
}
]
}示例中的 YOUR_MODEL_ID 是待替换值,不代表已经接通某家供应商。团队路由设置也只能选择该组织实际可用的模型。
先查询可用模型,再把返回的完整 ID 填入这里,全部示例会同步更新。
三、OpenAI 兼容格式
同一个 OpenAI 兼容接口可用于 Python、TypeScript 和 HTTP 请求。先安装对应 SDK,再设置环境变量并运行示例。
: "${ZERO_WORKS_API_KEY:?Set ZERO_WORKS_API_KEY first}"
curl --fail-with-body --silent --show-error \
--url '/api/modelservice/v1/chat/completions' \
--request POST \
--header "Authorization: Bearer $ZERO_WORKS_API_KEY" \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "YOUR_MODEL_ID",
"messages": [
{
"role": "user",
"content": "Hello"
}
]
}'响应结构示例(示意,非真实调用结果):
{
"object": "chat.completion",
"model": "YOUR_MODEL_ID",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello"
},
"finish_reason": "stop"
}
]
}| 字段 | 要求 | 说明 |
|---|---|---|
| model | 必填 | 从模型目录取得的完整 ID;使用自定义路由时填路由别名。 |
| messages | 必填 | 对话消息数组,例如 role 为 user、content 为问题文本。 |
| stream | 可选 | 设为 true 时返回 text/event-stream。 |
其余模型参数由实际渠道决定。不要假定所有模型都支持相同的工具、图像输入或推理参数。
四、流式响应(SSE)
将 stream 设为 true,并让客户端持续读取 SSE。curl 使用 --no-buffer,避免在客户端缓冲分片。
: "${ZERO_WORKS_API_KEY:?Set ZERO_WORKS_API_KEY first}"
curl --no-buffer --fail-with-body --silent --show-error \
--url '/api/modelservice/v1/chat/completions' \
--request POST \
--header "Authorization: Bearer $ZERO_WORKS_API_KEY" \
--header "Content-Type: application/json" \
--header "Accept: text/event-stream" \
--data-raw '{
"model": "YOUR_MODEL_ID",
"messages": [
{
"role": "user",
"content": "Hello"
}
],
"stream": true
}'正常的 OpenAI 聊天流通常按 data: {...} 输出分片,结束时发送 data: [DONE]。先检查 HTTP 状态;连接建立后仍可能出现错误事件或中断,不能只凭 200 判定整次调用成功。
五、自定义路由与团队 Key
六、协议兼容范围
当前统一网关公开以下协议。某个上游模型具备一种能力,并不表示网关已经开放对应的原生端点。
| 协议 | 端点 | 当前支持情况 |
|---|---|---|
| 模型目录 | GET /models | 已开放 |
| OpenAI Chat Completions / SSE | POST /chat/completions | 已开放 |
| OpenAI Responses | /responses | 尚未开放 |
| Anthropic Messages | /messages | 尚未开放 |
| Gemini 原生 API | /v1beta/models/… | 尚未开放 |
| 图像生成 / 编辑 | /images/… | 尚未开放 |
七、在 Agent 工具中接入
支持自定义 OpenAI Chat Completions 服务的工具可以使用本页的 Base URL、Key 和模型 ID。DeepSeek Harness 的配置步骤见左侧指南。
Codex 的 Responses、Claude Code 的 Messages,以及 Gemini CLI 的原生协议需要额外端点,当前不可直接接入。不要仅替换地址后就认定这些客户端兼容。
DeepSeek Harness八、常见错误
先确认请求到达的是模型 API 地址,再检查 Key、模型和账户额度。网页登录会话与 API Key 是两种不同凭据。
| 状态 / 错误码 | 处理方式 |
|---|---|
| 401 | 确认 Bearer Key 完整且未被删除或停用;重新从控制台创建和替换 Key。不要用网页登录 Cookie 代替 Key。 |
| 403 | 检查 Key 的模型范围、路由状态、团队成员状态和组织权限。 |
| 429 | 先检查错误码。预算不足需调整额度;Key 忙或并发限制才适合降低并发、有界退避。若响应提供重试提示,应优先遵守。 |
| 413 / REQUEST_TOO_LARGE | 请求体上限为 1 MiB。缩小对话或输入内容后再请求。 |
| 404 / 405 | 核对本页协议表。Responses、Messages、Gemini 原生和图像端点尚未发布。 |
| 5xx | 检查控制台服务状态或联系管理员。保留请求标识、时间和错误码,提交问题时移除 Key 与对话敏感内容。 |
网关本地拒绝返回 success、code、message、data 和 requestId;个人上游错误保留其响应结构,团队上游拒绝使用 TEAM_MODELSERVICE_UPSTREAM_REFUSED。错误格式不能全部按 OpenAI error 对象解析。
查看钱包