TokenCode は Anthropic Messages API プロトコルに互換です。Anthropic SDK または Claude プロトコル互換の任意のクライアントから直接接続できます。
https://tokencode.dev
すべてのエンドポイントには認証が必要です:
Anthropic Claude 互換の Messages エンドポイント。Claude モデルに対応しており、プロトコル変換を通じて他のモデルの呼び出しにも対応します。
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 | いいえ | ツール呼び出し戦略 |
レスポンス例:
{
"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 ネイティブプロトコルに準拠します:
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 が自動的にプロトコル変換を行います:
つまり、Claude Code などの Anthropic ネイティブクライアントから、このエンドポイントを通じて OpenAI や Gemini などの他のモデルを呼び出すことができ、一切の適合作業は不要です。
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": "こんにちは"}]
)
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)に対応しています:
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 エラー形式に従います:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "max_tokens: required"
}
}
| HTTP ステータスコード | 意味 |
|---|---|
| 400 | リクエストパラメータが無効 |
| 401 | 認証失敗 — API Key が無効 |
| 403 | 権限不足 |
| 404 | モデルが存在しない |
| 429 | レート制限または残高不足 |
| 500 | サーバー内部エラー |
| 529 | 上流サービス過負荷 |