Anthropic 互換 API

TokenCode は Anthropic Messages API プロトコルに互換です。Anthropic SDK または Claude プロトコル互換の任意のクライアントから直接接続できます。

Base URL

text
https://tokencode.dev

認証

すべてのエンドポイントには認証が必要です:

  • Bearer TokenAuthorization: Bearer <your-api-key>
  • x-api-key ヘッダーx-api-key: <your-api-key>

Messages

Anthropic Claude 互換の Messages エンドポイント。Claude モデルに対応しており、プロトコル変換を通じて他のモデルの呼び出しにも対応します。

bash
curl https://tokencode.dev/v1/messages \
  -H "x-api-key: sk-your-api-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "量子コンピューティングについて説明して"}
    ]
  }'

リクエストパラメータ:

パラメータ 必須 説明
model string はい モデル ID(例:claude-sonnet-4-6
messages array はい メッセージオブジェクトの配列
max_tokens integer はい 最大生成 Token 数
stream boolean いいえ ストリーミングレスポンスを有効にするかどうか
temperature number いいえ サンプリング温度(0-1)
top_p number いいえ 核サンプリング確率
top_k integer いいえ Top-K サンプリング
stop_sequences array いいえ ストップシーケンス
system string/array いいえ システムプロンプト
tools array いいえ ツール定義
tool_choice object いいえ ツール呼び出し戦略

レスポンス例:

json
{
  "id": "msg_abc123",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "量子コンピューティングは量子力学の原理を利用した..."
    }
  ],
  "model": "claude-sonnet-4-6",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 25,
    "output_tokens": 128
  }
}

ストリーミングレスポンス

"stream": true を設定すると、レスポンスは SSE 形式になり、イベントタイプは Anthropic ネイティブプロトコルに準拠します:

text
event: message_start
data: {"type":"message_start","message":{"id":"msg_abc123","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4-6","usage":{"input_tokens":25,"output_tokens":0}}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"量子"}}

event: message_stop
data: {"type":"message_stop"}

プロトコル自動変換

Anthropic プロトコルエンドポイントから Claude 以外のモデルを呼び出すと、TokenCode が自動的にプロトコル変換を行います:

  • リクエスト変換:Anthropic Messages 形式を対象モデルのネイティブ形式(OpenAI Chat Completions など)に変換
  • レスポンス変換:対象モデルのレスポンスを Anthropic Messages 形式に変換して返却
  • ストリーミング適応:ストリーミングイベントタイプを Anthropic の SSE イベント形式に自動適応

つまり、Claude Code などの Anthropic ネイティブクライアントから、このエンドポイントを通じて OpenAI や Gemini などの他のモデルを呼び出すことができ、一切の適合作業は不要です。

Anthropic SDK の使用

python
import anthropic

client = anthropic.Anthropic(
    api_key="sk-your-api-key",
    base_url="https://tokencode.dev"
)

# Claude モデルの呼び出し
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "こんにちは"}]
)

# OpenAI モデルの呼び出し — プロトコル自動変換
message = client.messages.create(
    model="gpt-5.5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "こんにちは"}]
)
javascript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: "sk-your-api-key",
  baseURL: "https://tokencode.dev",
});

// Claude モデルの呼び出し
const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "こんにちは" }],
});

マルチモーダル入力

画像入力(Vision)に対応しています:

python
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": "<base64-encoded-image>"
                    }
                },
                {
                    "type": "text",
                    "text": "この画像を説明して"
                }
            ]
        }
    ]
)

エラーレスポンス

エラーレスポンスは Anthropic エラー形式に従います:

json
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "max_tokens: required"
  }
}
HTTP ステータスコード 意味
400 リクエストパラメータが無効
401 認証失敗 — API Key が無効
403 権限不足
404 モデルが存在しない
429 レート制限または残高不足
500 サーバー内部エラー
529 上流サービス過負荷