テーマ
言語

透過的なルーティングとフライト内訳

透過的な GetVibe ルーターです。:alias による明示的なルート指定、またはキー戦略による自動ルーティングが可能です。公開エイリアス、フェイルオーバー、公開・デバッグ用の x-getvibe-route ヘッダー、履歴内の route/address_as フィールドに対応しています。

GetVibe は透過的なルーターです。:alias サフィックスで公開バリアントを明示的に選ぶか、サフィックスなしのモデル名を指定すると、ゲートウェイがアカウント/キー戦略に従ってルートを選択し、失敗時には利用可能な別のバリアントに切り替えます。レスポンスと履歴では公開ルート識別子のみが使用されます。

2つのモード: pinまたはauto

パラメータータイプ説明
Explicit pinmodel:alias or model:Nリクエストは常に選択したバリアントを経由します。バリアント間のフェイルオーバーは無効です。429/5xx の場合はエラーがそのまま返されます(同じバリアントでの再試行は許可されます)。
Auto (bare model)モデル名のみゲートウェイはアカウントまたはキーの設定に従ってバリアントを選択します。429/5xx および空の 200 の場合は、コストと入力の制約のもとで同じモデルの他のバリアントを試します。
"model": "claude-opus-4.8"          // auto — key strategy
"model": "claude-opus-4.8:yellow"   // pin — :yellow only, no switching to other channels
"model": "claude-opus-4.8:2"        // pin — catalog variant #2 (legacy :N syntax)

価格の上限・下限:max_priceとmin_price

各モデルは異なる価格の複数のチャネルによって提供されます — いわばはしごです。この 2 つのリクエストボディパラメータは、そのはしごのどの段があなたにサービスを提供できるかを指定します。どちらもUSD per 1M tokensで、Modelsページに表示される単位と数値と同じです。これらは当社の価格 — 実際に請求される金額 — と比較され、あなたには見えない卸売価格と比較されることはありません。

パラメータータイプ説明
max_price数値またはオブジェクト上限です。数値は両方のレッグを制限し、オブジェクトはそれぞれを個別に制限します:{"input": 0.5, "output": 2}。省略されたレッグは無制限です。境界値は含まれます。公開価格と等しい上限はそのチャネルを許容します。
min_price数値またはオブジェクトフロア、同じ形状です。これより低い価格のチャネルを拒否します — 最も深い割引で処理されたくない呼び出し元向けです。リクエストのコストを上げることしかできず、下げることはできません。
{
  "model": "deepseek-v4-flash-0731",
  "messages": [{"role": "user", "content": "hi"}],
  "max_price": 0.02,
  "min_price": {"input": 0.001}
}

両方のレッグが収まる必要があります。入力と出力の両方であり、その平均ではありません。入力が安く出力が高いチャネルは、単一の数値による上限を満たしません。

常設の上限で、cabinet で一度だけ設定します

上限は毎回の呼び出しで繰り返す必要はありません。ダッシュボードは API キーごとおよびモデルごとに 1 つずつ保存し、さらに明示的に設定していないすべてのモデルを対象とするデフォルトも保存します。API は毎回のリクエストでこれを読み取ります。max_price を含むリクエストはその 1 回の呼び出しに対してその値を使用し、何も含まないリクエストは保存された上限を使用します。優先順位は、より具体的なものが先です:

パラメータータイプ説明
max_price in the request呼び出しあたりこのリクエストに限り保存された上限を置き換えます。部分的にマージされるのではなく、完全に置き換えられます。
key + modelstoredこのAPIキーのこのモデルに対する上限です。
account + modelstoredこのモデルに対するアカウントの上限額です。上限を設定していないキーがこれを使用します。
key / account defaultstored独自の値を持たないすべてのモデルに適用される包括的な上限です。
上限とチャネルフィルターは 2 つの異なる制御であり、組み合わせて機能します。 チャネルの順序と除外は、どのチャネルがリクエストを処理できるかを決めます。上限は、その中でどの価格段がリクエストを満たせるかを決めます。どちらか一方、両方、またはどちらも設定しないこともできます。チャネルフィルターだけでは価格を制限できません。1 つのチャネルが同じモデルを同時に多くの価格で提供できるため、チャネルを除外しても最安のチャネルが最終的に請求する金額を上限で抑えることはできません。

