API リファレンス

POST /v1/messages

LLMs Text

POST /v1/messages

公式 Anthropic /v1/messages プロトコルです。フィールドは公式 API と完全に一致し、既存の Anthropic SDK コードをほぼ変更なしで移行できます。

エンドポイント

POST https://relay.4aicode.com/v1/messages

リクエスト

POST /v1/messages HTTP/1.1
Host: relay.4aicode.com
Authorization: Bearer sk-4ai-xxxxxxxxxxxxxxxx
anthropic-version: 2023-06-01
content-type: application/json

{
  "model": "claude-sonnet-4-6",
  "max_tokens": 1024,
  "stream": true,
  "messages": [
    { "role": "user", "content": "Say hi" }
  ]
}

必須

フィールド説明
modelClaude モデル(Sonnet / Haiku / Opus 系)またはサポートされる gpt-* モデル
max_tokens生成する最大トークン数
messages会話配列

/v1/messages は model に対応する上流サービスにルーティングし、claude-* と gpt-* の両方をサポートします。Claude Code など Anthropic Messages プロトコルのクライアントは、このエンドポイント経由でこれらのモデルにアクセスできます。

よく使うオプションフィールド

フィールド説明
streamtrue で SSE を有効化
systemシステムプロンプト
temperature0~1
tools関数呼び出し
stop_sequences停止シーケンス

ストリーミング応答

stream: true のとき、エンドポイントは text/event-stream を返し、イベント列は公式 API と一致します。

event: message_start
event: content_block_start
event: content_block_delta
event: content_block_stop
event: message_delta
event: message_stop

中継はどの段階でも SSE をバッファしないため、初回バイトまでの時間は直接接続とほぼ同じです。

非ストリーミング応答

{
  "id": "msg_xxxx",
  "type": "message",
  "role": "assistant",
  "content": [{ "type": "text", "text": "Hi!" }],
  "model": "claude-sonnet-4-6",
  "stop_reason": "end_turn",
  "usage": { "input_tokens": 8, "output_tokens": 3 }
}

usage は課金に使用されます(詳細は クォータ)。

ChatGPT モデル

Claude Code で ChatGPT モデルを使うには、サポートされる gpt-* モデルに設定するだけです。

export ANTHROPIC_BASE_URL=https://relay.4aicode.com
export ANTHROPIC_AUTH_TOKEN=sk-4ai-xxxxxxxxxxxxxxxx
export ANTHROPIC_DEFAULT_OPUS_MODEL=gpt-5.6-terra
export ANTHROPIC_DEFAULT_OPUS_MODEL_NAME="4AICode GPT 5.6 Terra"
export ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES=effort,xhigh_effort,thinking,adaptive_thinking,interleaved_thinking
export ANTHROPIC_MODEL=opus
export ANTHROPIC_DEFAULT_HAIKU_MODEL=gpt-5.4-mini
export CLAUDE_CODE_EFFORT_LEVEL=xhigh
claude --effort xhigh

ANTHROPIC_DEFAULT_OPUS_MODEL により Claude Code は中継に gpt-5.6-terra をリクエストします。CLAUDE_CODE_EFFORT_LEVEL=xhigh は Anthropic の output_config.effort を OpenAI Responses の reasoning.effort=xhigh にマップします。

サポートモデルは /v1/chat/completions と同じ:gpt-6-astra、gpt-6-sol、gpt-6.1-sol、gpt-6.1-terra、gpt-6-luna、gpt-5.6-sol、gpt-5.6-terra、gpt-5.6-luna、gpt-5.5、gpt-5.4、gpt-5.4-mini、gpt-5.3-codex。

エラー

HTTP意味
400無効なフィールド(max_tokens 欠落、存在しない model など)
401無効なトークン
403チーム停止
429レート制限またはクォータ超過
502上流 Claude の不安定;リクエストを再試行
503上流サービスが一時的に利用不可;詳細は サービスのクールダウンとリトライ

503 の例:

{
  "code": "no_account_available",
  "message": "all accounts cooling down, retry in 60s"
}

完全な例(Python)

from anthropic import Anthropic

client = Anthropic(
    base_url="https://relay.4aicode.com",
    api_key="sk-4ai-xxxxxxxxxxxxxxxx",
)

with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=512,
    messages=[{"role": "user", "content": "Introduce yourself in one sentence"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)