API リファレンス
このページには、エンドポイントに共通する内容をまとめています。Base URL、認証、複数のエンドポイントが受け取るパラメータ、レスポンスの形式、ストリーミング、ゲートウェイが返すエラーと適用する制限です。以下の各エンドポイントページには、そのエンドポイント固有の内容だけを置き、残りはこのページを参照します。
Base URL
https://api.bricksum.com/v1以下のすべてのパスは、この Base URL からの相対パスです。Anthropic の SDK は /v1 を自分で付けるため、https://api.bricksum.com を指定してください。
認証
API キーを Authorization ヘッダーに Bearer トークンとして送信してください。x-api-key ヘッダーは Authorization がない場合にのみ読み取ります。両方がある場合は Authorization を使用し、Authorization の値が Bearer トークンの形式でなければ、x-api-key にフォールバックせずに拒否します。使用できるキーがないリクエストは、エンドポイントに届く前に 401 で拒否されます。
ゲートウェイは anthropic-version と anthropic-beta ヘッダーを読み取らないため、これらのヘッダーの有無にかかわらずリクエストを同じように処理し、?beta=true のようなクエリ文字列も受け付けます。上のルールの例外は GET /key だけです。このルートは Kiln API が処理し、キーを Bearer トークンとしてのみ受け取ります。詳細はそのページに記載しています。 認証
エンドポイント
現在提供しているエンドポイントです。クライアントがすでに使っている形式に合わせて選んでください。ゲートウェイはいずれも同じ方法で計測します。
| エンドポイント | 形式 | ストリーミング | 用途 |
|---|---|---|---|
| POST/chat/completions | OpenAI | data: チャンク | 会話とツール呼び出しに使います。ほとんどの OpenAI クライアントが使うエンドポイントです。 |
| POST/completions | OpenAI | data: チャンク | プロンプトに続くテキストを生成します。会話とツール呼び出しには対応しません。 |
| POST/responses | OpenAI | 型付きイベント | Responses 形式です。Codex CLI が使用します。状態を保存しないため、毎回会話全体を input に入れて送信します。 |
| POST/messages | Anthropic | 型付きイベント | Anthropic Messages 形式です。Claude Code が使用します。chat completions に変換し、同じ方法で計測します。 |
| POST/messages/count_tokens | Anthropic | なし | Messages リクエストの入力トークン数を数えます。推論は実行されず、課金されません。 |
| GET/models | OpenAI | なし | ゲートウェイが現在提供できるモデル ID の一覧です。課金されません。 |
| GET/key | Kiln | なし | 呼び出しに使ったキーのプロジェクト、ステータス、支出上限、有効期限、支出額です。ゲートウェイではなく Kiln API が処理します。 |
共通のリクエストパラメータ
複数のエンドポイントが受け取るリクエストパラメータです。ここに一度だけ記載し、各エンドポイントページには名前と、そのエンドポイントで異なる点だけを記載しています。
対応状況
- 対応
- ゲートウェイが処理するか、公開済みの実測で動作を確認した項目です。
- 転送のみ
- モデルサーバーに転送されます。Kiln は動作を検証していません。
- 無視
- 200 で受け付けられますが、適用されません。レスポンスのその他の部分は通常どおりです。
- 非対応
- エラーで拒否されるか、説明に記載したモデルでは動作しません。
modelstring対応モデル ID です(例:qwen3-32b)。送信できる ID は GET /models で取得します。カタログにない ID は、モデルに届く前に拒否されます。OpenAI 形式のエンドポイントは 404(model_not_found)、Anthropic 形式のエンドポイントは 404(not_found_error)を返します。
messagesarray必須対応これまでの会話です。古いメッセージから順に並べます。配列が空または未指定の場合は 400 で拒否され、課金されません。メッセージは role と content を持ち、content が取れる形は OpenAI 形式と Anthropic 形式のエンドポイントで異なるため、各エンドポイントページに記載しています。
max_tokensinteger対応生成する最大トークン数です。reasoning トークンも含まれるため、余裕を持って設定してください。上限に達したときの動作と、このフィールドがないときの動作はエンドポイントごとに異なります。
streamboolean対応true の場合、レスポンスは 1 つの JSON ボディではなく server-sent events のストリームになります。JSON の boolean で送信してください。OpenAI 形式のエンドポイントは data: 行を送り、data: [DONE] でストリームを終えます。Anthropic 形式の Messages エンドポイントは型付きのイベントを送ります。
- デフォルト
- false
toolsarray対応モデルが呼び出せる関数の定義です。それぞれに名前、description、引数の JSON Schema が必要で、フィールド名は 2 つの形式で異なります。どのモデルがどのツール選択の方式を適用するかは、モデルページの対応機能表に記載しています。
tool_choicestring | object対応モデルがツールを呼び出す必要があるかどうかを指定します。自動のツール選択ではモデルが判断します。強制的なツール選択はすべてのモデルで適用されるわけではなく、どのモデルがどの方式を適用するかはモデルページの対応機能表に記載しています。qwen3-32b では、強制的なツール選択が明確なエラーなしに失敗します(2026-09-26 実測)。tool_choice を "required" にすると本文が平文 "Internal Server Error" の HTTP 500 が返り、関数を指定すると arguments が空の 200(finish_reason "stop")が返ります。どちらも 4xx ではないため、再試行では解決しません。tool_choice は "auto" のみを送ってください。
どのエンドポイントがこれらのパラメータを受け取るか、そのエンドポイントで必須かどうかは、各エンドポイントページに記載しています。エンドポイントページに記載のないパラメータは、送信した値のままモデルサーバーに転送されます。Kiln は動作を検証していません。
レスポンスの形式
リクエストが成功すると、そのエンドポイントの形式の JSON ボディとともに 200 を返します。計測対象のエンドポイントで共通する項目は 2 つです。
| フィールド | 型 | 説明 |
|---|---|---|
| usage | object | このリクエストのトークン数です。フィールド名はエンドポイントの形式に従い、各エンドポイントページに記載しています。クレジットから差し引かれる金額(USD)である usage.cost は、OpenAI 形式の JSON レスポンスと、Chat completions・Completions のストリームの最後のチャンクにゲートウェイが追加します。Responses のストリームイベントと Messages のレスポンスにはトークン数だけが入り、cost フィールドはありません。 |
| X-Neocloud-Generation-Id | header | このリクエストの usage イベント ID を含むレスポンスヘッダーです。ログと一緒に保存してください。推論を実行しない GET /models と POST /messages/count_tokens は usage イベントを発行しないため、このヘッダーも送りません。 |
ストリーミング
stream: true の場合、レスポンスは server-sent events のストリームになります。OpenAI 形式のエンドポイントはチャンクごとに data: 行を 1 つ送り、data: [DONE] で終えます。Responses と Messages は、event: 行と続く data: 行からなる型付きのイベントを送ります。どちらの場合も生成が終わるまで接続が開いたままなので、長いリクエストが下記のタイムアウトに達しません。チャンクのフィールドとイベントの型は、各エンドポイントページに記載しています。 ストリーミング
ゲートウェイが返すエラー
以下のエラーは、リクエストがエンドポイントに届く前にゲートウェイが返すため、ゲートウェイが処理するすべてのエンドポイントで同じ形で現れます。メッセージの文言ではなく、HTTP ステータスで分岐してください。不正なリクエストボディ、存在しないモデル ID、誤ったメソッドのようにエンドポイント自身が返すエラーは各エンドポイントページにあり、すべてのステータスコードはエラーページにあります。 エラー
| ステータス | 原因 | 対処 |
|---|---|---|
| 401 | API キーがない、形式が不正、未登録、または期限切れです。 | x-api-key または Authorization ヘッダーとキーの有効期限を確認してください。 |
| 402 | クレジットが尽きた、組織が月間予算に達した、またはキーが支出上限に達しました。 | チャージするか、管理者に予算または上限の引き上げを依頼してください。 |
| 403 | API キーが停止または失効しています。 | コンソールでキーを再有効化するか、新しいキーを作成してください。 |
| 429 | 組織の 1 分あたりのリクエスト数またはトークン数の上限を超えました。 | x-ratelimit-reset 秒待ってから再試行してください。 |
制限
- コンテキスト長:モデルごとに異なり、プロンプトと出力の合計です。モデル別の値はモデルページに記載されています。これを超えるリクエストは 400 で拒否されます。
- リクエストボディ:ゲートウェイは先頭から最大 8 MiB までしか読み取りません。ボディはそれより小さくしてください。
- タイムアウト:ゲートウェイはリクエストを 60 分後に終了します。非ストリーミングのリクエストは完了するまでバイトを送信せず、ネットワークエッジがそのような接続を約 100 秒後に切断することがあります。長い生成は stream: true で送信してください。
- 組織ごとのレート制限:既定で 1 分あたり 60 リクエスト、設定されている場合は 1 分あたりのトークン数の上限、同時リクエスト 8 件です。
429 のヘッダーと再試行の方法は レート制限 ページにあります。
現在のサービングスタックは、OpenAI のパラメータすべてを適用するわけではありません。各エンドポイントページにパラメータごとの対応状況を示しており、既知の制限は OpenAI からの移行 ページの 1 か所にまとめています。