上限設定の基準となる価格はどこで確認できますか?

GET /api/catalog はすべてのモデルについて channels 配列を公開します。リクエストが到達しうるチャネルごとに1エントリで、安い順に並び、それぞれに固定に使えるアドレス、100万トークンあたりの inputUsd / outputUsd 価格、およびそれがデフォルトかどうかが含まれます。これらは max_price と min_price が比較される正確な数値であり、あなたに請求される正確な数値でもあります — 1つのリストであり、3つではありません。

curl -s https://getvibeapi.com/api/catalog   | jq '.[] | select(.apiModel=="z-ai/glm-5.3") | .channels'

課金対象

課金されるのは実際にリクエストを処理したチャネルと、当社の固定マークアップです — 設定した上限額ではなく、上限額を超えることもありません。ある価格で上限を設定し、リクエストがより安い段で成立した場合は、その安い方の価格を支払います。モデルページのラダーは範囲を示しており、「from」の金額は存在する最も安い段です — これは実際に請求されうる価格であり、このリクエストがそこに収まるという約束ではありません。上限を保証する必要がある場合は max_price を設定してください。

何も収まらない場合

リクエストは 拒否 されます。HTTP 422 と "type": "price_bound_no_lane" を返し、そのモデルの最安チャネル価格と最高チャネル価格、および channels の完全なリストを提示します。これにより、上限を推測するのではなく数値から選べます。lowest_passing_usd_per_million は現在チャネルを許容する最小の上限です — 1つのチャネル自身のペアであるため、それを送信すれば通過します(2つの cheapest レッグは別々のチャネルから来る場合があります)。同じフィールドは、取引所自体が上限を拒否した場合にも現れます。その場合は、まだ供給のある次の価格レベルとなり、送信した上限を下回ることはありません。上限が 制限ではなかった 場合 — チャネルに対する当社自身の購入上限が制限であり、その下のオファーがビジーまたは枯渇していた場合 — の応答は代わりに HTTP 503 "type": "no_seller_available" と Retry-After になり、推奨価格は付きません。max_price を引き上げても効果はなく、まもなく再試行すれば効果があるかもしれません。最安の段にはビジーの単一オファーしかないことが多いため、確実に約定させるには、供給の大半が存在するモデルの priceTypical 以上に上限を設定してください。当社がより高価なチャネルを黙って提供することはなく、別のモデルに差し替えることもありません。不正な値 — 文字列、ゼロ、負の値、不明なフィールド — は 400 invalid_request_error となり、黙って無視されることはありません。

{
  "error": {
    "message": "No channel of model "deepseek-v4-flash-0731" is priced within your max_price $0.0001 in / $0.0001 out...",
    "type": "price_bound_no_lane",
    "code": 422,
    "param": "max_price",
    "cheapest_usd_per_million": {"input": 0.0065, "output": 0.013},
    "dearest_usd_per_million": {"input": 0.0528, "output": 0.1584},
    "lowest_passing_usd_per_million": {"input": 0.0205, "output": 0.0613},
    "channels": [
      {"address": "deepseek/deepseek-v4-flash-0731:codebuddy-cn", "label": "codebuddy-cn", "inputUsd": 0.0205, "outputUsd": 0.0613, "isDefault": true},
      {"address": "deepseek/deepseek-v4-flash-0731:qwencloud", "label": "qwencloud", "inputUsd": 0.0378, "outputUsd": 0.1132, "isDefault": false}
    ]
  }
}
価格の上限・下限はベアモデルにも明示的なpinにも適用されます。bound自体が範囲外であるpinでは、そのpinを名指しする同じ422が返されます。pinが自動的に別のチャネルへ移動されることはありません。

固定できるプール名

ベンダーサブスクリプションプールから提供されるチャネルは、名前で指定できます。コロンの後に名前を、他のエイリアスとまったく同じように記述します:

