エンドポイント
Chat Completions
POST /chat/completions のリクエストとレスポンスを説明します。OpenAI 形式でカタログ内のあらゆるテキストモデルを呼び出せ、ボディは上流へそのまま転送されます。課金の注意点とエラーも確認できます。ストリーミングにも対応します。
プレイグラウンドで試すChat Completions エンドポイントは OpenAI のチャット形式を使い、カタログのすべてのテキストモデル(GPT、Claude、Gemini、Llama、DeepSeek、Mistral ほか数百のモデル)で動作します。リクエストボディは変更されずに上流のプロバイダーへ送られます。api14 が確認するのはキー、モデル、制限、残高のみで、リクエストの完了時に利用量を記録します。
POST https://api14.com/api/v1/chat/completions
Authorization: Bearer sk-api14-...
Content-Type: application/json
リクエスト
| パラメーター | 型 | 説明 |
|---|---|---|
model | string, 必須 | モデル ID。例: anthropic/claude-sonnet-4.5。:online や :nitro などのバリアントも使えます。モデル IDを参照してください。 |
messages | array, 必須 | { role, content } オブジェクトによる会話。ロール: system、developer、user、assistant、tool。 |
models | string[] | 最初のモデルが失敗した場合に順に試すフォールバックモデル。プロバイダールーティングを参照してください。 |
stream | boolean | トークンを Server-Sent Events でストリーミングします。ストリーミングを参照してください。 |
max_tokens / max_completion_tokens | integer | 生成するトークン数の上限。 |
temperature | number | サンプリング温度。通常は 0 から 2。 |
top_p, top_k, min_p, top_a | number | そのほかのサンプリング制御。非対応のモデルでは無視されます。 |
frequency_penalty, presence_penalty, repetition_penalty | number | 繰り返しの制御。 |
stop | string | string[] | 停止シーケンス。 |
seed | integer | ベストエフォートの決定的サンプリング。 |
logprobs, top_logprobs | boolean, integer | モデルが対応している場合に、トークンの対数確率を返します。 |
tools, tool_choice, parallel_tool_calls | 関数呼び出し。ツール呼び出しを参照してください。 | |
response_format | object | JSON モードまたは JSON Schema による出力。構造化出力を参照してください。 |
reasoning, include_reasoning | object, boolean | 思考の制御。推論を参照してください。 |
plugins, web_search_options | Web 検索。Web 検索を参照してください。 | |
provider | object | 上流プロバイダーの設定。プロバイダールーティングを参照してください。 |
modalities | string[] | 画像出力なら ["image", "text"]、音声出力なら ["text", "audio"] など。 |
prediction | object | 編集時のレイテンシを減らすための予測出力({ type: "content", content })。 |
transforms | string[] | コンテキストウィンドウを超えるプロンプトを圧縮する ["middle-out"] など。 |
user | string | 独自のエンドユーザー識別子。 |
メッセージの content は、文字列またはコンテンツパートの配列(text、image_url、file、input_audio)にできます。画像とファイル入力を参照してください。
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.chat.completions.create({
"model": "openai/gpt-5-mini",
"messages": [
{
"role": "user",
"content": "Explain vector databases in two sentences."
}
]
});
console.log(result.choices[0].message.content);
レスポンス
{
"id": "gen-1760000000-abc123",
"object": "chat.completion",
"created": 1760000000,
"model": "anthropic/claude-sonnet-4.5",
"provider": "Anthropic",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": { "role": "assistant", "content": "Hello! How can I help you today?" }
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 9,
"total_tokens": 21,
"prompt_tokens_details": { "cached_tokens": 0 },
"completion_tokens_details": { "reasoning_tokens": 0 },
"cost": 0.000171
}
}
usage.cost はリクエストの料金で、単位は USD です。api14 はリクエストの完了後にこの金額を残高から差し引きます。id は生成 ID で、後から生成情報の取得で照会できます。
課金に関する注意
- モデルの表示価格を支払い、請求額は
usage.costで返されます。料金と請求を参照してください。 - 失敗したリクエスト(4xx または 5xx のステータス)には課金されません。
- リクエストに
models: [...]を含める場合、すべてのフォールバックモデルがキーとプランで許可されている必要があります。許可されていない場合、ゲートウェイは上流へ送信する前にリクエストを拒否します。
エラー
| ステータス | コード | 発生条件 |
|---|---|---|
| 400 | model_required | model がない。 |
| 400 | invalid_json | ボディが JSON オブジェクトではない。 |
| 401 | invalid_api_key | キーがない、無効、または失効している。 |
| 402 | insufficient_balance | USD 残高が $0。 |
| 403 | model_not_allowed / plan_required | キーの許可リストまたはプランがこのモデルをカバーしていない。 |
| 404 | model_not_found | モデル ID が不明、または無効化されている。 |
| 413 | payload_too_large | リクエストボディが 25 MB を超えている。 |
| 429 | rate_limited / daily_limit_reached | RPM の上限、またはキーの 1 日の USD 上限に達した。 |
| 502 | upstream_unavailable | 上流のプロバイダーに接続できなかった。 |
コンテキスト長超過やコンテンツモデレーションなど、上流のエラーは元のステータスコードと同じエラー形式で返されます。エラーを参照してください。