429,並在該期間重置或管理員提高限制之前阻止他們。使用支出限制為每位開發人員、群組或整個組織設定共享認證的上限。
Claude 應用程式閘道會透過一個共享的上游認證轉發所有推論,因此您的提供商的帳單會將所有內容歸屬於該認證,而不是個別開發人員。沒有按開發人員的限制,一個失控的代理程式群隊可能會花費組織的整個承諾。支出限制是閘道在該共享帳單之上的按開發人員檢視和斷路器。
設定上限
配置了admin: 區塊在 gateway.yaml 中後,閘道會在 /v1/organizations/spend_limits 提供管理員 API,並在每個推論請求上即時執行上限。上限本身是透過該 API 設定的,而不是在 gateway.yaml 中;每個 POST /v1/organizations/spend_limits 請求會從 {scope, amount, period} 建立或替換一個上限。該 API 鏡像了 Anthropic 公開 Admin API 支出限制端點的線路形狀,因此針對該合約編寫的 HTTP 用戶端可以透過變更其基礎 URL 來針對閘道。
此請求為每位開發人員設定組織範圍的預設值,每月 $500:
contractors 群組的每位成員上分層設定更嚴格的每日 $100 上限:
群組或組織上限是每位成員繼承的按座位預設值,而不是共享池。每個期間,開發人員的有效上限按此順序解析:按使用者覆蓋、其群組上限中最嚴格的、組織預設值,然後無限制。
admin.group_limit_mode: max 會將多群組平局決勝改為最寬鬆的。
向管理員 API 進行身份驗證
傳送以下其中之一:- 與
admin.write_keys中的金鑰相符的x-api-key標頭以獲得完全存取權限,或admin.read_keys以獲得僅GET存取權限。每個金鑰都帶有一個id,在稽核日誌中顯示為admin-key:<id>,因此為 Terraform、CI 和每個自動化提供各自的金鑰。 - 其
groups聲明包含admin.admin_groups之一的閘道持有人令牌。這是完全存取權限,稽核為oidc:<sub>,因此對人類管理員更好。
執行方式
在每個/v1/messages 請求上,閘道在一個 Postgres 查詢中解析開發人員的上限和期間至今的支出。如果他們超過任何上限,請求會返回 429,其中 error.type: billing_error 和標頭 x-should-retry: false。訊息是 spend limit reached,後面跟著您的 admin.blocked_message(如果已設定)。
/v1/messages/count_tokens 被豁免。令牌計數是免費的,因此無論上限狀態如何都會執行。
在每個回應之後,使用量計量器從回應中讀取令牌計數,當其流向用戶端時,以 USD 列表價格對其進行定價,並為所有三個期間儲存桶增加 Postgres 計數器。計量器是流上的單一讀取器,因此用戶端的位元組不受影響,計量失敗不會破壞回應。
支出限制根據 USD 列表價格的令牌計數估計支出;它們是斷路器,而不是發票。如需權威計費,請根據您提供商自己的使用情況報告進行協調,例如 Anthropic 使用情況與成本管理員 API、Amazon Bedrock 上的呼叫日誌或 Google Cloud 上的雲端監控。
定價使用與 Claude Code CLI 用於自己的成本顯示相同的表格,在 Anthropic、Amazon Bedrock (us.anthropic.…-v1:0)、Google Cloud 的 Agent Platform (claude-…@date) 和 Microsoft Foundry ID 形式中具有相同的模型 ID 規範化。表格無法識別的模型 ID(例如 Microsoft Foundry 部署名稱或推論設定檔 ARN)以未知模型預設層級 $5/$25 每百萬輸入/輸出令牌定價,而不是零,因此無法識別的 ID 無法透過不計量來繞過上限。閘道在啟動時和執行時每個 ID 一次警告當模型透過後備定價時。
用戶端中止也會被計費。上游僅在流的終端框架中報告輸出令牌,因此中止的流不會攜帶它們。計量器從流式內容大小保持保守的下限估計,約每令牌四個字元,並在終端使用量框架遺失時計費。完整流始終計費上游報告的計數。沒有這個,被限制的開發人員可以流式傳輸輸出並在結束前立即中止每個請求,花費而不被計數。
Postgres 可用性
預檢查使用兩秒超時查詢 Postgres。如果存儲無法到達或超時,執行預設會開放失敗:請求繼續進行,閘道記錄警告。設定enforcement.fail_closed_on_error: true 改為關閉失敗,這會返回相同的 429 billing_error,訊息為 spend limit unavailable。開放失敗可防止存儲中斷成為推論中斷;關閉失敗保證沒有無計量支出。
管理員 API 參考
以下端點在/v1/organizations/spend_limits 下提供。
慣例鏡像 Anthropic 的管理員 API:
- 每個物件上的
type spl_前綴 ID- 金額為 USD 美分的整數字串;
POST拒絕任何其他currency,返回400 {type: "error", error: {type, message}, request_id}錯誤信封- 每個管理員回應上的
request-id回應標頭,成功或錯誤,與正文的request_id相符
admin_audit 寫入前/後行,歸屬於 admin-key:<id> 或 oidc:<sub>。
閘道僅提供支出限制端點。其他管理員 API 表面(例如 spend_limit_increase_requests 佇列)不是閘道管理員 API 的一部分。
/effective
GET /v1/organizations/spend_limits/effective 返回 Anthropic 的 SpendSummary 架構:每行是一個主體的一個期間,具有已解析的上限、期間至今的支出和一個 actor 物件。閘道特定的差異:
user_id是 OIDCsub。actor.name和actor.email_address為null,直到主體透過閘道的第一個推論請求。閘道沒有使用者目錄;它從每個使用者自己的工作階段 JWT 記錄最後看到的值。- 每行也帶有一個
groups陣列,主體最後看到的 IdP 群組。這是一個閘道擴充,因此管理員 UI 可以顯示適用的每個上限層級;Anthropic 形狀的用戶端會忽略它。 - 沒有
user_ids[]篩選,它列出有記錄支出的主體,因為閘道無法列舉所有組織成員。
group_limit_mode 平局決勝,因此檢視器顯示實際適用的上限。
/audit
返回支出限制變更軌跡:誰變更了哪個上限、前/後快照和選擇性原因,最新優先。has_more 是精確的。此端點遵循本地管理員 API 慣例,而不是第一方線路形狀。
分頁
原始列表按after_id 和 before_id 分頁,它們是互斥的 spl_… ID;結果按建立排序,has_more 反映遍歷方向。/effective 按傳回的不透明 next_page 令牌分頁,作為 ?page= 傳遞,主體按升序排序,因此在記錄支出時頁面保持穩定。limit 在兩者上都是 1–1000,預設 20。
資料生命週期
閘道保持四個支出相關表;每小時掃描執行保留視窗:identity_retention_days 刻意短於 spend_retention_months:已取消佈建的身份停止重新整理並老化,而其匿名支出計數器保留用於年度比較報告。
當開發人員離開時,透過 DELETE /v1/organizations/spend_limits/{id} 刪除任何按使用者上限;其支出和身份行按上述保留視窗老化。若要立即清除一個人,用於離職或資料主體存取請求 (DSAR),直接針對閘道資料庫執行 DELETE FROM principal_emails WHERE principal = '<sub>'。這會移除唯一保持其電子郵件、名稱和群組的表格。spend 和 admin_audit 行僅參考偽匿名 OIDC sub,並按其自己的視窗老化。
相關
admin和enforcement配置:啟用管理員 API 和調整保留- 部署指南:Postgres 架構和備份指導