模型目錄是平台能提供的模型 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。


