Developer guide
APIキーで認証する
APIキーを設定するヘッダーとSDKに設定するbase URL
CLEVIゲートウェイは、OpenAI互換パスとAnthropic互換パスを1つのAPIキーで認証します。
クライアントで設定する値は、キーを格納する認証ヘッダーとSDKのbase URLの2つです。使用できるヘッダー形式とbase URLは、規格ごとに異なります。
設定後にモデル一覧を取得すると、認証の成否をすぐに確認できます。
認証に失敗した場合は401を、認証後に権限や上限の条件を満たしていない場合は403を返します。
APIキーはコンソールのAPIキー画面で発行してください。同じ画面でキーの失効と使用範囲を管理できます。
認証ヘッダー
どちらの規格も、1つのリクエストヘッダーにAPIキーを格納します。X-API-KeyヘッダーまたはAuthorizationヘッダーのいずれかを使用し、使用できる形式は規格によって異なります。
| ヘッダー | OpenAI互換 | Anthropic互換 |
|---|---|---|
| X-API-Key: <キー> | 使用可能 | 使用可能 |
| Authorization: Bearer <キー> | 使用可能 | 使用可能 |
| Authorization: <キー> (Bearerなし) | 拒否 | 使用可能 |
OpenAI互換パスでAuthorizationヘッダーを使用する場合は、Bearerプレフィックスが必要です。プレフィックスなしでキーだけを送信すると、ゲートウェイはリクエストを拒否します。
ヘッダー名では大文字と小文字が区別されないため、Anthropic SDKが送信するx-api-keyヘッダーもそのまま動作します。両方のヘッダーを指定した場合は、X-API-Keyの値が優先されます。
base URL
既存のSDKは、base URLを以下のアドレスに変更するだけでそのまま使用できます。2つのアドレスは/v1を含むかどうかが異なるため、規格に合ったアドレスをそのまま指定してください。
| 規格 | base URL | パスのルール |
|---|---|---|
| OpenAI互換 | https://platform.clevi.net/api/v2/aiservice/openai/v1 | /v1までをbase URLに含めます。 |
| Anthropic互換 | https://platform.clevi.net/api/v2/aiservice/anthropic | Anthropic SDKがリクエストパスに/v1を直接追加するため、/v1の前で終わります。 |
認証の確認
キーと base URL を設定した後、モデル一覧を取得すると認証の有無を確認できます。以下の例では、同じ取得処理を curl、OpenAI SDK、Anthropic SDK で実行します。sk-... の部分には、API キー画面で発行したキーを入力してください。
curl で取得する場合は、どちらの仕様でも /v1/models までの完全なパスを指定します。最初のコマンドでは OpenAI 互換パスに X-API-Key ヘッダーを、2 番目のコマンドでは Anthropic 互換パスに Authorization ヘッダーを使用します。
curl https://platform.clevi.net/api/v2/aiservice/openai/v1/models \
-H "X-API-Key: sk-..."
curl https://platform.clevi.net/api/v2/aiservice/anthropic/v1/models \
-H "Authorization: Bearer sk-..." \
-H "anthropic-version: 2023-06-01"OpenAI SDK では、base_url に /v1 まで含めたアドレスを指定します。
from openai import OpenAI
client = OpenAI(
api_key="sk-...",
base_url="https://platform.clevi.net/api/v2/aiservice/openai/v1",
)
for model in client.models.list():
print(model.id)Anthropic SDK では、base_url を /v1 の手前で終わるアドレスに指定します。
認証には SDK が送信する x-api-key ヘッダーをそのまま使用します。
from anthropic import Anthropic
client = Anthropic(
api_key="sk-...",
base_url="https://platform.clevi.net/api/v2/aiservice/anthropic",
)
for model in client.models.list(limit=20).data:
print(model.id)どの例でもレスポンスが 200 であれば認証に成功しており、レスポンスの data にこのキーで呼び出せるモデル一覧が含まれます。401 の場合は、次のセクションの手順で原因を確認してください。
認証失敗
キーがない、または期限切れ・無効化されたキーを送信すると 401 を返します。OpenAI 互換パスでキーを指定せずに呼び出すと以下の本文を返し、Anthropic 互換パスでは error.type が authentication_error になります。
{
"error": {
"message": "API key is required.",
"type": "invalid_request_error"
}
}401 を受け取った場合は、次の順序で確認してください。
- API キー画面でキーの状態を確認してください。期限切れまたは無効化されたキーの場合は、新しく発行してください。
- ヘッダー名が X-API-Key または Authorization であることを確認してください。
- OpenAI 互換パスで Authorization ヘッダーを使用する場合は、Bearer プレフィックスがあることを確認してください。
修正後、認証確認セクションのモデル一覧取得を再度実行し、200 が返ることを確認してください。
併用するヘッダー
次のヘッダーはすべて任意です。問題を追跡できるよう、X-Request-Id は指定することを推奨します。
| ヘッダー | 用途 | 省略した場合 |
|---|---|---|
| X-Request-Id | リクエスト追跡用の識別子です。Anthropic互換パスでは、レスポンスのrequest-idヘッダーとして同じ値を返します。 | サーバーが発行します。 |
| X-Region-Code | 呼び出しリージョンを指定します。 | globalです。 |
| X-Product-Sku (クエリ product_skuでも指定可能) | 課金に使用するProduct SKUを直接指定します。ヘッダーがクエリより優先され、主に音声・ボイスパスで使用します。 | ボイスパスでは省略できません。audio/speechとaudio/transcriptionsでは、リクエスト本文のmodelでProductを選択します。 |
| anthropic-version / anthropic-beta | Anthropic互換パスでそのまま転送します。 | バージョンは2023-06-01です。 |
5xxが繰り返し発生する場合は、ヘルプとお問い合わせからX-Request-Idとともにお知らせください。直接指定した値であれば、クライアントの記録とすぐに照合できます。