所有頁面
本頁內容

Claude API 0.9.18 新增

Claude API 供應商用 Claude Console 的 API 金鑰來執行 Claude 對話,而不是用你的 Claude 訂閱。agent 是同一個:中繼機器上的 Claude Code,具備相同的工具、模式、提問卡片、subagent、導正和背景任務。改變的只有帳單。回合會計費到金鑰所屬的 Console 組織。

Claude API 與你的訂閱並存,而不是取代它。你可以用金鑰開始對話,也可以用訂閱開始對話,還可以在回合之間把 Claude 對話從一邊移到另一邊,同時保留它的 session。選用的每月上限會在此中繼的估算金額達到上限時,停止金鑰上的花費。所有供應商的對照表請見供應商一覽。

API 金鑰 #

你需要一把 Claude Console 的 API 金鑰,在 platform.claude.com 的 API keys(API 金鑰)中取得。請在 workspace 內建立它;見限制。開啟 Settings → Providers → Claude API(設定 → 供應商 → Claude API),也就是 Claude 後面的子分頁。

控制項 預設 作用
Enable Claude API for New Chat and the billing switch(在新對話與計費切換中啟用 Claude API) 儲存金鑰後開啟 在 New Chat(新對話)中提供 Claude API,並在 Claude 對話中提供計費切換。儲存金鑰之前無法勾選,切換後立即生效。
金鑰欄位(Claude Console API key…) 空白 你的金鑰。儲存金鑰後,欄位會顯示 Saved API key (enter to replace)。留空即保留已儲存的金鑰。
Default model(預設模型) 金鑰可用時為 Claude 分頁的預設模型,否則為第一個 Sonnet 新的 Claude API 對話一開始使用的模型。見模型。
Monthly cap in US dollars (optional)(每月上限,美元,選填) 空白(No cap) 本月的估算金額達到上限後,停止金鑰上的新回合。見每月上限。
Save Claude API settings(儲存 Claude API 設定) 儲存上述欄位。第一次儲存金鑰時也會開啟 Claude API。
Refresh models(重新整理模型) 再次向 Anthropic 詢問這把金鑰可以使用哪些模型。
Remove saved key(移除已儲存的金鑰) 詢問 Remove the saved Claude API key?,然後刪除金鑰、金鑰的模型清單和你在 Select Models(選擇模型)中的選擇,並關閉 Claude API。
Claude tab(Claude 分頁) 開啟 Claude 子分頁,兩者共用的設定都在那裡。見與 Claude 共用。

欄位下方的一行文字會告訴你目前的狀態:

狀態 意義
No API key saved. Claude chats run on the relay host's Claude login. 尚未儲存金鑰。
API key saved, Claude API is off. Switch it on to offer it in New Chat. 已儲存金鑰,但開關是關閉的。
API key saved. Claude API is on: pick it in New Chat, or switch a Claude chat to the API key. 已就緒。
API key saved, but Anthropic refused it: … 儲存金鑰或重新整理模型時,Anthropic 不接受這把金鑰。金鑰仍保持儲存;這行文字會一直顯示,直到某次儲存或 Refresh models 成功為止。

接著照常開始對話:在 New Chat 中選擇 Claude API。見開始對話。Claude API 對話會帶有金色的 Claude API 標籤,輸入區的鎖定註記則顯示 🔒 Session locked to Claude API models.

接受哪些金鑰 #

  • Console API 金鑰:以 sk-ant- 開頭、長度 8 到 512 個字元、不含空格的金鑰。
  • Claude 登入 token、session token 以及 Admin 金鑰會在儲存時被拒絕,並顯示一則指出你貼上了什麼的訊息,例如 This is an Anthropic Admin API key (it manages an organisation and cannot run models), not an API key.。其他廠商的金鑰會得到 This does not look like a Claude API key.。任何訊息都不會引用金鑰本身。
  • Anthropic 是否接受金鑰,會在中繼查詢它可用的模型時得知(見模型)。被拒絕的金鑰仍保持儲存,狀態行會說明原因。

