OpenRouter、画像・動画・音声・埋め込み・文字起こしを単一のAPIで統合利用可能に
要点
-
OpenRouterは、画像、動画、音声、埋め込み、文字起こしの各モダリティを単一のベースURLで利用できる仕組みを提供している。
-
入力機能の多くは共通のチャット用エンドポイントを使用し、画像生成や動画生成、音声処理、埋め込みの5種類には専用のエンドポイントが用意されている。
-
チャット機能と同様に、フェイルオーバーやデータ収集拒否設定、コストと遅延に基づくルーティング制御がすべてのモダリティで適用可能である。
-
複数のプロバイダーSDKや異なる請求体系を管理する手間を削減し、単一 of APIキーと請求に集約できる。
-
埋め込みの非ストリーミング制約や、音声入力がbase64形式のみであること、動画URLサポートがプロバイダー依存であることなどの制限事項がある。
-
AIモデルのルーティングサービスを提供するOpenRouterは2026年7月16日、公式ブログを更新し、テキストだけでなく画像、動画、音声、埋め込み(データを数値の配列に変換する技術)、文字起こしといった多様なモダリティ(データの形式)を単一のAPIから呼び出せる機能を整理して公開した。開発者は同サービスが提供するOpenAI互換のベースURLを一度設定すれば、モデル名とコンテンツタイプを指定するだけで多様なAI機能をアプリに組み込めるようになるという。
複数SDKや請求の個別管理を不要にするアプローチ
アプリ開発において、チャット応答、画像生成、知識ベースの検索、音声文字起こしなどの機能を個別に実装する場合、通常は複数のプロバイダーが提供するSDK(ソフトウェア開発キット)を個別に導入しなければならない。これにより、プロバイダーごとに異なる認証更新処理、再試行やバックオフの動作、レートリミット(利用制限)のヘッダー、ストリーミング形式、エラー仕様などを個別に実装・維持する必要があり、開発者の負担となっていた。
OpenRouterが提供する統合APIでは、ベースURLを「https://openrouter.ai/api/v1」に設定し、APIキーをBearerトークンとして渡すだけで、これらすべての機能にアクセスできる。公式に提供されているTypeScript用SDK(@openrouter/sdk)やPython用SDK(openrouter)を利用することで、各機能の違いを一つのインターフェースの背後に隠蔽できるとしている。
エンドポイントの分類と呼び出しの仕組み
同サービスでは、多くの入力データ形式が共通のチャット用エンドポイントである /chat/completions を経由して処理される。この場合、メッセージ配列内で指定するコンテンツタイプ(データの形式)を変更することで処理を切り替える。
一方で、データの送受信形式やパラメータの指定方法が大きく異なる以下の5つの機能については、専用のエンドポイントが用意されている。
- 画像生成(
POST /api/v1/images): プロンプト(指示文)や解像度、アスペクト比、出力形式などを指定し、base64形式の画像データを取得する。 - 動画生成(
POST /api/v1/videos): 非同期で処理が行われ、リクエスト時に取得したジョブIDを用いて、動画の準備ができるまで定期的に問い合わせるポーリング処理(完了の有無を定期的に確認する通信)を行う。 - テキスト読み上げ(TTS)(
POST /api/v1/audio/speech): テキストを入力し、MP3やPCMといった音声バイナリデータを取得する。OpenAIの音声APIと互換性がある。 - 音声文字起こし(STT)(
POST /api/v1/audio/transcriptions): base64形式の音声データを送信し、テキストデータと使用量情報を取得する。 - 埋め込み(
POST /api/v1/embeddings): テキストや画像を入力し、機械学習モデルで処理しやすい数値の配列であるベクトルデータを出力する。
生成と理解で異なるアプローチ
メディアの種類が同じであっても、コンテンツを「新しく作る(生成)」のか、「内容を読み取る(理解・分析)」のかによって、呼び出すエンドポイントが異なる。
画像においては、イラストなどを新規に作成する場合は専用の /images エンドポイントを使用するが、手元にある画像をモデルに分析させてOCR(光学文字認識によるテキスト抽出)や物体の検出を行う場合は、/chat/completions に対して image_url を指定して送信する。
動画も同様の使い分けが必要となり、短いクリップを生成する際は非同期の /videos を使用し、既存の動画ファイルを分析・検知させる場合は /chat/completions に video_url を含めて送信する。
音声関連では、テキストから音声を生成する用途には /audio/speech を用い、感情分析などのために音声データを入力として送信する場合は、/chat/completions で input_audio を指定する。
ルーティング制御とコスト最適化
OpenRouterの強みであるルーティング制御機能は、チャットモデルだけでなく、埋め込みや画像生成などの他のモダリティでも同様に動作する。これにより、接続エラー時の自動代替(フェイルオーバー)や、データ収集を拒否する設定(data_collection: "deny")、さらにはコストや応答速度(レイテンシ)を基準としたソート機能が適用可能となる。
また、すべての機能が単一のAPIキーと請求体系に集約されるため、開発費用や管理の手間を削減できる。OpenRouterはプロバイダー側の価格に対して上乗せ(マークアップ)を行っておらず、リクエストが失敗した場合には料金が請求されない仕組みとなっている。
導入時の制約と評価方法
実際にシステムを設計するにあたっては、いくつかの制限事項を考慮する必要がある。具体的には、埋め込みリクエストがストリーミング送信(データを一括ではなく順次受信する処理)に対応していない点、音声入力がbase64形式のみに限定されている点、そして動画URLを入力として送信する際のサポート状況が利用するプロバイダー側に依存する点が挙げられる。
開発者は、クレジットカードの登録が不要な無料枠を利用してこれらのマルチモダリティ機能をテストできる。無料モデルには一日あたりの利用回数制限が設けられているが、クレジットカードでデポジットを追加することでこの制限を引き上げることが可能である。これにより、本番環境への導入前に、ビジョンモデルへの画像送信や埋め込みのバッチ処理などを実際に試して検証できる。