テキスト

メッセージを作成

Anthropic Messages API 形式を使用してメッセージを作成します

POST
/v1/messages

概要

このエンドポイントは、Anthropic Messages API とのネイティブ互換性を提供します。extended thinking などの機能を備えた Claude モデルにはこれを使用してください。

このエンドポイントは Anthropic のネイティブ契約を維持します。messages は user / assistant メッセージの配列である必要があり、system はトップレベルの system フィールドに置き、max_tokens は必須です。messages 内で OpenAI の system、developer、tool などの role を使う payload は /v1/chat/completions に送ってください。

Anthropic SDK の Base URL: https://api.tokenlab.sh(/v1 サフィックスなし)

リクエストヘッダー

x-api-keystringheader

TokenLab API キー。x-api-key または Authorization: Bearer <API_KEY> のいずれかで送信してください。

anthropic-versionstringheader必須

Anthropic API version。2023-06-01 を使用してください。

リクエストボディ

任意パラメーターの対応状況、指定可能な値、既定値は選択したモデルによって異なります。サンプリング、推論、ツールのオプションを設定する前にモデルの詳細を確認してください。

modelstring必須

anthropic_messages 形式に対応するモデルの ID。現在の機能はモデルの詳細で確認してください。

messagesarray必須

role と content を持つ message object の配列。

max_tokensinteger必須

生成する最大 token 数。

systemstring | array

文字列またはコンテンツブロックの配列で指定するシステムプロンプト。messages 配列とは別に指定します。

temperaturenumber

サンプリング温度。対応状況、指定可能な値、既定値は選択したモデルによって異なります。省略するとモデルの既定値を使用します。

streambooleanデフォルト: false

ストリーミングレスポンスを有効にします。

thinkingobject

ネイティブの thinking 設定。対応するモード、予算、他のパラメーターとの組み合わせは選択したモデルによって異なります。

toolsarray

モデルで利用可能なツール。

tool_choiceobject

{"type":"auto"} などのネイティブなツール選択オブジェクト。対応する種類は選択したモデルによって異なります。

top_pnumber

Nucleus sampling パラメータ。temperature または top_p のいずれか一方のみを使用し、両方は使用しないでください。

top_kinteger

各 token について上位 K 個の選択肢からのみサンプリングします。

stop_sequencesarray

モデルの生成を停止させるカスタム stop sequence。

metadataobject

トラッキング目的でリクエストに付加する metadata。

レスポンス

idstring

一意のメッセージ識別子。

typestring

常に message。

rolestring

常に assistant。

contentarray

text、thinking、tool_use などのコンテンツブロックの配列。

modelstring

使用されたモデル。

stop_reasonstring

生成が停止した理由。例:end_turn、max_tokens、stop_sequence、tool_use。

usageobject

input_tokens と output_tokens を含む token 使用量。

リクエスト

curl -X POST "https://api.tokenlab.sh/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-5",
    "max_tokens": 1024,
    "system": "You are a helpful assistant.",
    "messages": [
      {"role": "user", "content": "Hello, Claude!"}
    ]
  }'

レスポンス

Response
{
  "id": "msg_abc123",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Hello! How can I help you today?"
    }
  ],
  "model": "claude-sonnet-5",
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 15,
    "output_tokens": 10
  }
}

ビジョン入力の例

画像対応の Claude モデルでは、画像を messages[].content 内に構造化された画像ブロックとして配置してください。

{
  "model": "claude-sonnet-5",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Please describe this image."
        },
        {
          "type": "image",
          "source": {
            "type": "url",
            "url": "https://example.com/demo.jpg"
          }
        }
      ]
    }
  ]
}
{
  "model": "claude-sonnet-5",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Please describe this image."
        },
        {
          "type": "image",
          "source": {
            "type": "base64",
            "media_type": "image/jpeg",
            "data": "/9j/4AAQSkZJRgABAQ..."
          }
        }
      ]
    }
  ]
}

Extended Thinking の例

TOKENLAB_THINKING_MODEL に、type: "enabled" と budget_tokens による手動の思考設定に対応するモデルを指定してください。両方のトークン予算をモデルの制限に合わせて調整します。他のモデルでは異なる thinking 設定が必要な場合があります。

import os
from anthropic import Anthropic

client = Anthropic(
    api_key="sk-your-api-key",
    base_url="https://api.tokenlab.sh"
)

message = client.messages.create(
    model=os.environ["TOKENLAB_THINKING_MODEL"],
    max_tokens=16000,
    thinking={
        "type": "enabled",
        "budget_tokens": 10000
    },
    messages=[{"role": "user", "content": "Solve this math problem..."}]
)

for block in message.content:
    if block.type == "thinking":
        print(f"Thinking: {block.thinking}")
    elif block.type == "text":
        print(f"Response: {block.text}")

Anthropic メッセージバッチ

TokenLab では /v1/messages に加えて、Anthropic Message Batches のネイティブフローも提供しています。

利用できるルート:

  • POST /v1/messages/batches
  • GET /v1/messages/batches
  • GET /v1/messages/batches/:message_batch_id
  • GET /v1/messages/batches/:message_batch_id/results
  • POST /v1/messages/batches/:message_batch_id/cancel
  • DELETE /v1/messages/batches/:message_batch_id

運用メモ:

  • 同じ TokenLab API key と Anthropic ネイティブヘッダーを使用してください。
  • batch item が file_id を参照する場合は、anthropic-beta: files-api-2025-04-14 も付けてください。
  • Batch job は Anthropic ネイティブのリクエスト/レスポンス形式を維持しつつ、TokenLab 側で内部の精算ライフサイクルを追跡します。

認証

BearerAuth
AuthorizationBearer <token>

APIキー認証。Dashboard > API > API KeysでAPIキーを作成または管理します。

場所: header

ヘッダー

X-TokenLab-Delivery-Policy?string

リクエストごとの配信ポリシー。APIキーおよびWorkspaceのデフォルト設定を上書きします。自動的にまず TokenLab Verified を試行し、出力、リクエストの受け入れ、または永続的なリソース作成の前に、一度だけ Official に切り替える場合があります。

指定できる値

  • "auto"
  • "verified"
  • "official"

リクエストボディ

application/json

レスポンス

application/json

application/json

application/json

application/json

application/json

application/json