OpenAI 互換 API

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

Base URL

text
https://tokencode.dev/v1

認証

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

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

モデル一覧

現在利用可能なモデル一覧を返します。

bash
curl https://tokencode.dev/v1/models \
  -H "Authorization: Bearer sk-your-api-key"

レスポンス例:

json
{
  "object": "list",
  "data": [
    { "id": "gpt-5.5", "object": "model", "owned_by": "openai" },
    { "id": "claude-sonnet-4-6", "object": "model", "owned_by": "anthropic" },
    { "id": "gemini-2.5-pro", "object": "model", "owned_by": "google" }
  ]
}

Chat Completions

OpenAI 互換のチャット補完エンドポイント。すべての上流モデルに対応しており、OpenAI モデルに限定されません。

bash
curl https://tokencode.dev/v1/chat/completions \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "messages": [
      {"role": "system", "content": "あなたは役立つアシスタントです。"},
      {"role": "user", "content": "量子コンピューティングについて説明して"}
    ],
    "temperature": 0.7,
    "max_tokens": 1024
  }'

リクエストパラメータ:

パラメータ 必須 説明
model string はい モデル ID(例:gpt-5.5claude-sonnet-4-6
messages array はい メッセージオブジェクトの配列
stream boolean いいえ ストリーミングレスポンスを有効にするかどうか
temperature number いいえ サンプリング温度(0-2)
max_tokens integer いいえ 最大生成 Token 数
top_p number いいえ 核サンプリング確率
n integer いいえ 生成候補数
stop string/array いいえ ストップシーケンス
presence_penalty number いいえ 存在ペナルティ(-2 〜 2)
frequency_penalty number いいえ 頻度ペナルティ(-2 〜 2)
tools array いいえ Function Calling ツール定義
tool_choice string/object いいえ ツール呼び出し戦略

レスポンス例:

json
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1700000000,
  "model": "gpt-5.5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "量子コンピューティングは量子力学の原理を利用した..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 128,
    "total_tokens": 153
  }
}

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

"stream": true を設定すると、レスポンスは SSE 形式になります:

text
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"delta":{"content":"量"},"index":0}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"delta":{"content":"子"},"index":0}]}

data: [DONE]

Embeddings

テキストのベクトル埋め込みを生成します。

bash
curl https://tokencode.dev/v1/embeddings \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "text-embedding-3-small",
    "input": "Hello world"
  }'

リクエストパラメータ:

パラメータ 必須 説明
model string はい 埋め込みモデル ID
input string/array はい 埋め込むテキスト
encoding_format string いいえ エンコーディング形式(float または base64

プロトコル自動変換

TokenCode の主な利点の一つはプロトコル自動変換です。OpenAI 互換エンドポイントから OpenAI 以外のモデル(Claude、Gemini など)を呼び出すと、プラットフォームが自動的に以下を処理します:

  1. リクエスト変換:OpenAI 形式のリクエストボディを対象モデルのネイティブ形式に変換
  2. レスポンス変換:対象モデルのネイティブレスポンスを OpenAI 形式に変換して返却
  3. ストリーミング適応:ストリーミングレスポンスの形式も自動変換

つまり、同じ OpenAI SDK コードですべてのモデルを呼び出すことができ、基盤となるプロトコルの違いを気にする必要はありません。

OpenAI SDK の使用

python
from openai import OpenAI

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

# OpenAI モデルの呼び出し
response = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "こんにちは"}]
)

# Claude モデルの呼び出し — 同じコードでプロトコル自動変換
response = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "こんにちは"}]
)

# Gemini モデルの呼び出し — 同じ方法
response = client.chat.completions.create(
    model="gemini-2.5-pro",
    messages=[{"role": "user", "content": "こんにちは"}]
)

エラーレスポンス

すべてのエラーは OpenAI エラー形式に従います:

json
{
  "error": {
    "message": "Invalid API key",
    "type": "invalid_request_error",
    "code": "invalid_api_key"
  }
}
HTTP ステータスコード 意味
400 リクエストパラメータが無効
401 認証失敗 — API Key が無効
403 権限不足 — モデルが利用不可
429 レート制限または残高不足
500 サーバー内部エラー
502 上流サービスエラー