コンテンツへスキップ
概要

概要

API の全体像:すべてのエンドポイント、リクエストとエラーの形、呼び出しの課金方法、OpenAI または Anthropic の SDK から移行する際に知っておくべきこと。

エンドポイント

すべてのエンドポイントは、単一のベース URL の下にあり、HTTPS で提供されます。

ベース URL
https://api.shannon-ai.com
エンドポイント 形式 用途
POST /v1/chat/completions OpenAI Chat Completions 会話を送信して、次の回答を受け取ります。ストリーミングの有無を選べます。
POST /v1/messages Anthropic Messages 同じ内容を、Anthropic SDK のリクエストと応答の形式で扱います。
POST /v1/responses OpenAI Responses 同じ内容を、Responses の形式で扱います。このエンドポイントは状態を保持しません。リクエストごとに会話を送信してください。
GET /v1/models OpenAI モデルリスト コンテキストウィンドウ、価格、機能とともにモデルを一覧表示します。キーは不要です。
POST /v1/tokenize Shannon API ホスト型オープンウェイトモデル向けに、テキストまたはチャットリクエストのトークンを数えます。無料。
POST /v1/messages/count_tokens Anthropic トークンカウント ホスト型オープンウェイトモデル向けに、Messages リクエストの入力トークンを数えます。無料。

テキストを生成する三つのエンドポイントは、同じモデルに到達します。お使いのコードがすでに使っている形式のものを選んでください。

リクエストの基本

ヘッダー 説明
Authorization: Bearer <key> API キー。x-api-key を送信する場合を除き、GET /v1/models 以外のすべてのエンドポイントで必須です。
x-api-key: <key> Anthropic SDK が送信するヘッダーでの、同じキー。すべてのエンドポイントで読み取られます。
Content-Type: application/json すべての POST で必須です。ない場合、応答は 415 です。
x-request-id: <your id> 任意。リクエストに付ける独自の ID。応答ヘッダー x-request-id にそのまま返されます。指定しない場合、API が十六進数 12 文字の ID を作成します。
  • すべての POST のボディは、最大 32 MiB の単一の JSON オブジェクトです。
  • API が知らないフィールドは、エラーにならず、何の影響もありません。他のプロバイダー向けに書かれたリクエストが、余分なフィールドのために失敗することはありません。
  • 既知のフィールドの JSON 型が正しくない場合や、必須フィールドがない場合は、422 で応答します。有効な JSON ではないボディには 400 で応答します。
  • model は、モデルと料金のページにある ID のいずれかです。大文字と小文字は区別されません。

応答は JSON、またはリクエストで stream を true に設定した場合は server-sent events のストリームです。各エンドポイントは、それぞれの形式で応答します。すべての応答に x-request-id ヘッダーが付きます。

リクエストが通過する確認

リクエストは、モデルが実行される前に、決まった順序で確認されます。最初に失敗した確認が応答するため、401 が返った段階では、ボディについてまだ何も分かりません。

エラーの形式

エラーは、type と message を持つ error を含む JSON オブジェクトです。/v1/messages は Anthropic SDK が期待する形で包み、それ以外のパスはすべて OpenAI の形式を使います。

{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: gpt-4o"
  }
}
  • type と message を読んでください。code と param は一部のエラーにのみ含まれるため、省略可能なものとして扱ってください。param は常に null です。
  • ストリームが始まった後は、ステータスはすでに 200 です。その後の失敗は、ストリーム内のエラーフレームとして届きます。
  • すべてのエラー応答に x-request-id ヘッダーが付きます。
ステータス タイプ 発生条件
400 invalid_request_error ボディが有効な JSON ではない、モデル ID が不明、または送信した種類の入力をモデルが受け付けません。
401 authentication_error キーがないか、有効ではありません。
404 not_found_error パスが存在しません。
405 api_error パスは存在しますが、メソッドが正しくありません。
413 invalid_request_error ボディが 32 MiB を超えています。
415 invalid_request_error Content-Type が application/json ではありません。
422 invalid_request_error フィールドの JSON 型が正しくないか、必須フィールドがありません。
429 rate_limit_error 残高がリクエストをまかなえない、一分間に 120 を超えるリクエストが届いた、枠の Shannon Coder 呼び出し回数を使い切った、またはモデルがビジー状態です。どれかはメッセージで分かります。
5xx api_error ステータス 500、502、503、504:リクエストは有効でしたが、応答できませんでした。もう一度送信してください。500 にはタイプ server_error が付くことがあります。

