Skip to main content
支出限制會限制每位開發人員在指定的一天、一週或一個月內透過您的 Claude 應用程式閘道 可以花費的金額。當開發人員超過其限制時,閘道會在他們的下一個請求上返回 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 (daily; resets 2026-08-08 00:00 UTC),後面跟著您的 admin.blocked_message(如果已設定)。當開發人員同時超過多個上限時,訊息會命名最後重設的上限。回應也會攜帶 retry-after 標頭,其中包含距離該重設的剩餘秒數。在閘道伺服器上的 v2.1.225 之前,訊息是 spend limit reached,沒有期間、重設時間或 retry-after 標頭。 在 v2.1.227 或更新版本上,<public_url>/protocol 的協議參考也會列出確切的使用量限制回應標頭和 429 本文。 上限在 UTC 日曆邊界重設:每天在 00:00 UTC、每週星期一和每月的第一天。閘道永遠不會阻止 /v1/messages/count_tokens,因為令牌計數是免費的。

請求如何定價

在每個回應之後,使用量計量器讀取令牌計數,並將成本新增到每日、每週和每月計數器。它永遠不會觸及傳送給用戶端的位元組,因此計量失敗無法破壞回應。這些金額是美元估計值,是斷路器而不是發票;如需計費,請根據您提供商的使用情況報告進行協調。 計量器按此順序為每個請求選擇費率:
  1. 為提供請求的上游提供的相符 pricing.overrides 列。需要 v2.1.227 或更新版本。
  2. 上游模型 ID 的清單價格,即閘道傳送給提供商的字串,當 Claude Code 成本表識別它時。該表接受 Anthropic、Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry ID 形式。
  3. 您對應到該上游 ID 的 models[].id 的清單價格,適用於不包含模型名稱的上游字串,例如 Amazon Bedrock 應用程式推論設定檔 ARN 或 Microsoft Foundry 部署名稱。需要 v2.1.218 或更新版本。
  4. 未知模型層級,每百萬輸入/輸出令牌 $5/$25,因此計量器無法識別的 ID 永遠不會免費。閘道在啟動時和執行時每個 ID 一次警告當它使用此層級時。
無論適用哪個費率,計量器隨後將金額乘以 pricing.multiplier,預設值為 1。 用戶端中止也會被計費。當串流在沒有上游最終使用量框架的情況下結束時,計量器會計費約每輸出令牌四個字元的下限估計,用於已傳送給用戶端的文字,因此提前中止請求不會規避上限。

Postgres 可用性

預檢查使用兩秒超時查詢 Postgres。如果存儲無法到達或超時,執行預設會開放失敗:請求繼續進行,閘道記錄警告,回應不攜帶 anthropic-ratelimit-unified-* 標頭。設定 enforcement.fail_closed_on_error: true 改為關閉失敗,這會返回相同的 429 billing_error,但訊息為 spend limit unavailable,沒有期間、重設時間或 retry-after 標頭。開放失敗可防止存儲中斷成為推論中斷;關閉失敗保證沒有無計量支出。 開放失敗只有在您的負載平衡器或協調器仍然將流量路由到閘道時才有幫助。請參閱中斷行為以了解 store.readiness_grace_seconds,它可以讓副本在短暫中斷期間通過其就緒檢查。

Claude Code 中的使用量警告

當開發人員接近其上限時,Claude Code 會發出警告:一旦使用率超過 75%,再次超過其最常消耗上限的 95%。當閘道阻止請求時,Claude Code 會按原樣顯示閘道的 429 訊息,包括您的 admin.blocked_message。 警告基於回應標頭:
  • 在閘道伺服器上使用 v2.1.225 或更新版本時,具有上限的開發人員的每個成功 /v1/messages 回應都會在 anthropic-ratelimit-unified-* 標頭中攜帶他們自己的上限使用率和重設時間。
  • 在開發人員的機器上也使用 v2.1.225 或更新版本時,Claude Code 會讀取標頭並顯示警告。
標頭始終描述開發人員自己的上限:閘道會移除上游提供商的速率限制標頭(描述您的共享配額),並永遠不會轉發它們。 在開發人員的機器上使用 v2.1.251 或更新版本時,Claude Code 也會讀取相同的標頭,以在 /usage 中顯示 Spend limit 列,其中包含使用的上限百分比及其重設時間,並將 rate_limits.spend_limit 物件新增到 狀態列 輸入。Claude Code 將兩者顯示為百分比而不是美元金額,並且不需要閘道伺服器上的版本比 v2.1.225 更新。

管理員 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 是 OIDC sub。
  • actor.name 和 actor.email_address 為 null,直到主體透過閘道的第一個推論請求。閘道沒有使用者目錄;它從每個使用者自己的工作階段 JWT 記錄最後看到的值。
  • 每行也帶有一個 groups 陣列,主體最後看到的 IdP 群組。這是一個閘道擴充,因此管理員 UI 可以顯示適用的每個上限層級;Anthropic 形狀的用戶端會忽略它。
  • 沒有 user_ids[] 篩選,它列出有記錄支出的主體,因為閘道無法列舉所有組織成員。
群組來源的上限根據那些最後看到的群組解析,使用與執行相同的 group_limit_mode 平局決勝,因此檢視器顯示實際適用的上限。
q= 和 user_ids[]= 乘坐 GET 查詢字串,因此任何前置代理或負載平衡器都會在其存取日誌中擷取它們。如果您的 PII 日誌原則很嚴格,請在那裡清理這些參數。

/audit

返回支出限制變更軌跡:誰變更了哪個上限,具有前/後快照,最新優先。has_more 是精確的。此端點遵循本地管理員 API 慣例,而不是第一方線路形狀。

分頁

原始列表按 after_id 和 before_id 分頁,它們是互斥的 spl_… ID;結果按建立排序,has_more 反映遍歷方向。/effective 按傳回的不透明 next_page 令牌分頁,作為 ?page= 傳遞,主體按升序排序,因此在記錄支出時頁面保持穩定。limit 在兩者上都是 1–1000,預設 20,在 /audit 上按 after_id 分頁,即前一頁上最後一個事件的數值 id,其 limit 預設為 100。

資料生命週期

閘道保持四個支出相關表;每小時掃描執行保留視窗: 當開發人員離開時,透過 DELETE /v1/organizations/spend_limits/{id} 刪除任何按使用者上限;其支出和身份行按上述保留視窗老化。若要立即清除一個人,用於離職或資料主體存取請求 (DSAR),直接針對閘道資料庫執行 DELETE FROM principal_emails WHERE principal = '<sub>'。這會移除唯一保持其電子郵件、名稱和群組的表格。spend 和 admin_audit 行僅參考偽匿名 OIDC sub,並按其自己的視窗老化。