MW BasicRouter
コンソール

BasicRouterドキュメント

クイックスタート

BasicRouterは、本番チームにモデルアクセス、ルーティング、フォールバック、使用量トラッキング、クレジットベースの課金のための安定したAPIを1つ提供します。LLMトークンの供給は信頼できるエンタープライズクラウドのオリジナルプロバイダーアカウントから調達され、ゲートウェイにプライバシー保護、高い安定性、リクエスト追跡性が組み込まれています。

ベースURLhttps://api.basicrouter.ai/api
OpenAI互換https://api.basicrouter.ai/api/v1
Anthropicメッセージhttps://api.basicrouter.ai/api/v1
認証Authorization: Bearer <key>

APIキーを作成する

コンソールでBasicRouter APIキーを作成します。キーはサーバーに保管し、ブラウザやモバイルクライアントのコードには絶対に公開しないでください。

推奨されるキー戦略:

キーの種類推奨される用途
開発キーローカル開発、ステージング、テスト、プロトタイプ。
本番キーバックエンドの本番ワークロード専用。
統合キーCursor、Claude Code、Codex、Hermes、OpenClawなどのツール専用キー。
顧客/テナントキーエンタープライズ顧客、テナントトラフィック、事業部門向けのオプションのキー分離。

チームのアクセス権限が変更された際はキーをローテーションしてください。使用されなくなったキーは無効化してください。

SDKをBasicRouterに向ける

ほとんどのOpenAI互換クライアントは、新しいベースURLとAPIキーのみが必要です。

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.BASICROUTER_API_KEY,
  baseURL: "https://api.basicrouter.ai/api/v1"
});

チャット補完を送信する

curl --request POST \
  --url https://api.basicrouter.ai/api/v1/chat/completions \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "claude-sonnet-5",
    "messages": [
      { "role": "user", "content": "Explain BasicRouter in one sentence." }
    ]
  }'

使用量と残高を確認する

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/billing/balance \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"

モデルの検索

モデルページまたはモデルAPIを使用して、利用可能なテキストモデルを確認します。モデルのメタデータには、ベンダー、サービスプロバイダー、モダリティ、コンテキスト長、対応するAPIファミリー、対応する機能、可用性、アカウントレベルの制限、クレジット価格が含まれます。

エンドポイント: GET /v1/models 目的: 現在のアカウントで利用可能なモデルを一覧表示します。

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/models \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"

機能マトリックス

機能説明一般的な用途
streamingサーバー送信イベントのストリーミングに対応。チャットアプリ、コーディングエージェント、リアルタイムUX。
tool_callingツール呼び出しまたは関数呼び出しに対応。エージェント、ワークフロー自動化、コーディングアシスタント。
structured_outputsスキーマ制約またはJSON出力に対応。データ抽出、ワークフロー自動化、エンタープライズアプリ。
json_modeJSON形式の出力を返すことができます。軽量な構造化レスポンス。
vision画像入力を受け付けます。マルチモーダルチャット、UI分析、ドキュメントのスクリーンショット。
prompt_cachingキャッシュされた入力またはコンテキストの再利用に対応。長文コンテキストエージェント、繰り返し使用されるシステムプロンプト。
reasoning利用可能な場合は明示的な推論制御に対応。複雑な計画、コーディング、分析ワークフロー。
logprobsトークン確率出力に対応。評価、ランキング、高度なNLPワークフロー。

APIファミリー互換性マトリックス

APIファミリーテキスト画像入力ツール呼び出し構造化出力ストリーミング備考
OpenAI Chat Completionsはいモデル依存モデル依存モデル依存はいOpenAI互換エージェントやSDKに最適なデフォルト。
OpenAI Responsesはいモデル依存モデル依存モデル依存はい新しいOpenAIスタイルのエージェントワークフローに推奨。
Anthropic Messagesはいモデル依存モデル依存モデル依存はいClaude互換クライアントとClaude Codeに最適。
Gemini OpenAI互換はいモデル依存モデル依存モデル依存はいOpenAIスタイルのクライアントでGeminiモデルを使用します。
Geminiネイティブ互換はいモデル依存モデル依存モデル依存はい既存のGeminiネイティブアプリケーションに最適。
BasicRouter画像生成いいえモデル依存いいえいいえいいえ非同期タスクポーリングまたはWebhookを使用。
BasicRouter動画生成いいえモデル依存いいえいいえいいえ非同期タスクポーリングまたはWebhookを使用。

認証

すべてのAPIリクエストはベアラートークンを使用します。キーはサーバー側の環境変数に保管し、 チームのアクセス権限に変更があった際はローテーションを行い、デバッグ用にリクエストIDを記録してください。

ヘッダー備考
AuthorizationBearer YOUR_API_KEYすべてのリクエストで必須です。
Content-Typeapplication/jsonJSONリクエストボディの場合に必須です。

キーセキュリティの推奨事項

  1. APIキーはサーバーに保管してください。ブラウザやモバイルのクライアントコードにキーを公開しないでください。
  2. 開発、ステージング、本番、サードパーティ連携それぞれで別々のキーを 使用してください。
  3. 利用可能な場合は、環境、サービス、顧客、またはテナントごとにキーのスコープを設定してください。
  4. 従業員の退職、ベンダーアクセスの変更、または漏洩が疑われる場合は、 キーをローテーションしてください。
  5. キーはソースコードではなく、シークレットマネージャーまたは環境変数に保管してください。

コーディングエージェント

BasicRouterは、OpenAI互換またはAnthropic互換のAPIエンドポイントをサポートする コーディングエージェントやAI開発ツールと連携します。mwf/coding-auto などの ルーティングエイリアスを使用すると、開発者がツールの設定を変更することなく、 BasicRouterが利用可能な最適なコーディングモデルにルーティングできます。

汎用OpenAI互換セットアップ

Cursor、Codex、Hermes、OpenClaw、Continue、Aider、Cline、 LangChainベースのエージェント、LlamaIndexベースのエージェント、およびカスタムOpenAI互換エージェント ランタイムにこのセットアップを使用してください。

export OPENAI_BASE_URL="https://api.basicrouter.ai/api/v1"
export OPENAI_API_KEY="$BASICROUTER_API_KEY"
export OPENAI_MODEL="mwf/coding-auto"

汎用Anthropic互換セットアップ

Claude互換クライアントやAnthropic Messagesフォーマットを期待する ツールにこのセットアップを使用してください。

export ANTHROPIC_BASE_URL="https://api.basicrouter.ai/api/anthropic"
export ANTHROPIC_API_KEY="$BASICROUTER_API_KEY"
export ANTHROPIC_MODEL="mwf/coding-auto"
ユースケース推奨エイリアス要件
汎用コーディングmwf/coding-autoツール呼び出し、ストリーミング、高いコーディング能力。
高速コーディングチャットmwf/coding-fast低レイテンシとストリーミング。
大規模リポジトリ分析mwf/coding-long長いコンテキストと安定した出力。
コスト重視のコーディングアシスタントmwf/low-cost低価格と許容できるコーディング品質。
UIスクリーンショット / ビジョンコーディングmwf/vision-chat画像入力とテキスト出力。

Cursorクイックガイド

OpenAI互換エンドポイントを使用します。

Base URL: https://api.basicrouter.ai/api/v1
API Key:  BASICROUTER_API_KEY
Model:    mwf/coding-auto

推奨手順:

  1. Cursorの設定を開きます。
  2. OpenAI互換APIキー設定を追加または有効化します。
  3. OpenAIベースURLの上書きを https://api.basicrouter.ai/api/v1 に設定します。
  4. mwf/coding-automwf/coding-fastmwf/coding-long などのカスタムモデルを追加します。
  5. 最適なエージェント動作のために、ストリーミングとツール呼び出しをサポートするモデルを使用してください。

トラブルシューティング:

問題推奨される解決策
モデルが表示されないモデル名を手動でカスタムモデルとして追加してください。
ツール呼び出しが失敗するモデル一覧ページで tool_calling: true のモデルを使用してください。
ストリーミングが中断されるバックオフで再試行するか、フォールバック付きのルーティングエイリアスを使用してください。
401エラーAPIキーとベースURLを確認してください。
404モデルエラーアカウントでモデルが有効になっていることを確認してください。

Claude Codeクイックガイド

Anthropic互換ゲートウェイエンドポイントを使用します。

export ANTHROPIC_BASE_URL="https://api.basicrouter.ai/api/anthropic"
export ANTHROPIC_API_KEY="$BASICROUTER_API_KEY"
export ANTHROPIC_MODEL="mwf/coding-auto"

BasicRouterは、Claude CodeおよびAnthropic SDK互換性のためのこの Anthropic互換パスをサポートしています:

POST /api/v1/messages

推奨要件:

要件理由
Anthropic Messages互換リクエスト形式Claude CodeはAnthropicスタイルのメッセージを期待します。
ストリーミングサポートClaude CodeはストリーミングUXに依存します。
ツール呼び出しサポートエージェント型コーディングワークフローに必須。
長いコンテキストリポジトリレベルのタスクに有用。
安定したフォールバック長時間実行されるコーディングセッションに有用。

Codexクイックガイド

BasicRouterをカスタムOpenAI互換モデルプロバイダーとして使用します。

プロバイダー設定の例:

[model_providers.basicrouter]
name = "BasicRouter"
base_url = "https://api.basicrouter.ai/api/v1"
env_key = "BASICROUTER_API_KEY"
wire_api = "responses"

model_provider = "basicrouter"
model = "mwf/coding-auto"

環境変数:

export BASICROUTER_API_KEY="br_xxx"

推奨モデル:

モデルユースケース
mwf/coding-autoデフォルトのコーディングエージェントモデル。
mwf/coding-long大規模リポジトリコンテキスト。
mwf/coding-fast高速な反復と小さな変更。

トラブルシューティング:

問題推奨される解決策
認証エラーenv_keyBASICROUTER_API_KEY を指していることを確認してください。
モデルが見つからないBasicRouterコンソールでエイリアスを追加するか、直接モデルIDを使用してください。
Responses APIエラーResponsesをサポートするモデルとエンドポイントに対してのみ wire_api = "responses" を使用してください。
Chat Completions専用モデルクライアントがサポートしている場合は、チャット互換のワイヤAPIに切り替えてください。

