API キーから本番リクエストまで。
すぐに使える導入ガイドです。例は共通の Base URL を使い、エンドポイント一覧はリポジトリの relay OpenAPI 契約に準拠しています。
01 / START
クイックスタート
- コンソールで API キーを作成します。
- 公開モデルカタログからモデル ID をコピーします。
- キーをサーバー側の環境変数に保存し、最初のリクエストを送信します。
02 / AUTH
認証と Base URL
保護されたエンドポイントは Bearer Token を使います。API キーをブラウザーコード、公開リポジトリ、ログ、スクリーンショットに保存しないでください。
Base URL
https://tokenboat.com/v1リクエストヘッダー
Authorization: Bearer $TOKEN_BOAT_API_KEY03 / CALL
3つの呼び出し方法
Curl
export TOKEN_BOAT_API_KEY="your_api_key"
export MODEL_ID="choose_from_the_model_catalog"
curl https://tokenboat.com/v1/chat/completions \
-H "Authorization: Bearer $TOKEN_BOAT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "'"$MODEL_ID"'",
"messages": [{"role": "user", "content": "Hello from Token Boat"}]
}'Python
from openai import OpenAI
import os
client = OpenAI(
api_key=os.environ["TOKEN_BOAT_API_KEY"],
base_url="https://tokenboat.com/v1",
)
response = client.chat.completions.create(
model=os.environ["MODEL_ID"],
messages=[{"role": "user", "content": "Hello from Token Boat"}],
)
print(response.choices[0].message.content)JavaScript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.TOKEN_BOAT_API_KEY,
baseURL: "https://tokenboat.com/v1",
});
const response = await client.chat.completions.create({
model: process.env.MODEL_ID,
messages: [{ role: "user", content: "Hello from Token Boat" }],
});
console.log(response.choices[0].message.content);04 / STREAM
ストリーミング
ストリーミング対応モデルでは stream: true を設定し、Server-Sent Events を順次処理します。切断と不完全な最終チャンクを処理できるようにしてください。
const stream = await client.chat.completions.create({
model: process.env.MODEL_ID,
messages: [{ role: "user", content: "Stream a short answer" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}05 / RECOVER
エラーと再試行
エラー応答には HTTP ステータスとメッセージが含まれます。リクエスト時刻、エンドポイント、モデル ID、ステータスを記録し、完全なキーや機密プロンプトは記録しないでください。
| Status | 意味 | 対応 |
|---|---|---|
| 400 | リクエスト項目またはモデルパラメーターが無効 | 修正してから再試行 |
| 401 | API キーがない、無効、または失効 | Authorization ヘッダーとキー状態を確認 |
| 403 | アカウントまたはモデルへのアクセス不可 | 権限とモデルの利用可否を確認 |
| 429 | リクエストまたはトークン制限 | Retry-After に従いジッター付き指数バックオフを使用 |
| 5xx | ゲートウェイまたは上流が一時的に利用不可 | 安全に再送できるリクエストだけを限定的に再試行 |
06 / LIMITS
レート制限
RPM、TPM、同時実行数はアカウント、モデル、現在のポリシーにより異なるため、変動する数値は固定表示しません。429 では応答ヘッダーとアカウントコンソールを確認してください。
- 同時実行数を制限し、クライアントタイムアウトを設定します。
- 429 と一時的な 5xx にはジッター付き指数バックオフを使います。
- 生成タスクを無条件に再送せず、先にタスク状態を確認します。
- 本番負荷で上限引き上げが必要な場合はサポートセンターへ連絡します。
07 / REFERENCE
主要エンドポイント
主要な公開エンドポイントです。各モデルが実際に対応する形式はモデル詳細で確認してください。
| メソッド | パス | 用途 |
|---|---|---|
| GET | /v1/models | API キーで利用できるモデルを一覧表示 |
| POST | /v1/responses | ツールと複数ターンのワークフロー向け Responses API |
| POST | /v1/chat/completions | OpenAI 互換チャット補完 |
| POST | /v1/messages | Anthropic Messages 互換エンドポイント |
| POST | /v1/embeddings | テキスト埋め込みを生成 |
| POST | /v1/images/generations | 画像生成リクエストを送信 |
| POST | /v1/audio/speech | テキスト読み上げ |
| POST | /v1/audio/transcriptions | 音声文字起こし |
| POST | /v1/videos | 動画生成タスクを送信 |
API 契約の参照元:docs/openapi/relay.json