エンドポイントとプロトコル
モデルの機能に合うエンドポイントを選択。
必要なエンドポイント、ツール、入力形式に対応するモデルを選んでください。Chat Completions、Responses、Messages は構造が異なり、パスの変更だけでは不十分です。
APIエンドポイント
| メソッド | パス | 説明 |
|---|---|---|
| POST | /v1/messages | Anthropic Messages API(推奨) |
| POST | /v1/chat/completions | OpenAI Chat Completions(互換) |
| POST | /v1/images/generations | OpenAI Images Generations (req/gpt-image-2) |
| POST | /v1/images/edits | OpenAI Images Edits / 参照画像 (req/gpt-image-2) |
| POST | /v1/audio/speech | OpenAI Audio Speech / TTS (req/gpt-4o-mini-tts) |
| POST | /v1/videos | OpenAI Videos — 動画作成 |
| GET | /v1/videos/{id} | 動画生成ステータスのポーリング (追加料金なし) |
| GET | /v1/videos/{id}/content | MP4 ファイルをダウンロード (追加料金なし) |
| DELETE | /v1/videos/{id} | キュー内のタスクをキャンセル (追加料金なし) |
| POST | /v1/responses | OpenAI Responses API(互換) |
| GET | /v1/models | モデル一覧と価格 |
| POST | /v1/messages/count_tokens | トークン概算(無料) |
/v1/messages/count_tokens
このエンドポイントは無料のローカル概算を返し、モデル公式のトークナイザーは使用しません。input_tokens は最大 200,000 に制限されるため、大きなプロンプトがコンテキスト内に収まるかの確認や料金の確定には使わないでください。実際の生成 usage と照合してください。下の JSON は例であり、実際の応答ではありません。
curl --fail-with-body "https://apivn.dev/v1/messages/count_tokens" \
-H "x-api-key: ${STALI_API_KEY:?STALI_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"model":"claude-fable-5","messages":[{"role":"user","content":"Hello"}]}'Responses とツール呼び出し
Responses の例では POST /v1/responses を使用し、input にコンテキストを含めます。この文書は、未公開のレスポンス保存・取得・一覧操作への対応を保証しません。
import os
from getpass import getpass
from openai import OpenAI
client = OpenAI(api_key=os.getenv("STALI_API_KEY") or getpass("STALI_API_KEY: "), base_url="https://apivn.dev/v1", max_retries=0)
stream = client.responses.create(model="gpt-5.6-sol", input="Hello", stream=True, store=False)
completed = False
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
elif event.type == "response.completed":
completed = event.response.status == "completed"
elif event.type in ("error", "response.failed", "response.incomplete"):
raise RuntimeError(str(event))
if not completed:
raise RuntimeError("Stream ended without response.completed; preserve the request ID and check usage before retrying.")JSON 例はそれぞれ Chat Completions と Messages 用です。Python 例はローカル加算による完全なツール呼び出しを示します。名前と引数を検証し、関数を実行して対応する call ID とともに結果を返してください。ゲートウェイは関数を実行しません。モデル呼び出しは各ラウンドで課金される場合があり、例では最大 4 ラウンドに制限して SDK の自動再試行を無効にしています。
例はソース確認とローカル検証の対象であり、全アプリバージョンの実機検証を意味しません。実運用前に設定、小さなリクエスト、使用量を確認してください。

