/v1/modelsモデル一覧
公開モデル ID と機能、コンテキスト長、料金。
TokenAPI は OpenAI Chat Completions・Responses 形式と Anthropic Messages 形式に対応しています。公式 SDK をそのまま使い、モデル一覧からモデル ID を選ぶだけです。
https://tokenapi.biz/v1
すべてのエンドポイント:
/v1/models公開モデル ID と機能、コンテキスト長、料金。
/v1/models/{id}単一のモデルオブジェクト。
/v1/chat/completionsOpenAI Chat Completions 形式。ストリーミング・非ストリーミング対応。
/v1/responsesOpenAI Responses 形式(ステートレス)。ストリーミング・非ストリーミング対応。
/v1/messagesAnthropic Messages 形式。Anthropic SDK 向け。
curl https://tokenapi.biz/v1/chat/completions \
-H "Authorization: Bearer $TOKENAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tokenapi-pro",
"messages": [{ "role": "user", "content": "Hello!" }]
}'import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://tokenapi.biz/v1",
apiKey: process.env.TOKENAPI_KEY,
});
const res = await client.chat.completions.create({
model: "tokenapi-pro",
messages: [{ role: "user", content: "Hello!" }],
});
console.log(res.choices[0].message.content);import os
from openai import OpenAI
client = OpenAI(base_url="https://tokenapi.biz/v1", api_key=os.environ["TOKENAPI_KEY"])
res = client.chat.completions.create(
model="tokenapi-pro",
messages=[{"role": "user", "content": "Hello!"}],
)
print(res.choices[0].message.content)Authorization: Bearer sk-tk-…
Anthropic 形式の x-api-key ヘッダーも利用できます。キーは sk-tk- で始まり、作成時に一度だけ表示され、キーごとに制限(1 分あたりのリクエスト数、利用上限額、利用可能モデル、有効期限)を設定できます。キーはサーバー側で保管し、ブラウザやモバイルアプリのコードに含めないでください。キーの取得は hello@tokenapi.biz までご連絡ください。
GET /v1/models が返す id を model パラメータに指定します。モデル ID は安定したプロダクトです。品質と可用性を保つためにバックエンドをアップグレード・変更することがありますが、お客様側の変更は不要です。レスポンスには常に呼び出したモデル ID が返ります。
{
"object": "list",
"data": [
{
"id": "tokenapi-pro",
"object": "model",
"owned_by": "tokenapi",
"display_name": "TokenAPI Pro",
"capabilities": ["streaming", "tools", "json_output"],
"context_length": 131072,
"pricing": {
"currency": "USD",
"prompt": "0.0000015",
"completion": "0.000006",
"input_per_million": 1.5,
"output_per_million": 6
}
}
]
}pricing.prompt / pricing.completion は 1 トークンあたりの米ドル(文字列)、input_per_million / output_per_million は 100 万トークンあたりの米ドルです。
リクエストとレスポンスは OpenAI 形式に準拠します:テキストと画像を含む messages、tools / tool_choice、response_format、temperature、top_p、stop、max_tokens または max_completion_tokens。各レスポンスには x-request-id ヘッダーが付くので、サポートへの問い合わせ時にお知らせください。
max_tokens を省略した場合は、モデルの最大出力長が適用されます。
stream: true を指定します。チャンクは data: 行で届き、data: [DONE] で終了します。stream_options.include_usage を指定すると、最後のチャンクでトークン使用量を受け取れます。
const stream = await client.chat.completions.create({
model: "tokenapi-pro",
messages: [{ role: "user", content: "Write a haiku." }],
stream: true,
stream_options: { include_usage: true }, // final chunk carries usage
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}文字列または配列の input、instructions、関数ツール、text.format(JSON スキーマ)、および完全なストリーミングイベント列(response.output_text.delta、response.completed など)に対応しています。
const res = await client.responses.create({
model: "tokenapi-pro",
instructions: "Answer in one sentence.",
input: "What is a token?",
});
console.log(res.output_text);Anthropic SDK で書かれたコード向けです。system、テキスト・画像ブロック、tool_use / tool_result を含む tools、ストリーミングイベントに対応します。エラーは Anthropic の形式で返ります。
import Anthropic from "@anthropic-ai/sdk";
const anthropic = new Anthropic({
baseURL: "https://tokenapi.biz", // SDK appends /v1/messages
apiKey: process.env.TOKENAPI_KEY,
});
const msg = await anthropic.messages.create({
model: "tokenapi-pro",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello!" }],
});{
"error": {
"message": "The model 'nope' does not exist or is disabled.",
"type": "invalid_request_error",
"code": "model_not_found",
"param": null
}
}invalid_request_errorJSON の形式不正、model / messages の欠落、または未対応のパラメータ。
invalid_api_keyAPI キーが未指定、誤り、無効化済み、または期限切れです。
insufficient_quota残高がこのリクエストの最大コストに足りないか、キーの利用上限に達しました。チャージするか max_tokens を下げてください。
model_not_allowedこのキーは他のモデルのみに制限されています。
model_not_found不明または無効なモデル ID です。GET /v1/models で有効な ID を確認してください。
rate_limit_exceededキーごとの 1 分あたりリクエスト数の上限を超えました。Retry-After ヘッダーの時間後に再試行してください。
upstream_unavailableこのモデルのすべてのバックエンドルートが失敗しました。安全に再試行できます。
上流の失敗は、エラーを返す前に別のルートで自動的に再試行されます。502 はすべてのルートが失敗したことを示し、課金は発生しません。
max_tokens)を残高から確保します。残高が足りない場合は 402 を返し、上流には送信しません。Retry-After 付きで 429 を返します。/v1/responses:previous_response_id(代わりに会話全体を送信してください)、web_search などの組み込みツール、file_id 入力。/v1/messages:拡張思考 thinking と cache_control は無視されます。n > 1。