供应商接入

以 Markdown 格式查看

当你希望在 OpenModels 上列出自己的模型供给时,请使用供应商接入。该流程遵循类似 OpenRouter 风格供应商接入的公开合同模式:申请、公开标准模型列表、从管理页面提交快照,并由 OpenModels 验证和路由符合条件的供给。

接入流程

  1. 在 OpenModels 供应商申请页面以社区或已验证供应商身份申请。
  2. OpenModels 会安全存储你的上游 API 密钥,并验证你提交的 /models 列表。
  3. 实现一个返回标准 { "data": [...] } 响应结构的模型端点。
  4. 通过带有邮箱验证的供应商管理页面管理模型和定价更新。
  5. OpenModels 验证每个快照,并更新模型价格、供给标签和默认路由。

社区供给旨在通过自动验证后快速上架。已验证供给需要经过 OpenModels 人工审核,才能以已验证身份上架。

社区与已验证

类型上架行为供给标签适用场景
社区符合条件的快照可在自动验证后应用Community希望快速上架且明确标注由社区运营供给的供应商
已验证快照可在审核前保存,但仅会在人工批准后上架Verified希望获得 OpenModels 审核的供给、授权、可靠性和数据策略检查的供应商

对于已验证申请,OpenModels 会在申请获批时应用最新保存的有效快照。如果尚不存在有效快照,供应商仍保持已批准状态,后续有效快照即可被应用。

申请

请在以下地址提交供应商申请:

https://openmodels.market/providers/apply

表单会收集供应商身份、联系方式、网关 URL、认证类型、上游 API 密钥、数据策略详情以及可选的供应商图标 URL。

上游 API 密钥会以静态加密方式保存。OpenModels 不会在通知邮件中包含明文密钥。成功页面仅显示提交状态;后续模型和定价更新请使用供应商管理页面。

管理模型更新

打开供应商管理页面:

https://openmodels.market/providers/manage

使用供应商申请中填写的联系邮箱登录。OpenModels 会向该邮箱发送验证码。验证后,页面会显示 contact_email 与已验证邮箱匹配的每个供应商申请。

你可以在管理页面中:

  • 当该邮箱拥有多个申请时选择一个供应商申请,
  • 查看最近提交和已应用的快照,
  • 在 UI 编辑器中编辑模型,
  • 在 JSON 编辑器中粘贴或编辑严格的 JSON 快照,
  • 提交新快照以供验证并自动应用。

浏览器会将管理会话存储在 sessionStorage 中,因此刷新页面后会话会保留至过期。退出登录会清除本地会话。

模型端点

你的 modelsUrl 必须返回 OpenModels 标准封装:

{
"data": [
{
"id": "example-org/example-model",
"name": "Example Model",
"created": 1781575605,
"input_modalities": ["text"],
"output_modalities": ["text"],
"context_length": 1000000,
"max_output_length": 64000,
"provider_logo_url": "https://cdn.example.com/provider.svg",
"pricing": {
"prompt": "0.000000029",
"completion": "0.000000294",
"input_cache_read": "0.000000003",
"image": "0",
"request": "0",
"duration": "0"
},
"supported_features": ["tool_calling", "reasoning"],
"is_ready": true,
"is_free": false,
"discount_to_user": 0
}
]
}

规则:

  • 顶层必须是 { "data": [...] }
  • id 是 OpenModels 将路由至你的网关的公开模型 ID。
  • is_ready: false 会将模型保留在已保存快照中,但阻止其价格或路由被活跃上架。
  • provider_logo_url 为可选项。如省略,OpenModels 可使用申请中的图标 URL,然后回退到供应商网站 favicon。
  • pricing 值必须是以基础单位计价的 USD 十进制字符串。请使用字符串来避免浮点精度漂移。

请勿发送 OpenAI 风格的 /models 响应或供应商特定的自定义结构。

定价

pricing 可以是对象或数组。

对象形式的定价会创建一个价格组:

{
"pricing": {
"prompt": "0.000000029",
"completion": "0.000000294",
"input_cache_read": "0.000000003"
}
}

数组形式的定价支持分层或混合单位定价:

{
"pricing": [
{
"prompt": "0.000000029",
"completion": "0.000000294",
"range_start": 0,
"range_end": 200000
},
{
"prompt": "0.000000058",
"completion": "0.000000588",
"range_start": 200000
},
{
"image": "0.02"
}
]
}

定价单位始终是 JSON 载荷中最小的可计费单位。为便于阅读,模型表可能将 token 价格显示为 /1M,但供应商快照仍应发送每 token 的值。

OpenModels 按单位映射定价字段:

字段快照值单位显示单位
prompt每 1 个输入 token 的 USD/1M 个输入 token
completion每 1 个输出 token 的 USD/1M 个输出 token
input_cache_read每 1 个缓存输入 token 的 USD/1M 个缓存输入 token
request每请求 USD/req
image每张图片 USD/image
duration每秒 USD/sec

对于分层 token 定价,range_startrange_end 是输入 token 阈值。最后一个无上限层级请省略 range_end

当模型同时具有 token 和非 token 价格时,OpenModels 按计费单位存储独立的价格行。每个模型只创建一次默认路由,并按以下顺序绑定主价格:

  1. 分层 token 价格
  2. 固定 token 价格
  3. 第一个有效的非 token 价格

无效的十进制字符串、重叠层级或格式错误的定价会导致整个快照失败,而不是部分上架供应商。

提交快照

对于大多数供应商,请使用以下地址的 UI 或 JSON 编辑器:

https://openmodels.market/providers/manage

管理页面会使用已通过邮箱验证的管理会话提交快照。

对于自动化或现有集成,OpenModels 还支持快照 API:

POST /api/v1/providers/applications/{applicationId}/model-snapshots

当 OpenModels 运营团队签发或重新生成供应商更新令牌时,请使用它进行认证:

Authorization: Bearer <providerUpdateToken>

现有集成仍接受旧版更新令牌请求头:

X-Provider-Update-Token: <providerUpdateToken>

示例:

curl https://api.getopenmodels.com/api/v1/providers/applications/$APPLICATION_ID/model-snapshots \
-H "Authorization: Bearer $PROVIDER_UPDATE_TOKEN" \
-H "Content-Type: application/json" \
-d @models.json

如果供应商被禁用或拒绝,OpenModels 仍可为审计记录快照,但不会重新激活供给或写入活跃路由。

有效快照会自动更新供应商的模型和定价配置。社区供给可在自动验证后应用。已验证申请可在批准前保存快照;批准后,OpenModels 会立即应用最新保存的有效快照,后续有效快照会继续更新同一已验证供给。格式错误的模型或定价会拒绝整个快照,而不是部分更新路由。

可靠性要求

OpenModels 可能会在上架供给前测试所提交网关的访问能力和模型可用性。请保持以下行为一致:

  • 过载时尽早返回 429,不要将长时间运行的工作排队。
  • 保持上游认证有效。
  • 对流式模型,在 token 可用后立即开始流式传输。
  • 在公告前、维护窗口期间或临时移除模型前使用 is_ready: false
  • 保持每个快照中的定价、上下文限制、模态和支持功能为最新状态。

应用级路由组请使用模型路由,请求时的 route.provider 覆盖请使用聊天补全