テキスト API ガイド
単発の質問、複数ターン会話、ストリーミング、ファイル理解は公共モデル ID でモデルを選択します。入力形式、コンテキスト長、プロトコルを確認してください。テキスト出力が可能でも画像・音声・動画入力に対応するとは限りません。
API の選択
| 用途 | API | 入出力 |
|---|---|---|
| OpenAI 互換会話・SDK | POST /v1/chat/completions | messages を送り、choices[].message を取得。 |
| Responses 形式 | POST /v1/responses | input を送り、output[] のメッセージと内容を取得。 |
| Anthropic Messages 形式 | POST /v1/messages | messages、トップレベルの system、必須 max_tokens。content[] を取得。 |
イベント、ツール結果、構造化出力の項目は共用できません。変換は設定されたマッピングが対応する範囲に限られ、全機能を保証しません。Responses の状態管理やツールは実際の設定に依存し、自動的な会話保存を前提にしないでください。
リクエストと会話履歴
コンソールで API キーを作成し、利用可能な公共モデル ID を選びます。YOUR_MODEL_ID は置き換え用です。INONEAPI_API_KEY はサーバーに保存し、JSON は Content-Type: application/json を指定します。
Node.js 20+ の例は最初の assistant メッセージを保持して追加質問を送ります。履歴の保存やコンテキスト長に合わせた削減はアプリ側で行います。再送する履歴は各回の入力課金に含まれる場合があります。
curl https://api.inoneapi.com/v1/chat/completions \
-H "Authorization: Bearer $INONEAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_ID",
"messages": [
{"role": "system", "content": "Answer concisely."},
{"role": "user", "content": "Explain HTTP/2 in one sentence."}
],
"stream": false
}'応答とストリーミング
HTTP 状態を確認してから choices[0].message.content を読みます。tool_calls がある場合は本文が空の場合があります。finish_reason: length は出力の打ち切りの可能性を示します。usage がなくても無料とは限りません。
ストリーミングは SSE です。cURL の -N は出力バッファーを無効にします。
curl -N https://api.inoneapi.com/v1/chat/completions \
-H "Authorization: Bearer $INONEAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"YOUR_MODEL_ID","messages":[{"role":"user","content":"Explain HTTP/2."}],"stream":true}'
空行で SSE イベントを区切り、data: 行を結合して JSON を解析します。ネットワークの chunk は完全なイベントとは限りません。Chat は choices[].delta.content を読み、[DONE] で終了します。ツール引数も分割されます。Responses と Messages は別のイベント形式です。切断は読み取り停止であり、上流のキャンセルや返金を保証しません。
ファイルとマルチモーダル入力
同じキーでアップロードして返された ID を参照します。以下は文書対応モデル向け Chat 本文です。同じ形式で画像・音声・動画も参照でき、判定された種類に展開します。統一 type: file は InOneAPI 拡張で、他のプラットフォーム共通の規格ではありません。
{
"model": "YOUR_MODEL_ID",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Summarize this document."
},
{
"type": "file",
"file": {
"file_id": "file_ioa_0123456789abcdef0123456789abcdef"
}
}
]
}
]
}
Responses は input[].content に {"type":"input_file","file_id":"..."}、Messages は素材の種類と一致するブロックに source: {"type":"file","file_id":"..."} を指定します。アップロード成功は PDF や媒体の理解を保証しません。1 リクエストは最大 32 参照、参照ごとの元サイズ合計 64 MiB までで、展開後も本文サイズ制限があります。
ツールと構造化出力
tools を送り、assistant の tool_calls を確認し、名前と引数を検証してサーバーで許可された処理を実行します。元の assistant メッセージと tool_call_id を持つ role: tool の結果を追加して再度呼び出します。モデルによる提案だけではツールは実行されません。反復回数と時間に上限を設定してください。
response_format は対応モデルのみ使用します。サーバー側でも JSON/schema を検証し、拒否、打ち切り、不正な構造を処理します。サンプリング、token 上限、ツール機能はモデルごとに選択します。
運用とエラー処理
400 はメッセージ構造・パラメーター・コンテキスト上限、401/403 は権限、429 はレート・予算と Retry-After を確認します。5xx は回数を制限して待機後に再試行します。タイムアウトや切断後は重複生成と課金の可能性を考慮してください。
HTTP 状態、モデル ID、所要時間、X-Gateway-Trace-ID を記録し、キーや機密の入力は記録しません。会話履歴はアプリ側で権限を分離して保存します。file_id は永続的な文書保管庫ではありません。