Claude API を Base URL とキーの変更だけで呼び出す
Anthropic SDK でも OpenAI SDK でも、Base URL を https://api.relayswitch.io/v1 に、キーを RelaySwitch のものに変えるだけで Claude を呼び出せます。Claude モデルは 13 個あり、カタログの単価どおりにトークン単位で課金されます。
01まず curl で確認する
SDK に組み込む前に、curl でキーと Base URL を確認します。Anthropic Messages 形式のエンドポイントは /messages です。キーは x-api-key と Authorization: Bearer のどちらのヘッダーでも送れますが、1 つのリクエストに付けられるキーは 1 つです。
ストリーミングを使うときは、リクエストの stream を true にします。レスポンスは server-sent events で返り、すべてのモデルが対応しています。
curl -i https://api.relayswitch.io/v1/messages \ -H "Authorization: Bearer sk-relay-..." \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{"model": "claude-fable-5.1", "max_tokens": 16, "messages": [{"role": "user", "content": "Reply with ok"}]}'02Anthropic SDK(Python)から呼ぶ
新しく書くコードや、Claude 固有の機能(system フィールド、ツール呼び出しのネイティブな構造、プロンプトキャッシュの指定)を使うコードは、Anthropic SDK で /messages を呼ぶのが素直です。変更するのは base_url と api_key の 2 か所で、リクエストボディ、モデル ID、ストリーミング、ツール呼び出しはそのままです。
レスポンスの usage に入る入力と出力のトークン数は、そのリクエストのレシートの記載と一致します。
import anthropic client = anthropic.Anthropic(base_url="https://api.relayswitch.io/v1", api_key="sk-relay-...")reply = client.messages.create( model="claude-fable-5.1", max_tokens=300, messages=[{"role": "user", "content": "Reply with ok"}],)print(reply.content[0].text)print(reply.usage)03OpenAI SDK のコードをそのまま使う
すでに OpenAI 形式で書かれたコードや、同じコードから他の開発元のモデルも呼びたい場合は /chat/completions を使います。model を Claude の ID に変えるだけで、コードの構造は変えずに済みます。
2 つの形式は同じキー、同じ残高を使い、料金も同じです。Claude の ID の書き方も共通です。
from openai import OpenAI client = OpenAI(base_url="https://api.relayswitch.io/v1", api_key="sk-relay-...")reply = client.chat.completions.create( model="claude-fable-5.1", messages=[{"role": "user", "content": "Reply with ok"}],)print(reply.choices[0].message.content)04Claude モデルの料金
単位は米ドル / 100 万トークンで、表には入力と出力の単価を載せています。これとは別に、プロンプトキャッシュにヒットしたトークンに適用されるキャッシュ入力の単価があり、通常の入力より低くなっています。長いシステムプロンプト、繰り返し送る文書、複数ターンの会話履歴がヒットすると、この単価で課金されます。モデルごとのキャッシュ入力の単価は、モデル名のリンク先(英語)で確認できます。
リクエストごとのレシートには入力、キャッシュ入力、出力のトークン数が分けて記載されるので、1 件ずつ照合できます。料金の仕組み全体は料金ページにまとめています。
| モデル | 開発元 | 入力 | 出力 | コンテキスト |
|---|---|---|---|---|
| Claude Fable 5.1claude-fable-5.1 | Anthropic | $6.00 | $30.00 | 1,000,000 |
| Claude Fable 5.2claude-fable-5.2 | Anthropic | $4.00 | $20.00 | 1,000,000 |
| Claude Fable 5claude-fable-5 | Anthropic | $3.00 | $15.00 | 1,000,000 |
| Claude Opus 5.5claude-opus-5-5 | Anthropic | $2.716 | $9.70 | 1,000,000 |
| Claude Sonnet 4.6claude-sonnet-4-6 | Anthropic | $1.80 | $9.00 | 1,000,000 |
| Claude Opus 4.6claude-opus-4-6 | Anthropic | $1.80 | $7.50 | 1,000,000 |
| Claude Opus 4.7claude-opus-4-7 | Anthropic | $1.80 | $7.50 | 1,000,000 |
| Claude Opus 4.8claude-opus-4-8 | Anthropic | $1.80 | $7.50 | 1,000,000 |
| Claude Opus 5claude-opus-5 | Anthropic | $1.80 | $7.50 | 1,000,000 |
| Claude Haiku 4.5claude-haiku-4-5 | Anthropic | $0.60 | $3.00 | 200,000 |
| Claude Sonnet 5claude-sonnet-5 | Anthropic | $1.20 | $3.00 | 1,000,000 |
| Claude Sonnet 5.5claude-sonnet-5-5 | Anthropic | $1.20 | $3.00 | 1,000,000 |
| Claude Haiku 5.5claude-haiku-5-5 | Anthropic | $0.0582 | $0.1455 | 1,000,000 |
米ドル / 100 万トークン
05エラーコードの読み方
エラーの本文は、呼び出し側が使った形式のエラー構造で返ります。401 から 404 はリクエストがモデルに届く前に返り、429、502、503 は内容が返らないため、いずれも課金されません。
401 invalid_api_key | キーが付いていない、間違っている、または失効しています。 |
402 insufficient_balance | 残高が不足しています。キーの予算や利用上限に達した場合は、別のエラーコードになります。 |
403 scope_denied | キーのモデル許可リストに、その ID がありません。 |
404 model_not_found | モデル ID がカタログにありません。多くは綴りの誤りです。 |
429 rate_limited | キーのレート上限に達しました。retry-after ヘッダーが待ち時間を秒で示します。 |
| 502 / 503 | 経路でエラーが起きたか、応答できる経路が一時的にありません。 |
06本番に出す前に
本番環境には専用のキーを作り、必要に応じて予算、モデルの許可リスト、IP の許可リストを設定します。何も設定しないキーの既定は 1 分あたり 600 リクエストで、キーごとに変更できます。
失敗したリクエストは retry-after を見て再試行の間隔を決めます。レスポンスヘッダーのリクエスト ID をログに残しておくと、調査のときにその 1 回の呼び出しを特定できます。同じ ID に複数の経路があるモデルでは、1 つの経路が 5xx や 429 を返すとリクエストは次の経路へ自動で回り、料金は変わりません。経路が 1 つだけのモデルは 503 を返します。
エンドポイントの一覧はドキュメント(英語)にあります。
よくある質問
- Anthropic の Console で使う Claude API と、コード上は何が違いますか?
- 違いは Base URL とキーの 2 か所です。Anthropic の Console でアカウントを作って前払いする代わりに、RelaySwitch に前払いし、RelaySwitch のキーで呼び出します。リクエストボディ、モデル ID、ストリーミング、ツール呼び出しはそのままです。
- Base URL に /v1 は必要ですか?
- https://api.relayswitch.io/v1 をそのまま指定してください。SDK が /messages や /chat/completions を自動で付け足します。
- ストリーミングとツール呼び出しには対応していますか?
- 対応しています。stream を true にすると server-sent events で返ります。Chat Completions、Responses、Anthropic Messages のいずれも、ストリーミングとツール呼び出しに対応しています。
- 呼び出しているのが本当に Claude かどうか、どう確認できますか?
- 全モデルに毎日同じチェック用プロンプトを送り、過去の応答と比較した結果を https://api.relayswitch.io/v1/proof で公開しています。加えて、リクエストごとの署名付きレシートにモデル ID、課金トークン数、料金が記載され、公開鍵を使ってオフラインで検証できます。
- プロンプトの内容は保存されますか?
- リクエストの本文は中継するだけで、保存せず、学習にも使いません。
- Node.js からも使えますか?
- 使えます。Anthropic の SDK(@anthropic-ai/sdk)で baseURL と apiKey を指定すれば、Python と同じように messages を呼び出せます。