ModelHub Open API
一个令牌接入多模型网关:Chat Completions、Responses、Anthropic Messages、识图、生图、视频、网页搜索、抓取、向量与重排。开发者在任意支持 OpenAI / Anthropic 格式的客户端中把 base_url 指向 ModelHub 即可使用。
快速开始
联系管理员开通令牌(sk-xc-…)。拿到令牌后,第一个对话请求只需要 3 个字段:
| 项 | 值 |
|---|---|
| Base URL | https://modelhub.xctoy.cn/v1 |
| 鉴权 | OpenAI:Authorization: Bearer <令牌>Anthropic: x-api-key: <令牌> |
| 对话模型 | deepseek-flash(性价比首选,峰谷计价)等 |
| 响应格式 | POST /v1/responses,兼容 OpenAI Responses |
| Anthropic Messages | POST /v1/messages,支持 Claude Code / Claude Desktop / Anthropic SDK |
| 模型与额度 | GET /v1/models、GET /v1/usage |
| 搜索 / 抓取 | POST /v1/tools/search、POST /v1/tools/fetch |
| 识图 / 生图 / 视频 | POST /v1/image/analyze、/v1/images/generations、/v1/videos |
curl 示例
curl https://modelhub.xctoy.cn/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xc-你的令牌" \
-d '{
"model": "deepseek-flash",
"messages": [{"role": "user", "content": "你好"}]
}'
Python 示例
from openai import OpenAI
client = OpenAI(
base_url="https://modelhub.xctoy.cn/v1",
api_key="sk-xc-你的令牌",
)
resp = client.chat.completions.create(
model="deepseek-flash",
messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)
Claude Code / Claude Desktop 将 ANTHROPIC_BASE_URL 设为 https://modelhub.xctoy.cn 或按客户端要求设为 https://modelhub.xctoy.cn/v1,API Key 使用 ModelHub 令牌;OpenAI 客户端继续使用上面的 /v1 Base URL。
鉴权
- 所有端点使用同一把令牌。OpenAI 端点携带
Authorization: Bearer sk-xc-…;Anthropic Messages 携带x-api-key: sk-xc-…与anthropic-version: 2023-06-01。 - 可选请求头
X-App-Id可与令牌 AppId 配合,用于调用归集。 - 令牌可配置模型白名单(只允许调用指定模型)与金额配额(可用额度上限)。
- 额度用尽后返回
429,充值(管理员加额)后自动恢复。 - 令牌信息请妥善保存,泄漏后可联系管理员吊销重建。
模型目录与令牌用量
返回标准 OpenAI 模型列表。ModelHub 的上下文、模态、能力、端点和渠道信息放在 modelhub 扩展对象中。
curl https://modelhub.xctoy.cn/v1/models \
-H "Authorization: Bearer sk-xc-你的令牌"
常用扩展字段:context_window、max_output_tokens、input_modalities、output_modalities、supported_parameters、endpoint_count、providers 与 route_modes。
查询当前令牌的用量、金额额度与活跃预算预占。
curl https://modelhub.xctoy.cn/v1/usage \
-H "Authorization: Bearer sk-xc-你的令牌"
{
"key": "项目令牌",
"used_m": 1.2,
"quota_m": 5,
"quota_amount": 500,
"used_amount": 12.34,
"reserved_amount": 0.56,
"remaining_amount": 487.1
}
reserved_amount 是进行中请求的临时预占,不等于已扣费;remaining_amount 已扣除已用金额和活跃预占。quota_amount=0 时返回 null,表示金额额度不限。
对话 · chat/completions
OpenAI 兼容的对话补全接口,支持流式(stream: true)。请求与响应结构与 OpenAI 一致。
请求参数
| 字段 | 说明 |
|---|---|
model | 模型名,见下方定价表 |
messages | 消息数组(OpenAI 格式) |
stream | 可选,true 时返回 SSE 流 |
models | 可选,跨模型 fallback 顺序,最多 8 个模型 |
provider | 可选,请求级路由策略,见「路由与降级」 |
max_tokens 等 | 其余参数与 OpenAI 一致,透传上游 |
curl https://modelhub.xctoy.cn/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xc-你的令牌" \
-d '{"model": "deepseek-flash", "messages": [{"role": "user", "content": "帮我总结三段话"}]}'
Responses · responses
OpenAI Responses 兼容入口,支持文本、图片输入、工具调用、流式事件、请求级路由与跨模型 fallback。网关内部翻译到现有 Chat 渠道,计费和降级口径与 Chat Completions 一致。
请求参数
| 字段 | 说明 |
|---|---|
model | 模型名,必填 |
input | 字符串或 Responses 输入数组,必填 |
instructions | 可选,系统指令 |
max_output_tokens | 可选,最大输出 token |
stream | 可选,true 时返回 Responses SSE 事件 |
models / provider | 可选,跨模型降级和请求级路由策略 |
curl https://modelhub.xctoy.cn/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xc-你的令牌" \
-d '{
"model": "deepseek-flash",
"input": "用三句话解释什么是模型网关"
}'
Anthropic · messages
Anthropic Messages 兼容接口,适用于 Claude Code、Claude Desktop、Cherry Studio 与 Anthropic SDK。网关在内部复用现有 Chat 渠道,路由、降级、熔断与计费口径不变。
鉴权头
| 请求头 | 值 |
|---|---|
x-api-key | sk-xc-你的令牌 |
anthropic-version | 2023-06-01 |
Content-Type | application/json |
curl https://modelhub.xctoy.cn/v1/messages \
-H "x-api-key: sk-xc-你的令牌" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "agnes-2.5-pro-beta",
"max_tokens": 2048,
"system": "你是严谨的技术助手。",
"messages": [{"role": "user", "content": "解释分布式锁的取舍"}]
}'
支持文本、图片、工具调用、流式 SSE 与可选 models / provider 路由参数。错误体使用 Anthropic 标准:{"type":"error","error":{"type":"...","message":"..."}}。
路由与降级
Chat Completions、Responses 与 Anthropic Messages 支持同一个请求级的 provider 对象;不传时沿用后台默认路由。
| 字段 | 说明 |
|---|---|
sort | fixed / cheapest / fastest / reliable / balanced / latency / weighted |
only | 只允许指定渠道,可填渠道 ID 或名称 |
ignore | 排除指定渠道,优先级高于候选生成 |
allow_fallbacks | false 时当前模型只使用主渠道 |
max_price | 价格上限,单位元/百万 token,可分别限制 prompt / completion |
require_parameters | 只选择支持当前工具、结构化输出或推理参数的端点 |
{
"model": "deepseek-v4-pro",
"models": ["deepseek-flash", "glm-5.3-flash"],
"messages": [{"role": "user", "content": "你好"}],
"provider": {
"sort": "balanced",
"only": ["DeepSeek 官方", "智谱 GLM 官方主号"],
"ignore": ["测试渠道"],
"allow_fallbacks": true,
"max_price": {"prompt": 10, "completion": 30},
"require_parameters": true
}
}
models最多 8 个模型,自动去重,并受令牌模型白名单约束。- 只有 429、5xx 与超时等可降级错误会切换模型;400、鉴权失败和内容审核拒绝不会切换。
- 流式响应开始后不会中途切换模型;最终响应中的
model是实际命中的模型。 - 路由会综合渠道状态、余额红线、端点熔断、价格、能力、近 15 分钟失败率与平均延迟。
X-ModelHub-Request-Id:Anthropic 兼容端点同时使用标准小写 request-id。该 ID 可用于关联用量、路由尝试和账单。搜索 · tools/search
基于 DeepSeek 自研搜索引擎的网页搜索接口,按关键词返回结构化网页结果,面向 Agent / RAG 场景设计。底层能力来自 DeepSeek Search API,见 DeepSeek 官方文档。
请求参数
| 字段 | 必填 | 说明 |
|---|---|---|
query | 是 | 搜索词,1–128 字符;支持 site:、lang:、after:、before: 等语法操作符 |
count | 否 | 返回结果数,1–50,默认 10 |
ori_question | 否 | 用户原始问题,辅助理解意图 |
localization | 否 | IP 本地化 |
need_content | 否 | 是否附带页面全文 |
响应(每条结果字段)
| 字段 | 说明 |
|---|---|
title / url | 标题与链接 |
snippet | 短摘要(100–200 字) |
summary | 面向模型的长摘要(600–800 字) |
rerank_score | 相关度评分 0–3 |
authority | 权威度评级 0–4 |
date | 发布日期 |
curl https://modelhub.xctoy.cn/v1/tools/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xc-你的令牌" \
-d '{"query": "ModelHub 网关", "count": 5}'
抓取 · tools/fetch
抓取单个网页,返回 Markdown 格式的标题与正文,适合把搜索命中的页面内容喂给模型。
请求参数
| 字段 | 必填 | 说明 |
|---|---|---|
url | 是 | 目标页面地址(http/https),≤8192 字符 |
curl https://modelhub.xctoy.cn/v1/tools/fetch \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xc-你的令牌" \
-d '{"url": "https://api-docs.deepseek.com/zh-cn/"}'
向量 · embeddings
OpenAI 兼容的向量化接口,可用于 RAG 检索、语义去重等场景。
可用模型
| 模型 | 输入价格(元/百万 token) |
|---|---|
qwen3.7-text-embedding-flash | 0.125 |
qwen3.7-text-embedding | 0.5 |
embedding-3 | 0.5 |
重排 · rerank
对检索候选做相关性重排,适合 RAG 精排阶段。
可用模型
| 模型 | 价格(元/百万 token) |
|---|---|
qwen3.7-text-rerank | 0.5 |
识图 · image/analyze
固定结构化识图接口,返回场景、光线、人物主体、面部、身体、服装与次要人物信息。引擎由平台内部路由,响应中不暴露引擎名。
传图方式
| 方式 | 请求 | 限制 |
|---|---|---|
| 公网 URL | application/json + image_url | URL 必须公网可访问;推荐 |
| 二进制直传 | Content-Type: image/* + 原始图片字节 | 单次 1 张;单图 ≤20MB |
| Data URL | image_url: "data:image/...;base64,..." | 必须带 MIME 前缀;建议 ≤7.5MB |
curl https://modelhub.xctoy.cn/v1/image/analyze \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xc-你的令牌" \
-d '{"image_url":"https://example.com/photo.jpg"}'
- JSON 方式单次最多 3 张,使用
images数组或单张image_url。 - 不接受自定义提问参数;需要按问题分析图片时改用支持视觉输入的 Chat 或 Responses 模型。
- 服务端会将图片压到长边 1536px 再识别;客户端提前压缩可减少传输耗时。
- 正常耗时约 20–70 秒,建议客户端超时 ≥320 秒。
- 频率限制 60 次/分钟,按次计费 0.05 元/次;缓存命中仍计费。
图片 / 视频
agnes-image-2.5-flash:同步图片生成,支持文生图、图生图、多图合成;1K / 2K / 3K / 4K。上游官方当前试用价为零,网关调用按张计费。agnes-video-2.5:异步视频生成,支持文生视频、首尾帧和图片/音频/视频参考。
图片使用 POST /v1/images/generations;视频先用 POST /v1/videos 创建任务,再轮询 GET /v1/agnesapi?video_id=...&model_name=agnes-video-2.5。媒体 URL 必须公网可访问且任务完成前不过期。
视频任务创建后返回 video_id 与初始状态,轮询到 completed 后从返回的 url 获取视频;失败状态为 failed。
模型定价
按 token 计费,单位为元 / 千 token(与后台计费表一致);仅成功调用计费。部分模型按峰谷计价:峰 = 工作日(周一至周五)9:00–12:00、14:00–18:00,其余时间为半价。
| 模型 | 输入 | 输出 | 备注 |
|---|---|---|---|
deepseek-flash | 0.002 | 0.008 | 峰谷 空闲半价 |
deepseek-v4-pro | 0.009 | 0.027 | 旗舰 1M 长上下文 |
glm-5.3 | 0.008 | 0.028 | 旗舰高质量 |
glm-5.3-flash | 0.0008 | 0.0028 | 高性价比 |
glm-5.3-flashx | 0.002 | 0.007 | 高速档 |
glm-4.7-flash / glm-4-flash | 免费 | 免费 | 免费 |
qwen3.8-max | 0.0144 | 0.0432 | 旗舰高质量(千问) |
qwen3.8-flash | 0.0008 | 0.0027 | 高性价比(千问) |
qwen3.8-omni-flash | 0.0008 | 0.0027 | 全模态音视频理解 |
qwen3.7-plus | 0.002 | 0.008 | 综合主力(千问) |
qwen3.7-flash | 0.0003 | 0.0012 | 轻量对话 |
qwen3-vl-flash | 0.00015 | 0.0015 | 视觉理解·便宜主力 |
qwen3-vl-plus | 0.0012 | 0.012 | 视觉理解·Plus |
doubao-seed-2.0-mini | 0.0002 | 0.002 | 轻量对话(豆包) |
doubao-seed-2.0-lite | 0.0006 | 0.0036 | 高性价比(豆包) |
doubao-seed-2.1-lite | 0.0008 | 0.0027 | 视觉理解(豆包) |
agnes-2.5-flash / agnes-3.0-flash | 免费 | 免费 | 试用免费 512K / 65536 |
agnes-2.5-pro-beta | ≈0.00071 | ≈0.00213 | 官方 $0.10 / $0.30 每百万,按实时 USD/CNY 折算;1M / 65536;Beta |
搜索 / 抓取定价
| 端点 | 单价(元/次) | 折合(元/千次) | 说明 |
|---|---|---|---|
/v1/tools/search | 0.006 | 6 | 失败 / 空结果 / 超时不计费 |
/v1/tools/fetch | 0.006 | 6 | 失败 / 抓取无正文不计费 |
生图 / 视频与识图定价
| 能力 | 网关单价 | 说明 |
|---|---|---|
agnes-image-2.5-flash | 0.1 元/张 | 按 n 张计费;上游官方当前试用免费 |
agnes-video-2.5 | 2 元/条 | 按任务创建计费;查询任务进度不另计费 |
/v1/image/analyze | 0.05 元/次 | 缓存命中仍按次计费 |
计费与限额
| 机制 | 说明 |
|---|---|
| 金额配额 | 每个令牌设置可用额度上限(元),调用按单价从额度中扣减 |
| 预算预占 | 请求开始前按最大预估成本预占额度,完成后按实际用量结算;失败或超时释放 |
| 欠费停服 | 额度用尽后返回 429;充值加额后自动恢复 |
| 模型白名单 | 令牌可限制只允许调用指定模型 / 能力 |
| 用量明细 | 每次调用记录模型、token / 次数、费用、状态、耗时,可在管理后台查询对账 |
| 请求关联 | 响应头 X-ModelHub-Request-Id 可关联用量、路由尝试与账单 |
| 接口限流 | Chat / Responses / Messages 与重排 120 次/分钟/令牌;向量 600 次/分钟;识图 60 次/分钟;搜索 / 抓取各 5 次/秒 |
错误码
| 状态码 | 含义 | 处理 |
|---|---|---|
400 | 参数错误(如 query 缺失、url 非法) | 按返回 message 修正请求 |
401 | 令牌无效 / 缺失 | 检查 Authorization 头 |
403 | 模型未在白名单内 | 联系管理员开通权限 |
404 | 端点不存在 | 检查 Base URL 与路径 |
413 | 图片或请求体超过限制 | 压缩图片或改用二进制 / 公网 URL |
415 | 图片格式无法解析 | 改用 jpg / png / webp |
422 | 图片 URL 无法访问或下载失败 | 检查 URL 公网可达性 |
429 | 额度用尽、触发限速、渠道余额红线或路由策略无解 | 按 error.type 降速、加额、放宽策略或联系管理员 |
500 / 502 | 上游模型或自研能力异常 | 指数退避重试;持续异常请反馈 |
504 | 上游或自研能力超时 | 检查输入大小与网络,稍后重试 |
OpenAI 兼容端点统一返回 {"error":{"code":数字,"message":"...","type":"可选"}}。常见 error.type:rate_limited、quota_exceeded、provider_redline、provider_policy_unmet、model_not_allowed。
/v1/messages 使用 Anthropic 错误结构:{"type":"error","error":{"type":"...","message":"..."}}。