はじめに
api14 の概要
api14 は 1 つの API キーとベース URL で約 650 のテキスト、画像、動画、音声、音楽、埋め込みモデルを使える OpenAI 互換ゲートウェイです。提供機能、エンドポイント一覧、リクエストの流れを紹介します。モデル ID は openai/gpt-5-mini のような形式です。
api14 は、数百の AI モデルを利用できる OpenAI 互換の API ゲートウェイです。1 つの API キー、1 つのベース URL、1 つの USD 残高だけで、主要プロバイダーのテキスト、画像、動画、音声合成、文字起こし、音楽、埋め込み、リランクのモデルを利用できます。公式の OpenAI SDK をそのまま使い、変更するのは baseURL と apiKey だけです。
https://api14.com/api/v1
利用できること
- 主要なモデルをすべて提供: 約 650 のモデルを自動で更新しています。モデル ID は
anthropic/claude-sonnet-4.5やopenai/gpt-5-miniのようにprovider/model形式です。モデル ID とバリアントを参照してください。 - OpenAI のリクエストとレスポンス形式: Chat Completions、Responses、埋め込み、画像、音声などに対応しているため、既存のコードがそのまま動作します。OpenAI SDK 互換性を参照してください。
- USD での明確な料金: すべてのモデルに価格が表示され、各リクエストの料金は USD 残高から差し引かれます。登録時に無料クレジットが付与され、プランは料金以上の利用量を提供します。料金と請求を参照してください。
- 高度な機能をそのまま利用可能: ストリーミング、ツール呼び出し、構造化出力、推論、Web 検索、プロンプトキャッシュ、プロバイダールーティング、モデルのフォールバックに対応しています。
エンドポイント一覧
| 機能 | エンドポイント | ガイド |
|---|---|---|
| テキスト、推論、ツール、画像入力 | POST /chat/completions | Chat Completions |
| Responses API | POST /responses | Responses |
| レガシー Completions | POST /completions | Completions |
| 埋め込み | POST /embeddings | 埋め込み |
| 画像 | POST /images/generations | 画像 |
| 動画(非同期ジョブ) | POST /videos, GET /videos/{id} | 動画 |
| テキスト読み上げ | POST /audio/speech | 音声合成 |
| 音声からテキスト | POST /audio/transcriptions | 文字起こし |
| リランク | POST /rerank | リランク |
| 判定 | POST /decisions | 判定 |
| モデル一覧 | GET /models | モデル |
| 生成情報の取得 | GET /generation?id= | 生成情報の取得 |
| 残高とキー | GET /credits, GET /key | 残高とキー情報 |
リクエストの流れ
- クライアントが
Authorization: Bearer sk-api14-...を付けてリクエストを送信します。 - ゲートウェイが、キー、モデルが利用可能でキーとプランで許可されているか、レート制限、残高を確認します。
- リクエストボディは変更されずに上流のプロバイダーへ転送されます。
- レスポンスも変更されずに返されます。
stream: trueの場合はバイト単位でそのままストリーミングされます。 - リクエストの正確な料金が USD 残高から差し引かれます。失敗したリクエストには課金されません。
最初のリクエスト
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);