Hermesクイックガイド

Hermesデプロイメントが別のプロトコル用に設定されていない限り、 OpenAI互換エンドポイントを使用してください。

export OPENAI_BASE_URL="https://api.basicrouter.ai/api/v1"
export OPENAI_API_KEY="$BASICROUTER_API_KEY"
export OPENAI_MODEL="mwf/coding-auto"

推奨モデルポリシー:

Hermesワークロードモデル
汎用コード生成mwf/coding-auto
低レイテンシのタスク実行mwf/coding-fast
長文コンテキストのリポジトリスキャンmwf/coding-long
コスト重視のバックグラウンドタスクmwf/low-cost

OpenClawクイックガイド

OpenAIスタイルのエージェントランタイム設定にOpenAI互換エンドポイントを使用します。

export OPENAI_BASE_URL="https://api.basicrouter.ai/api/v1"
export OPENAI_API_KEY="$BASICROUTER_API_KEY"
export OPENAI_MODEL="mwf/coding-auto"

OpenClawが複数のプロバイダーをサポートしている場合は、BasicRouterをOpenAI互換 プロバイダーとして設定し、モデル選択にBasicRouterのルーティングエイリアスを使用してください。

{
  "provider": "openai-compatible",
  "base_url": "https://api.basicrouter.ai/api/v1",
  "api_key_env": "BASICROUTER_API_KEY",
  "model": "mwf/coding-auto"
}

エージェント互換性チェックリスト

機能必要な場面
ストリーミング優れたターミナル/エディタUX。
ツール呼び出しエージェント型コーディング、ファイル編集、コマンド実行。
長いコンテキスト大規模リポジトリと複数ファイルの変更。
構造化出力計画、タスク分解、自動化ワークフロー。
画像入力UIスクリーンショット分析とデザインからコードへのワークフロー。
フォールバック本番の安定性と長時間実行タスク。

コンソールの使用

BasicRouterコンソールは、APIアクセス、モデル可用性、 ルーティングポリシー、使用量の可視化、請求管理のための運用管理平面です。 アカウント管理者に、キー、モデル、リクエスト、クレジット、 本番のモデルトラフィックに関するアカウントレベルのコントロールの 一元化されたビューを提供します。

APIキーの管理

コンソールからAPIキーの作成、ローテーション、失効、ラベル付けを行います。開発、ステージング、本番、 個別サービスそれぞれで別々のキーを使用し、使用量を環境やアプリケーションごとに 監査・分離できるようにしてください。

プラクティス説明
環境の分離開発、ステージング、本番のトラフィックに異なるAPIキーを使用します。
説明的なラベルの使用アプリケーション、サービス、環境、統合ごとにキーにラベルを付けます。
定期的なローテーションアクセス権限の変更時や認証情報が漏洩した可能性がある場合にキーをローテーションします。
クライアント側での露出を回避APIキーはサーバー側のシステムのみに保持してください。ブラウザや モバイルのクライアントコードにキーを公開しないでください。
キー使用量の監視キーごとにリクエスト量、クレジット消費量、エラーパターンを確認します。

モデル一覧

モデル一覧ページを使用して、アカウントで利用可能なモデルを確認します。各モデルエントリには、 ベンダー、サービングプロバイダー、モダリティ、サポートされるAPIファミリー、コンテキスト長、 機能フラグ、可用性状態、価格情報が含まれる場合があります。

フィルター目的
ベンダーOpenAI、Anthropic、Google、Qwen、DeepSeek、その他の プロバイダーなどのモデルベンダーでフィルターします。
プロバイダーサービングプロバイダーまたはクラウドプロバイダーでフィルターします。
モダリティテキスト、画像、動画、エンベディング、オーディオ、マルチモーダルのサポートでフィルターします。
機能ストリーミング、ツール呼び出し、構造化出力、ビジョン、プロンプトキャッシュ、 推論のサポートでフィルターします。
可用性現在アカウントで利用可能なモデルを識別します。

本番アプリケーションでは、トラフィックを有効化する前にモデルの機能を確認してください。 一部のパラメータや機能はモデルに依存し、すべてのAPIファミリーで サポートされるとは限りません。

使用量とログ

使用量とログビューは、APIトラフィックの運用可視性を提供します。チームは リクエスト量、選択されたモデル、解決されたルーティングターゲット、クレジット消費量、 レイテンシ、エラーコード、リクエストIDを調査できます。

  • 失敗したリクエストのトラブルシューティング。
  • 高コストのワークロードの特定。
  • アプリケーションや環境間でのモデル使用量の比較。
  • ルーティングとフォールバック動作の検証。
  • レイテンシやプロバイダー可用性の問題の調査。
  • サポートに連絡する際のリクエストIDの提供。

各APIレスポンスにはBasicRouterリクエストIDが含まれるか、公開されています。このIDを アプリケーションログに保存して、本番デバッグとサポートエスカレーションをより効率的にしてください。

フォールバック

フォールバックはBasicRouterのレジリエンスメカニズムです。プライマリモデルまたはルーティングポリシーが 失敗した場合、システムは自動的にバックアップモデルに切り替えてリクエストの処理を継続します。 これによりアプリケーションの応答性を維持し、サービス停止のリスクを最小限に抑えます。

高可用性保証
フォールバックはセーフティネットとして機能し、 モデルの障害、クォータ制限、ネットワークの変動が発生した場合でも アプリケーションをスムーズに稼働させ続けます。

フォールバックが重要な理由

本番環境では、モデルサービスは多くの予測不能な問題に遭遇する可能性があります:

  • モデルサービスの障害:上流APIが一時的に 利用できなくなったりタイムアウトしたりします。
  • パフォーマンスの変動:高いモデル負荷により、レスポンスが 遅くなったり失敗したりします。
  • ルーティングの失敗:スマートルーティングで選択された すべての候補モデルが利用不可になります。

フォールバックは信頼性の高いバックアップパスを提供することで、アプリケーションの可用性を維持します。

主な利点

利点説明
高可用性自動フェイルオーバーによりサービスの稼働を維持し、 障害の影響を軽減します。
透過的な切り替えシステムが自動的にモデルを切り替えます — アプリケーションコードの変更は 不要です。
柔軟な設定ユースケースに応じて、リクエストごとおよびアカウントレベルの 設定の両方をサポートします。
コスト最適化より費用対効果の高いモデルをフォールバックとして選択し、緊急時の コストを管理します。
一元管理アカウントレベルで一度設定すれば、すべての リクエストに自動的に適用されます。

グローバルフォールバックモデル設定

BasicRouterはコンソールのバックエンドからグローバルフォールバックモデルの設定をサポートしています。 すべてのリクエストは失敗時にこのモデルをバックアップとして自動的に使用します。

設定方法:

  1. BasicRouter戦略設定ページに 移動します。
  2. デフォルトフォールバックモデル設定を見つけます。
  3. ドロップダウンリストからグローバルフォールバックモデルを選択します。
  4. 設定を保存して即座に適用します。

グローバル設定の利点:

  • コード変更不要:一度設定すればグローバルに適用され、 すべてのリクエストで設定を繰り返す必要はありません。
  • 一元管理:フォールバックポリシーを一箇所で管理し、 調整や監視を容易にします。
  • メンテナンスの簡素化:コードの複雑さと設定エラーの 可能性を低減します。
  • 柔軟な上書き:リクエストレベルのフォールバック設定が優先され、 特定のシナリオでグローバル設定を上書きできます。

リクエストレベルのフォールバック設定

特定のビジネスシナリオでは、個々のリクエストでフォールバックモデルを指定して、 グローバル設定を上書きできます。

router.fallBackModels パラメータでフォールバックモデルを指定します:

{
  "model": "claude-sonnet-4",
  "messages": [
    {
      "role": "user",
      "content": "Explain what quantum computing is"
    }
  ],
  "router": {
    "fallBackModels": ["glm-5.2"]
  }
}

優先順位ルール

複数のフォールバック設定が存在する場合、優先順位は高から低へ 以下の順になります:

  1. リクエストレベルの router.fallBackModels:個々のリクエストで指定されたフォールバックモデル。
  2. グローバルデフォルトフォールバックモデル:コンソールで設定された グローバルフォールバックモデル。
  3. フォールバックなし:いずれも設定されていない場合、リクエストは 失敗時にエラーを返します。
⚠ 重要な注意事項
  • すべてのフォールバックモデルが失敗した場合、システムは最後に試行された モデルの失敗理由を返します。
  • フォールバックが発生した場合、レスポンスは実際に使用されたモデルを示し、 監視と分析を容易にします。

アカウント管理

アカウントの種類に応じて、コンソールにはアカウントレベルのモデル有効化、 リセラーまたはディストリビューターのコントロール、請求設定、アクセス設定が含まれる場合があります。 管理者はこれらのコントロールを使用して、モデルアクセス、使用量の可視性、 請求責任をアプリケーション、顧客アカウント、または事業単位に合わせることができます。

本番運用チェックリスト

項目推奨事項
APIキー明確なラベル付きの専用本番キーを使用します。
モデルモデルの可用性、価格、コンテキスト長、必要な機能を確認します。
ルーティング重要なワークロードにルーティングエイリアスまたはフォールバックポリシーを設定します。
ログリクエストIDがアプリケーションログに記録されていることを確認します。
請求ウォレット残高、プランステータス、クレジット控除ルールを確認します。
レート制限アカウントレベルのRPM、TPM、同時実行数、メディアタスク制限を確認します。
アラート使用量の増加、クレジット残高、エラー、プロバイダー可用性を監視します。

請求とクレジット

BasicRouterは、テキスト、画像、動画、その他のサポートされるモデルワークロードにわたり クレジットベースの課金モデルを使用します。クレジットはマルチモデルおよびマルチプロバイダーの 使用量のための統一された単位を提供し、チームがモダリティやAPIファミリー全体で 消費量を一貫して管理できるようにします。

詳細なモデル価格は、モデル一覧ページまたはモデルメタデータAPIで確認できます。 価格は、モデル、プロバイダー、モダリティ、解像度、トークンタイプ、出力長、 タスク時間、アカウントタイプ、商取引契約によって異なる場合があります。