"model": "gpt-6.1-sol:codex"         // pin a subscription pool
"model": "claude-opus-5.5:claude-code"  // pin the Claude Code pool
指定可能なプール
パラメータータイプ説明
:codexpoolこのプールは名前で指定します。:openai-codex も受け付けます。
:qwencloudpoolこのプールは名前で指定します。:alibaba-qwencloud も受け付けます。
:zaipoolこのプールは名前で指定します。:z-ai-glm-coding-plan も受け付けます。
:claude-codepoolこのプールは名前で指定します。
:antigravitypoolこのプールは名前で指定します。
:grokpoolこのプールは名前で指定します。
:codebuddypoolこのプールは名前で指定します。
:codebuddy-cnpoolこのプールは名前で指定します。
:clinepasspoolこのプールは名前で指定します。
:command-codepoolこのプールは名前で指定します。:commandcode も受け付けます。
:opencodepoolこのプールは名前で指定します。:opencode-go も受け付けます。
:mimopoolこのプールは名前で指定します。
:kiro-poolpoolこのプールは名前で指定します。
:meta-aipoolこのプールは名前で指定します。
:minimax-cnpoolこのプールは名前で指定します。
:qwencloud-alibaba-cnpoolこのプールは名前で指定します。
:marketplacepoolこのプールは名前で指定します。:bare-marketplace-alias も受け付けます。
:nouspoolこのプールは名前で指定します。
これらの読みやすい名前は、このデプロイメントが公式に提示する唯一の表記です。古い短いレター形式は移行期間中は引き続き解決され、すべてのレスポンスで通知されます(x-pv-deprecated-alias / x-pv-use-instead)が、ここに表示されることはなく、新しい統合ではこの名前を使用してください。各プールは独自の価格ラダーを持つ1つのチャネルです。数字で終わる古いバンド表記(:claude-code-2)も、そのプールに引き続き解決されます。

パブリックエイリアス(:alias)

コロンの後のサフィックスは 公開 ルートの識別子であり、上流の名前ではありません。特定のモデルの完全なリストはカタログ(Models、「In API」列)にあります。主なエイリアス:

パラメータータイプ説明
:yellowalias多くのモデルで提供されている公開バリアントです。料金はカタログに記載されています。
:codex / :claude-code / …aliasサブスクリプションプールです。名前は上記の「固定できるプール名」に記載されています。
:pixel / :flowaliasメディアルート (画像/動画) であり、チャットではありません。
1つのモデルのバリアントについての詳細は、モデル → プロバイダーのセクションをご覧ください。モデルでサフィックスが利用できない場合、リクエストは400を返します。

キー設定

auto リクエスト(モデル名のみ)では、以下が各 API キー(ダッシュボード → API keys)に設定されます。

パラメータータイプ説明
routingStrategystringpriority(デフォルト) — providerPriorityの順序、それ以外の場合はカタログ内の最初のバリアント。price — 当社にとって最も安いバリアント。latency — 最近の計測で最も高速なもの。default — 厳密に最初の対象バリアント。
providerPrioritylist内部プロバイダータグの優先順位(ダッシュボードで表示される人間が読みやすい名前)。strategy=priority と組み合わせて使用します。
disabledProviderslist自動ルーティングからプロバイダーを除外します。バリアントが存在する場合、明示的な :alias は引き続き呼び出せます。
cacheOnlybooleanプロンプトキャッシュ対応のバリアントのみ — 繰り返すプレフィックスに適しています。
設定は、明示的なサフィックスを付けていないリクエストにのみ適用されます。キーのフィールドが空の場合は、デフォルトが使用されます。allowedModelsおよび以下の表の制限も参照してください。

ルーティング戦略

パラメータータイプ説明
priority (default)strategy通常のデフォルトルート。
pricestrategyそのモデルで利用可能なもののうち、最も低価格のバリアントを選択します。
latencystrategy最近の計測値に基づいて最速のバリアントを選択します。
cacheOnlybooleanキャッシュ対応のバリアントのみ — 繰り返すプロンプトのプレフィックスに適しています。
strategy はデフォルトのリクエストにのみ適用されます。サフィックスでバリアントを明示的に設定した場合(例::yellow)、常にその指定が尊重され、ルーティングによって上書きされることはありません。ダッシュボード → API keys でキーごとに設定します。

プロバイダーの明示的な選択

コロンの後にプロバイダーのエイリアスを追加します。これはルーティング戦略に関係なく適用されます。エイリアスの完全な一覧と例は、Models → Providers セクションにあります。

"model": "claude-opus-4.8"        // auto — key strategy
"model": "claude-opus-4.8:yellow"     // explicitly pin the :yellow channel
"model": "claude-opus-4.8:kiro-pool"  // explicitly pin the :kiro-pool channel

キーの制限