儲存、更換和移除金鑰 #

  • 儲存另一把金鑰會清除金鑰的模型清單,並停止正在執行的 Claude API worker,包括正在跑回合的 worker,所以請在回合之間更換金鑰。下一則訊息會用新金鑰重新啟動它們。
  • 只要有任何 Claude API 對話已送出訊息或有排入佇列的訊息,移除金鑰就會被拒絕:Cannot remove the Claude API key while N Claude API conversation(s) still exist. Switch Claude API off for new conversations instead.。只要還有 worker 在用這把金鑰執行,也會被拒絕。
  • 移除金鑰或關閉 Claude API 時,尚未送出任何訊息的 Claude API 對話會移回 Copilot。已經開始的金鑰對話會保留它的計費切換,因此你可以把它移到訂閱;Claude API 關閉期間,它在金鑰上的回合不會執行。

在訂閱和金鑰之間切換對話 #

無論使用哪種計費方式,Claude 對話的鎖定註記下方都有一個切換:Subscription(訂閱)| API key(API 金鑰)。它在 Claude API 已開啟且有已儲存的金鑰時顯示。使用金鑰的對話在 Claude API 關閉後仍保留這個切換,所以可以移回訂閱。

  • 從下一個回合起生效。 執行中的回合會以它開始時的計費方式跑完。已排入佇列的訊息則以新的計費方式執行。
  • Session 會保留。 中繼會在回合之間重新啟動對話的 Claude Code,並繼續同一個 session。它會等候執行中的回合、未回答的提問、壓縮或背景任務,切換上會說明在等哪一項,例如 Moves to the API key after the running turn.
  • 金鑰上的第一個回合費用較高。 它沒有提示快取。切換上會說明這一點:The first turn on the API key has no prompt cache and costs more.
  • 對話紀錄會註記每次切換,例如 💳 Billing: this chat runs on the Claude API key from the next turn.,適用時還會附上 (switched by an agent) 或 (switched at the usage limit)。
  • 某一邊無法選擇時,它的按鈕會變灰,工具提示會說明原因。在以下情況切換會被拒絕:Claude API 沒有金鑰或已關閉、本月的上限已達到(此時切換上會顯示 This month's Claude API cap is reached: the chat stays on the subscription.)、要移回訂閱但 Claude 已關閉(CLAUDE_NOT_CONFIGURED),或對話的模型不在另一邊的模型清單上。
  • 頁面不是最新狀態。 從仍顯示舊計費方式的頁面送出的訊息,不會以新的計費方式送出:它的文字會回到草稿。

除此之外,沒有其他方式會切換對話。切換的方式共有三種:切換、用量上限橫幅,以及 agent 的 send:

  • 達到用量上限時。 當訂閱對話因達到 Claude 用量上限而暫停,如果該對話可以切換,橫幅會提供 Switch this chat to API key(將此對話切換為 API 金鑰)。暫停的回合隨即在金鑰上繼續執行。如果已達每月上限,橫幅會顯示 No switch to the API key: this month's Claude API cap is reached.
  • 由 agent 切換。 relay_tool 的 send 對 Claude session 接受 provider(claude 或 claude-api),並在送出訊息的同時切換。核准卡片此時會顯示 Switches billing to API key。

計費方式沒有依資料夾的設定:每個對話都有自己的計費方式,在 New Chat 中選擇,並用切換變更。資料夾所設定的提交署名,在兩種計費方式下都適用。

每月上限 #

Monthly cap in US dollars (optional) 依此中繼自己的估算,限制它在一個日曆月內花在這把金鑰上的金額。金額須大於 0、最高 1,000,000,最多兩位小數;留空表示沒有上限。

本月的估算金額一旦達到上限:

  • 金鑰上的新回合不會執行。 對話會收到一則以 Error code: relay.claude-api-cap-reached. 結尾的註記,以及 Claude API settings(Claude API 設定)按鈕(會開啟分頁並定位到上限欄位)和 Switch to subscription(切換為訂閱)按鈕。
  • 切換到金鑰會被拒絕,不論是透過切換、用量上限橫幅還是 agent。
  • New Chat 會拒絕建立 Claude API 對話。 對話框會保持開啟,顯示原因、Claude API settings,以及 Start on subscription(以訂閱開始),後者會改用 Claude 開始同一個對話(Claude 開啟時才提供)。在手機上,對話框會捲動到這裡。
  • agent 也會被拒絕。 agent 對金鑰 session 的 send,以及它為 Claude API 對話呼叫的 create_session,都會被拒絕:中繼會回應 409 CLAUDE_API_CAP_REACHED,不會排入佇列或建立任何東西。
  • Claude Code 自行在金鑰上啟動的回合(背景任務回報結果時)會收到這則註記,而且對話的背景任務會被停止,因為每次回報都會再啟動一個這樣的回合。它的第一個請求可能已經計費。每個對話只會收到一次這則註記,直到上限解除、儲存了 Claude API 設定,或該對話又有回合在金鑰上執行為止。

已在執行的回合會跑完。回合的費用在結束時才入帳,所以當時正在執行的回合可能讓本月花費超過上限。上限只計算估算中有價格的部分(見限制)。設定了上限但無法讀取花費時,上限視為已達到。月份以中繼為準:在中繼所在時區的每月 1 日午夜重新計算。Console 中設定的花費限制會另外疊加生效。

當 Claude API 沒有金鑰(relay.claude-api-not-configured)或已關閉時,也會出現同樣的註記和按鈕:回合不會執行。此時 New Chat 同樣會以 CLAUDE_API_NOT_CONFIGURED 拒絕建立 Claude API 對話。

用量卡片 #

只要已儲存金鑰,📊 Check Usage(檢查用量)就會有 Claude API 分頁,即使 Claude API 已關閉也一樣,讓當月的花費一直看得到。它顯示此中繼在金鑰上的回合估計花了多少錢:

部分 顯示內容
Monthly cap(每月上限)長條 只在設定了上限時顯示:本月估算金額相對於上限的比例,標示為 estimated(估算),並顯示何時重新計算。
Estimated today(今日估算)、Estimated this month(本月估算) 當日和本月至今的花費。
Estimated spend by model, this month(依模型估算花費,本月) 每個模型一列,並附上今天的花費。
Tokens by model, this month(依模型的 token,本月) 每個模型的快取讀取、其他輸入(包含寫入提示快取的部分)和輸出,以及有多少輸入來自快取。
估算說明 數字的來源。

和其他長條一樣,長條會在達到上限的 50% 和 75% 時變色,90% 時轉為紅色;見閱讀卡片。卡片提供 Console billing(Console 計費)和 Console limits(Console 限額)的連結。

數字的來源。 這些數字是 Claude Code 依它自己的價格表算出的估算,涵蓋此中繼上使用已儲存金鑰的回合,因此 subagent、壓縮和網頁搜尋都包含在內。OAR 沒有自己的價格表。日期和月份依中繼的時鐘和時區計算。以 Max 或 Team 方案附帶的 API 點數支付的回合也會計入;OAR 看不到這些點數,也看不到 Console 餘額。實際數字和餘額請看 Console 的計費頁面。

沒有價格的 token。 Claude Code 沒有價格資料的模型會顯示 no price known,而不是金額,絕不會顯示 $0。排除了這類 token 的總計會顯示 (estimate incomplete)。

agent 可以用 relay_tool 的 usage 動作讀取同一張卡片。

模型 #

中繼會在你儲存金鑰時、重新開啟 Claude API 時,以及按下分頁上的 Refresh models 或 🤗 Select Models 中的 Refresh(重新整理)時,向 Anthropic 詢問這把金鑰可以使用哪些模型(GET /v1/models)。請求在 10 秒後放棄。

  • 收到第一次回應之前,分頁會提供 Claude 分頁的模型,並附上註記 Not listed by Anthropic yet: these are the Claude tab's models until the key's list is read.
  • 請求失敗時,會保留中繼原有的清單;Refresh models 會顯示 Claude API model discovery failed. The stored models were kept: …。
  • 長上下文。 上下文視窗達 1M token 以上的模型,或 Claude 分頁列有其 1M 版本的模型,也會多一個 [1m] 版本,和 Claude 一樣在 Context window(上下文視窗)下拉選單中提供。
  • 顯示哪些模型。 🤗 Select Models → Claude API(選擇模型 → Claude API)決定輸入區提供哪些模型。Default model 一律會提供。
  • 每則訊息可換。 和 Claude 一樣,對話可以在回合之間更換模型。

Reasoning effort #

reasoning effort 選擇器的運作方式和 Claude 相同。等級來自 Anthropic 的模型清單:none 和模型回報的等級,支援 xhigh 的模型另外還有 Ultracode。沒有回報 reasoning effort 支援的模型只提供 none。讀取到金鑰的模型清單之前,模型使用 Claude 分頁為它設定的等級。🧠 對話框裡有和 Claude 相同的 Thinking(思考)控制項。

與 Claude 共用 #

提交署名、背景指令上限、reasoning effort 等級和壓縮視窗都沿用 Claude 分頁的設定,所以切換計費只會改變由誰付費:

同一個 Claude 設定資料夾。 Claude API 對話使用和訂閱對話相同的 Claude Code 資料夾(~/.claude 或 CLAUDE_CONFIG_DIR):相同的技能、外掛、MCP 伺服器和對話紀錄。正因如此,對話在切換時才能保留它的 session。該資料夾或對話資料夾 .claude/ 中的設定無法改變金鑰的去向:中繼會以 Anthropic 的位址和這把金鑰覆蓋它們。

金鑰上沒有的功能。 Claude 的方案用量計量和用量上限暫停不適用:被 Anthropic 拒絕的回合會失敗,並附上一則註記。Claude API 對話執行時,所有 hook 和狀態列都會關閉;見安全性。

其他部分請參考 Claude。 其他頁面描述 Claude 對話的行為時,例如 subagent、背景任務、壓縮、計畫看板、提問卡片或回合進行中的傳送按鈕,Claude API 對話的行為都相同。

限制 #

  • 不屬於任何 workspace 的金鑰會得到 HTTP 400。 對於沒有綁定 workspace 的金鑰,Anthropic 會回應 HTTP 400,分頁會顯示 API key saved, but Anthropic refused it: …。請在 Claude Console 的某個 workspace 內建立金鑰,並儲存那把金鑰。在 OAR 中指定 workspace 的功能已在規劃中。
  • 沒有價格的模型。 Claude Code 沒有價格資料的模型(目前是 Claude Haiku 5.5)會在卡片上顯示 no price known。它的 token 不會計入估算,也不會計入上限。
  • 估算只涵蓋此中繼。 這把金鑰的其他用途不在其中;Console 有所有請求的紀錄。
  • 沒有餘額。 OAR 不會讀取 Console 餘額或方案的 API 點數。
  • 沒有基礎 URL。 金鑰只會送到 https://api.anthropic.com。沒有設定其他端點的選項。
  • agent 可以讀取金鑰。 見安全性。

錯誤碼 #

失敗的 Claude API 回覆會以 Error code: relay.<code>. 結尾,部分錯誤碼還會附上直接通往修正方式的按鈕:

錯誤碼 時機 按鈕
relay.claude-api-cap-reached 本月的估算金額已達到上限;回合沒有執行。 Claude API settings(定位到上限欄位)、Switch to subscription
relay.claude-api-not-configured Claude API 沒有金鑰、已關閉,或中繼無法檢查;回合沒有執行。 Claude API settings、Switch to subscription
relay.claude-api-key Anthropic 不接受這把金鑰(HTTP 401 或 403)。 Claude API settings
relay.claude-api-key-source Claude Code 以已儲存金鑰以外的憑證啟動,回合已被停止。見安全性。 Claude API settings
relay.claude-api-credit 帳戶的點數餘額不足。 Add funds(新增資金)、Claude API settings
relay.claude-api-billing Anthropic 因計費原因拒絕了請求(HTTP 402)。 Console billing
relay.claude-api-spend-limit 帳戶達到了 Console 中設定的花費限制。 Console limits
relay.claude-api-rate-limit Anthropic 正在對這把金鑰進行速率限制,或伺服器過載(HTTP 429 或 529)。 Console limits

Claude API settings 會開啟 Settings → Providers → Claude API。Add funds 和 Console billing 會開啟 Console 的計費頁面,Console limits 則開啟它的限額頁面。Switch to subscription 會讓對話從下一個回合起改用你的訂閱;請再傳送一次訊息。

中繼自己的拒絕也有錯誤碼:

錯誤碼 出現位置 意義
CLAUDE_API_CAP_REACHED New Chat、計費切換、agent 的 send 或 create_session 已達到上限。
CLAUDE_API_NOT_CONFIGURED New Chat、計費切換 Claude API 沒有金鑰,或已關閉。
CLAUDE_NOT_CONFIGURED New Chat、計費切換 Claude 供應商(訂閱)已關閉:無法開始 Claude 對話,使用金鑰的對話也無法移回。請在 Settings → Providers → Claude(設定 → 供應商 → Claude)中開啟 Claude。
CLAUDE_BILLING_MODEL_UNAVAILABLE 計費切換 對話的模型不在另一邊的清單上。請先選擇另一邊有的模型,再切換。
CLAUDE_BILLING_SWITCH_REQUIRED、CLAUDE_BILLING_CHANGED 傳送訊息 訊息指定了另一種計費方式,或來自仍顯示舊計費方式的頁面。不會傳送任何東西;文字會回到草稿。

疑難排解 #

問題 該怎麼做
New Chat 中沒有 Claude API,或切換拒絕 API key 在 Settings → Providers → Claude API 儲存金鑰,確認已勾選 Enable Claude API for New Chat and the billing switch,並確認本月花費尚未達到上限。切換的工具提示會說明原因。
出現 API key saved, but Anthropic refused it: … 並帶有 400,或每個回合都以 HTTP 400 失敗 這把金鑰沒有綁定 workspace。請在 Claude Console 的某個 workspace 內建立金鑰並儲存。
relay.claude-api-key 金鑰錯誤或已被撤銷。請在回合之間貼上有效的金鑰並儲存。
relay.claude-api-credit、relay.claude-api-billing 或 relay.claude-api-spend-limit 按 Add funds、Console billing 或 Console limits,在 Claude Console 中處理,然後再傳送一次訊息。
relay.claude-api-cap-reached 按 Switch to subscription,或透過 Claude API settings 調高上限。上限會在每月 1 日重新計算。
New Chat 顯示已達到上限 按 Start on subscription,或調高上限。
卡片上某個模型顯示 no price known Claude Code 還沒有它的價格資料(目前是 Claude Haiku 5.5)。它的 token 會列出,但不計入估算或上限。
卡片上的花費比 Console 的低 卡片只計算此中繼在這把金鑰上的回合。
relay.claude-api-key-source 從中繼機器上的 Claude Code 設定(settings.json)中移除 apiKeyHelper 或其他憑證,檢查分頁上的金鑰,然後再傳送一次訊息。
Cannot remove the Claude API key while … 封存或刪除那些對話,或把它們移到訂閱,或改為關閉 Claude API。

安全性 #

金鑰存放在哪裡。 金鑰儲存在中繼機器上的中繼資料庫中,絕不會傳送到瀏覽器:分頁只會顯示已儲存一把金鑰。中繼自己只用它發出一種請求,也就是取得模型清單,而且只會把它送到 https://api.anthropic.com,不會送到其他地方。金鑰只會傳給 Claude API 對話的 worker;session 在 tmux 下執行時,是透過只有中繼使用者能讀取的檔案傳遞。在 worker 內,金鑰會透過環境變數,以及經由標準輸入交給 Claude Code 的設定傳遞,絕不會出現在命令列上,因為機器上的其他使用者可以讀取命令列。中繼自身環境中的金鑰(ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN)不會傳給任何對話。

agent 看得到什麼。 和 CLI 持有的任何金鑰一樣,agent 自己執行的指令可以從環境中讀取金鑰。從儲存的那一刻起,中繼會把 worker 發送的所有內容和 worker 記錄中的金鑰替換為 [redacted],做法和 DeepSeek 相同。這能讓金鑰不出現在 OAR 儲存和顯示的內容中;但它無法防範 agent。

憑證會經過檢查,但可能有一個模型請求搶先送出。 Claude API 對話共用存放你 Claude 登入的那個 Claude Code 資料夾。中繼會讓已儲存的金鑰優先於該資料夾或對話資料夾設定中的任何憑證;如果 Claude Code 的啟動報告指出它的金鑰來自其他來源,中繼會立刻停止回合(relay.claude-api-key-source)。Claude Code 不會等待這項檢查:它會在報告後約 50 到 90 ms 送出第一個模型請求,所以在停止生效之前,可能已經有一個模型請求以其他憑證送出,例如你的 Claude 登入。這項檢查把錯誤憑證的影響限制在那一個模型請求;它無法防止。在使用訂閱的對話中,同樣的檢查會反方向進行;見 Claude。

沒有 hook。 Claude API 對話中的 Claude Code 啟動時,所有 hook 都會關閉:你自己的(~/.claude)、對話資料夾的(.claude/settings.json、settings.local.json)和外掛的 hook 都不會執行,狀態列指令也不會。否則它們會以中繼使用者的身分執行,而且環境中帶有金鑰。這項設定位於 Claude Code 的命令列上,所以設定檔無法把它們重新開啟。受管設定(由機器管理員設定)中的 hook 仍會執行。使用訂閱的對話會保留它們的 hook 和狀態列。

哪些內容會送到 Anthropic。 agent 在回合中讀取和寫入的所有內容,和訂閱對話一樣。

更多內容請見安全性。