チャージとウォレット

アカウントは柔軟な使用のために従量課金ウォレットクレジットを追加できます。ウォレットクレジットは、 アカウントにカスタム請求ルールが適用されていない限り、月額プランのクレジットと リソースパックが消費された後に使用されます。

ウォレットクレジットは、適用される商取引条件で別途定められていない限り期限切れになりません。 従量課金ウォレットのチャージ時にサービス手数料が発生します。

月額プランとリソースパック

各ユーザーまたはアカウントは1つの有効な月額プランを選択できます。月額プランは、 請求期間中の定義された使用量、商取引条件、アカウントレベルのアクセス設定を提供します。

ユーザーは追加の使用量のために複数のリソースパックを購入することもできます。リソースパックは コミットされた使用量を従量課金ウォレット残高から分離でき、大容量のテキスト、画像、動画、 または専用ワークロードの使用に役立ちます。

課金順序

カスタム請求ルールが設定されていない限り、クレジットは以下の順序で 控除されます:

優先順位クレジット元説明
1月額プラン含まれる月間使用量が最初に消費されます。
2リソースパック追加購入されたパックは月額プランクレジットの後に消費されます。
3従量課金ウォレットウォレット残高はプランおよびリソースパッククレジットの後に消費されます。

カスタム商取引条件を持つアカウントでは、控除順序、期限ルール、含まれる使用量、価格が 異なる場合があります。アカウント固有のルールはコンソールに表示されるか、 商取引契約を通じて提供されます。

カスタム価格

価格はユーザーまたはアカウントごとにカスタマイズできます。エンタープライズ顧客、リセラーアカウント、 ディストリビューターアカウント、大規模顧客はカスタム価格の対象となる場合があります。 見積もりについては営業にお問い合わせください。

カスタム価格は、アカウント、モデル、プロバイダー、モダリティ、リージョン、使用量、 または商取引契約ごとに設定できます。カスタム価格が有効な場合、コンソールと請求APIは 利用可能な範囲でアカウント固有の価格と控除ルールを反映します。

価格単位

異なるモデルモダリティは異なる測定単位を使用します。BasicRouterはモデルの価格ルールに 従ってこれらの単位をクレジットに変換します。

モダリティ一般的な価格基準
テキスト入力トークン、出力トークン、キャッシュ読み取りトークン、キャッシュ書き込みトークン、推論 トークン、モデル固有のトークンカテゴリ。
画像モデル、解像度、生成画像数、入力画像使用量、編集モード、 または品質設定。
動画モデル、出力解像度、生成秒数、アスペクト比、入力画像または動画の 使用量、タスクタイプ。
エンベディング入力トークンまたはエンベディングレコード数。
オーディオ入力時間、出力時間、文字起こしの長さ、またはモデル固有のオーディオ 単位。

価格単位はモデルによって異なる場合があります。本番でモデルを有効にする前に、 必ずモデル詳細ページまたは価格メタデータを参照してください。

使用量の帰属

BasicRouterの使用量は、アカウント、APIキー、モデル、モダリティ、または時間範囲ごとに 確認できます。これによりチームはコストをアプリケーション、環境、顧客、 内部の事業単位に帰属させることができます。

ディメンション説明
APIキーアプリケーション、サービス、または環境ごとに使用量をグループ化。
モデル選択されたモデルごとにコストと量を比較。
解決済みモデルルーティングまたはフォールバック後に実際に使用されたモデルを確認。
モダリティテキスト、画像、動画、エンベディング、オーディオの使用量を分離。
時間範囲日次、月次、またはカスタムのレポート期間を確認。
メタデータ顧客ID、テナントID、ユーザーID、環境などのカスタムリクエストメタデータで 使用量をグループ化。

クレジット残高

アカウント全体で利用可能なクレジット数を確認します。残高は順番に控除される3つの ウォレットに分割されます:月額プラン枠、購入済みリソースパック、従量課金ウォレット。 また、チャージ支出とは別に含まれる使用量を追跡するための、統合リソース合計 (月額プラン+リソースパック、従量課金を除く)も利用可能です。

プログラムでこれを取得するには、APIリファレンスの GET /v1/billing/balanceを参照してください。

使用量の詳細

レポート、監視、内部コスト配分のための、個々の使用量レコードのページ分割された時系列リストを 確認します。各レコードはモデル、モデルタイプ(テキスト、画像、動画)、控除されたクレジット、 各控除がどのウォレットから引き出されたかの内訳を表示します。結果は特定の時間範囲で フィルターできます。

プログラムでこれを取得するには、APIリファレンスの GET /v1/usageを参照してください。

取引履歴

取引履歴を使用して、チャージ、プラン割り当て、リソースパック付与、使用量控除、調整、 管理上の修正を含むクレジットの動きを確認します。

プログラムでこれを取得するには、APIリファレンスの GET /v1/billing/transactionsを参照してください。

失敗したリクエストと返金

検証エラー、認証エラー、権限エラーは、モデルの実行が発生しないため通常は 課金されません。上流モデルに到達したリクエストや部分的な出力を生成したリクエストは、 モデル、プロバイダー、レスポンス状態に応じてクレジットを消費する場合があります。

非同期の画像および動画タスクの場合、課金動作はタスクが承認、開始、完了、失敗、 キャンセルされたかどうかに依存します。タスク詳細レスポンスには、クレジットが消費された 場合に使用量情報が含まれます。

チャージ、月額プラン、リソースパック、消費済みクレジットは、適用される商取引契約で 別途定められているか法律で要求されていない限り返金不可です。

APIリファレンス

共通規約

ベースURL

すべてのエンドポイントは /v1 プレフィックスの下で提供されます。

認証

