模型目录是平台能提供的模型 ID 清单,模型访问控制则是决定某个密钥能调用其中哪些 ID 的规则。在 ATP Token,GET /v1/models 返回目录,而项目的允许模型清单会在每次请求时检查,不符合的请求在联系任何供应商之前就返回 403。本文列出请求与响应、说明 403 的含义、对比 OpenAI 与 OpenRouter 的做法,并提供四份附标价的白名单模板。
两个不同的问题
顺序很重要。网关先验证密钥,再拿模型比对项目的允许清单,然后路由到供应商,最后按项目余额计量 token(工作原理)。一个模型可能通过第二行,却卡在第三行。
GET /v1/models 返回什么
请求使用你的项目密钥和 OpenAI 格式的 base URL:
curl https://api.atptoken.ai/v1/models \
-H "Authorization: Bearer atp-..."
响应是 OpenAI 风格的列表。每个 id 就是请求中 model 字段要填的字符串:
{
"object": "list",
"data": [
{ "id": "claude-sonnet-4-6", "object": "model", "created": 1700000000, "owned_by": "llm-gateway" },
{ "id": "gpt-5.4", "object": "model", "created": 1700000000, "owned_by": "llm-gateway" }
]
}
模型发现文档写明这份列表不会按你的项目筛选。用它获取最新的 ID,不要从供应商仪表盘或博客文章里抄模型名称。也不要把它当成权限清单来读。
403 意味着什么
ATP Token 返回 403,表示密钥有效、模型 ID 也存在,但这个模型没有在密钥所属的项目中启用。常见响应页面只用一行描述:模型未在此项目启用。请求停在授权步骤,不会发到任何供应商。和所有 ATP 错误一样,响应带有 request_id,并采用你所调用 SDK 的错误格式。
典型情况:一位开发者在目录里看到 claude-opus-4-8,在功能分支把客服机器人换成它。客服机器人的项目只允许 claude-haiku-4-5 与 gemini-3-5-flash,所以 staging 第一笔请求就返回 403。这正是白名单该做的事。按 ATP 标价计算,2,000 token 的提示加 300 token 的回复,在 claude-opus-4-8(每百万 token 输入 USD 5、输出 USD 25)需要 1.75 点,在 claude-haiku-4-5(USD 1 与 USD 5)只需 0.35 点,每条回复相差五倍。
由此得出两条客户端规则。不要重试 403,它每次都会以同样方式失败。把它连同请求 ID 记录下来,交给项目负责人,由对方修改代码里的模型,或请 Admin 放宽清单。
OpenAI 与 OpenRouter 如何做同一件事
在 OpenAI,Model usage 设置和项目的每月花费上限、通知阈值放在一起。在 OpenRouter,同一个 guardrail 还能放花费上限与供应商白名单,以最严格的适用规则为准。在 ATP Token,允许清单和项目的点数分配放在一起,项目里的每个密钥两者都继承。
白名单设计:四个项目模板
- 从通过评测的最便宜模型开始,再加一个来自第二家厂商的备选。同一个模型 ID 在不同供应商之间的故障切换,网关已经处理(供应商路由);第二个模型是给你想在代码里换模型时用的。在 Gemini 与 GPT 之间做选择,见 Gemini vs GPT。
- 前沿模型放在单独的项目,给小额分配。研究团队能用 Opus 与 GPT-5.5,客服机器人则不会只差一行配置就切过去。
- 把放宽清单当作变更申请处理。管理资源是 Admin 的权限,Activity 日志会记录资源更新(用量与日志)。
- 每份白名单都搭配预算。允许的模型配上无上限的余额,账单一样会吓人(AI API 花费上限对比)。
在 ATP Token 上怎么设置
- 在 Resources 页面创建项目并选择允许的模型(工作区与项目)。
- 给项目拨点数,再从项目发密钥(管理 API 密钥)。
- 调用
GET /v1/models,把精确的 ID 复制到配置文件。 - 在 staging 对每个配置中的模型各发一笔测试请求。200 表示有权限;403 表示项目清单里没有这个模型。
- 部署后在请求日志中按状态筛选,找出 403。