エラー処理

課金と残高

  • 残高はアカウントごとにひとつで、チャットと API で共有されます。まず本日のプラン枠、次に購入済みクレジットが消費されます。API 専用の枠はありません。
  • リクエストは出力バジェット(max_tokens、デフォルトは 4,096)を確保し、その後、実際に使用したトークンに対して、モデルの価格で課金されます。
  • すべての応答は、トークン数を usage で報告します。キーと使用量のページには、残高と各リクエストのコストが表示されます。
  • すべてのリクエストは平等に処理されます。リクエスト頻度に関する唯一の制限は、フラッド保護(アカウントあたり一分間に 120 リクエスト)です。並列に送信されたリクエストは順番待ちになります。

上限と残高 モデルと料金 キーと使用量

モデルによって異なるフィールド

どのモデルも同じリクエストを受け付けます。一部のフィールドは、特定のモデルでのみ有効です。どのモデルかは表に示しています。すべてのフィールドは、各エンドポイントのページに一覧があります。

フィールド 説明 適用モデル
system モデルへの指示:Chat Completions では system メッセージ、Messages では system、Responses では instructions。 ホスト型オープンウェイトモデル、shannon-1.6-*、shannon-2-*、shannon-coder-1
temperature サンプリング温度。 ホスト型オープンウェイトモデル、shannon-1.6-*、shannon-coder-1
top_p Nucleus サンプリング。 ホスト型オープンウェイトモデル
seed サンプリング用の固定シード。 ホスト型オープンウェイトモデル
stop 最大 4 個の停止シーケンス。 ホスト型オープンウェイトモデル
reasoning_effort モデルが回答する前にどれだけ推論するか。Responses では reasoning.effort、Messages では thinking。 ホスト型オープンウェイトモデル
web_search true を指定すると、このリクエストでモデルがウェブを検索できます。Chat Completions と Messages にある、この API 独自のフィールドです。 shannon-coder-1 を除く Shannon モデル
max_tokens 出力バジェット。すべてのモデルで、残高から確保される量を決めます。 回答の長さの上限として:ホスト型オープンウェイトモデル、shannon-1.6-*、shannon-coder-1

Chat Completions

OpenAI SDK から移行する場合

  • ベース URL を https://api.shannon-ai.com/v1 に設定し、キーを Shannon のキーにします。すると、Chat Completions と Responses の呼び出しは、SDK をそのまま使って動作します。
  • model は Shannon の ID でなければなりません。gpt-4o のような他のプロバイダーのモデル名には、400 と unknown model で応答します。
  • 推論は専用のフィールドで届きます。メッセージとストリームのデルタで、content と並んで reasoning_content に入ります。
  • ストリームは、最後のチャンクに必ず usage を finish_reason とともに含みます。
  • ストリーム内のツール呼び出しは、完全な arguments 文字列を含むひとつのチャンクとして届きます。
  • 応答の選択肢はひとつです。
  • 上の表にない OpenAI API のパス(/v1/embeddings など)には、404 で応答します。

Anthropic SDK から移行する場合

  • ベース URL を https://api.shannon-ai.com に設定し(/v1 は付けません)、キーを Shannon のキーにします。SDK はそれを x-api-key として送信します。
  • model は Shannon の ID でなければなりません。
  • この API では max_tokens は任意です。デフォルトは 4,096 です。
  • 応答には、タイプ thinking、text、tool_use のコンテンツブロックが含まれます。最初のブロックが常にテキストとは限りません。ブロックは type で選んでください。
  • stop_reason は end_turn または tool_use です。Shannon モデルのストリームは max_tokens で終了することもあります。
  • anthropic-version と anthropic-beta は受け付けられるため、SDK はそのまま動作します。リクエストにこれらは必須ではありません。
  • /v1/messages のエラーは Anthropic の形式です:{"type": "error", "error": {…}}。

これらの形式に対応するコーディングツールも同じように設定します。ベース URL、キー、そしてモデルとして Shannon の ID です。 CLI コーディングツール