/v1/* エンドポイントへの呼び出しは APIキー認証を使用します (JWTではありません)。APIキーは以下のヘッダーで渡されます:

ヘッダーフォーマット説明
AuthorizationBearer <api_key>OpenAIスタイル。Anthropic互換エンドポイントは x-api-keyanthropic-version: 2023-06-01 も受け付けます。

キーが存在しない、または無効な場合は 401 を返します。

残高事前チェック

すべてのモデル呼び出しエンドポイントは実行前に残高事前チェックを行います:

  • 残高不足の場合 Insufficient credit を返し、以下にマッピングされます:
    • OpenAIプロトコル:HTTP 400code = insufficient_quota
    • Anthropicプロトコル:HTTP 402type = billing_error
  • 一部のエンドポイントは2回目の事前チェックのためにモデルごとの最小コストを見積もります。

POST https://api.basicrouter.ai/api/v1/chat/completions

OpenAI Chat Completions互換エンドポイント。ストリーミングと非ストリーミング、ツール 呼び出し、JSONモード、マルチモーダル入力をサポートします。

フィールドタイプ必須説明
modelStringはいモデル名。
messagesMessage[]はい会話メッセージ。
streamBooleanいいえストリームモード、デフォルト false
temperatureDoubleいいえサンプリング温度。
max_tokensIntegerいいえ最大出力トークン数。
top_pDoubleいいえ核サンプリング。
presence_penaltyDoubleいいえ
frequency_penaltyDoubleいいえ
toolsTool[]いいえツール定義。
tool_choiceString|Objectいいえauto / none / required / 特定の 関数。
response_formatObjectいいえ{type, json_schema:{name,schema,strict}}; text/json_object/json_schema
parallel_tool_callsBooleanいいえ
metadataMapいいえパススルーメタデータ。

Message フィールド:

フィールドタイプ説明
roleStringsystem / user / assistant / tool.
contentString|Arrayプレーンテキストまたはマルチモーダルコンテンツブロック配列 ([{type:"text",text},{type:"image_url",image_url:{url}}])。
tool_call_idStringrole=tool の場合、tool_callsにリンクします。
tool_callsToolCall[]role=assistant がツール呼び出しを行う場合に存在します。
フィールドタイプ説明
typeString固定値 function
functionObject関数定義。
function.nameString関数名。
function.descriptionString関数の説明。
function.parametersObject入力のJSONスキーマ。
curl --request POST \
  --url https://api.basicrouter.ai/api/v1/chat/completions \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "glm-5.2",
    "messages": [{"role": "user", "content": "Describe Hangzhou in one sentence."}],
    "stream": false,
    "temperature": 0.7
  }'
{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "created": 1721380000,
  "model": "glm-5.2",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "Hangzhou is ..."},
      "finish_reason": "stop"
    }
  ],
  "usage": {"prompt_tokens": 12, "completion_tokens": 18, "total_tokens": 30}
}

レスポンスフィールド(非ストリーミング):

フィールドタイプ説明
idString補完ID。
objectString固定値 chat.completion
createdLong作成タイムスタンプ(秒)。
modelStringモデル名。
choicesChoice[]{index, message:{role, content, tool_calls?}, finish_reason}.
usageObject{prompt_tokens, completion_tokens, total_tokens}
フィールドタイプ説明
idStringツール呼び出しID。
typeString固定値 function
functionObject関数呼び出しの詳細。
function.nameString関数名。
function.argumentsObject関数の引数。

ストリーミングレスポンスの例:

data: {"object":"chat.completion.chunk","choices":[{"delta":{"role":"assistant","content":"..."}}]}

data: {"object":"chat.completion.chunk","choices":[{"delta":{"content":"..."}}]}

data: [DONE]

POST https://api.basicrouter.ai/api/v1/responses

OpenAI Responses互換エンドポイント。messages の代わりに input を、 システムメッセージの代わりに instructions を、response_format の 代わりに text ブロックを使用します。

フィールドタイプ必須説明
modelStringはいモデル名。
inputString|Arrayはいプレーン文字列(ユーザーメッセージ)またはメッセージオブジェクト配列。
instructionsStringいいえシステムプロンプト。
streamBooleanいいえデフォルト false
max_output_tokensIntegerいいえ最大出力トークン数。
temperatureDoubleいいえデフォルト 1。
top_pDoubleいいえ
toolsTool[]いいえ最上位の {type, name, description, parameters}
tool_choiceString|Objectいいえauto/none/required/{type,name}.
textObjectいいえ{format:{type, name, schema, strict}}; text/json_object/json_schema.
metadataMapいいえ
previous_response_idStringいいえマルチターン用の前回のレスポンスID。
parallel_tool_callsBooleanいいえ
curl --request POST \
  --url https://api.basicrouter.ai/api/v1/responses \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "glm-5.2",
    "input": "Describe Hangzhou in one sentence.",
    "instructions": "Be concise.",
    "stream": false
  }'
{
  "id": "resp_xxx",
  "object": "response",
  "model": "glm-5.2",
  "status": "completed",
  "created_at": 1721380000,
  "output": [
    {
      "id": "msg_xxx",
      "type": "message",
      "role": "assistant",
      "content": [{"type": "output_text", "text": "Hangzhou is ..."}],
      "status": "completed"
    }
  ],
  "usage": {"input_tokens": 12, "output_tokens": 18, "total_tokens": 30}
}

レスポンスフィールド(非ストリーミング):

フィールドタイプ説明
idStringレスポンスID。
objectString固定値 response
modelStringモデル名。
statusString例: completed
created_atLong作成タイムスタンプ(秒)。
outputArray出力項目。メッセージ項目: {id, type:"message", role, content:[{type:"output_text", text}], status}。ツール呼び出し項目: {type:"function_call", id, name, call_id, arguments, status}
usageObject{input_tokens, output_tokens, total_tokens}。Claudeモデルの場合、 input_tokens には cache_read が含まれ、 output_tokens には cache_write が含まれます。

ストリーミングはResponses APIのイベントに従います:

イベント説明
response.createdレスポンスストリームの開始。
response.output_text.deltaテキスト出力の増分更新。
response.completedレスポンスストリームの終了。

POST https://api.basicrouter.ai/api/v1/messages

Anthropic Messages互換エンドポイント。x-api-keyanthropic-version: 2023-06-01 ヘッダーを受け付けます。コンテンツブロックは textimagetool_usetool_resultthinkingredacted_thinking をサポートします。

フィールドタイプ必須JSONフィールド説明
modelStringはいmodelモデル名。
messagesMessage[]はいmessages会話メッセージ。
systemString|Arrayいいえsystemシステムプロンプト、文字列または [{type,text}]
maxTokensIntegerはいmax_tokens最大出力トークン数。
streamBooleanいいえstreamストリーミング。
temperatureDoubleいいえtemperature
topPDoubleいいえtop_p
topKIntegerいいえtop_k
toolsTool[]いいえtoolsツール定義(input_schema)。
toolChoiceObjectいいえtool_choice
metadataMapいいえmetadata
thinkingObjectいいえthinking拡張思考設定。
stopSequencesObjectいいえstop_sequences
anthropicBetaObjectいいえanthropic_betaベータ機能ヘッダー。
フィールドタイプ説明
roleStringメッセージロール、例:user / assistant。
contentString|ContentBlock[]プレーンテキストまたはコンテンツブロックの配列。
フィールドタイプ説明
typeStringtextimagetool_usetool_resultthinkingredacted_thinkingのいずれか。
textStringtypeがtextの場合に存在します。
sourceObjecttypeがimageの場合に存在します。

画像ブロックの例:

{ "type": "image", "source": { "type": "base64", "media_type": "...", "data": "..." } }
{ "type": "image", "source": { "type": "url", "url": "..." } }
フィールドタイプ説明
nameString関数名。
descriptionString関数の説明。
input_schemaObject入力のJSONスキーマ。
cache_controlObjectオプションのキャッシュ制御。
curl --request POST \
  --url https://api.basicrouter.ai/api/v1/messages \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "anthropic-version: 2023-06-01" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "claude-sonnet-4.6",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Describe Hangzhou in one sentence."}]
  }'
{
  "id": "msg_xxx",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-4.6",
  "content": [{"type": "text", "text": "Hangzhou is ..."}],
  "stop_reason": "end_turn",
  "usage": {"input_tokens": 12, "output_tokens": 18}
}

レスポンスフィールド(非ストリーミング):

フィールドタイプ説明
idStringメッセージID。
typeString固定値 message
roleString固定値 assistant
modelStringモデル名。
contentContentBlock[]レスポンスコンテンツブロック(例:{type:"text", text}{type:"tool_use", ...})。
stop_reasonString例:end_turntool_usemax_tokens
usageObject{input_tokens, output_tokens}
イベント説明
message_startメッセージストリームの開始。
content_block_start新しいコンテンツブロックの開始。
content_block_deltaコンテンツブロックの増分更新。
content_block_stopコンテンツブロックの終了。
message_deltaメッセージの増分更新。
message_stopメッセージストリームの終了。

GET https://api.basicrouter.ai/api/v1/models

オンラインの有効なすべてのAPIモデルを返します。

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/models \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"
{
  "object": "list",
  "data": [
    {
      "id": "glm-5.2",
      "object": "model",
      "display_name": "glm-5.2",
      "created": 1721380000,
      "owned_by": "Zai",
      "input_modalities": ["text", "image"],
      "output_modalities": ["text"],
      "context_length": 128000
    }
  ]
}

各モデルエントリ(data[])のフィールド:

フィールドタイプ説明
idStringモデルID。
objectString固定値 model
display_nameString表示名。
createdLong作成タイムスタンプ(秒)。
owned_byString所有者 / ベンダー。
input_modalitiesString[]例: ["text","image"]
output_modalitiesString[]例: ["text"]
context_lengthInteger最大コンテキスト長。

GET https://api.basicrouter.ai/api/v1/models/{model}

リストエントリと同じ形式の単一モデルを返します。モデルが存在しない場合はHTTP 404を返します。

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/models/gpt-5.5 \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"

成功レスポンス: /v1/models リストエントリと同じフィールドを持つ単一モデルオブジェクト。

モデルが存在しない場合、HTTP 404を返します:

{"error": {"message": "The model 'xxx' does not exist", "type": "invalid_request_error", "code": "invalid_model_error"}}

GET https://api.basicrouter.ai/api/v1/image-models

画像モデルがサポートする解像度、比率、最大数を /v1/image-generations の呼び出し前に照会します。認証は不要です。

フィールドタイプ説明
idStringモデルID。
objectString固定値 image_model
displayNameString表示名。
descriptionStringモデルの説明。
iconStringアイコンURL。
createdLong作成タイムスタンプ(秒)。
maxCountIntegerリクエストあたりの最大画像数。
fileMaxInteger最大参照画像数。
resolutionsString[]サポートされる解像度、例: ["720p","1080p"]
ratiosString[]サポートされるアスペクト比、例: ["1:1","3:2"]
curl --request GET \
  --url https://api.basicrouter.ai/api/v1/image-models \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"
{
  "object": "list",
  "data": [
    {
      "id": "gpt-image-2",
      "object": "image_model",
      "displayName": "GPT Image 1",
      "description": "...",
      "icon": "...",
      "created": 1721380000,
      "maxCount": 4,
      "fileMax": 10,
      "resolutions": ["720p", "1080p"],
      "ratios": ["1:1", "3:2"]
    }
  ]
}

GET https://api.basicrouter.ai/api/v1/video-models

動画モデルがサポートする videoType 値、長さの範囲、解像度、比率を /v1/video-generations の呼び出し前に照会します。認証は不要です。

フィールドタイプ説明
idStringモデルID。
objectString固定値 video_model
displayNameString表示名。
descriptionStringモデルの説明。
iconStringアイコンURL。
createdLong作成タイムスタンプ(秒)。
allowedVideoTypesVideoTypeOption[]サポートされる videoType リスト。
videoDurationMinIntegerクリップあたりの最小秒数。
videoDurationMaxIntegerクリップあたりの最大秒数。
videoDurationSuggestInteger[]推奨される長さのステップ、例: [5,8,10]
resolutionsString[]サポートされる解像度。
ratiosString[]サポートされるアスペクト比。
resolutionOptionsResolutionOption[]構造化された解像度+比率+サイズの組み合わせ。
fileMaxInteger最大参照アセット数。

VideoTypeOption のフィールド:

フィールドタイプ説明
codeInteger/v1/video-generations に渡す videoType 値。
nameStringローカライズされたタイプ名(テキストから動画 / 画像から動画 / ...)。
curl --request GET \
  --url https://api.basicrouter.ai/api/v1/video-models \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"
{
  "object": "list",
  "data": [
    {
      "id": "sora-2",
      "object": "video_model",
      "displayName": "Sora 2",
      "description": "...",
      "icon": "...",
      "created": 1721380000,
      "allowedVideoTypes": [
        {"code": 1, "name": "text-to-video"},
        {"code": 2, "name": "image-to-video"},
        {"code": 3, "name": "image-to-video (first/last frame)"}
      ],
      "videoDurationMin": 5,
      "videoDurationMax": 10,
      "videoDurationSuggest": [5, 8, 10],
      "resolutions": ["1080p", "720p"],
      "ratios": ["16:9", "9:16"],
      "fileMax": 5
    }
  ]
}

POST https://api.basicrouter.ai/api/v1/image-generations

非同期で画像生成タスクを送信します。taskId を即座に返します。結果は GET /v1/image-generations/{taskId} でポーリングするか、callbackUrl Webhook経由で取得します。

model、サポートされる resolution / ratio 値、 count の上限、参照画像のアップロード上限(fileMax)は、 最初に GET /v1/image-models から取得する必要があります。そのモデルの仕様で提示された値のみが受け付けられます。

フィールドタイプ必須説明
textStringはいプロンプト。
modelStringはいモデル名。
imageUrlsString[]いいえ参照画像URL(image-to-image)。
countIntegerいいえ画像数(≥0)。
resolutionStringいいえ解像度(/v1/image-modelsを参照)。
ratioStringいいえアスペクト比。
callbackUrlStringいいえタスクレベルのWebhook URL。
curl --request POST \
  --url https://api.basicrouter.ai/api/v1/image-generations \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "seedream-4.5",
    "text": "A cat drinking water by the river",
    "count": 1,
    "resolution": "2k",
    "ratio": "1:1",
    "imageUrls": []
  }'
{
  "code": 200,
  "message": "image task is commit",
  "data": {"taskId": "img_xxx"}
}

エラーレスポンス:

// Insufficient credit
{ "code": 500, "message": "Insufficient credit" }

// Model not found
{ "code": 404, "message": "Model not found: xxx" }

GET https://api.basicrouter.ai/api/v1/image-generations/{taskId}

画像生成タスクをポーリングします。statuspending / success / failed です。images は画像URLのJSON文字列化された配列です。text はモデルが添付したテキスト説明(例: Geminiマルチモーダル出力)を運びます。それ以外の場合は null です。

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/image-generations/img_xxx \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"
{
  "code": 200,
  "message": "success",
  "data": {
    "taskId": "img_xxx",
    "status": "success",
    "errorMessage": null,
    "images": "[\"https://.../1.png\"]",
    "text": null
  }
}

レスポンス data フィールド:

フィールドタイプ説明
taskIdStringタスクID。
statusStringpending / success / failed
errorMessageString失敗理由。成功時は null
imagesString画像URLのJSON文字列化された配列、例: "[\"https://.../1.png\"]"
textStringモデルが添付したテキスト説明(例: Geminiマルチモーダル出力)。それ以外の場合は null

タスクが見つかりません:

{ "code": 500, "message": "task not found" }

送信時に callbackUrl が指定された場合、サーバーは同じ data 構造で最終的な success / failed 結果をWebhook経由でプッシュします。

完全な例(送信 + ポーリング)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class ImageGenerationExample {
  private static final String BASE = "https://api.basicrouter.ai/api/v1";
  private static final String API_KEY = System.getenv("BASICROUTER_API_KEY");

  public static void main(String[] args) throws Exception {
    HttpClient http = HttpClient.newBuilder()
        .connectTimeout(Duration.ofSeconds(10)).build();

    // 1. Submit the task.
    String body = "{"
        + "\"model\":\"seedream-4.5\","
        + "\"text\":\"A cat drinking water by the river\","
        + "\"count\":1,"
        + "\"resolution\":\"2k\","
        + "\"ratio\":\"1:1\","
        + "\"imageUrls\":[]"
        + "}";
    HttpResponse<String> submit = http.send(
        HttpRequest.newBuilder(URI.create(BASE + "/image-generations"))
            .header("Authorization", "Bearer " + API_KEY)
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(body)).build(),
        HttpResponse.BodyHandlers.ofString());

    String taskId = extract(submit.body(), "taskId");
    System.out.println("taskId = " + taskId);

    // 2. Poll until terminal status.
    String status = "pending";
    while ("pending".equals(status)) {
      Thread.sleep(15_000L);
      HttpResponse<String> poll = http.send(
          HttpRequest.newBuilder(URI.create(BASE + "/image-generations/" + taskId))
              .header("Authorization", "Bearer " + API_KEY).GET().build(),
          HttpResponse.BodyHandlers.ofString());
      status = extract(poll.body(), "status");
      System.out.println("status = " + status);
    }

    if (!"success".equals(status)) {
      throw new RuntimeException("image generation failed: " + status);
    }
    // images is a JSON-stringified array of URLs.
    String images = extract(pollResult(http, taskId), "images");
    System.out.println("images = " + images);
  }

  // Minimal JSON field extractor — use Jackson/Gson in production.
  private static String extract(String json, String field) {
    int i = json.indexOf("\"" + field + "\":");
    if (i < 0) return null;
    i += field.length() + 3;
    if (json.charAt(i) == '\"') {
      int end = json.indexOf('\"', i + 1);
      return json.substring(i + 1, end);
    }
    int end = i;
    while (end < json.length() && "0123456789.".indexOf(json.charAt(end)) >= 0) end++;
    return json.substring(i, end);
  }

  private static String pollResult(HttpClient http, String taskId) throws Exception {
    return http.send(HttpRequest.newBuilder(URI.create(BASE + "/image-generations/" + taskId))
        .header("Authorization", "Bearer " + API_KEY).GET().build(),
        HttpResponse.BodyHandlers.ofString()).body();
  }
}
import os
import time
import requests

BASE = "https://api.basicrouter.ai/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['BASICROUTER_API_KEY']}"}

# 1. Submit the task.
resp = requests.post(
    f"{BASE}/image-generations",
    headers={**HEADERS, "Content-Type": "application/json"},
    json={
        "model": "seedream-4.5",
        "text": "A cat drinking water by the river",
        "count": 1,
        "resolution": "2k",
        "ratio": "1:1",
        "imageUrls": [],
    },
)
resp.raise_for_status()
task_id = resp.json()["data"]["taskId"]
print(f"taskId = {task_id}")

# 2. Poll until terminal status.
while True:
    time.sleep(15)
    poll = requests.get(f"{BASE}/image-generations/{task_id}", headers=HEADERS)
    poll.raise_for_status()
    data = poll.json()["data"]
    status = data["status"]
    print(f"status = {status}")
    if status != "pending":
        break

if status != "success":
    raise RuntimeError(f"image generation failed: {data.get('errorMessage')}")

# images is a JSON-stringified array of URLs.
import json
images = json.loads(data["images"])
print(f"images = {images}")

POST https://api.basicrouter.ai/api/v1/video-generations

非同期で動画生成タスクを送信します。taskId を即座に返します。結果は GET /v1/video-generations/{taskId} でポーリングするか、callbackUrl Webhook経由で取得します。

model、許可された videoType 値、長さの範囲 (videoDurationMin/Max)、サポートされる resolution / ratio、参照アセットのアップロード上限(fileMax)は、 最初に GET /v1/video-models から取得する必要があります。そのモデルの allowedVideoTypes にリストされた videoType コードのみが受け付けられます。

フィールドタイプ必須説明
textStringはいプロンプト。
modelStringはいモデル名。
videoTypeIntegerはい1 テキストから動画 / 2 画像から動画(先頭フレーム) / 3 画像から動画(先頭+末尾 フレーム) / 4 画像から動画(参照) / 5 すべて参照。
imageUrlsString[]いいえ画像アセットURL。
videoUrlsVideoUrl[]|String[]いいえ動画アセットURL。
audioUrlsString[]いいえオーディオアセットURL。
resolutionStringいいえ解像度。
ratioStringいいえアスペクト比。
durationLongいいえ秒(>0)。
callbackUrlStringいいえタスクレベルのWebhook URL。

videoType の例:

1. テキストから動画(videoType=1

テキストプロンプトのみから動画を生成します。参照アセットは不要です。

curl --request POST \
  --url https://api.basicrouter.ai/api/v1/video-generations \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "videoType": 1,
    "text": "A cat jumping on a bed",
    "resolution": "480p",
    "ratio": "16:9",
    "duration": 4,
    "model": "seedance-2.0"
  }'
2. 画像から動画 - 先頭フレーム(videoType=2

imageUrls に単一の開始フレームを指定します。モデルはそのフレームから動画を生成します。

curl --request POST \
  --url https://api.basicrouter.ai/api/v1/video-generations \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "videoType": 2,
    "text": "Happily shaking head",
    "resolution": "480p",
    "ratio": "16:9",
    "duration": 4,
    "model": "seedance-2.0",
    "imageUrls": ["https://basicrouter-flie.oss-accelerate.aliyuncs.com/test/first-frame.png"]
  }'
3. 画像から動画 - 先頭および末尾フレーム(videoType=3

imageUrls に先頭フレームと末尾フレームの両方を指定します(順序: [first, last])。モデルは2つのフレーム間の遷移動画を生成します。

curl --request POST \
  --url https://api.basicrouter.ai/api/v1/video-generations \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "videoType": 3,
    "text": "Put on the hat",
    "resolution": "480p",
    "ratio": "16:9",
    "duration": 4,
    "model": "seedance-2.0",
    "imageUrls": [
      "https://basicrouter-flie.oss-accelerate.aliyuncs.com/test/first-frame.png",
      "https://basicrouter-flie.oss-accelerate.aliyuncs.com/test/last-frame.png"
    ]
  }'
4. 画像から動画 - 参照(videoType=4

imageUrls に1つ以上の参照画像を指定します。モデルはそれらのスタイル/コンテンツを参照(強制された先頭/末尾フレームとしてではなく)として使用し、動画を生成します。

curl --request POST \
  --url https://api.basicrouter.ai/api/v1/video-generations \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "videoType": 4,
    "text": "Two cats playing together",
    "resolution": "480p",
    "ratio": "16:9",
    "duration": 4,
    "model": "kling-v3-omni-video",
    "imageUrls": [
      "https://basicrouter-flie.oss-accelerate.aliyuncs.com/test/ref-1.png",
      "https://basicrouter-flie.oss-accelerate.aliyuncs.com/test/ref-2.png"
    ]
  }'
5. すべて参照(videoType=5

画像 / 動画 / 音声の混在参照です。プロンプト内の位置でアセットを参照します: imageUrls の1番目のエントリは @图片 1videoUrls の1番目は @视频 1audioUrls の1番目は @音频 1 です。videoUrls はプレーンなURL文字列も受け付けます。

curl --request POST \
  --url https://api.basicrouter.ai/api/v1/video-generations \
  --header "Authorization: Bearer $BASICROUTER_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "videoType": 5,
    "text": "Use the first-person framing of @视频 1 and @音频 1 as background music. First-person tea ad; start frame is @图片 1 ... end frame is @图片 2.",
    "model": "seedance-2.0",
    "imageUrls": [
      "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic1.jpg",
      "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic2.jpg"
    ],
    "videoUrls": ["https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_tea_video1.mp4"],
    "audioUrls": ["https://ark-project.tos-cn-beijing.volces.com/doc_audio/r2v_tea_audio1.mp3"],
    "resolution": "1080p",
    "ratio": "16:9",
    "duration": 11
  }'

送信レスポンス(5つのタイプすべて):

{
  "code": 200,
  "message": "success",
  "data": {"taskId": "vid_xxx"}
}

GET https://api.basicrouter.ai/api/v1/video-generations/{taskId}

動画生成タスクをポーリングします。statuspending / success / failed です。videoUrl は生成された動画の URLで、lastFrameUrl は末尾フレームのURLです(画像から動画のシナリオ)。

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/video-generations/vid_xxx \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"
{
  "code": 200,
  "message": "success",
  "data": {
    "status": "success",
    "videoUrl": "https://.../out.mp4",
    "lastFrameUrl": null,
    "message": null
  }
}

レスポンス data フィールド:

フィールドタイプ説明
statusStringpending / success / failed
videoUrlString生成された動画のURL。
lastFrameUrlString末尾フレームのURL(画像から動画のシナリオ)。それ以外の場合は null
messageString失敗理由。成功時は null

送信時に callbackUrl が指定された場合、サーバーは同じ data 構造で最終結果をWebhook経由でプッシュします。

完全な例(送信 + ポーリング)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class VideoGenerationExample {
  private static final String BASE = "https://api.basicrouter.ai/api/v1";
  private static final String API_KEY = System.getenv("BASICROUTER_API_KEY");

  public static void main(String[] args) throws Exception {
    HttpClient http = HttpClient.newBuilder()
        .connectTimeout(Duration.ofSeconds(10)).build();

    // 1. Submit the task (videoType=1: text-to-video).
    String body = "{"
        + "\"videoType\":1,"
        + "\"text\":\"A cat jumping on a bed\","
        + "\"resolution\":\"480p\","
        + "\"ratio\":\"16:9\","
        + "\"duration\":4,"
        + "\"model\":\"seedance-2.0\""
        + "}";
    HttpResponse<String> submit = http.send(
        HttpRequest.newBuilder(URI.create(BASE + "/video-generations"))
            .header("Authorization", "Bearer " + API_KEY)
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(body)).build(),
        HttpResponse.BodyHandlers.ofString());

    String taskId = extract(submit.body(), "taskId");
    System.out.println("taskId = " + taskId);

    // 2. Poll until terminal status. Video tasks take longer — poll every 20s.
    String status = "pending";
    String lastBody = null;
    while ("pending".equals(status)) {
      Thread.sleep(20_000L);
      HttpResponse<String> poll = http.send(
          HttpRequest.newBuilder(URI.create(BASE + "/video-generations/" + taskId))
              .header("Authorization", "Bearer " + API_KEY).GET().build(),
          HttpResponse.BodyHandlers.ofString());
      lastBody = poll.body();
      status = extract(lastBody, "status");
      System.out.println("status = " + status);
    }

    if (!"success".equals(status)) {
      throw new RuntimeException("video generation failed: " + status);
    }
    String videoUrl = extract(lastBody, "videoUrl");
    System.out.println("videoUrl = " + videoUrl);
  }

  // Minimal JSON field extractor — use Jackson/Gson in production.
  private static String extract(String json, String field) {
    int i = json.indexOf("\"" + field + "\":");
    if (i < 0) return null;
    i += field.length() + 3;
    if (json.charAt(i) == '\"') {
      int end = json.indexOf('\"', i + 1);
      return json.substring(i + 1, end);
    }
    int end = i;
    while (end < json.length() && "0123456789.".indexOf(json.charAt(end)) >= 0) end++;
    return json.substring(i, end);
  }
}
import os
import time
import requests

BASE = "https://api.basicrouter.ai/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['BASICROUTER_API_KEY']}"}

# 1. Submit the task (videoType=1: text-to-video).
resp = requests.post(
    f"{BASE}/video-generations",
    headers={**HEADERS, "Content-Type": "application/json"},
    json={
        "videoType": 1,
        "text": "A cat jumping on a bed",
        "resolution": "480p",
        "ratio": "16:9",
        "duration": 4,
        "model": "seedance-2.0",
    },
)
resp.raise_for_status()
task_id = resp.json()["data"]["taskId"]
print(f"taskId = {task_id}")

# 2. Poll until terminal status. Video tasks take longer — poll every 20s.
while True:
    time.sleep(20)
    poll = requests.get(f"{BASE}/video-generations/{task_id}", headers=HEADERS)
    poll.raise_for_status()
    data = poll.json()["data"]
    status = data["status"]
    print(f"status = {status}")
    if status != "pending":
        break

if status != "success":
    raise RuntimeError(f"video generation failed: {data.get('message')}")

print(f"videoUrl = {data['videoUrl']}")
if data.get("lastFrameUrl"):
    print(f"lastFrameUrl = {data['lastFrameUrl']}")

GET https://api.basicrouter.ai/api/v1/billing/balance

アカウント残高を月額プラン、リソースパック、従量課金クレジットの3つのウォレットに分割して返します。

curl --request GET \
  --url https://api.basicrouter.ai/api/v1/billing/balance \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"
{
  "totalCredit": 128.50,
  "totalResourceCredit": 30.00,
  "wallets": {
    "monthlyPlan": {"id": "pkg_xxx", "credit": 50.00, "name": "Monthly plan"},
    "resourcePacks": [
      {"id": "rp_xxx", "credit": 30.00, "name": "Video resource pack"}
    ],
    "payAsYouGo": 48.50
  }
}

レスポンスフィールド:

フィールドタイプ説明
totalCreditBigDecimal合計残高。
totalResourceCreditBigDecimalリソースパック残高の合計。
wallets.monthlyPlanWalletDetail月額プラン(ない場合は null)。
wallets.resourcePacksWalletDetail[]リソースパックのリスト。
wallets.payAsYouGoBigDecimal従量課金残高。

WalletDetailVO fields::

フィールドタイプ説明
idStringウォレットID。
creditBigDecimal残高クレジット。
nameStringウォレット名。

GET https://api.basicrouter.ai/api/v1/usage

モデル呼び出しの課金詳細のページネーションリスト。価格 (priceSnapshotId) ごとにスナップショット化され、注文作成時刻の降順で並べ替えられます。通常の課金レコード (reason = model usage) のみが返されます。

クエリパラメータ:

パラメータタイプ必須デフォルト説明
pageIntegerいいえ1ページ番号(1始まり)。
sizeIntegerいいえ20ページサイズ(priceSnapshotId でページネーション)。
startTimeLocalDateTimeいいえ開始時刻。フォーマット yyyy-MM-ddTHH:mm:ss。スナップショットの orderCreatedAt でフィルタリングします。
endTimeLocalDateTimeいいえ終了時刻。フォーマット yyyy-MM-ddTHH:mm:ss
curl --request GET \
  --url "https://api.basicrouter.ai/api/v1/usage?page=1&size=20&startTime=2026-07-01T00:00:00&endTime=2026-07-31T23:59:59" \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"

レスポンスラッパー:

{
  "code": 0,
  "message": "success",
  "data": { ... }
}
フィールドタイプ説明
recordsUsageDetailVO[]現在のページのレコード。
totalLong合計件数。
currentLong現在のページ。
sizeLongページサイズ。
pagesLong総ページ数。

UsageDetailVO fields:

フィールドタイプ説明
priceSnapshotIdString価格スナップショットID。
taskIdStringタスクID。
creditBigDecimal課金額。
modelStringモデル名。
modelTypeStringtext / image / video
inputTokensLong入力トークン。image/videoの場合は null
outputTokensLong出力トークン。
totalTokensLong合計トークン。
cacheReadTokensLongキャッシュ読み取りトークン。
cacheWriteTokensLongキャッシュ書き込みトークン。
imageCountInteger画像数。画像モデルに設定されます。
imageResolutionString画像の解像度。例: 720P
imageRatioString画像のアスペクト比。例: 1:1
videoResolutionString動画の解像度。例: 1080p
videoRatioString動画のアスペクト比。例: 16:9
videoDurationSecLong動画の長さ(秒)。
orderCreatedAtLocalDateTime注文作成時刻(スナップショットの orderCreatedAt)。
creditDetailsCreditDetailItem[]このスナップショット下の注文詳細(credit_order_t から取得)。

CreditDetailItem fields:

フィールドタイプ説明
creditBigDecimalこの注文での課金額。
deductionSourceString控除元(Balance / Monthly Package / Resource Package)。
packageNameStringパッケージ名。パッケージがない場合は null

Null値の規約: 各 modelType に関連するフィールドのみが設定され、それ以外は null になります。text はトークンフィールドを設定します; imageimageCount/imageResolution/imageRatio を設定します; videovideoResolution/videoRatio/videoDurationSec を設定します。

レスポンス例:

{
  "code": 200,
  "message": "success",
  "data": {
    "records": [
      {
        "priceSnapshotId": "snap_9f3c1a2b",
        "taskId": "task_5e8a1c33",
        "credit": 0.0342,
        "model": "glm-5.2",
        "modelType": "text",
        "inputTokens": 1280,
        "outputTokens": 642,
        "totalTokens": 1922,
        "cacheReadTokens": 0,
        "cacheWriteTokens": 0,
        "imageCount": null,
        "imageResolution": null,
        "imageRatio": null,
        "videoResolution": null,
        "videoRatio": null,
        "videoDurationSec": null,
        "orderCreatedAt": "2026-07-18T14:23:11",
        "creditDetails": [
          {
            "credit": 0.0342,
            "deductionSource": "balance",
            "packageName": ""
          }
        ]
      },
      {
        "priceSnapshotId": "snap_a12f77c0",
        "taskId": "task_c71e44a2",
        "credit": 1.8000,
        "model": "seedance-2.0",
        "modelType": "video",
        "inputTokens": null,
        "outputTokens": null,
        "totalTokens": null,
        "cacheReadTokens": null,
        "cacheWriteTokens": null,
        "imageCount": null,
        "imageResolution": null,
        "imageRatio": null,
        "videoResolution": "1080p",
        "videoRatio": "16:9",
        "videoDurationSec": 8,
        "orderCreatedAt": "2026-07-17T22:41:09",
        "creditDetails": [
          {
            "credit": 1.5000,
            "deductionSource": "Monthly Package",
            "packageName": "基础月度套餐"
          },
          {
            "credit": 0.3000,
            "deductionSource": "Resource Package",
            "packageName": "byteplus视频资源包"
          }
        ]
      }
    ],
    "total": 128,
    "current": 1,
    "size": 20,
    "pages": 7
  }
}

GET https://api.basicrouter.ai/api/v1/billing/transactions

現在のユーザーの支払い済み(status=2)チャージ取引のページネーションリスト。created_at の降順で並べ替えられます。

パラメータタイプ必須デフォルト説明
pageIntegerいいえ1ページ番号。
sizeIntegerいいえ20ページサイズ。
startTimeStringいいえ開始時刻。yyyy-MM-dd HH:mm:ss。境界を含みます。
endTimeStringいいえ終了時刻。yyyy-MM-dd HH:mm:ss。境界を含みます。
curl --request GET \
  --url "https://api.basicrouter.ai/api/v1/billing/transactions?page=1&size=20&startTime=2026-07-01%2000:00:00&endTime=2026-07-31%2023:59:59" \
  --header "Authorization: Bearer $BASICROUTER_API_KEY"

レスポンスラッパー:

{
  "code": 0,
  "message": "success",
  "data": { ... }
}
フィールドタイプ説明
recordsTransactionVO[]現在のページの取引。
totalLong合計件数。
currentLong現在のページ。
sizeLongページサイズ。
pagesLong総ページ数。

TransactionVO fields:

フィールドタイプ説明
orderNoString注文番号。
thirdPartyOrderNoStringThird-party order number.
amountBigDecimal注文金額。
actualAmountBigDecimal実際の支払い額。
discountBigDecimal割引額。
paymentMethodString支払い方法(wechat / alipay / ustd / stripe / wallyt 等)。

TransactionVO fields:

フィールドタイプ説明
serviceFeeAmountBigDecimalサービス手数料。
paymentChannelString決済プラットフォーム。
sourceString注文元(recharge / package_purchase 等)。
packageNameStringパッケージ名(パッケージ購入時に設定。通常のチャージの場合は null)。
createdAtLocalDateTime作成日時。
{
  "code": 200,
  "message": "success",
  "data": {
    "records": [
      {
        "orderNo": "R20260718abc123",
        "thirdPartyOrderNo": "wx_pay_xxx",
        "amount": 50.00,
        "actualAmount": 48.50,
        "discount": 1.50,
        "paymentMethod": "wechat",
        "serviceFeeAmount": 0.00,
        "paymentChannel": "wechat",
        "source": "recharge",
        "packageName": null,
        "createdAt": "2026-07-18T14:23:11"
      }
    ],
    "total": 28,
    "current": 1,
    "size": 20,
    "pages": 2
  }
}

運用

エラー

BasicRouterは安定したエラーコードを返すため、アプリケーションはリトライ、フォールバック、課金の問題、デバッグを一貫して処理できます。

プロバイダ互換エンドポイントは、可能な限り元のAPIファミリーのエラー構造を維持しようとします。BasicRouterネイティブエンドポイントはBasicRouterエラーオブジェクトを使用します。

HTTPステータスとエラーコードのマッピング

HTTPステータスエラータイプコード例リトライ
400invalid_request_errorinvalid_request, unsupported_parameter, invalid_messages, invalid_image_urlいいえ
401authentication_errormissing_api_key, invalid_api_keyいいえ
402billing_errorinsufficient_credits, payment_required, quota_exceededいいえ
403permission_errormodel_access_denied, endpoint_access_denied, key_scope_deniedいいえ
404not_found_errormodel_not_found, response_not_found, task_not_foundいいえ
408timeout_errorgateway_timeout, provider_timeoutはい
409conflict_erroridempotency_conflict, task_already_cancelled条件次第
422validation_errorschema_validation_failed, unsupported_modalityいいえ
429rate_limit_erroraccount_rpm_exceeded, account_tpm_exceeded, provider_rate_limitedはい
500internal_errorinternal_errorはい
502provider_errorprovider_bad_gateway, provider_invalid_responseはい
503service_unavailablemodel_unavailable, provider_unavailable, insufficient_capacityはい
504timeout_errorprovider_timeout, gateway_timeoutはい

一般的なエラーコード

> > >
コード意味推奨される対処
missing_api_keyAPIキーが提供されていません。Authorization ヘッダーを追加してください。
invalid_api_keyAPIキーが無効または失効しています。APIキーを作成またはローテーションしてください。
model_not_foundモデルIDが存在しないか、アカウントで有効化されていません。モデルページを確認するか、GET /v1/models を呼び出してください。
model_access_deniedAPIキーまたはアカウントがモデルにアクセスできません。モデルを有効化するか、管理者に連絡してください。
unsupported_parameterリクエストに選択したエンドポイントまたはモデルでサポートされていないパラメータが含まれています。パラメータを削除するか、互換性のあるモデルを選択してください。
unsupported_modality選択したモデルは入力または出力のモダリティをサポートしていません。モダリティをサポートするモデルを選択してください。
account_rpm_exceededアカウントの1分あたりのリクエスト制限を超過しました。バックオフでリトライするか、制限の引き上げをリクエストしてください。
account_tpm_exceededアカウントの1分あたりのトークン制限を超過しました。バックオフでリトライし、トークンを削減するか、制限の引き上げをリクエストしてください。
provider_rate_limitedアップストリームプロバイダがリクエストをレート制限しました。リトライするか、フォールバックを有効化してください。
insufficient_creditsアカウントのクレジットが不足しています。ウォレットにチャージし、パックを購入するか、プランをアップグレードしてください。
provider_timeoutアップストリームプロバイダが時間内に応答しませんでした。リトライするか、フォールバックを有効化してください。
model_unavailableモデルが一時的に利用できません。リトライするか、ルーティングエイリアスを使用してください。
content_policy_errorリクエストまたは出力が安全ポリシーによってブロックされました。入力を変更するか、適切なワークフローを選択してください。
モデルタイプ

claude-fable-5

AWS · Anthropic · 1M 上下文

Image 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入10 积分
输出50 积分
缓存读取1 积分
缓存写入12.50 积分

claude-opus-4.6

AWS · Anthropic · 1M 上下文

Image 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入5 积分
输出25 积分
缓存读取0.50 积分
缓存写入10 积分

claude-opus-4.7

AWS · Anthropic · 1M 上下文

Image 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入5 积分
输出25 积分
缓存读取0.50 积分
缓存写入10 积分

claude-opus-4.8

AWS · Anthropic · 1M 上下文

Image 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入5 积分
输出25 积分
缓存读取0.50 积分
缓存写入10 积分

claude-opus-5

AWS · Anthropic · 1M 上下文

Text 输入Image 输入Openai chatOpenai responsesAnthropic
可用
输入5 积分
输出25 积分
缓存读取0.50 积分
缓存写入10 积分

claude-sonnet-4.6

AWS · Anthropic · 1M 上下文

Image 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入3 积分
输出15 积分
缓存读取0.30 积分
缓存写入6 积分

claude-sonnet-5

AWS · Anthropic · 1M 上下文

Image 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入2 积分
输出10 积分
缓存读取0.20 积分
缓存写入4 积分

deepseek-v3.2

TencentCloud · Alibaba Cloud · Deepseek · 128K 上下文

Openai chatOpenai responsesAnthropic
可用
输入0.57 积分
输出1.71 积分
缓存读取0.11 积分
缓存写入0.11 积分

deepseek-v4-flash

TencentCloud · Deepseek · 1M 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.14 积分
输出0.28 积分
缓存读取0.03 积分
缓存写入0.03 积分

deepseek-v4-pro

TencentCloud · Deepseek · 1M 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入1.74 积分
输出3.48 积分
缓存读取0.14 积分
缓存写入0.14 积分

dola-seed-2-0-mini

BytePlus · Bytedance · 262K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responses
可用
输入0.20 积分
输出0.80 积分
缓存读取0.04 积分
缓存写入0.01 积分

dola-seed-2-0-mini-white

BytePlus · Bytedance · 262K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responses
可用
输入0.20 积分
输出0.80 积分
缓存读取0.04 积分
缓存写入0.01 积分

dola-seed-2-1-turbo

BytePlus · Bytedance · 262K 上下文

Image 输入Text 输入Video 输入Openai chatOpenai responses
可用
输入0.50 积分
输出2.50 积分
缓存读取0.10 积分
缓存写入0.01 积分

dola-seed-2.0-code

BytePlus · Bytedance · 262K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responses
可用
输入0.50 积分
输出3 积分
缓存读取0.10 积分
缓存写入0.01 积分

dola-seed-2.0-lite

BytePlus · Bytedance · 262K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responses
可用
输入0.50 积分
输出4 积分
缓存读取0.10 积分
缓存写入0.01 积分

dola-seed-2.0-pro

BytePlus · Bytedance · 262K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responses
可用
输入1 积分
输出6 积分
缓存读取0.20 积分
缓存写入0.01 积分

doubao-seed3d-1.0

即将推出

gemini-3-flash-preview

Google · Gemini · 1.0M 上下文

Image 输入Video 输入Text 输入Openai chat
可用
输入0.50 积分
输出3 积分
缓存读取0.05 积分
缓存写入0.05 积分

gemini-3.1-pro-preview

Google · Gemini · 1.0M 上下文

Image 输入Text 输入Video 输入Openai chat
可用
输入4 积分
输出18 积分
缓存读取0.40 积分
缓存写入0.40 积分

gemini-omni-flash-preview

Google · Gemini

文生视频按秒
即将推出
单价 / 秒0.10 积分 / 秒

glm-5

TencentCloud · Zai · 200K 上下文

Openai chatAnthropic
可用
输入1 积分
输出3.20 积分
缓存读取0.20 积分
缓存写入0.20 积分

glm-5-turbo

TencentCloud · Zai · 200K 上下文

Text 输入Openai chatAnthropic
可用
输入1.20 积分
输出4 积分
缓存读取0.24 积分
缓存写入0.24 积分

glm-5.1

TencentCloud · Zai · 200K 上下文

Text 输入Openai chatAnthropic
可用
输入1.40 积分
输出4.40 积分
缓存读取0.26 积分
缓存写入0.26 积分

glm-5.2

TencentCloud · Zai · 1M 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入1.40 积分
输出4.40 积分
缓存读取0.26 积分
缓存写入0.26 积分

glm-5v-turbo

TencentCloud · Zai · 200K 上下文

Image 输入Openai chatAnthropic
可用
输入1.20 积分
输出4 积分
缓存读取0.24 积分
缓存写入0.24 积分

gpt-5-nano

MicrosoftAzure · Openai · 400K 上下文

Image 输入Text 输入Openai chatOpenai responses
可用
输入0.05 积分
输出0.40 积分
缓存读取- 积分
缓存写入- 积分

gpt-5.4

MicrosoftAzure · Openai · 1.1M 上下文

Image 输入Text 输入Openai chatOpenai responses
可用
输入5 积分
输出22.50 积分
缓存读取0.50 积分
缓存写入0.50 积分

gpt-5.5

MicrosoftAzure · Openai · 1.1M 上下文

Image 输入Text 输入Openai chatOpenai responses
可用
输入5 积分
输出30 积分
缓存读取0.50 积分
缓存写入0.50 积分

gpt-5.6-luna

MicrosoftAzure · Openai · 1.1M 上下文

Text 输入Image 输入Openai chatOpenai responses
可用
输入2 积分
输出9 积分
缓存读取0.20 积分
缓存写入2.50 积分

gpt-5.6-sol

MicrosoftAzure · Openai · 1.1M 上下文

Text 输入Image 输入Openai chatOpenai responses
可用
输入10 积分
输出45 积分
缓存读取1 积分
缓存写入12.50 积分

gpt-5.6-terra

MicrosoftAzure · Openai · 1.1M 上下文

Text 输入Image 输入Openai chatOpenai responses
可用
输入5 积分
输出22.50 积分
缓存读取0.50 积分
缓存写入6.25 积分

gpt-image-2

MicrosoftAzure · Openai

图像生成1K/2K/4K按张
可用
单价 / 张0.41 积分

HappyHorse-1.0-i2v

Alibaba Cloud · HappyHorse

文生视频按秒
可用
单价 / 秒0.14 积分 / 秒

HappyHorse-1.0-i2v-white

Alibaba Cloud · HappyHorse

文生视频按秒
可用
单价 / 秒0.14 积分 / 秒

HappyHorse-1.0-r2v

Alibaba Cloud · HappyHorse

文生视频按秒
可用
单价 / 秒0.14 积分 / 秒

HappyHorse-1.0-r2v-white

Alibaba Cloud · HappyHorse

文生视频按秒
可用
单价 / 秒0.14 积分 / 秒

HappyHorse-1.0-t2v

Alibaba Cloud · HappyHorse

文生视频按秒
可用
单价 / 秒0.24 积分 / 秒

HappyHorse-1.0-t2v-white

Alibaba Cloud · HappyHorse

文生视频按秒
可用
单价 / 秒0.14 积分 / 秒

imagen 4 fast

Google · Gemini

图像生成2K按张
可用
单价 / 张0.02 积分

imagen 4 standard

Google · Gemini

图像生成2K按张
可用
单价 / 张0.04 积分

imagen 4 ultra

Google · Gemini

图像生成2K按张
可用
单价 / 张0.06 积分

kimi-k2.5

TencentCloud · Moonshot AI · 256K 上下文

Image 输入Video 输入Openai chatAnthropic
可用
输入0.60 积分
输出3 积分
缓存读取0.10 积分
缓存写入0.10 积分

kimi-k2.6

TencentCloud · Moonshot AI · 256K 上下文

Image 输入Text 输入Openai chatAnthropic
可用
输入0.86 积分
输出3.57 积分
缓存读取0.14 积分
缓存写入0.14 积分

kimi-k2.7-code

TencentCloud · Moonshot AI · 256K 上下文

Image 输入Video 输入Openai chatAnthropic
可用
输入0.95 积分
输出4 积分
缓存读取0.19 积分
缓存写入0.19 积分

kimi-k2.7-code-highspeed

TencentCloud · Moonshot AI · 256K 上下文

Image 输入Video 输入Openai chatOpenai responsesAnthropic
可用
输入1.90 积分
输出8 积分
缓存读取0.38 积分
缓存写入0.38 积分

kimi-k3

TencentCloud · Moonshot AI · 1M 上下文

Image 输入Text 输入Video 输入Openai chatOpenai responsesAnthropic
可用
输入3 积分
输出15 积分
缓存读取0.30 积分
缓存写入0.30 积分

kling-image-o1

Kling · Kling

图像生成2K/3K按张
可用
单价 / 张0.03 积分

kling-v3-omni-image

Kling · Kling

图像生成1K/2K/4K按张
可用
单价 / 张0.03 积分

kling-v3-omni-video

Kling · Kling

文生视频按秒
可用
单价 / 秒0.13 积分 / 秒

minimax-m2.5

TencentCloud · MiniMax · 200K 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.30 积分
输出1.20 积分
缓存读取0.03 积分
缓存写入0.03 积分

minimax-m2.7

TencentCloud · MiniMax · 200K 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.30 积分
输出1.20 积分
缓存读取0.06 积分
缓存写入0.06 积分

minimax-m3

TencentCloud · MiniMax · 1M 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.60 积分
输出2.40 积分
缓存读取0.12 积分
缓存写入0.12 积分

nano banana 2

Google · Gemini

图像生成1K/2K/4K按张
可用
单价 / 张0.07 积分

nano banana pro

Google · Gemini

图像生成1K/2K按张
可用
单价 / 张0.14 积分

qwen-image-2.0-pro

Alibaba Cloud · Qwen

图像生成2K按张
可用
单价 / 张0.07 积分

qwen-image-2.0-s-white

Alibaba Cloud · Qwen

图像生成2K按张
可用
单价 / 张0.07 积分

qwen-image-3.0-pro

Alibaba Cloud · Qwen

图像生成1K/2K按张
即将推出
单价 / 张0.07 积分

qwen-image-max

Alibaba Cloud · Qwen

图像生成2K按张
可用
单价 / 张0.07 积分

qwen-image-max-white

Alibaba Cloud · Qwen

图像生成2K按张
可用
单价 / 张0.07 积分

qwen-image-plus

Alibaba Cloud · Qwen

图像生成2K按张
可用
单价 / 张0.03 积分

qwen3-max

Alibaba Cloud · Qwen · 256K 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入1.20 积分
输出6 积分
缓存读取- 积分
缓存写入- 积分

qwen3-max-white

Alibaba Cloud · Qwen · 256K 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入2.40 积分
输出12 积分
缓存读取- 积分
缓存写入- 积分

qwen3-vl-flash

Alibaba Cloud · Qwen · 256K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.07 积分
输出0.60 积分
缓存读取0.01 积分
缓存写入0.10 积分

qwen3-vl-plus

Alibaba Cloud · Qwen · 256K 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.60 积分
输出4.80 积分
缓存读取- 积分
缓存写入- 积分

qwen3.5-plus

Alibaba Cloud · Qwen · 1M 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.50 积分
输出3 积分
缓存读取0.05 积分
缓存写入0.63 积分

qwen3.5-plus-white

Alibaba Cloud · Qwen · 1M 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.40 积分
输出0.24 积分
缓存读取0.04 积分
缓存写入0.50 积分

qwen3.6-plus

Alibaba Cloud · Qwen · 1M 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.50 积分
输出3 积分
缓存读取0.05 积分
缓存写入0.63 积分

qwen3.7-max

Alibaba Cloud · Qwen · 1M 上下文

Text 输入Openai chatOpenai responsesAnthropic
可用
输入2.50 积分
输出7.50 积分
缓存读取0.50 积分
缓存写入0.50 积分

qwen3.7-plus

Alibaba Cloud · Qwen · 1M 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responsesAnthropic
可用
输入0.40 积分
输出1.60 积分
缓存读取0.08 积分
缓存写入0.50 积分

qwen3.8-max

Alibaba Cloud · Qwen · 1M 上下文

Image 输入Video 输入Text 输入Openai chatOpenai responses
可用
输入2 积分
输出6 积分
缓存读取0.25 积分
缓存写入0.25 积分

seedance-1-5-pro

BytePlus · Bytedance

文生视频按秒
可用
单价 / 秒0.05 积分 / 秒

seedance-1-5-pro-white

BytePlus · Bytedance

文生视频按秒
可用
单价 / 秒0.05 积分 / 秒

seedance-2.0

BytePlus · Bytedance

文生视频按秒
可用
单价 / 秒0.15 积分 / 秒

seedance-2.0-fast

BytePlus · Bytedance

文生视频按秒
可用
单价 / 秒0.06 积分 / 秒

seedance-2.0-fast-white

BytePlus · Bytedance

文生视频按秒
可用
单价 / 秒0.06 积分 / 秒

seedance-2.0-white

BytePlus · Bytedance

文生视频按秒
可用
单价 / 秒0.07 积分 / 秒

seedance-2.5

BytePlus · Bytedance

文生视频按秒
即将推出
单价 / 秒0.11 积分 / 秒

seedream-4.5

BytePlus · Bytedance

图像生成2K/4K按张
可用
单价 / 张0.04 积分

seedream-4.5-white

BytePlus · Bytedance

图像生成2K/4K按张
可用
单价 / 张0.04 积分

seedream-5.0

BytePlus · Bytedance

图像生成2K/3K按张
可用
单价 / 张0.04 积分

seedream-5.0-white

BytePlus · Bytedance

图像生成2K/3K按张
可用
单价 / 张0.04 积分

veo 3.1

Google · Gemini

文生视频按秒
可用
单价 / 秒0.40 积分 / 秒

veo 3.1 lite

Google · Gemini

文生视频按秒
可用
单价 / 秒0.05 积分 / 秒

wan2.5-i2v-preview

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.10 积分 / 秒

wan2.6-i2v-flash

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.05 积分 / 秒

wan2.6-r2v-flash

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.05 积分 / 秒

wan2.6-t2v

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.10 积分 / 秒

wan2.6-t2v-white

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.10 积分 / 秒

wan2.7-i2v

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.10 积分 / 秒

wan2.7-i2v-s-white

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.26 积分 / 秒

wan2.7-i2v-white

Alibaba Cloud · Wan

文生视频按秒
可用
单价 / 秒0.10 积分 / 秒

wan2.7-image

Alibaba Cloud · Wan

图像生成2K按张
可用
单价 / 张0.03 积分

wan2.7-image-pro

Alibaba Cloud · Wan

图像生成2K按张
可用
单价 / 张0.07 积分