Chat Completions
ファイルを入力する場合は ファイル API でアップロードし、返された file_id を参照します。ゲートウェイは変換を担当し、入力への対応可否は上流が判断します。
messages[].content に {"type":"file","file":{"file_id":"..."}} を指定します。画像は image_url、動画は InOneAPI 拡張の video_url、音声は input_audio、文書は file.file_data に展開します。通常のテキストは type: text のまま、順序を維持します。
POST /v1/chat/completions は OpenAI 互換のチャット、ツール呼び出し、JSON 出力、ストリーミングに使用します。InOneAPI は公開リクエスト形式を保ち、model に基づいて有効なプロバイダーマッピングへルーティングします。
エンドポイント
https://api.inoneapi.com/v1/chat/completions
# -H "X-APP-NAME: Your App Name"
# -H "X-APP-URL: https://your-app.example.com"
curl "https://api.inoneapi.com/v1/chat/completions" \
-H "Authorization: Bearer $INONEAPI_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "YOUR_MODEL_ID",
"messages": [
{
"role": "user",
"content": "Hello"
}
]
}'パラメーター
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| model | string | はい | InOneAPI の公開モデル ID。ゲートウェイが有効な上流モデルへ変換します。 |
| messages | array | はい | 順序付きメッセージ。主な role は system、user、assistant、tool。 |
| temperature | number | いいえ | サンプリングのランダム性。通常は 0-2 の範囲で指定します。 |
| top_p | number | いいえ | nucleus sampling。通常は temperature とどちらか一方を調整します。 |
| max_tokens | number | いいえ | 生成トークン上限。一部プロバイダーの max_completion_tokens は対応時に変換されます。 |
| stream | boolean | いいえ | true の場合、SSE の chat completion chunk を返します。 |
| tools | array | いいえ | OpenAI 互換のツール定義。利用可否はモデルとマッピングによります。 |
| tool_choice | string/object | いいえ | 自動、必須、特定ツールの呼び出しを制御します。 |
| response_format | object | いいえ | 対応モデルで JSON object または JSON schema 出力に使用します。 |
| stop | string/array | いいえ | 停止シーケンス。対応数はプロバイダー固有です。 |
| user | string | いいえ | 不正利用追跡用のエンドユーザー ID。秘密情報や個人情報は入れません。 |
メッセージ内容
テキストのみの場合、content は文字列で指定できます。マルチモーダルモデルでは text や image_url などの content parts を使えます。未対応のパートはマッピング設定に応じて拒否または変換されます。
{
"role": "user",
"content": [
{ "type": "text", "text": "この画像を説明してください。" },
{ "type": "image_url", "image_url": { "url": "https://example.com/image.png" } }
]
}
レスポンス
非ストリーミングは OpenAI chat completion 形式です。Token 使用量は可能な場合ローカルで計算され、モデル設定の公式プロバイダーアルゴリズムに合わせます。
{
"id": "chatcmpl_...",
"object": "chat.completion",
"created": 1760000000,
"model": "YOUR_MODEL_ID",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "TTFT はリクエスト開始から最初の token を受け取るまでの時間です。" },
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 18,
"completion_tokens": 13,
"total_tokens": 31
}
}
ストリーミング
stream: true の場合、data: 行の JSON chunk を data: [DONE] まで解析します。最初の chunk はクライアント側 TTFT の主要なシグナルです。X-Gateway-Trace-ID はゲートウェイ診断と紐づきます。
エラー
400 は JSON、パラメーター、マッピングの問題です。401/403 はキーや権限を確認します。429 は Retry-After に従い、予算とレート制限を確認します。5xx は Trace ID とともに調査します。
- 部分的なストリーム出力後に無条件で再試行しないでください。
- API キーはサーバー側だけに置きます。
- ログには
X-Gateway-Trace-ID、状態、モデル、時間を残し、完全なプロンプトや出力は残しません。