API キーごとに、ダッシュボードで設定できます:

パラメータータイプ説明
allowedModelsモデルリストこのキーが呼び出せるモデルのホワイトリストです。空の場合はすべて許可されます。リスト外のモデルをリクエストすると 403 になります。
routingStrategy / cacheOnlyoverrideこのキーの strategy とキャッシュフィルターです。
limitRub利用上限キーの利用上限額。
allowedIpsIP ホワイトリストIP 制限(「Authentication」セクションを参照)。
これはチームや統合にキーを渡す際に便利です。1つのキーは安価なモデルのみ、別のキーは支出上限付き、3つ目は独自の戦略付きといった具合です。すべてダッシュボードで設定できます。

フェイルオーバー(auto のみ)

ベアモデル を指定すると、現在のバリアントが 429、5xx、または内容のない空の 200 を返した場合に、ゲートウェイが同じモデルの別の公開バリアントに切り替えることがあります。制約:

  • 画像/PDF を含むリクエストは別のプロバイダーに切り替えられません(ビジョン互換性)。
  • フェイルオーバーは、大幅に高価なバリアントには移行しません(strategy=price の場合を除く)。
  • クライアントリクエストあたりの試行回数には上限があります。
  • pin(:alias)を指定すると、プロバイダー間のフェイルオーバーは オフ になり、選択したルートのエラーが返ります。

429 に対する指数バックオフでの再試行については、Errors and limits で説明しています。

フライト内訳 — どのルートがリクエストを処理したか

信頼されたreveal/debugクライアントでは、リクエスト完了後(autoを含む)、実際に実行されたpublicバリアントを示すヘッダーが利用できます。通常のクライアントにはこのデータは提供されません。

信頼された reveal/debug クライアント用のレスポンスヘッダー(chat / messages / responses)

パラメータータイプ説明
x-getvibe-routestring公開ルートのエイリアスです:yellow、codex、claude-code、…
x-getvibe-modelstring再固定に使用する model の値です。base または base:alias(例:gpt-6.1-sol:yellow)を指定します。明示的に固定している場合は、選択した値と一致します。
x-pv-generation-idstring履歴レコード ID(非ストリーミング)。Balance and history を参照してください。
curl -sD - https://getvibeapi.com/v1/chat/completions \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-6.1-sol","messages":[{"role":"user","content":"ping"}],"max_tokens":8}' \
  -o /dev/null | grep -i getvibe

# x-getvibe-route: yellow
# x-getvibe-model: gpt-6.1-sol:yellow

使用履歴

GET /v1/generations、GET /v1/usage、およびダッシュボードでは、各レコードに以下のフィールドがあります:

パラメータータイプ説明
modelstringベースモデル名(内部サフィックスなし)。
routestring | null採用されたルートの公開 :alias。
address_asstring再ピン留めする際の model フィールドの正確な値です(カタログの addressAs と同様)。
cost_detailobject課金の計算内容:1M あたりのレート付きトークン行(lines)、追加料金(adjustments)、合計。マーケットプレイスチャネルでは、リクエストを処理した出品者の価格ティア(価格ラダーの段)で課金されるため、リスト料金と異なる場合、rateBasis は "tier" となり、lines はそのティアのレートで表示されて課金合計と一致し、tier がそのレートを示します。realisedRate {input, output} は、そのリクエストが実際に課金された 1M あたりの価格です。モデルの価格ラダー(/api/model-ladder)で、どの段が処理したかを確認できます。リクエストが 1 リクエストあたりの最低料金で課金された場合、minimumCharge は true(および realisedRate は null)になります。max_price を送信すると、段の上限を設定できます。
OpenAI 互換エンドポイントの応答本文では、上流ブランド、model および cost_usd 内の内部サフィックスは 非表示 のままです(公開例外のあるクライアントを除く)。フライト内訳はヘッダーと履歴にのみ表示され、SDK を壊すことはありません。

制限事項

GetVibe は、リクエスト本文でアップストリームプロバイダーを列挙する「raw」ウォーターフォールを提供していません。制御は公開の :alias、キー戦略、およびモデルカタログ内の自動フェイルオーバーによって行います。「プロバイダーを無視する」専用の API やルーティング ZDR フラグはありません。

GetVibe ルーティング — :alias、自動ルート、フェイルオーバー、フライト内訳 | GetVibe API