diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7fb53c9ab..8d51299bd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -198,35 +198,6 @@ jobs: bun install bun run format - - name: Update seed price table - if: steps.check.outputs.needs_bump == 'true' || github.event_name == 'workflow_dispatch' - continue-on-error: true - run: | - echo "📦 正在下载最新的 LiteLLM 价格表..." - - # 确保目录存在 - mkdir -p public/seed - - # 下载最新价格表 - if curl -sSL -f "https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json" -o public/seed/litellm-prices.json; then - echo "价格表下载成功" - - # 验证 JSON 格式 - if node -e "JSON.parse(require('fs').readFileSync('public/seed/litellm-prices.json', 'utf-8'))"; then - echo "JSON 格式验证通过" - - # 显示统计信息 - TOTAL_MODELS=$(node -e "console.log(Object.keys(JSON.parse(require('fs').readFileSync('public/seed/litellm-prices.json', 'utf-8'))).length)") - CLAUDE_MODELS=$(node -e "console.log(Object.keys(JSON.parse(require('fs').readFileSync('public/seed/litellm-prices.json', 'utf-8'))).filter(m => m.toLowerCase().startsWith('claude-')).length)") - echo "📊 价格表统计: 总模型数 $TOTAL_MODELS, Claude 模型 $CLAUDE_MODELS" - else - echo "❌ JSON 格式验证失败,保留旧文件" - git checkout public/seed/litellm-prices.json - fi - else - echo "⚠️ 价格表下载失败,保留现有文件" - fi - - name: Commit VERSION and formatted code if: steps.check.outputs.needs_bump == 'true' || github.event_name == 'workflow_dispatch' run: | @@ -234,7 +205,7 @@ jobs: git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - # 添加所有更改(VERSION文件 + 格式化后的代码 + 价格表) + # 添加所有更改(VERSION文件 + 格式化后的代码) git add -A # 排除 .github/ 目录的更改(workflow 文件不需要自动提交,且需要特殊权限) diff --git a/.gitignore b/.gitignore index 0ad9d53f5..eb4139039 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ /coverage-quota /coverage-my-usage /coverage-proxy-guard-pipeline +/coverage-thinking-signature-rectifier # next.js /.next/ @@ -54,6 +55,7 @@ next-env.d.ts # tooling & logs .cursor/ .claude/ +.codex/ .serena/ !src/app/dashboard/logs/ !src/app/settings/logs/ diff --git a/CLAUDE.md b/CLAUDE.md index 8b449668c..cf1b28607 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -126,7 +126,7 @@ Key components: - **Path alias**: `@/` maps to `./src/` - **Formatting**: Biome (double quotes, trailing commas, 2-space indent, 100 char width) - **Exports**: Prefer named exports over default exports -- **i18n**: Use `next-intl` for internationalization (5 languages: zh-CN, en, ja, ko, de) +- **i18n**: Use `next-intl` for internationalization (5 languages: zh-CN, zh-TW, en, ja, ru) - **Testing**: Unit tests in `tests/unit/`, integration in `tests/integration/`, source-adjacent tests in `src/**/*.test.ts` ## Environment Variables diff --git a/VERSION b/VERSION index 0bdfd66f8..1d0ba9ea1 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.3.42 +0.4.0 diff --git a/drizzle/0049_shocking_ultimatum.sql b/drizzle/0049_shocking_ultimatum.sql index 6a37f923f..42c58a963 100644 --- a/drizzle/0049_shocking_ultimatum.sql +++ b/drizzle/0049_shocking_ultimatum.sql @@ -1 +1 @@ -ALTER TABLE "message_request" ADD COLUMN "special_settings" jsonb; \ No newline at end of file +ALTER TABLE "message_request" ADD COLUMN IF NOT EXISTS "special_settings" jsonb; diff --git a/drizzle/0050_flippant_jack_flag.sql b/drizzle/0050_flippant_jack_flag.sql new file mode 100644 index 000000000..027b9c3f5 --- /dev/null +++ b/drizzle/0050_flippant_jack_flag.sql @@ -0,0 +1,2 @@ +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "enable_response_fixer" boolean DEFAULT true NOT NULL;--> statement-breakpoint +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "response_fixer_config" jsonb DEFAULT '{"fixTruncatedJson":true,"fixSseFormat":true,"fixEncoding":true,"maxJsonDepth":200,"maxFixSize":1048576}'::jsonb; diff --git a/drizzle/0051_silent_maelstrom.sql b/drizzle/0051_silent_maelstrom.sql new file mode 100644 index 000000000..cbcda452a --- /dev/null +++ b/drizzle/0051_silent_maelstrom.sql @@ -0,0 +1 @@ +ALTER TABLE "system_settings" ADD COLUMN IF NOT EXISTS "enable_thinking_signature_rectifier" boolean DEFAULT true NOT NULL; diff --git a/drizzle/0052_model_price_source.sql b/drizzle/0052_model_price_source.sql new file mode 100644 index 000000000..21b44c2f9 --- /dev/null +++ b/drizzle/0052_model_price_source.sql @@ -0,0 +1,2 @@ +ALTER TABLE "model_prices" ADD COLUMN IF NOT EXISTS "source" varchar(20) DEFAULT 'litellm' NOT NULL;--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "idx_model_prices_source" ON "model_prices" USING btree ("source"); diff --git a/drizzle/meta/0050_snapshot.json b/drizzle/meta/0050_snapshot.json new file mode 100644 index 000000000..cd675aa78 --- /dev/null +++ b/drizzle/meta/0050_snapshot.json @@ -0,0 +1,2352 @@ +{ + "id": "708bddf0-5d35-4367-ab3f-a50a84d57c5d", + "prevId": "9805fe46-f6bb-4a4e-8948-7f0785cdc3b4", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.error_rules": { + "name": "error_rules", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "pattern": { + "name": "pattern", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "match_type": { + "name": "match_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'regex'" + }, + "category": { + "name": "category", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "override_response": { + "name": "override_response", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "override_status_code": { + "name": "override_status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "is_default": { + "name": "is_default", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "priority": { + "name": "priority", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "idx_error_rules_enabled": { + "name": "idx_error_rules_enabled", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "priority", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_pattern": { + "name": "unique_pattern", + "columns": [ + { + "expression": "pattern", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_category": { + "name": "idx_category", + "columns": [ + { + "expression": "category", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_match_type": { + "name": "idx_match_type", + "columns": [ + { + "expression": "match_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.keys": { + "name": "keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "can_login_web_ui": { + "name": "can_login_web_ui", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "limit_5h_usd": { + "name": "limit_5h_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_daily_usd": { + "name": "limit_daily_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "daily_reset_mode": { + "name": "daily_reset_mode", + "type": "daily_reset_mode", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'fixed'" + }, + "daily_reset_time": { + "name": "daily_reset_time", + "type": "varchar(5)", + "primaryKey": false, + "notNull": true, + "default": "'00:00'" + }, + "limit_weekly_usd": { + "name": "limit_weekly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_monthly_usd": { + "name": "limit_monthly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_total_usd": { + "name": "limit_total_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_concurrent_sessions": { + "name": "limit_concurrent_sessions", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "provider_group": { + "name": "provider_group", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'default'" + }, + "cache_ttl_preference": { + "name": "cache_ttl_preference", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_keys_user_id": { + "name": "idx_keys_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_keys_created_at": { + "name": "idx_keys_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_keys_deleted_at": { + "name": "idx_keys_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.message_request": { + "name": "message_request", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "provider_id": { + "name": "provider_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "model": { + "name": "model", + "type": "varchar(128)", + "primaryKey": false, + "notNull": false + }, + "duration_ms": { + "name": "duration_ms", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cost_usd": { + "name": "cost_usd", + "type": "numeric(21, 15)", + "primaryKey": false, + "notNull": false, + "default": "'0'" + }, + "cost_multiplier": { + "name": "cost_multiplier", + "type": "numeric(10, 4)", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false + }, + "request_sequence": { + "name": "request_sequence", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "provider_chain": { + "name": "provider_chain", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "status_code": { + "name": "status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "api_type": { + "name": "api_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "endpoint": { + "name": "endpoint", + "type": "varchar(256)", + "primaryKey": false, + "notNull": false + }, + "original_model": { + "name": "original_model", + "type": "varchar(128)", + "primaryKey": false, + "notNull": false + }, + "input_tokens": { + "name": "input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "output_tokens": { + "name": "output_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "ttfb_ms": { + "name": "ttfb_ms", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_creation_input_tokens": { + "name": "cache_creation_input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_read_input_tokens": { + "name": "cache_read_input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_creation_5m_input_tokens": { + "name": "cache_creation_5m_input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_creation_1h_input_tokens": { + "name": "cache_creation_1h_input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_ttl_applied": { + "name": "cache_ttl_applied", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "context_1m_applied": { + "name": "context_1m_applied", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "special_settings": { + "name": "special_settings", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_stack": { + "name": "error_stack", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_cause": { + "name": "error_cause", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "blocked_by": { + "name": "blocked_by", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "blocked_reason": { + "name": "blocked_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_agent": { + "name": "user_agent", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "messages_count": { + "name": "messages_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_message_request_user_date_cost": { + "name": "idx_message_request_user_date_cost", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "cost_usd", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_user_query": { + "name": "idx_message_request_user_query", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_session_id": { + "name": "idx_message_request_session_id", + "columns": [ + { + "expression": "session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_session_seq": { + "name": "idx_message_request_session_seq", + "columns": [ + { + "expression": "session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "request_sequence", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_endpoint": { + "name": "idx_message_request_endpoint", + "columns": [ + { + "expression": "endpoint", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_blocked_by": { + "name": "idx_message_request_blocked_by", + "columns": [ + { + "expression": "blocked_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_provider_id": { + "name": "idx_message_request_provider_id", + "columns": [ + { + "expression": "provider_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_user_id": { + "name": "idx_message_request_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_key": { + "name": "idx_message_request_key", + "columns": [ + { + "expression": "key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_created_at": { + "name": "idx_message_request_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_deleted_at": { + "name": "idx_message_request_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.model_prices": { + "name": "model_prices", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "model_name": { + "name": "model_name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "price_data": { + "name": "price_data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "idx_model_prices_latest": { + "name": "idx_model_prices_latest", + "columns": [ + { + "expression": "model_name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": false, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_model_prices_model_name": { + "name": "idx_model_prices_model_name", + "columns": [ + { + "expression": "model_name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_model_prices_created_at": { + "name": "idx_model_prices_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": false, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.notification_settings": { + "name": "notification_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "use_legacy_mode": { + "name": "use_legacy_mode", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "circuit_breaker_enabled": { + "name": "circuit_breaker_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "circuit_breaker_webhook": { + "name": "circuit_breaker_webhook", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "daily_leaderboard_enabled": { + "name": "daily_leaderboard_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "daily_leaderboard_webhook": { + "name": "daily_leaderboard_webhook", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "daily_leaderboard_time": { + "name": "daily_leaderboard_time", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'09:00'" + }, + "daily_leaderboard_top_n": { + "name": "daily_leaderboard_top_n", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 5 + }, + "cost_alert_enabled": { + "name": "cost_alert_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "cost_alert_webhook": { + "name": "cost_alert_webhook", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "cost_alert_threshold": { + "name": "cost_alert_threshold", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false, + "default": "'0.80'" + }, + "cost_alert_check_interval": { + "name": "cost_alert_check_interval", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 60 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.notification_target_bindings": { + "name": "notification_target_bindings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "notification_type": { + "name": "notification_type", + "type": "notification_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "schedule_cron": { + "name": "schedule_cron", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "schedule_timezone": { + "name": "schedule_timezone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'Asia/Shanghai'" + }, + "template_override": { + "name": "template_override", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "unique_notification_target_binding": { + "name": "unique_notification_target_binding", + "columns": [ + { + "expression": "notification_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_notification_bindings_type": { + "name": "idx_notification_bindings_type", + "columns": [ + { + "expression": "notification_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_notification_bindings_target": { + "name": "idx_notification_bindings_target", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "notification_target_bindings_target_id_webhook_targets_id_fk": { + "name": "notification_target_bindings_target_id_webhook_targets_id_fk", + "tableFrom": "notification_target_bindings", + "tableTo": "webhook_targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.providers": { + "name": "providers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "weight": { + "name": "weight", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "priority": { + "name": "priority", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "cost_multiplier": { + "name": "cost_multiplier", + "type": "numeric(10, 4)", + "primaryKey": false, + "notNull": false, + "default": "'1.0'" + }, + "group_tag": { + "name": "group_tag", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "provider_type": { + "name": "provider_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'claude'" + }, + "preserve_client_ip": { + "name": "preserve_client_ip", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "model_redirects": { + "name": "model_redirects", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "allowed_models": { + "name": "allowed_models", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'null'::jsonb" + }, + "join_claude_pool": { + "name": "join_claude_pool", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "codex_instructions_strategy": { + "name": "codex_instructions_strategy", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false, + "default": "'auto'" + }, + "mcp_passthrough_type": { + "name": "mcp_passthrough_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'none'" + }, + "mcp_passthrough_url": { + "name": "mcp_passthrough_url", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "limit_5h_usd": { + "name": "limit_5h_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_daily_usd": { + "name": "limit_daily_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "daily_reset_mode": { + "name": "daily_reset_mode", + "type": "daily_reset_mode", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'fixed'" + }, + "daily_reset_time": { + "name": "daily_reset_time", + "type": "varchar(5)", + "primaryKey": false, + "notNull": true, + "default": "'00:00'" + }, + "limit_weekly_usd": { + "name": "limit_weekly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_monthly_usd": { + "name": "limit_monthly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_total_usd": { + "name": "limit_total_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "total_cost_reset_at": { + "name": "total_cost_reset_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "limit_concurrent_sessions": { + "name": "limit_concurrent_sessions", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "max_retry_attempts": { + "name": "max_retry_attempts", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "circuit_breaker_failure_threshold": { + "name": "circuit_breaker_failure_threshold", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 5 + }, + "circuit_breaker_open_duration": { + "name": "circuit_breaker_open_duration", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 1800000 + }, + "circuit_breaker_half_open_success_threshold": { + "name": "circuit_breaker_half_open_success_threshold", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 2 + }, + "proxy_url": { + "name": "proxy_url", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "proxy_fallback_to_direct": { + "name": "proxy_fallback_to_direct", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "first_byte_timeout_streaming_ms": { + "name": "first_byte_timeout_streaming_ms", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "streaming_idle_timeout_ms": { + "name": "streaming_idle_timeout_ms", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "request_timeout_non_streaming_ms": { + "name": "request_timeout_non_streaming_ms", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "website_url": { + "name": "website_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "favicon_url": { + "name": "favicon_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cache_ttl_preference": { + "name": "cache_ttl_preference", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "context_1m_preference": { + "name": "context_1m_preference", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "codex_reasoning_effort_preference": { + "name": "codex_reasoning_effort_preference", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "codex_reasoning_summary_preference": { + "name": "codex_reasoning_summary_preference", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "codex_text_verbosity_preference": { + "name": "codex_text_verbosity_preference", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "codex_parallel_tool_calls_preference": { + "name": "codex_parallel_tool_calls_preference", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "tpm": { + "name": "tpm", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "rpm": { + "name": "rpm", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "rpd": { + "name": "rpd", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "cc": { + "name": "cc", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_providers_enabled_priority": { + "name": "idx_providers_enabled_priority", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "priority", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "weight", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"providers\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_providers_group": { + "name": "idx_providers_group", + "columns": [ + { + "expression": "group_tag", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"providers\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_providers_created_at": { + "name": "idx_providers_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_providers_deleted_at": { + "name": "idx_providers_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.request_filters": { + "name": "request_filters", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "scope": { + "name": "scope", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "action": { + "name": "action", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true + }, + "match_type": { + "name": "match_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "target": { + "name": "target", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "replacement": { + "name": "replacement", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "priority": { + "name": "priority", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "binding_type": { + "name": "binding_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'global'" + }, + "provider_ids": { + "name": "provider_ids", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "group_tags": { + "name": "group_tags", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "idx_request_filters_enabled": { + "name": "idx_request_filters_enabled", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "priority", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_request_filters_scope": { + "name": "idx_request_filters_scope", + "columns": [ + { + "expression": "scope", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_request_filters_action": { + "name": "idx_request_filters_action", + "columns": [ + { + "expression": "action", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_request_filters_binding": { + "name": "idx_request_filters_binding", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "binding_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.sensitive_words": { + "name": "sensitive_words", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "word": { + "name": "word", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "match_type": { + "name": "match_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'contains'" + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "idx_sensitive_words_enabled": { + "name": "idx_sensitive_words_enabled", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "match_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_sensitive_words_created_at": { + "name": "idx_sensitive_words_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.system_settings": { + "name": "system_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "site_title": { + "name": "site_title", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "default": "'Claude Code Hub'" + }, + "allow_global_usage_view": { + "name": "allow_global_usage_view", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "currency_display": { + "name": "currency_display", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true, + "default": "'USD'" + }, + "billing_model_source": { + "name": "billing_model_source", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'original'" + }, + "enable_auto_cleanup": { + "name": "enable_auto_cleanup", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "cleanup_retention_days": { + "name": "cleanup_retention_days", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 30 + }, + "cleanup_schedule": { + "name": "cleanup_schedule", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'0 2 * * *'" + }, + "cleanup_batch_size": { + "name": "cleanup_batch_size", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 10000 + }, + "enable_client_version_check": { + "name": "enable_client_version_check", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "verbose_provider_error": { + "name": "verbose_provider_error", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_http2": { + "name": "enable_http2", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "intercept_anthropic_warmup_requests": { + "name": "intercept_anthropic_warmup_requests", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_response_fixer": { + "name": "enable_response_fixer", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "response_fixer_config": { + "name": "response_fixer_config", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'{\"fixTruncatedJson\":true,\"fixSseFormat\":true,\"fixEncoding\":true,\"maxJsonDepth\":200,\"maxFixSize\":1048576}'::jsonb" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "role": { + "name": "role", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'user'" + }, + "rpm_limit": { + "name": "rpm_limit", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "daily_limit_usd": { + "name": "daily_limit_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "provider_group": { + "name": "provider_group", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'default'" + }, + "tags": { + "name": "tags", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'[]'::jsonb" + }, + "limit_5h_usd": { + "name": "limit_5h_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_weekly_usd": { + "name": "limit_weekly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_monthly_usd": { + "name": "limit_monthly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_total_usd": { + "name": "limit_total_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_concurrent_sessions": { + "name": "limit_concurrent_sessions", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "daily_reset_mode": { + "name": "daily_reset_mode", + "type": "daily_reset_mode", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'fixed'" + }, + "daily_reset_time": { + "name": "daily_reset_time", + "type": "varchar(5)", + "primaryKey": false, + "notNull": true, + "default": "'00:00'" + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "allowed_clients": { + "name": "allowed_clients", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'[]'::jsonb" + }, + "allowed_models": { + "name": "allowed_models", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'[]'::jsonb" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_users_active_role_sort": { + "name": "idx_users_active_role_sort", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "role", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"users\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_users_enabled_expires_at": { + "name": "idx_users_enabled_expires_at", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"users\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_users_created_at": { + "name": "idx_users_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_users_deleted_at": { + "name": "idx_users_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.webhook_targets": { + "name": "webhook_targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "provider_type": { + "name": "provider_type", + "type": "webhook_provider_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "webhook_url": { + "name": "webhook_url", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": false + }, + "telegram_bot_token": { + "name": "telegram_bot_token", + "type": "varchar(256)", + "primaryKey": false, + "notNull": false + }, + "telegram_chat_id": { + "name": "telegram_chat_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false + }, + "dingtalk_secret": { + "name": "dingtalk_secret", + "type": "varchar(256)", + "primaryKey": false, + "notNull": false + }, + "custom_template": { + "name": "custom_template", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "custom_headers": { + "name": "custom_headers", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "proxy_url": { + "name": "proxy_url", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "proxy_fallback_to_direct": { + "name": "proxy_fallback_to_direct", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "last_test_at": { + "name": "last_test_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_test_result": { + "name": "last_test_result", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": { + "public.daily_reset_mode": { + "name": "daily_reset_mode", + "schema": "public", + "values": [ + "fixed", + "rolling" + ] + }, + "public.notification_type": { + "name": "notification_type", + "schema": "public", + "values": [ + "circuit_breaker", + "daily_leaderboard", + "cost_alert" + ] + }, + "public.webhook_provider_type": { + "name": "webhook_provider_type", + "schema": "public", + "values": [ + "wechat", + "feishu", + "dingtalk", + "telegram", + "custom" + ] + } + }, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0051_snapshot.json b/drizzle/meta/0051_snapshot.json new file mode 100644 index 000000000..058e96d6c --- /dev/null +++ b/drizzle/meta/0051_snapshot.json @@ -0,0 +1,2359 @@ +{ + "id": "c7b01fc8-2ed8-4359-a233-9fa3a2f7e8ec", + "prevId": "708bddf0-5d35-4367-ab3f-a50a84d57c5d", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.error_rules": { + "name": "error_rules", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "pattern": { + "name": "pattern", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "match_type": { + "name": "match_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'regex'" + }, + "category": { + "name": "category", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "override_response": { + "name": "override_response", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "override_status_code": { + "name": "override_status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "is_default": { + "name": "is_default", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "priority": { + "name": "priority", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "idx_error_rules_enabled": { + "name": "idx_error_rules_enabled", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "priority", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_pattern": { + "name": "unique_pattern", + "columns": [ + { + "expression": "pattern", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_category": { + "name": "idx_category", + "columns": [ + { + "expression": "category", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_match_type": { + "name": "idx_match_type", + "columns": [ + { + "expression": "match_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.keys": { + "name": "keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "can_login_web_ui": { + "name": "can_login_web_ui", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "limit_5h_usd": { + "name": "limit_5h_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_daily_usd": { + "name": "limit_daily_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "daily_reset_mode": { + "name": "daily_reset_mode", + "type": "daily_reset_mode", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'fixed'" + }, + "daily_reset_time": { + "name": "daily_reset_time", + "type": "varchar(5)", + "primaryKey": false, + "notNull": true, + "default": "'00:00'" + }, + "limit_weekly_usd": { + "name": "limit_weekly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_monthly_usd": { + "name": "limit_monthly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_total_usd": { + "name": "limit_total_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_concurrent_sessions": { + "name": "limit_concurrent_sessions", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "provider_group": { + "name": "provider_group", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'default'" + }, + "cache_ttl_preference": { + "name": "cache_ttl_preference", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_keys_user_id": { + "name": "idx_keys_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_keys_created_at": { + "name": "idx_keys_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_keys_deleted_at": { + "name": "idx_keys_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.message_request": { + "name": "message_request", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "provider_id": { + "name": "provider_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "model": { + "name": "model", + "type": "varchar(128)", + "primaryKey": false, + "notNull": false + }, + "duration_ms": { + "name": "duration_ms", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cost_usd": { + "name": "cost_usd", + "type": "numeric(21, 15)", + "primaryKey": false, + "notNull": false, + "default": "'0'" + }, + "cost_multiplier": { + "name": "cost_multiplier", + "type": "numeric(10, 4)", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false + }, + "request_sequence": { + "name": "request_sequence", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "provider_chain": { + "name": "provider_chain", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "status_code": { + "name": "status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "api_type": { + "name": "api_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "endpoint": { + "name": "endpoint", + "type": "varchar(256)", + "primaryKey": false, + "notNull": false + }, + "original_model": { + "name": "original_model", + "type": "varchar(128)", + "primaryKey": false, + "notNull": false + }, + "input_tokens": { + "name": "input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "output_tokens": { + "name": "output_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "ttfb_ms": { + "name": "ttfb_ms", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_creation_input_tokens": { + "name": "cache_creation_input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_read_input_tokens": { + "name": "cache_read_input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_creation_5m_input_tokens": { + "name": "cache_creation_5m_input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_creation_1h_input_tokens": { + "name": "cache_creation_1h_input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_ttl_applied": { + "name": "cache_ttl_applied", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "context_1m_applied": { + "name": "context_1m_applied", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "special_settings": { + "name": "special_settings", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_stack": { + "name": "error_stack", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_cause": { + "name": "error_cause", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "blocked_by": { + "name": "blocked_by", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "blocked_reason": { + "name": "blocked_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_agent": { + "name": "user_agent", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "messages_count": { + "name": "messages_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_message_request_user_date_cost": { + "name": "idx_message_request_user_date_cost", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "cost_usd", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_user_query": { + "name": "idx_message_request_user_query", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_session_id": { + "name": "idx_message_request_session_id", + "columns": [ + { + "expression": "session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_session_seq": { + "name": "idx_message_request_session_seq", + "columns": [ + { + "expression": "session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "request_sequence", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_endpoint": { + "name": "idx_message_request_endpoint", + "columns": [ + { + "expression": "endpoint", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_blocked_by": { + "name": "idx_message_request_blocked_by", + "columns": [ + { + "expression": "blocked_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_provider_id": { + "name": "idx_message_request_provider_id", + "columns": [ + { + "expression": "provider_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_user_id": { + "name": "idx_message_request_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_key": { + "name": "idx_message_request_key", + "columns": [ + { + "expression": "key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_created_at": { + "name": "idx_message_request_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_deleted_at": { + "name": "idx_message_request_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.model_prices": { + "name": "model_prices", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "model_name": { + "name": "model_name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "price_data": { + "name": "price_data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "idx_model_prices_latest": { + "name": "idx_model_prices_latest", + "columns": [ + { + "expression": "model_name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": false, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_model_prices_model_name": { + "name": "idx_model_prices_model_name", + "columns": [ + { + "expression": "model_name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_model_prices_created_at": { + "name": "idx_model_prices_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": false, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.notification_settings": { + "name": "notification_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "use_legacy_mode": { + "name": "use_legacy_mode", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "circuit_breaker_enabled": { + "name": "circuit_breaker_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "circuit_breaker_webhook": { + "name": "circuit_breaker_webhook", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "daily_leaderboard_enabled": { + "name": "daily_leaderboard_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "daily_leaderboard_webhook": { + "name": "daily_leaderboard_webhook", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "daily_leaderboard_time": { + "name": "daily_leaderboard_time", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'09:00'" + }, + "daily_leaderboard_top_n": { + "name": "daily_leaderboard_top_n", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 5 + }, + "cost_alert_enabled": { + "name": "cost_alert_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "cost_alert_webhook": { + "name": "cost_alert_webhook", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "cost_alert_threshold": { + "name": "cost_alert_threshold", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false, + "default": "'0.80'" + }, + "cost_alert_check_interval": { + "name": "cost_alert_check_interval", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 60 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.notification_target_bindings": { + "name": "notification_target_bindings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "notification_type": { + "name": "notification_type", + "type": "notification_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "schedule_cron": { + "name": "schedule_cron", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "schedule_timezone": { + "name": "schedule_timezone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'Asia/Shanghai'" + }, + "template_override": { + "name": "template_override", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "unique_notification_target_binding": { + "name": "unique_notification_target_binding", + "columns": [ + { + "expression": "notification_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_notification_bindings_type": { + "name": "idx_notification_bindings_type", + "columns": [ + { + "expression": "notification_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_notification_bindings_target": { + "name": "idx_notification_bindings_target", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "notification_target_bindings_target_id_webhook_targets_id_fk": { + "name": "notification_target_bindings_target_id_webhook_targets_id_fk", + "tableFrom": "notification_target_bindings", + "tableTo": "webhook_targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.providers": { + "name": "providers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "weight": { + "name": "weight", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "priority": { + "name": "priority", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "cost_multiplier": { + "name": "cost_multiplier", + "type": "numeric(10, 4)", + "primaryKey": false, + "notNull": false, + "default": "'1.0'" + }, + "group_tag": { + "name": "group_tag", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "provider_type": { + "name": "provider_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'claude'" + }, + "preserve_client_ip": { + "name": "preserve_client_ip", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "model_redirects": { + "name": "model_redirects", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "allowed_models": { + "name": "allowed_models", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'null'::jsonb" + }, + "join_claude_pool": { + "name": "join_claude_pool", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "codex_instructions_strategy": { + "name": "codex_instructions_strategy", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false, + "default": "'auto'" + }, + "mcp_passthrough_type": { + "name": "mcp_passthrough_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'none'" + }, + "mcp_passthrough_url": { + "name": "mcp_passthrough_url", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "limit_5h_usd": { + "name": "limit_5h_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_daily_usd": { + "name": "limit_daily_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "daily_reset_mode": { + "name": "daily_reset_mode", + "type": "daily_reset_mode", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'fixed'" + }, + "daily_reset_time": { + "name": "daily_reset_time", + "type": "varchar(5)", + "primaryKey": false, + "notNull": true, + "default": "'00:00'" + }, + "limit_weekly_usd": { + "name": "limit_weekly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_monthly_usd": { + "name": "limit_monthly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_total_usd": { + "name": "limit_total_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "total_cost_reset_at": { + "name": "total_cost_reset_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "limit_concurrent_sessions": { + "name": "limit_concurrent_sessions", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "max_retry_attempts": { + "name": "max_retry_attempts", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "circuit_breaker_failure_threshold": { + "name": "circuit_breaker_failure_threshold", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 5 + }, + "circuit_breaker_open_duration": { + "name": "circuit_breaker_open_duration", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 1800000 + }, + "circuit_breaker_half_open_success_threshold": { + "name": "circuit_breaker_half_open_success_threshold", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 2 + }, + "proxy_url": { + "name": "proxy_url", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "proxy_fallback_to_direct": { + "name": "proxy_fallback_to_direct", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "first_byte_timeout_streaming_ms": { + "name": "first_byte_timeout_streaming_ms", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "streaming_idle_timeout_ms": { + "name": "streaming_idle_timeout_ms", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "request_timeout_non_streaming_ms": { + "name": "request_timeout_non_streaming_ms", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "website_url": { + "name": "website_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "favicon_url": { + "name": "favicon_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cache_ttl_preference": { + "name": "cache_ttl_preference", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "context_1m_preference": { + "name": "context_1m_preference", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "codex_reasoning_effort_preference": { + "name": "codex_reasoning_effort_preference", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "codex_reasoning_summary_preference": { + "name": "codex_reasoning_summary_preference", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "codex_text_verbosity_preference": { + "name": "codex_text_verbosity_preference", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "codex_parallel_tool_calls_preference": { + "name": "codex_parallel_tool_calls_preference", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "tpm": { + "name": "tpm", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "rpm": { + "name": "rpm", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "rpd": { + "name": "rpd", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "cc": { + "name": "cc", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_providers_enabled_priority": { + "name": "idx_providers_enabled_priority", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "priority", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "weight", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"providers\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_providers_group": { + "name": "idx_providers_group", + "columns": [ + { + "expression": "group_tag", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"providers\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_providers_created_at": { + "name": "idx_providers_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_providers_deleted_at": { + "name": "idx_providers_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.request_filters": { + "name": "request_filters", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "scope": { + "name": "scope", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "action": { + "name": "action", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true + }, + "match_type": { + "name": "match_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "target": { + "name": "target", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "replacement": { + "name": "replacement", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "priority": { + "name": "priority", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "binding_type": { + "name": "binding_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'global'" + }, + "provider_ids": { + "name": "provider_ids", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "group_tags": { + "name": "group_tags", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "idx_request_filters_enabled": { + "name": "idx_request_filters_enabled", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "priority", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_request_filters_scope": { + "name": "idx_request_filters_scope", + "columns": [ + { + "expression": "scope", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_request_filters_action": { + "name": "idx_request_filters_action", + "columns": [ + { + "expression": "action", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_request_filters_binding": { + "name": "idx_request_filters_binding", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "binding_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.sensitive_words": { + "name": "sensitive_words", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "word": { + "name": "word", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "match_type": { + "name": "match_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'contains'" + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "idx_sensitive_words_enabled": { + "name": "idx_sensitive_words_enabled", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "match_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_sensitive_words_created_at": { + "name": "idx_sensitive_words_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.system_settings": { + "name": "system_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "site_title": { + "name": "site_title", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "default": "'Claude Code Hub'" + }, + "allow_global_usage_view": { + "name": "allow_global_usage_view", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "currency_display": { + "name": "currency_display", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true, + "default": "'USD'" + }, + "billing_model_source": { + "name": "billing_model_source", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'original'" + }, + "enable_auto_cleanup": { + "name": "enable_auto_cleanup", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "cleanup_retention_days": { + "name": "cleanup_retention_days", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 30 + }, + "cleanup_schedule": { + "name": "cleanup_schedule", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'0 2 * * *'" + }, + "cleanup_batch_size": { + "name": "cleanup_batch_size", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 10000 + }, + "enable_client_version_check": { + "name": "enable_client_version_check", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "verbose_provider_error": { + "name": "verbose_provider_error", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_http2": { + "name": "enable_http2", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "intercept_anthropic_warmup_requests": { + "name": "intercept_anthropic_warmup_requests", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_thinking_signature_rectifier": { + "name": "enable_thinking_signature_rectifier", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "enable_response_fixer": { + "name": "enable_response_fixer", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "response_fixer_config": { + "name": "response_fixer_config", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'{\"fixTruncatedJson\":true,\"fixSseFormat\":true,\"fixEncoding\":true,\"maxJsonDepth\":200,\"maxFixSize\":1048576}'::jsonb" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "role": { + "name": "role", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'user'" + }, + "rpm_limit": { + "name": "rpm_limit", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "daily_limit_usd": { + "name": "daily_limit_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "provider_group": { + "name": "provider_group", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'default'" + }, + "tags": { + "name": "tags", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'[]'::jsonb" + }, + "limit_5h_usd": { + "name": "limit_5h_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_weekly_usd": { + "name": "limit_weekly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_monthly_usd": { + "name": "limit_monthly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_total_usd": { + "name": "limit_total_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_concurrent_sessions": { + "name": "limit_concurrent_sessions", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "daily_reset_mode": { + "name": "daily_reset_mode", + "type": "daily_reset_mode", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'fixed'" + }, + "daily_reset_time": { + "name": "daily_reset_time", + "type": "varchar(5)", + "primaryKey": false, + "notNull": true, + "default": "'00:00'" + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "allowed_clients": { + "name": "allowed_clients", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'[]'::jsonb" + }, + "allowed_models": { + "name": "allowed_models", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'[]'::jsonb" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_users_active_role_sort": { + "name": "idx_users_active_role_sort", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "role", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"users\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_users_enabled_expires_at": { + "name": "idx_users_enabled_expires_at", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"users\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_users_created_at": { + "name": "idx_users_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_users_deleted_at": { + "name": "idx_users_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.webhook_targets": { + "name": "webhook_targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "provider_type": { + "name": "provider_type", + "type": "webhook_provider_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "webhook_url": { + "name": "webhook_url", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": false + }, + "telegram_bot_token": { + "name": "telegram_bot_token", + "type": "varchar(256)", + "primaryKey": false, + "notNull": false + }, + "telegram_chat_id": { + "name": "telegram_chat_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false + }, + "dingtalk_secret": { + "name": "dingtalk_secret", + "type": "varchar(256)", + "primaryKey": false, + "notNull": false + }, + "custom_template": { + "name": "custom_template", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "custom_headers": { + "name": "custom_headers", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "proxy_url": { + "name": "proxy_url", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "proxy_fallback_to_direct": { + "name": "proxy_fallback_to_direct", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "last_test_at": { + "name": "last_test_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_test_result": { + "name": "last_test_result", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": { + "public.daily_reset_mode": { + "name": "daily_reset_mode", + "schema": "public", + "values": [ + "fixed", + "rolling" + ] + }, + "public.notification_type": { + "name": "notification_type", + "schema": "public", + "values": [ + "circuit_breaker", + "daily_leaderboard", + "cost_alert" + ] + }, + "public.webhook_provider_type": { + "name": "webhook_provider_type", + "schema": "public", + "values": [ + "wechat", + "feishu", + "dingtalk", + "telegram", + "custom" + ] + } + }, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/0052_snapshot.json b/drizzle/meta/0052_snapshot.json new file mode 100644 index 000000000..970c0d530 --- /dev/null +++ b/drizzle/meta/0052_snapshot.json @@ -0,0 +1,2381 @@ +{ + "id": "313bc169-3d11-418a-a91a-89d7a10a5d1f", + "prevId": "c7b01fc8-2ed8-4359-a233-9fa3a2f7e8ec", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.error_rules": { + "name": "error_rules", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "pattern": { + "name": "pattern", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "match_type": { + "name": "match_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'regex'" + }, + "category": { + "name": "category", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "override_response": { + "name": "override_response", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "override_status_code": { + "name": "override_status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "is_default": { + "name": "is_default", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "priority": { + "name": "priority", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "idx_error_rules_enabled": { + "name": "idx_error_rules_enabled", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "priority", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_pattern": { + "name": "unique_pattern", + "columns": [ + { + "expression": "pattern", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_category": { + "name": "idx_category", + "columns": [ + { + "expression": "category", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_match_type": { + "name": "idx_match_type", + "columns": [ + { + "expression": "match_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.keys": { + "name": "keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "can_login_web_ui": { + "name": "can_login_web_ui", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "limit_5h_usd": { + "name": "limit_5h_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_daily_usd": { + "name": "limit_daily_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "daily_reset_mode": { + "name": "daily_reset_mode", + "type": "daily_reset_mode", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'fixed'" + }, + "daily_reset_time": { + "name": "daily_reset_time", + "type": "varchar(5)", + "primaryKey": false, + "notNull": true, + "default": "'00:00'" + }, + "limit_weekly_usd": { + "name": "limit_weekly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_monthly_usd": { + "name": "limit_monthly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_total_usd": { + "name": "limit_total_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_concurrent_sessions": { + "name": "limit_concurrent_sessions", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "provider_group": { + "name": "provider_group", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'default'" + }, + "cache_ttl_preference": { + "name": "cache_ttl_preference", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_keys_user_id": { + "name": "idx_keys_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_keys_created_at": { + "name": "idx_keys_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_keys_deleted_at": { + "name": "idx_keys_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.message_request": { + "name": "message_request", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "provider_id": { + "name": "provider_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "model": { + "name": "model", + "type": "varchar(128)", + "primaryKey": false, + "notNull": false + }, + "duration_ms": { + "name": "duration_ms", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cost_usd": { + "name": "cost_usd", + "type": "numeric(21, 15)", + "primaryKey": false, + "notNull": false, + "default": "'0'" + }, + "cost_multiplier": { + "name": "cost_multiplier", + "type": "numeric(10, 4)", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false + }, + "request_sequence": { + "name": "request_sequence", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 1 + }, + "provider_chain": { + "name": "provider_chain", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "status_code": { + "name": "status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "api_type": { + "name": "api_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "endpoint": { + "name": "endpoint", + "type": "varchar(256)", + "primaryKey": false, + "notNull": false + }, + "original_model": { + "name": "original_model", + "type": "varchar(128)", + "primaryKey": false, + "notNull": false + }, + "input_tokens": { + "name": "input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "output_tokens": { + "name": "output_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "ttfb_ms": { + "name": "ttfb_ms", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_creation_input_tokens": { + "name": "cache_creation_input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_read_input_tokens": { + "name": "cache_read_input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_creation_5m_input_tokens": { + "name": "cache_creation_5m_input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_creation_1h_input_tokens": { + "name": "cache_creation_1h_input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "cache_ttl_applied": { + "name": "cache_ttl_applied", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "context_1m_applied": { + "name": "context_1m_applied", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "special_settings": { + "name": "special_settings", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_stack": { + "name": "error_stack", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_cause": { + "name": "error_cause", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "blocked_by": { + "name": "blocked_by", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "blocked_reason": { + "name": "blocked_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_agent": { + "name": "user_agent", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "messages_count": { + "name": "messages_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_message_request_user_date_cost": { + "name": "idx_message_request_user_date_cost", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "cost_usd", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_user_query": { + "name": "idx_message_request_user_query", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_session_id": { + "name": "idx_message_request_session_id", + "columns": [ + { + "expression": "session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_session_seq": { + "name": "idx_message_request_session_seq", + "columns": [ + { + "expression": "session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "request_sequence", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_endpoint": { + "name": "idx_message_request_endpoint", + "columns": [ + { + "expression": "endpoint", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_blocked_by": { + "name": "idx_message_request_blocked_by", + "columns": [ + { + "expression": "blocked_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"message_request\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_provider_id": { + "name": "idx_message_request_provider_id", + "columns": [ + { + "expression": "provider_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_user_id": { + "name": "idx_message_request_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_key": { + "name": "idx_message_request_key", + "columns": [ + { + "expression": "key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_created_at": { + "name": "idx_message_request_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_message_request_deleted_at": { + "name": "idx_message_request_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.model_prices": { + "name": "model_prices", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "model_name": { + "name": "model_name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "price_data": { + "name": "price_data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "source": { + "name": "source", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'litellm'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "idx_model_prices_latest": { + "name": "idx_model_prices_latest", + "columns": [ + { + "expression": "model_name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": false, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_model_prices_model_name": { + "name": "idx_model_prices_model_name", + "columns": [ + { + "expression": "model_name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_model_prices_created_at": { + "name": "idx_model_prices_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": false, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_model_prices_source": { + "name": "idx_model_prices_source", + "columns": [ + { + "expression": "source", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.notification_settings": { + "name": "notification_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "use_legacy_mode": { + "name": "use_legacy_mode", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "circuit_breaker_enabled": { + "name": "circuit_breaker_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "circuit_breaker_webhook": { + "name": "circuit_breaker_webhook", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "daily_leaderboard_enabled": { + "name": "daily_leaderboard_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "daily_leaderboard_webhook": { + "name": "daily_leaderboard_webhook", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "daily_leaderboard_time": { + "name": "daily_leaderboard_time", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false, + "default": "'09:00'" + }, + "daily_leaderboard_top_n": { + "name": "daily_leaderboard_top_n", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 5 + }, + "cost_alert_enabled": { + "name": "cost_alert_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "cost_alert_webhook": { + "name": "cost_alert_webhook", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "cost_alert_threshold": { + "name": "cost_alert_threshold", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false, + "default": "'0.80'" + }, + "cost_alert_check_interval": { + "name": "cost_alert_check_interval", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 60 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.notification_target_bindings": { + "name": "notification_target_bindings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "notification_type": { + "name": "notification_type", + "type": "notification_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "schedule_cron": { + "name": "schedule_cron", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false + }, + "schedule_timezone": { + "name": "schedule_timezone", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'Asia/Shanghai'" + }, + "template_override": { + "name": "template_override", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "unique_notification_target_binding": { + "name": "unique_notification_target_binding", + "columns": [ + { + "expression": "notification_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_notification_bindings_type": { + "name": "idx_notification_bindings_type", + "columns": [ + { + "expression": "notification_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_notification_bindings_target": { + "name": "idx_notification_bindings_target", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "notification_target_bindings_target_id_webhook_targets_id_fk": { + "name": "notification_target_bindings_target_id_webhook_targets_id_fk", + "tableFrom": "notification_target_bindings", + "tableTo": "webhook_targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.providers": { + "name": "providers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "url": { + "name": "url", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "weight": { + "name": "weight", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "priority": { + "name": "priority", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "cost_multiplier": { + "name": "cost_multiplier", + "type": "numeric(10, 4)", + "primaryKey": false, + "notNull": false, + "default": "'1.0'" + }, + "group_tag": { + "name": "group_tag", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false + }, + "provider_type": { + "name": "provider_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'claude'" + }, + "preserve_client_ip": { + "name": "preserve_client_ip", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "model_redirects": { + "name": "model_redirects", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "allowed_models": { + "name": "allowed_models", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'null'::jsonb" + }, + "join_claude_pool": { + "name": "join_claude_pool", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "codex_instructions_strategy": { + "name": "codex_instructions_strategy", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false, + "default": "'auto'" + }, + "mcp_passthrough_type": { + "name": "mcp_passthrough_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'none'" + }, + "mcp_passthrough_url": { + "name": "mcp_passthrough_url", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "limit_5h_usd": { + "name": "limit_5h_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_daily_usd": { + "name": "limit_daily_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "daily_reset_mode": { + "name": "daily_reset_mode", + "type": "daily_reset_mode", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'fixed'" + }, + "daily_reset_time": { + "name": "daily_reset_time", + "type": "varchar(5)", + "primaryKey": false, + "notNull": true, + "default": "'00:00'" + }, + "limit_weekly_usd": { + "name": "limit_weekly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_monthly_usd": { + "name": "limit_monthly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_total_usd": { + "name": "limit_total_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "total_cost_reset_at": { + "name": "total_cost_reset_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "limit_concurrent_sessions": { + "name": "limit_concurrent_sessions", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "max_retry_attempts": { + "name": "max_retry_attempts", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "circuit_breaker_failure_threshold": { + "name": "circuit_breaker_failure_threshold", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 5 + }, + "circuit_breaker_open_duration": { + "name": "circuit_breaker_open_duration", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 1800000 + }, + "circuit_breaker_half_open_success_threshold": { + "name": "circuit_breaker_half_open_success_threshold", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 2 + }, + "proxy_url": { + "name": "proxy_url", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "proxy_fallback_to_direct": { + "name": "proxy_fallback_to_direct", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "first_byte_timeout_streaming_ms": { + "name": "first_byte_timeout_streaming_ms", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "streaming_idle_timeout_ms": { + "name": "streaming_idle_timeout_ms", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "request_timeout_non_streaming_ms": { + "name": "request_timeout_non_streaming_ms", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "website_url": { + "name": "website_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "favicon_url": { + "name": "favicon_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cache_ttl_preference": { + "name": "cache_ttl_preference", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "context_1m_preference": { + "name": "context_1m_preference", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "codex_reasoning_effort_preference": { + "name": "codex_reasoning_effort_preference", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "codex_reasoning_summary_preference": { + "name": "codex_reasoning_summary_preference", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "codex_text_verbosity_preference": { + "name": "codex_text_verbosity_preference", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "codex_parallel_tool_calls_preference": { + "name": "codex_parallel_tool_calls_preference", + "type": "varchar(10)", + "primaryKey": false, + "notNull": false + }, + "tpm": { + "name": "tpm", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "rpm": { + "name": "rpm", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "rpd": { + "name": "rpd", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "cc": { + "name": "cc", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_providers_enabled_priority": { + "name": "idx_providers_enabled_priority", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "priority", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "weight", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"providers\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_providers_group": { + "name": "idx_providers_group", + "columns": [ + { + "expression": "group_tag", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"providers\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_providers_created_at": { + "name": "idx_providers_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_providers_deleted_at": { + "name": "idx_providers_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.request_filters": { + "name": "request_filters", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "scope": { + "name": "scope", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true + }, + "action": { + "name": "action", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true + }, + "match_type": { + "name": "match_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": false + }, + "target": { + "name": "target", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "replacement": { + "name": "replacement", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "priority": { + "name": "priority", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "binding_type": { + "name": "binding_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'global'" + }, + "provider_ids": { + "name": "provider_ids", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "group_tags": { + "name": "group_tags", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "idx_request_filters_enabled": { + "name": "idx_request_filters_enabled", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "priority", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_request_filters_scope": { + "name": "idx_request_filters_scope", + "columns": [ + { + "expression": "scope", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_request_filters_action": { + "name": "idx_request_filters_action", + "columns": [ + { + "expression": "action", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_request_filters_binding": { + "name": "idx_request_filters_binding", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "binding_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.sensitive_words": { + "name": "sensitive_words", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "word": { + "name": "word", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true + }, + "match_type": { + "name": "match_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'contains'" + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "idx_sensitive_words_enabled": { + "name": "idx_sensitive_words_enabled", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "match_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_sensitive_words_created_at": { + "name": "idx_sensitive_words_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.system_settings": { + "name": "system_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "site_title": { + "name": "site_title", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "default": "'Claude Code Hub'" + }, + "allow_global_usage_view": { + "name": "allow_global_usage_view", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "currency_display": { + "name": "currency_display", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true, + "default": "'USD'" + }, + "billing_model_source": { + "name": "billing_model_source", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "default": "'original'" + }, + "enable_auto_cleanup": { + "name": "enable_auto_cleanup", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "cleanup_retention_days": { + "name": "cleanup_retention_days", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 30 + }, + "cleanup_schedule": { + "name": "cleanup_schedule", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'0 2 * * *'" + }, + "cleanup_batch_size": { + "name": "cleanup_batch_size", + "type": "integer", + "primaryKey": false, + "notNull": false, + "default": 10000 + }, + "enable_client_version_check": { + "name": "enable_client_version_check", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "verbose_provider_error": { + "name": "verbose_provider_error", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_http2": { + "name": "enable_http2", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "intercept_anthropic_warmup_requests": { + "name": "intercept_anthropic_warmup_requests", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_thinking_signature_rectifier": { + "name": "enable_thinking_signature_rectifier", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "enable_response_fixer": { + "name": "enable_response_fixer", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "response_fixer_config": { + "name": "response_fixer_config", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'{\"fixTruncatedJson\":true,\"fixSseFormat\":true,\"fixEncoding\":true,\"maxJsonDepth\":200,\"maxFixSize\":1048576}'::jsonb" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "role": { + "name": "role", + "type": "varchar", + "primaryKey": false, + "notNull": false, + "default": "'user'" + }, + "rpm_limit": { + "name": "rpm_limit", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "daily_limit_usd": { + "name": "daily_limit_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "provider_group": { + "name": "provider_group", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "default": "'default'" + }, + "tags": { + "name": "tags", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'[]'::jsonb" + }, + "limit_5h_usd": { + "name": "limit_5h_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_weekly_usd": { + "name": "limit_weekly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_monthly_usd": { + "name": "limit_monthly_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_total_usd": { + "name": "limit_total_usd", + "type": "numeric(10, 2)", + "primaryKey": false, + "notNull": false + }, + "limit_concurrent_sessions": { + "name": "limit_concurrent_sessions", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "daily_reset_mode": { + "name": "daily_reset_mode", + "type": "daily_reset_mode", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'fixed'" + }, + "daily_reset_time": { + "name": "daily_reset_time", + "type": "varchar(5)", + "primaryKey": false, + "notNull": true, + "default": "'00:00'" + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "allowed_clients": { + "name": "allowed_clients", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'[]'::jsonb" + }, + "allowed_models": { + "name": "allowed_models", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'[]'::jsonb" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_users_active_role_sort": { + "name": "idx_users_active_role_sort", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "role", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"users\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_users_enabled_expires_at": { + "name": "idx_users_enabled_expires_at", + "columns": [ + { + "expression": "is_enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"users\".\"deleted_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_users_created_at": { + "name": "idx_users_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_users_deleted_at": { + "name": "idx_users_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.webhook_targets": { + "name": "webhook_targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true + }, + "provider_type": { + "name": "provider_type", + "type": "webhook_provider_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "webhook_url": { + "name": "webhook_url", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": false + }, + "telegram_bot_token": { + "name": "telegram_bot_token", + "type": "varchar(256)", + "primaryKey": false, + "notNull": false + }, + "telegram_chat_id": { + "name": "telegram_chat_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false + }, + "dingtalk_secret": { + "name": "dingtalk_secret", + "type": "varchar(256)", + "primaryKey": false, + "notNull": false + }, + "custom_template": { + "name": "custom_template", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "custom_headers": { + "name": "custom_headers", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "proxy_url": { + "name": "proxy_url", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false + }, + "proxy_fallback_to_direct": { + "name": "proxy_fallback_to_direct", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "last_test_at": { + "name": "last_test_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_test_result": { + "name": "last_test_result", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": { + "public.daily_reset_mode": { + "name": "daily_reset_mode", + "schema": "public", + "values": [ + "fixed", + "rolling" + ] + }, + "public.notification_type": { + "name": "notification_type", + "schema": "public", + "values": [ + "circuit_breaker", + "daily_leaderboard", + "cost_alert" + ] + }, + "public.webhook_provider_type": { + "name": "webhook_provider_type", + "schema": "public", + "values": [ + "wechat", + "feishu", + "dingtalk", + "telegram", + "custom" + ] + } + }, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/_journal.json b/drizzle/meta/_journal.json index 9f11c2090..d33b7e70c 100644 --- a/drizzle/meta/_journal.json +++ b/drizzle/meta/_journal.json @@ -351,6 +351,27 @@ "when": 1767764802281, "tag": "0049_shocking_ultimatum", "breakpoints": true + }, + { + "idx": 50, + "version": "7", + "when": 1767894561890, + "tag": "0050_flippant_jack_flag", + "breakpoints": true + }, + { + "idx": 51, + "version": "7", + "when": 1767976327237, + "tag": "0051_silent_maelstrom", + "breakpoints": true + }, + { + "idx": 52, + "version": "7", + "when": 1768052041185, + "tag": "0052_model_price_source", + "breakpoints": true } ] } \ No newline at end of file diff --git a/messages/en/dashboard.json b/messages/en/dashboard.json index 1b4325b18..91ef7163a 100644 --- a/messages/en/dashboard.json +++ b/messages/en/dashboard.json @@ -1,4 +1,9 @@ { + "actions": { + "copy": "Copy", + "download": "Download", + "copied": "Copied" + }, "title": { "costRanking": "Cost Leaderboard", "costRankingDescription": "View user cost rankings, data updates every 5 minutes", @@ -79,8 +84,8 @@ "minRetryCountPlaceholder": "Enter minimum retries", "apply": "Apply Filter", "reset": "Reset", - "last7days": "Last 7 Days", - "last30days": "Last 30 Days", + "last7days": "7d", + "last30days": "30d", "customRange": "Custom Range", "export": "Export", "exporting": "Exporting...", @@ -1372,6 +1377,10 @@ "threeMonths": "In 3 months", "oneYear": "In 1 year" }, + "providerGroupSelect": { + "providersSuffix": "providers", + "loadFailed": "Failed to load provider groups" + }, "providerGroup": { "label": "Provider group", "placeholder": "Select provider group", diff --git a/messages/en/myUsage.json b/messages/en/myUsage.json index f1df3378c..03e01c831 100644 --- a/messages/en/myUsage.json +++ b/messages/en/myUsage.json @@ -1,7 +1,7 @@ { "header": { "title": "My Usage", - "subtitle": "View your quotas and usage logs", + "welcome": "Welcome, {name}", "logout": "Logout", "keyLabel": "Key", "userLabel": "User", @@ -29,21 +29,6 @@ "unlimited": "Unlimited", "empty": "No quota data" }, - "today": { - "title": "Today's Usage", - "autoRefresh": "Auto refresh every {seconds}s", - "refresh": "Refresh", - "calls": "Calls", - "tokensIn": "Input tokens", - "tokensOut": "Output tokens", - "cost": "{currency} cost", - "modelBreakdown": "By model", - "unknownModel": "Unknown model", - "billingModel": "Billing model: {model}", - "callsShort": "{count} calls", - "tokensShort": "In {in} / Out {out}", - "noData": "No data today" - }, "logs": { "title": "Usage Logs", "autoRefresh": "Auto refresh every {seconds}s", @@ -64,7 +49,7 @@ "tokens": "Tokens (in/out)", "cacheWrite": "Cache Write", "cacheRead": "Cache Read", - "cost": "{currency} cost", + "cost": "Cost", "status": "Status", "endpoint": "Endpoint" }, @@ -79,15 +64,52 @@ "title": "Expiration", "keyExpires": "Key Expires", "userExpires": "User Expires", + "rpmLimit": "RPM Limit", "neverExpires": "Never", "expired": "Expired", "expiresIn": "in {time}", "expiringWarning": "Expiring Soon" }, "providerGroup": { + "title": "Provider Groups", "keyGroup": "Key Group", "userGroup": "User Group", "allProviders": "All Providers", "inheritedFromUser": "Inherited from User" + }, + "stats": { + "title": "Statistics Summary", + "autoRefresh": "Auto refresh every {seconds}s", + "totalRequests": "Total Requests", + "totalCost": "Total Cost", + "totalTokens": "Total Tokens", + "cacheTokens": "Cache Tokens", + "input": "Input", + "output": "Output", + "write": "Write", + "read": "Read", + "modelBreakdown": "Model Breakdown", + "keyStats": "Key", + "userStats": "User", + "noData": "No data for selected period", + "unknownModel": "Unknown" + }, + "accessRestrictions": { + "title": "Access Restrictions", + "models": "Models", + "clients": "Clients", + "noRestrictions": "No restrictions" + }, + "quotaCollapsible": { + "title": "Quota Usage", + "daily": "Daily", + "monthly": "Monthly", + "total": "Total" + }, + "logsCollapsible": { + "title": "Usage Logs", + "lastStatus": "Last: {code} ({time})", + "successRate": "{rate}%", + "noData": "No data" } } diff --git a/messages/en/settings.json b/messages/en/settings.json index 57cb1a097..55c879dbd 100644 --- a/messages/en/settings.json +++ b/messages/en/settings.json @@ -104,6 +104,16 @@ "enableHttp2Desc": "When enabled, proxy requests will prefer HTTP/2 protocol. Automatically falls back to HTTP/1.1 on failure.", "interceptAnthropicWarmupRequests": "Intercept Warmup Requests (Anthropic)", "interceptAnthropicWarmupRequestsDesc": "When enabled, Claude Code warmup probe requests will be answered by CCH directly to avoid upstream provider calls; the request is logged for audit but is not billed, not rate-limited, and excluded from statistics.", + "enableThinkingSignatureRectifier": "Enable Thinking Signature Rectifier", + "enableThinkingSignatureRectifierDesc": "When Anthropic providers return thinking signature incompatibility or invalid request errors, automatically removes incompatible thinking blocks and retries once against the same provider (enabled by default).", + "enableResponseFixer": "Enable Response Fixer", + "enableResponseFixerDesc": "Automatically repairs common upstream response issues (encoding, SSE, truncated JSON). Enabled by default.", + "responseFixerFixEncoding": "Fix encoding issues", + "responseFixerFixEncodingDesc": "Removes BOM/null bytes and normalizes invalid UTF-8.", + "responseFixerFixSseFormat": "Fix SSE format", + "responseFixerFixSseFormatDesc": "Adds missing data: prefix, normalizes line endings, and fixes common field formatting.", + "responseFixerFixTruncatedJson": "Fix truncated JSON", + "responseFixerFixTruncatedJsonDesc": "Closes unclosed braces/quotes, removes trailing commas, and fills missing values with null when needed.", "cleanupSchedule": "Cleanup Schedule", "cleanupScheduleDesc": "Select the execution schedule for automatic cleanup", "configUpdated": "System settings updated. The page will refresh to apply currency display changes.", @@ -533,24 +543,92 @@ "description": "Manage AI model pricing configuration" }, "searchPlaceholder": "Search model name...", + "filters": { + "all": "All", + "local": "Local", + "anthropic": "Anthropic", + "openai": "OpenAI", + "vertex": "Vertex" + }, + "badges": { + "local": "Local" + }, + "capabilities": { + "assistantPrefill": "Assistant prefill", + "computerUse": "Computer use", + "functionCalling": "Function calling", + "pdfInput": "PDF input", + "promptCaching": "Prompt caching", + "reasoning": "Reasoning", + "responseSchema": "Response schema", + "toolChoice": "Tool choice", + "vision": "Vision", + "statusSupported": "Supported", + "statusUnsupported": "Not supported", + "tooltip": "{label}: {status}" + }, "sync": { - "button": "Sync LiteLLM Prices", + "button": "Sync Cloud Price Table", "syncing": "Syncing...", + "checking": "Checking conflicts...", "successWithChanges": "Price table updated: {added} added, {updated} updated, {unchanged} unchanged", "successNoChanges": "Price table is up to date, no updates needed", "failed": "Sync failed", "failedError": "Sync failed: {error}", "failedNoResult": "Price table updated but no result returned", "noModels": "No model prices found", - "partialFailure": "Partial update succeeded, but {failed} models failed" + "partialFailure": "Partial update succeeded, but {failed} models failed", + "failedModels": "Failed models: {models}", + "skippedConflicts": "Skipped {count} manual models" + }, + "conflict": { + "title": "Select Items to Overwrite", + "description": "The following models have manual prices. Check the ones to overwrite with LiteLLM prices, unchecked ones will be kept unchanged", + "searchPlaceholder": "Search models...", + "table": { + "modelName": "Model", + "manualPrice": "Manual Price", + "litellmPrice": "LiteLLM Price", + "action": "Action" + }, + "viewDiff": "View Diff", + "diffTitle": "Price Difference", + "diff": { + "field": "Field", + "manual": "Manual", + "litellm": "LiteLLM", + "inputPrice": "Input Price", + "outputPrice": "Output Price", + "imagePrice": "Image Price", + "provider": "Provider", + "mode": "Type" + }, + "pagination": { + "showing": "Showing {from}-{to} of {total}" + }, + "selectedCount": "Selected {count}/{total} models", + "noMatch": "No matching models found", + "noConflicts": "No conflicts", + "applyOverwrite": "Apply Overwrite", + "applying": "Applying..." }, "table": { "modelName": "Model Name", - "type": "Type", "provider": "Provider", + "capabilities": "Capabilities", + "price": "Price", "inputPrice": "Input Price ($/M)", "outputPrice": "Output Price ($/M)", + "priceInput": "In", + "priceOutput": "Out", + "pricePerRequest": "Req", + "cacheReadPrice": "Cache Read ($/M)", + "cacheCreationPrice": "Cache Create ($/M)", + "cache5m": "5m", + "cache1h": "1h+", + "copyModelId": "Copy model ID", "updatedAt": "Updated At", + "actions": "Actions", "typeChat": "Chat", "typeImage": "Image", "typeCompletion": "Completion", @@ -564,6 +642,7 @@ "showing": "Showing {from}-{to} of {total}", "previous": "Previous", "next": "Next", + "perPageLabel": "Per page", "perPage": "{size} per page" }, "stats": { @@ -573,23 +652,25 @@ }, "dialog": { "title": "Update Model Price Table", - "description": "Select and upload JSON file containing model pricing data", - "selectFile": "Click to select JSON file or drag and drop here", + "description": "Select and upload JSON or TOML file containing model pricing data", + "selectFile": "Click to select JSON/TOML file or drag and drop here", "fileSizeLimit": "File size cannot exceed 10MB", "fileSizeLimitSmall": "File size not exceeding 10MB", - "invalidFileType": "Please select a JSON format file", + "invalidFileType": "Please select a JSON or TOML file", "fileTooLarge": "File size exceeds 10MB limit", "upload": "Upload and Update", "uploading": "Uploading...", "updatePriceTable": "Update Price Table", "updating": "Updating...", - "selectJson": "Select JSON File", + "selectJson": "Select File", "updateSuccess": "Price table updated successfully, {count} models updated", "updateFailed": "Update failed", "systemHasBuiltIn": "System has built-in price table", "manualDownload": "You can also manually download", - "latestPriceTable": "latest price table", + "latestPriceTable": "cloud price table", "andUploadViaButton": ", and upload via button above", + "cloudModelCountLoading": "Loading cloud model count...", + "cloudModelCountFailed": "Failed to load cloud model count", "supportedModels": "Currently supports {count} models", "results": { "title": "Update Results", @@ -597,9 +678,52 @@ "success": "Success: {success}", "failed": "Failed: {failed}", "skipped": "Skipped: {skipped}", + "more": " (+{count})", "details": "Details", "viewDetails": "View detailed logs" } + }, + "addModel": "Add Model", + "editModel": "Edit Model", + "deleteModel": "Delete Model", + "addModelDescription": "Manually add a new model price configuration", + "editModelDescription": "Edit the model price configuration", + "deleteConfirm": "Are you sure you want to delete model {name}? This action cannot be undone.", + "form": { + "modelName": "Model ID", + "modelNamePlaceholder": "e.g., gpt-5.2-codex", + "modelNameRequired": "Model ID is required", + "displayName": "Display Name (Optional)", + "displayNamePlaceholder": "e.g., GPT-5.2 Codex", + "type": "Type", + "provider": "Provider", + "providerPlaceholder": "e.g., openai", + "requestPrice": "Per-call Price ($/request)", + "inputPrice": "Input Price ($/M tokens)", + "outputPrice": "Output Price ($/M tokens)", + "outputPriceImage": "Output Price ($/image)", + "cacheReadPrice": "Cache Read Price ($/M tokens)", + "cacheCreationPrice5m": "Cache Creation Price (5m, $/M tokens)", + "cacheCreationPrice1h": "Cache Creation Price (1h+, $/M tokens)" + }, + "drawer": { + "prefillLabel": "Search existing models to prefill", + "prefillEmpty": "No matching models found", + "prefillFailed": "Search failed", + "promptCachingHint": "Enable if the model supports prompt caching", + "cachePricingTitle": "Cache Pricing" + }, + "actions": { + "edit": "Edit", + "more": "More actions", + "delete": "Delete" + }, + "toast": { + "createSuccess": "Model added", + "updateSuccess": "Model updated", + "deleteSuccess": "Model deleted", + "saveFailed": "Failed to save", + "deleteFailed": "Failed to delete" } }, "providers": { @@ -607,6 +731,22 @@ "addFailed": "Failed to add provider", "addProvider": "Add Provider", "addSuccess": "Provider added successfully", + "autoSort": { + "button": "Auto Sort Priority", + "dialogTitle": "Auto Sort Provider Priority", + "dialogDescription": "Automatically assign priority based on cost multiplier (lower cost = higher priority)", + "changeCount": "{count} providers will be updated", + "noChanges": "No changes needed (already sorted)", + "costMultiplierHeader": "Cost Multiplier", + "priorityHeader": "Priority", + "providersHeader": "Providers", + "changesTitle": "Change Details", + "providerHeader": "Provider", + "priorityChangeHeader": "Priority Change", + "confirm": "Apply Changes", + "success": "Updated priority for {count} providers", + "error": "Failed to update priorities" + }, "types": { "claude": { "label": "Claude", diff --git a/messages/en/usage.json b/messages/en/usage.json index 126a9cca8..04932cca3 100644 --- a/messages/en/usage.json +++ b/messages/en/usage.json @@ -473,6 +473,109 @@ } }, + "opencode": { + "title": "OpenCode Usage Guide", + "description": "OpenCode is a CLI + TUI AI coding agent that runs in your terminal and also provides IDE integrations. You can point OpenCode to cch as a single entry to access Claude, GPT, and Gemini models.", + + "installation": { + "title": "Install", + + "macos": { + "description": "On macOS, install OpenCode using one of the following methods:", + "homebrew": { + "title": "Option 2: Homebrew", + "description": "Install via Homebrew:" + } + }, + + "linux": { + "description": "On Linux, install OpenCode using one of the following methods:", + "homebrew": { + "title": "Option 2: Homebrew", + "description": "Install via Homebrew:" + }, + "paru": { + "title": "Option 5: Paru (Arch Linux)", + "description": "Install via paru (AUR):" + } + }, + + "script": { + "title": "Option 1: Official install script", + "description": "Run the following command to install the latest version:" + }, + + "npm": { + "title": "Option 3: npm", + "description": "Install globally via npm:", + "note": "Note: Avoid installing opencode-ai via npm mirror registries. Mirror registries may cause missing dependencies; use the official npm registry if you hit issues." + }, + + "bun": { + "title": "Option 4: Bun", + "description": "Install globally via Bun:" + }, + + "windows": { + "description": "On Windows, we recommend a package manager (Chocolatey/Scoop); npm also works:", + "choco": { + "title": "Option 1: Chocolatey", + "description": "Install via Chocolatey:", + "command": "choco install opencode" + }, + "scoop": { + "title": "Option 2: Scoop", + "description": "Install via Scoop:", + "command": "scoop bucket add extras\nscoop install extras/opencode" + }, + "note": "Note: Bun on Windows is still in progress. Use Chocolatey/Scoop/npm, or download a binary from GitHub Releases." + } + }, + + "configuration": { + "title": "Connect to cch service", + + "configFile": { + "title": "Configure opencode.json", + "path": "Config file path:", + "instruction": "Edit the file and add the following content (one file covers all models):", + + "important": "Important", + "importantPoints": [ + "Create an API key in the cch console and set the CCH_API_KEY environment variable", + "All providers use ${resolvedOrigin}/v1 as baseURL (cch v1 API base URL)", + "When selecting models, use provider_id/model_id (e.g. cchClaude/claude-sonnet-4-5-20250929)" + ] + }, + + "modelSelection": { + "title": "Select a model", + "description": "After starting OpenCode, use the following command in the TUI to view/select models:", + "command": "/models" + } + }, + + "startup": { + "title": "Start opencode", + "description": "Run in your project directory:", + "initNote": "On first launch, opencode loads the config and creates a session." + }, + + "commonIssues": { + "title": "Common issues", + + "commandNotFound": "1. Command not found", + "commandNotFoundWindows": [ + "If installed via npm, make sure your global npm bin directory is on PATH", + "Open a new terminal and try again" + ], + "commandNotFoundUnix": "Check the install location and add it to PATH (e.g. ~/.local/bin or npm global bin)", + + "connectionFailed": "2. API connection failed", + "updateCli": "3. Update opencode" + } + }, + "droid": { "title": "Droid CLI Usage Guide", "description": "Droid is an interactive terminal AI programming assistant developed by Factory AI that supports integration through the cch proxy service. You must register and log in to your Droid official account before use.", diff --git a/messages/ja/dashboard.json b/messages/ja/dashboard.json index 889cd4bcc..b8ece37ac 100644 --- a/messages/ja/dashboard.json +++ b/messages/ja/dashboard.json @@ -1,4 +1,9 @@ { + "actions": { + "copy": "コピー", + "download": "ダウンロード", + "copied": "コピーしました" + }, "title": { "costRanking": "コスト ランキング", "costRankingDescription": "ユーザーコスト ランキングを表示します。データは 5 分ごとに更新されます", @@ -79,8 +84,8 @@ "minRetryCountPlaceholder": "回数を入力(0 で制限なし)", "apply": "フィルターを適用", "reset": "リセット", - "last7days": "過去7日間", - "last30days": "過去30日間", + "last7days": "7日", + "last30days": "30日", "customRange": "カスタム範囲", "export": "エクスポート", "exporting": "エクスポート中...", @@ -1334,6 +1339,10 @@ "threeMonths": "3か月後", "oneYear": "1年後" }, + "providerGroupSelect": { + "providersSuffix": "件のプロバイダー", + "loadFailed": "プロバイダーグループの読み込みに失敗しました" + }, "providerGroup": { "label": "プロバイダーグループ", "placeholder": "プロバイダーグループを選択", diff --git a/messages/ja/myUsage.json b/messages/ja/myUsage.json index 79879f77a..916f9ac39 100644 --- a/messages/ja/myUsage.json +++ b/messages/ja/myUsage.json @@ -1,7 +1,7 @@ { "header": { "title": "マイ利用状況", - "subtitle": "クォータと利用ログを確認", + "welcome": "ようこそ、{name}さん", "logout": "ログアウト", "keyLabel": "キー", "userLabel": "ユーザー", @@ -29,21 +29,6 @@ "unlimited": "無制限", "empty": "クォータ情報がありません" }, - "today": { - "title": "本日の利用", - "autoRefresh": "{seconds}秒ごとに自動更新", - "refresh": "更新", - "calls": "リクエスト数", - "tokensIn": "入力トークン", - "tokensOut": "出力トークン", - "cost": "{currency} コスト", - "modelBreakdown": "モデル別", - "unknownModel": "不明なモデル", - "billingModel": "課金モデル: {model}", - "callsShort": "{count} 回", - "tokensShort": "入力 {in} / 出力 {out}", - "noData": "本日のデータはありません" - }, "logs": { "title": "利用ログ", "autoRefresh": "{seconds}秒ごとに自動更新", @@ -64,7 +49,7 @@ "tokens": "トークン (入/出)", "cacheWrite": "キャッシュ書込", "cacheRead": "キャッシュ読取", - "cost": "{currency} コスト", + "cost": "コスト", "status": "ステータス", "endpoint": "エンドポイント" }, @@ -79,15 +64,52 @@ "title": "有効期限", "keyExpires": "キーの期限", "userExpires": "ユーザーの期限", + "rpmLimit": "RPM制限", "neverExpires": "期限なし", "expired": "期限切れ", "expiresIn": "{time} で期限", "expiringWarning": "まもなく期限" }, "providerGroup": { + "title": "プロバイダーグループ", "keyGroup": "キーグループ", "userGroup": "ユーザーグループ", "allProviders": "すべてのプロバイダー", "inheritedFromUser": "ユーザーから継承" + }, + "stats": { + "title": "統計サマリー", + "autoRefresh": "{seconds}秒ごとに自動更新", + "totalRequests": "リクエスト総数", + "totalCost": "総コスト", + "totalTokens": "トークン総数", + "cacheTokens": "キャッシュトークン", + "input": "入力", + "output": "出力", + "write": "書込", + "read": "読取", + "modelBreakdown": "モデル別", + "keyStats": "キー", + "userStats": "ユーザー", + "noData": "選択期間のデータがありません", + "unknownModel": "不明" + }, + "accessRestrictions": { + "title": "アクセス制限", + "models": "モデル", + "clients": "クライアント", + "noRestrictions": "制限なし" + }, + "quotaCollapsible": { + "title": "クォータ使用状況", + "daily": "日次", + "monthly": "月次", + "total": "合計" + }, + "logsCollapsible": { + "title": "使用ログ", + "lastStatus": "最終: {code} ({time})", + "successRate": "{rate}%", + "noData": "データなし" } } diff --git a/messages/ja/settings.json b/messages/ja/settings.json index f3464d831..01d0e9cab 100644 --- a/messages/ja/settings.json +++ b/messages/ja/settings.json @@ -102,6 +102,16 @@ "verboseProviderErrorDesc": "有効にすると、すべてのプロバイダーが利用不可の場合に詳細なエラーメッセージ(プロバイダー数、レート制限の理由など)を返します。無効の場合は簡潔なエラーコードのみを返します。", "interceptAnthropicWarmupRequests": "Warmup リクエストを遮断(Anthropic)", "interceptAnthropicWarmupRequestsDesc": "有効にすると、Claude Code の Warmup プローブ要求は CCH が直接短い応答を返し、上流プロバイダーへのリクエストを回避します。ログには残りますが、課金/レート制限/統計には含まれません。", + "enableThinkingSignatureRectifier": "thinking 署名整流を有効化", + "enableThinkingSignatureRectifierDesc": "Anthropic プロバイダーで thinking 署名の不整合や不正なリクエストエラーが発生した場合、thinking 関連ブロックを削除して同一プロバイダーへ1回だけ再試行します(既定で有効)。", + "enableResponseFixer": "レスポンス整流を有効化", + "enableResponseFixerDesc": "上流応答の一般的な形式問題(エンコーディング、SSE、途切れた JSON)を自動修復します(既定で有効)。", + "responseFixerFixEncoding": "エンコーディングを修復", + "responseFixerFixEncodingDesc": "BOM/NULL バイトを除去し、無効な UTF-8 を正規化します。", + "responseFixerFixSseFormat": "SSE 形式を修復", + "responseFixerFixSseFormatDesc": "不足している data: 前置きを補い、改行を正規化し、よくあるフィールド形式を修正します。", + "responseFixerFixTruncatedJson": "途切れた JSON を修復", + "responseFixerFixTruncatedJsonDesc": "未閉じの括弧/引用符を補い、末尾カンマを除去し、必要に応じて null を補完します。", "cleanupSchedule": "クリーンアップスケジュール", "cleanupScheduleDesc": "自動クリーンアップの実行スケジュールを選択します", "configUpdated": "システム設定が更新されました。ページが更新され、通貨表示の変更が適用されます。", @@ -524,24 +534,92 @@ "description": "AIモデルの価格設定を管理します" }, "searchPlaceholder": "モデル名を検索...", + "filters": { + "all": "すべて", + "local": "ローカル", + "anthropic": "Anthropic", + "openai": "OpenAI", + "vertex": "Vertex" + }, + "badges": { + "local": "ローカル" + }, + "capabilities": { + "assistantPrefill": "アシスタント事前入力", + "computerUse": "コンピューター利用", + "functionCalling": "関数呼び出し", + "pdfInput": "PDF入力", + "promptCaching": "プロンプトキャッシュ", + "reasoning": "推論", + "responseSchema": "レスポンススキーマ", + "toolChoice": "ツール選択", + "vision": "ビジョン", + "statusSupported": "対応", + "statusUnsupported": "未対応", + "tooltip": "{label}: {status}" + }, "sync": { - "button": "LiteLLM価格を同期", + "button": "クラウド価格表を同期", "syncing": "同期中...", + "checking": "競合を確認中...", "successWithChanges": "価格表を更新: {added}件追加、{updated}件更新、{unchanged}件変化なし", "successNoChanges": "価格表は最新です。更新の必要はありません", "failed": "同期に失敗しました", "failedError": "同期に失敗しました: {error}", "failedNoResult": "価格表は更新されましたが結果が返されていません", "noModels": "モデル価格が見つかりません", - "partialFailure": "一部更新が成功しましたが、{failed}件のモデルが失敗しました" + "partialFailure": "一部更新が成功しましたが、{failed}件のモデルが失敗しました", + "failedModels": "失敗モデル: {models}", + "skippedConflicts": "{count}件の手動モデルをスキップしました" + }, + "conflict": { + "title": "上書きする項目を選択", + "description": "以下のモデルには手動で設定された価格があります。チェックした項目はLiteLLM価格で上書きされ、チェックしない項目は現在のままです", + "searchPlaceholder": "モデルを検索...", + "table": { + "modelName": "モデル", + "manualPrice": "手動価格", + "litellmPrice": "LiteLLM価格", + "action": "操作" + }, + "viewDiff": "差異を表示", + "diffTitle": "価格差異", + "diff": { + "field": "フィールド", + "manual": "手動", + "litellm": "LiteLLM", + "inputPrice": "入力価格", + "outputPrice": "出力価格", + "imagePrice": "画像価格", + "provider": "プロバイダー", + "mode": "タイプ" + }, + "pagination": { + "showing": "{from}〜{to}件を表示(全{total}件)" + }, + "selectedCount": "{count}/{total}件のモデルを選択", + "noMatch": "一致するモデルが見つかりません", + "noConflicts": "競合なし", + "applyOverwrite": "上書きを適用", + "applying": "適用中..." }, "table": { "modelName": "モデル名", - "type": "タイプ", "provider": "プロバイダー", + "capabilities": "機能", + "price": "価格", "inputPrice": "入力価格 ($/M)", "outputPrice": "出力価格 ($/M)", + "priceInput": "入力", + "priceOutput": "出力", + "pricePerRequest": "回", + "cacheReadPrice": "キャッシュ読み取り ($/M)", + "cacheCreationPrice": "キャッシュ作成 ($/M)", + "cache5m": "5m", + "cache1h": "1h+", + "copyModelId": "モデルIDをコピー", "updatedAt": "更新日時", + "actions": "操作", "typeChat": "チャット", "typeImage": "画像生成", "typeCompletion": "補完", @@ -555,6 +633,7 @@ "showing": "{from}〜{to}件を表示(全{total}件)", "previous": "前へ", "next": "次へ", + "perPageLabel": "1ページあたり", "perPage": "1ページあたり{size}件" }, "stats": { @@ -564,23 +643,25 @@ }, "dialog": { "title": "モデル価格表を更新", - "description": "モデル価格データを含むJSONファイルを選択してアップロード", - "selectFile": "JSONファイルをクリックして選択、またはドラッグしてください", + "description": "モデル価格データを含むJSONまたはTOMLファイルを選択してアップロード", + "selectFile": "JSON/TOMLファイルをクリックして選択、またはドラッグしてください", "fileSizeLimit": "ファイルサイズは10MBを超えることはできません", "fileSizeLimitSmall": "ファイルサイズは10MB以下です", - "invalidFileType": "JSON形式のファイルを選択してください", + "invalidFileType": "JSONまたはTOML形式のファイルを選択してください", "fileTooLarge": "ファイルサイズが10MBを超えています", "upload": "アップロードして更新", "uploading": "アップロード中...", "updatePriceTable": "価格表を更新", "updating": "更新中...", - "selectJson": "JSONファイルを選択", + "selectJson": "ファイルを選択", "updateSuccess": "価格表が正常に更新されました。{count}個のモデルを更新しました", "updateFailed": "更新に失敗しました", "systemHasBuiltIn": "システムは組み込み価格表を持っています", "manualDownload": "手動でダウンロードすることもできます", - "latestPriceTable": "最新価格表", + "latestPriceTable": "クラウド価格表", "andUploadViaButton": "、上のボタンでアップロードしてください", + "cloudModelCountLoading": "クラウドモデル数を読み込み中...", + "cloudModelCountFailed": "クラウドモデル数の読み込みに失敗しました", "supportedModels": "現在{count}個のモデルをサポート", "results": { "title": "更新結果", @@ -588,9 +669,52 @@ "success": "成功: {success}", "failed": "失敗: {failed}", "skipped": "スキップ: {skipped}", + "more": " (+{count})", "details": "詳細", "viewDetails": "詳細ログを表示" } + }, + "addModel": "モデルを追加", + "editModel": "モデルを編集", + "deleteModel": "モデルを削除", + "addModelDescription": "新しいモデル価格設定を手動で追加します", + "editModelDescription": "モデルの価格設定を編集します", + "deleteConfirm": "モデル {name} を削除してもよろしいですか?この操作は元に戻せません。", + "form": { + "modelName": "モデルID", + "modelNamePlaceholder": "例: gpt-5.2-codex", + "modelNameRequired": "モデルIDは必須です", + "displayName": "表示名(任意)", + "displayNamePlaceholder": "例: GPT-5.2 Codex", + "type": "タイプ", + "provider": "プロバイダー", + "providerPlaceholder": "例: openai", + "requestPrice": "呼び出し単価 ($/request)", + "inputPrice": "入力価格 ($/M tokens)", + "outputPrice": "出力価格 ($/M tokens)", + "outputPriceImage": "出力価格 ($/image)", + "cacheReadPrice": "キャッシュ読み取り価格 ($/M tokens)", + "cacheCreationPrice5m": "キャッシュ作成価格(5m,$/M tokens)", + "cacheCreationPrice1h": "キャッシュ作成価格(1h+,$/M tokens)" + }, + "drawer": { + "prefillLabel": "既存モデルを検索してプリフィル", + "prefillEmpty": "一致するモデルが見つかりません", + "prefillFailed": "検索に失敗しました", + "promptCachingHint": "モデルがキャッシュに対応している場合のみ有効化し、下のキャッシュ価格を設定してください", + "cachePricingTitle": "キャッシュ価格" + }, + "actions": { + "edit": "編集", + "more": "その他の操作", + "delete": "削除" + }, + "toast": { + "createSuccess": "モデルを追加しました", + "updateSuccess": "モデルを更新しました", + "deleteSuccess": "モデルを削除しました", + "saveFailed": "保存に失敗しました", + "deleteFailed": "削除に失敗しました" } }, "providers": { @@ -598,6 +722,22 @@ "addFailed": "プロバイダーの追加に失敗しました", "addProvider": "プロバイダーを追加", "addSuccess": "プロバイダーが正常に追加されました", + "autoSort": { + "button": "優先度を自動ソート", + "dialogTitle": "プロバイダー優先度の自動ソート", + "dialogDescription": "コスト倍率に基づいて優先度を自動割り当て(低コスト = 高優先度)", + "changeCount": "{count} 件のプロバイダーが更新されます", + "noChanges": "変更不要(ソート済み)", + "costMultiplierHeader": "コスト倍率", + "priorityHeader": "優先度", + "providersHeader": "プロバイダー", + "changesTitle": "変更詳細", + "providerHeader": "プロバイダー", + "priorityChangeHeader": "優先度変更", + "confirm": "変更を適用", + "success": "{count} 件のプロバイダーの優先度を更新しました", + "error": "優先度の更新に失敗しました" + }, "circuitBroken": "サーキットブレーカー作動中", "clone": "プロバイダーを複製", "cloneFailed": "コピーに失敗しました", diff --git a/messages/ja/usage.json b/messages/ja/usage.json index e9648d5cb..612d05235 100644 --- a/messages/ja/usage.json +++ b/messages/ja/usage.json @@ -473,6 +473,109 @@ } }, + "opencode": { + "title": "OpenCode 利用ガイド", + "description": "OpenCode はターミナルで動作する CLI + TUI の AI コーディングエージェントで、IDE 連携も提供します。OpenCode の接続先を cch に設定することで、Claude / GPT / Gemini の各モデルを利用できます。", + + "installation": { + "title": "インストール", + + "macos": { + "description": "macOS では以下のいずれかの方法で OpenCode をインストールできます:", + "homebrew": { + "title": "方法2:Homebrew", + "description": "Homebrew でインストール:" + } + }, + + "linux": { + "description": "Linux では以下のいずれかの方法で OpenCode をインストールできます:", + "homebrew": { + "title": "方法2:Homebrew", + "description": "Homebrew でインストール:" + }, + "paru": { + "title": "方法5:Paru(Arch Linux)", + "description": "Arch Linux の場合、paru(AUR)でインストール:" + } + }, + + "script": { + "title": "方法1:公式インストールスクリプト", + "description": "最新版をインストールするには次のコマンドを実行します:" + }, + + "npm": { + "title": "方法3:npm", + "description": "npm でグローバルにインストール:", + "note": "注: opencode-ai を npm のミラー(サードパーティ registry)経由でインストールするのは推奨しません。依存関係が欠ける場合があるため、問題が出たら公式 npm registry を使用してください。" + }, + + "bun": { + "title": "方法4:Bun", + "description": "Bun でグローバルにインストール:" + }, + + "windows": { + "description": "Windows ではパッケージマネージャ(Chocolatey/Scoop)を推奨します。npm でもインストールできます:", + "choco": { + "title": "方法1:Chocolatey", + "description": "Chocolatey でインストール:", + "command": "choco install opencode" + }, + "scoop": { + "title": "方法2:Scoop", + "description": "Scoop でインストール:", + "command": "scoop bucket add extras\nscoop install extras/opencode" + }, + "note": "注: Windows での Bun インストールは現在対応中です。Chocolatey/Scoop/npm を使用するか、GitHub Releases からバイナリを取得してください。" + } + }, + + "configuration": { + "title": "cch サービスに接続", + + "configFile": { + "title": "opencode.json を設定", + "path": "設定ファイルのパス:", + "instruction": "設定ファイルを編集し、以下を追加します(1 つの設定ファイルで全モデルをカバーします):", + + "important": "重要", + "importantPoints": [ + "cch の管理画面で API Key を作成し、環境変数 CCH_API_KEY を設定してください", + "3 つの provider すべてで baseURL は ${resolvedOrigin}/v1(cch の v1 API ベース URL)", + "モデル選択は provider_id/model_id 形式(例:cchClaude/claude-sonnet-4-5-20250929)" + ] + }, + + "modelSelection": { + "title": "モデルを選択", + "description": "OpenCode を起動したら、TUI で次のコマンドを入力してモデルを表示/選択します:", + "command": "/models" + } + }, + + "startup": { + "title": "opencode を起動", + "description": "プロジェクトディレクトリで次を実行します:", + "initNote": "初回起動時に、opencode は設定を読み込み、セッションを作成します。" + }, + + "commonIssues": { + "title": "よくある問題", + + "commandNotFound": "1. コマンドが見つからない", + "commandNotFoundWindows": [ + "npm でインストールした場合、npm のグローバル bin パスが PATH に含まれているか確認してください", + "新しいターミナルを開いて再試行してください" + ], + "commandNotFoundUnix": "インストール先を確認し、PATH に追加してください(例:~/.local/bin または npm のグローバル bin)", + + "connectionFailed": "2. API 接続に失敗", + "updateCli": "3. opencode を更新" + } + }, + "droid": { "title": "Droid CLI 使用ガイド", "description": "Droid は Factory AI が開発したインタラクティブターミナル AI プログラミングアシスタントで、cch プロキシサービスを通じた統合をサポートしています。使用する前に、Droid 公式アカウントに登録してログインする必要があります。", diff --git a/messages/ru/dashboard.json b/messages/ru/dashboard.json index fdf2d0594..1b332bc7e 100644 --- a/messages/ru/dashboard.json +++ b/messages/ru/dashboard.json @@ -1,4 +1,9 @@ { + "actions": { + "copy": "Копировать", + "download": "Скачать", + "copied": "Скопировано" + }, "title": { "costRanking": "Таблица расходов", "costRankingDescription": "Просмотр рейтинга расходов пользователей, данные обновляются каждые 5 минут", @@ -79,8 +84,8 @@ "minRetryCountPlaceholder": "Введите минимум (0 — без ограничения)", "apply": "Применить фильтр", "reset": "Сброс", - "last7days": "Последние 7 дней", - "last30days": "Последние 30 дней", + "last7days": "7д", + "last30days": "30д", "customRange": "Произвольный диапазон", "export": "Экспорт", "exporting": "Экспорт...", @@ -1345,6 +1350,10 @@ "threeMonths": "Через 3 месяца", "oneYear": "Через год" }, + "providerGroupSelect": { + "providersSuffix": "провайдеров", + "loadFailed": "Не удалось загрузить группы провайдеров" + }, "providerGroup": { "label": "Группа провайдеров", "placeholder": "Выберите группу провайдеров", diff --git a/messages/ru/myUsage.json b/messages/ru/myUsage.json index 18bfe393a..5f744bb21 100644 --- a/messages/ru/myUsage.json +++ b/messages/ru/myUsage.json @@ -1,7 +1,7 @@ { "header": { "title": "Мои расходы", - "subtitle": "Лимиты и журналы использования", + "welcome": "Добро пожаловать, {name}", "logout": "Выйти", "keyLabel": "Ключ", "userLabel": "Пользователь", @@ -29,21 +29,6 @@ "unlimited": "Без лимита", "empty": "Нет данных о лимитах" }, - "today": { - "title": "Использование сегодня", - "autoRefresh": "Автообновление каждые {seconds}с", - "refresh": "Обновить", - "calls": "Запросы", - "tokensIn": "Входные токены", - "tokensOut": "Выходные токены", - "cost": "Стоимость {currency}", - "modelBreakdown": "По моделям", - "unknownModel": "Неизвестная модель", - "billingModel": "Биллинговая модель: {model}", - "callsShort": "{count} раз", - "tokensShort": "Вх {in} / Вых {out}", - "noData": "Нет данных за сегодня" - }, "logs": { "title": "Журнал использования", "autoRefresh": "Автообновление каждые {seconds}с", @@ -62,9 +47,9 @@ "time": "Время", "model": "Модель", "tokens": "Токены (вх/вых)", - "cacheWrite": "Запись кэша", - "cacheRead": "Чтение кэша", - "cost": "Стоимость {currency}", + "cacheWrite": "Запись кэш", + "cacheRead": "Чтение кэш", + "cost": "Цена", "status": "Статус", "endpoint": "API Endpoint" }, @@ -79,15 +64,52 @@ "title": "Срок действия", "keyExpires": "Срок ключа", "userExpires": "Срок пользователя", + "rpmLimit": "Лимит RPM", "neverExpires": "Бессрочно", "expired": "Истёк", "expiresIn": "через {time}", "expiringWarning": "Скоро истечёт" }, "providerGroup": { + "title": "Группы провайдеров", "keyGroup": "Группа ключа", "userGroup": "Группа пользователя", "allProviders": "Все провайдеры", "inheritedFromUser": "Наследовано от пользователя" + }, + "stats": { + "title": "Сводка статистики", + "autoRefresh": "Автообновление каждые {seconds}с", + "totalRequests": "Всего запросов", + "totalCost": "Общая стоимость", + "totalTokens": "Всего токенов", + "cacheTokens": "Токены кэша", + "input": "Вход", + "output": "Выход", + "write": "Запись", + "read": "Чтение", + "modelBreakdown": "По моделям", + "keyStats": "Ключ", + "userStats": "Пользователь", + "noData": "Нет данных за выбранный период", + "unknownModel": "Неизвестно" + }, + "accessRestrictions": { + "title": "Ограничения доступа", + "models": "Модели", + "clients": "Клиенты", + "noRestrictions": "Без ограничений" + }, + "quotaCollapsible": { + "title": "Использование квоты", + "daily": "День", + "monthly": "Месяц", + "total": "Всего" + }, + "logsCollapsible": { + "title": "Журнал запросов", + "lastStatus": "Посл.: {code} ({time})", + "successRate": "{rate}%", + "noData": "Нет данных" } } diff --git a/messages/ru/settings.json b/messages/ru/settings.json index afbc5940e..97daad508 100644 --- a/messages/ru/settings.json +++ b/messages/ru/settings.json @@ -102,6 +102,16 @@ "verboseProviderErrorDesc": "При включении возвращает подробные сообщения об ошибках при недоступности всех провайдеров (количество провайдеров, причины ограничений и т.д.); при отключении возвращает только простой код ошибки.", "interceptAnthropicWarmupRequests": "Перехватывать Warmup-запросы (Anthropic)", "interceptAnthropicWarmupRequestsDesc": "Если включено, Warmup-пробные запросы Claude Code будут отвечены самим CCH без обращения к провайдерам; запрос сохраняется в логах, но не тарифицируется, не учитывается в лимитах и исключается из статистики.", + "enableThinkingSignatureRectifier": "Включить исправление thinking-signature", + "enableThinkingSignatureRectifierDesc": "Если Anthropic-провайдер возвращает ошибку несовместимой подписи thinking или некорректного запроса, автоматически удаляет несовместимые thinking-блоки и повторяет запрос один раз к тому же провайдеру (включено по умолчанию).", + "enableResponseFixer": "Включить исправление ответов", + "enableResponseFixerDesc": "Автоматически исправляет распространённые проблемы ответа у провайдеров (кодировка, SSE, обрезанный JSON). Включено по умолчанию.", + "responseFixerFixEncoding": "Исправлять кодировку", + "responseFixerFixEncodingDesc": "Удаляет BOM/нулевые байты и нормализует невалидный UTF-8.", + "responseFixerFixSseFormat": "Исправлять формат SSE", + "responseFixerFixSseFormatDesc": "Добавляет отсутствующий префикс data:, нормализует переводы строк и исправляет распространённые поля.", + "responseFixerFixTruncatedJson": "Исправлять обрезанный JSON", + "responseFixerFixTruncatedJsonDesc": "Закрывает незакрытые скобки/кавычки, удаляет завершающие запятые и при необходимости дополняет null.", "cleanupSchedule": "График очистки", "cleanupScheduleDesc": "Выбрать расписание автоматической очистки", "configUpdated": "Параметры системы обновлены. Страница обновится для применения изменений валюты.", @@ -524,24 +534,92 @@ "description": "Управление ценами AI моделей" }, "searchPlaceholder": "Поиск по названию модели...", + "filters": { + "all": "Все", + "local": "Локальные", + "anthropic": "Anthropic", + "openai": "OpenAI", + "vertex": "Vertex" + }, + "badges": { + "local": "Локальная" + }, + "capabilities": { + "assistantPrefill": "Предзаполнение ассистента", + "computerUse": "Использование компьютера", + "functionCalling": "Вызов функций", + "pdfInput": "Ввод PDF", + "promptCaching": "Кэширование промпта", + "reasoning": "Рассуждение", + "responseSchema": "Схема ответа", + "toolChoice": "Выбор инструментов", + "vision": "Зрение", + "statusSupported": "Поддерживается", + "statusUnsupported": "Не поддерживается", + "tooltip": "{label}: {status}" + }, "sync": { - "button": "Синхронизировать цены LiteLLM", + "button": "Синхронизировать облачный прайс-лист", "syncing": "Синхронизация...", + "checking": "Проверка конфликтов...", "successWithChanges": "Обновление прайс-листа: добавлено {added}, обновлено {updated}, без изменений {unchanged}", "successNoChanges": "Прайс-лист актуален, обновление не требуется", "failed": "Ошибка синхронизации", "failedError": "Ошибка синхронизации: {error}", "failedNoResult": "Прайс-лист обновлен но результат не возвращен", "noModels": "Цены моделей не найдены", - "partialFailure": "Частичное обновление выполнено, но {failed} моделей не удалось обновить" + "partialFailure": "Частичное обновление выполнено, но {failed} моделей не удалось обновить", + "failedModels": "Не удалось обновить модели: {models}", + "skippedConflicts": "Пропущено {count} ручных моделей" + }, + "conflict": { + "title": "Выберите элементы для перезаписи", + "description": "Следующие модели имеют ручные цены. Отмеченные будут перезаписаны ценами LiteLLM, неотмеченные останутся без изменений", + "searchPlaceholder": "Поиск моделей...", + "table": { + "modelName": "Модель", + "manualPrice": "Ручная цена", + "litellmPrice": "Цена LiteLLM", + "action": "Действие" + }, + "viewDiff": "Показать различия", + "diffTitle": "Различия цен", + "diff": { + "field": "Поле", + "manual": "Ручное", + "litellm": "LiteLLM", + "inputPrice": "Цена ввода", + "outputPrice": "Цена вывода", + "imagePrice": "Цена изображения", + "provider": "Поставщик", + "mode": "Тип" + }, + "pagination": { + "showing": "Показано {from}-{to} из {total}" + }, + "selectedCount": "Выбрано {count}/{total} моделей", + "noMatch": "Модели не найдены", + "noConflicts": "Конфликтов нет", + "applyOverwrite": "Применить перезапись", + "applying": "Применение..." }, "table": { "modelName": "Название модели", - "type": "Тип", "provider": "Поставщик", + "capabilities": "Возможности", + "price": "Цена", "inputPrice": "Цена ввода ($/M)", "outputPrice": "Цена вывода ($/M)", + "priceInput": "Ввод", + "priceOutput": "Вывод", + "pricePerRequest": "Запрос", + "cacheReadPrice": "Чтение кэша ($/M)", + "cacheCreationPrice": "Создание кэша ($/M)", + "cache5m": "5m", + "cache1h": "1h+", + "copyModelId": "Скопировать ID модели", "updatedAt": "Обновлено", + "actions": "Действия", "typeChat": "Чат", "typeImage": "Генерация изображений", "typeCompletion": "Дополнение", @@ -555,6 +633,7 @@ "showing": "Показано {from}-{to} из {total}", "previous": "Назад", "next": "Вперёд", + "perPageLabel": "На странице", "perPage": "{size} на странице" }, "stats": { @@ -564,23 +643,25 @@ }, "dialog": { "title": "Обновить прайс-лист", - "description": "Выберите и загрузите JSON файл с данными о ценах моделей", - "selectFile": "Нажмите для выбора JSON или перетащите сюда", + "description": "Выберите и загрузите JSON или TOML файл с данными о ценах моделей", + "selectFile": "Нажмите для выбора JSON/TOML или перетащите сюда", "fileSizeLimit": "Размер файла не может превышать 10MB", "fileSizeLimitSmall": "Размер файла не превышает 10MB", - "invalidFileType": "Пожалуйста, выберите файл в формате JSON", + "invalidFileType": "Пожалуйста, выберите файл JSON или TOML", "fileTooLarge": "Размер файла превышает лимит 10MB", "upload": "Загрузить и обновить", "uploading": "Загрузка...", "updatePriceTable": "Обновить прайс-лист", "updating": "Обновление...", - "selectJson": "Выбрать JSON файл", + "selectJson": "Выбрать файл", "updateSuccess": "Прайс-лист успешно обновлён, {count} моделей обновлено", "updateFailed": "Ошибка обновления", "systemHasBuiltIn": "Система имеет встроенный прайс-лист", "manualDownload": "Вы также можете скачать вручную", - "latestPriceTable": "последний прайс-лист", + "latestPriceTable": "облачный прайс-лист", "andUploadViaButton": ", и загрузить через кнопку выше", + "cloudModelCountLoading": "Загрузка количества моделей из облака...", + "cloudModelCountFailed": "Не удалось загрузить количество моделей из облака", "supportedModels": "Поддерживается {count} моделей", "results": { "title": "Результаты обновления", @@ -588,9 +669,52 @@ "success": "Успешно: {success}", "failed": "Ошибок: {failed}", "skipped": "Пропущено: {skipped}", + "more": " (+{count})", "details": "Подробности", "viewDetails": "Просмотреть подробный журнал" } + }, + "addModel": "Добавить модель", + "editModel": "Редактировать модель", + "deleteModel": "Удалить модель", + "addModelDescription": "Вручную добавить новую цену модели", + "editModelDescription": "Редактировать цену модели", + "deleteConfirm": "Удалить модель {name}? Это действие необратимо.", + "form": { + "modelName": "ID модели", + "modelNamePlaceholder": "например: gpt-5.2-codex", + "modelNameRequired": "ID модели обязателен", + "displayName": "Отображаемое имя (необязательно)", + "displayNamePlaceholder": "например: GPT-5.2 Codex", + "type": "Тип", + "provider": "Поставщик", + "providerPlaceholder": "например: openai", + "requestPrice": "Цена за вызов ($/request)", + "inputPrice": "Цена ввода ($/M токенов)", + "outputPrice": "Цена вывода ($/M токенов)", + "outputPriceImage": "Цена вывода ($/изображение)", + "cacheReadPrice": "Цена чтения кэша ($/M токенов)", + "cacheCreationPrice5m": "Цена создания кэша (5m, $/M токенов)", + "cacheCreationPrice1h": "Цена создания кэша (1h+, $/M токенов)" + }, + "drawer": { + "prefillLabel": "Поиск существующих моделей для автозаполнения", + "prefillEmpty": "Модели не найдены", + "prefillFailed": "Ошибка поиска", + "promptCachingHint": "Включайте только если модель поддерживает кэширование, и задайте цены кэша ниже", + "cachePricingTitle": "Цены кэша" + }, + "actions": { + "edit": "Редактировать", + "more": "Больше действий", + "delete": "Удалить" + }, + "toast": { + "createSuccess": "Модель добавлена", + "updateSuccess": "Модель обновлена", + "deleteSuccess": "Модель удалена", + "saveFailed": "Ошибка сохранения", + "deleteFailed": "Ошибка удаления" } }, "providers": { @@ -598,6 +722,22 @@ "addFailed": "Ошибка добавления поставщика", "addProvider": "Добавить провайдера", "addSuccess": "Поставщик добавлен успешно", + "autoSort": { + "button": "Авто сортировка приоритета", + "dialogTitle": "Автоматическая сортировка приоритета поставщиков", + "dialogDescription": "Автоматически назначить приоритет на основе множителя стоимости (низкая стоимость = высокий приоритет)", + "changeCount": "{count} поставщиков будет обновлено", + "noChanges": "Изменения не требуются (уже отсортировано)", + "costMultiplierHeader": "Множитель стоимости", + "priorityHeader": "Приоритет", + "providersHeader": "Поставщики", + "changesTitle": "Детали изменений", + "providerHeader": "Поставщик", + "priorityChangeHeader": "Изменение приоритета", + "confirm": "Применить изменения", + "success": "Обновлён приоритет для {count} поставщиков", + "error": "Не удалось обновить приоритеты" + }, "circuitBroken": "Цепь разомкнута", "clone": "Дублировать поставщика", "cloneFailed": "Ошибка копирования", diff --git a/messages/ru/usage.json b/messages/ru/usage.json index d9461b47e..33bd591e3 100644 --- a/messages/ru/usage.json +++ b/messages/ru/usage.json @@ -473,6 +473,109 @@ } }, + "opencode": { + "title": "Руководство по OpenCode", + "description": "OpenCode — это CLI + TUI агент для программирования в терминале, также есть интеграции для IDE. Вы можете настроить OpenCode на cch как единый вход для доступа к моделям Claude, GPT и Gemini.", + + "installation": { + "title": "Установка", + + "macos": { + "description": "В macOS установите OpenCode одним из следующих способов:", + "homebrew": { + "title": "Способ 2: Homebrew", + "description": "Установка через Homebrew:" + } + }, + + "linux": { + "description": "В Linux установите OpenCode одним из следующих способов:", + "homebrew": { + "title": "Способ 2: Homebrew", + "description": "Установка через Homebrew:" + }, + "paru": { + "title": "Способ 5: Paru (Arch Linux)", + "description": "Для Arch Linux можно установить через paru (AUR):" + } + }, + + "script": { + "title": "Способ 1: Официальный install-скрипт", + "description": "Выполните команду для установки последней версии:" + }, + + "npm": { + "title": "Способ 3: npm", + "description": "Глобальная установка через npm:", + "note": "Примечание: не рекомендуем устанавливать opencode-ai через npm-зеркала (сторонние registry). В зеркалах могут отсутствовать зависимости; при проблемах используйте официальный npm registry." + }, + + "bun": { + "title": "Способ 4: Bun", + "description": "Глобальная установка через Bun:" + }, + + "windows": { + "description": "В Windows рекомендуем использовать пакетный менеджер (Chocolatey/Scoop), либо npm:", + "choco": { + "title": "Способ 1: Chocolatey", + "description": "Установка через Chocolatey:", + "command": "choco install opencode" + }, + "scoop": { + "title": "Способ 2: Scoop", + "description": "Установка через Scoop:", + "command": "scoop bucket add extras\nscoop install extras/opencode" + }, + "note": "Примечание: поддержка установки через Bun в Windows пока в процессе. Используйте Chocolatey/Scoop/npm или скачайте бинарник из GitHub Releases." + } + }, + + "configuration": { + "title": "Подключение к cch", + + "configFile": { + "title": "Настройка opencode.json", + "path": "Путь к конфигурационному файлу:", + "instruction": "Отредактируйте файл и добавьте следующий контент (один файл покрывает все модели):", + + "important": "Важно", + "importantPoints": [ + "Создайте API key в панели cch и задайте переменную окружения CCH_API_KEY", + "Все provider используют ${resolvedOrigin}/v1 как baseURL (базовый URL cch v1 API)", + "При выборе модели используйте provider_id/model_id (например, cchClaude/claude-sonnet-4-5-20250929)" + ] + }, + + "modelSelection": { + "title": "Выбор модели", + "description": "После запуска OpenCode в TUI выполните команду для просмотра/выбора моделей:", + "command": "/models" + } + }, + + "startup": { + "title": "Запуск opencode", + "description": "В каталоге проекта выполните:", + "initNote": "При первом запуске opencode загрузит конфигурацию и создаст сессию." + }, + + "commonIssues": { + "title": "Типичные проблемы", + + "commandNotFound": "1. Команда не найдена", + "commandNotFoundWindows": [ + "Если установили через npm, убедитесь, что глобальный npm bin добавлен в PATH", + "Откройте новый терминал и повторите" + ], + "commandNotFoundUnix": "Проверьте путь установки и добавьте его в PATH (например, ~/.local/bin или глобальный npm bin)", + + "connectionFailed": "2. Сбой подключения API", + "updateCli": "3. Обновление opencode" + } + }, + "droid": { "title": "Руководство по использованию Droid CLI", "description": "Droid - это интерактивный помощник программирования на основе ИИ, разработанный Factory AI, поддерживающий интеграцию через прокси-сервис cch. Перед использованием вы должны зарегистрировать и войти в свой официальный аккаунт Droid.", diff --git a/messages/zh-CN/dashboard.json b/messages/zh-CN/dashboard.json index 7e3f22f31..40b1be77a 100644 --- a/messages/zh-CN/dashboard.json +++ b/messages/zh-CN/dashboard.json @@ -1,4 +1,9 @@ { + "actions": { + "copy": "复制", + "download": "下载", + "copied": "已复制" + }, "title": { "costRanking": "消耗排行榜", "costRankingDescription": "查看用户消耗排名,数据每 5 分钟更新一次", @@ -1373,6 +1378,10 @@ "threeMonths": "三月后", "oneYear": "一年后" }, + "providerGroupSelect": { + "providersSuffix": "个供应商", + "loadFailed": "加载供应商分组失败" + }, "providerGroup": { "label": "供应商分组", "placeholder": "选择供应商分组", diff --git a/messages/zh-CN/myUsage.json b/messages/zh-CN/myUsage.json index 33921cd5c..643048ea4 100644 --- a/messages/zh-CN/myUsage.json +++ b/messages/zh-CN/myUsage.json @@ -1,7 +1,7 @@ { "header": { "title": "我的用量", - "subtitle": "查看额度与使用记录", + "welcome": "欢迎,{name}", "logout": "退出登录", "keyLabel": "密钥", "userLabel": "用户", @@ -29,21 +29,6 @@ "unlimited": "不限", "empty": "暂无额度数据" }, - "today": { - "title": "今日使用", - "autoRefresh": "每{seconds}s自动刷新", - "refresh": "刷新", - "calls": "调用次数", - "tokensIn": "输入 Tokens", - "tokensOut": "输出 Tokens", - "cost": "{currency} 消耗", - "modelBreakdown": "按模型", - "unknownModel": "未知模型", - "billingModel": "计费模型:{model}", - "callsShort": "{count} 次", - "tokensShort": "入 {in} / 出 {out}", - "noData": "今日暂无数据" - }, "logs": { "title": "使用日志", "autoRefresh": "每 {seconds} 秒自动刷新", @@ -64,7 +49,7 @@ "tokens": "Tokens (入/出)", "cacheWrite": "缓存写入", "cacheRead": "缓存读取", - "cost": "{currency} 消耗", + "cost": "消耗", "status": "状态", "endpoint": "API 端点" }, @@ -79,15 +64,52 @@ "title": "过期时间", "keyExpires": "密钥过期", "userExpires": "用户过期", + "rpmLimit": "RPM限制", "neverExpires": "永不过期", "expired": "已过期", "expiresIn": "剩余 {time}", "expiringWarning": "即将过期" }, "providerGroup": { + "title": "供应商分组", "keyGroup": "密钥分组", "userGroup": "用户分组", "allProviders": "全部供应商", "inheritedFromUser": "继承自用户" + }, + "stats": { + "title": "统计摘要", + "autoRefresh": "每{seconds}秒自动刷新", + "totalRequests": "总请求数", + "totalCost": "总费用", + "totalTokens": "总Token数", + "cacheTokens": "缓存Token", + "input": "输入", + "output": "输出", + "write": "写入", + "read": "读取", + "modelBreakdown": "按模型", + "keyStats": "密钥", + "userStats": "用户", + "noData": "所选时段无数据", + "unknownModel": "未知" + }, + "accessRestrictions": { + "title": "访问限制", + "models": "模型", + "clients": "客户端", + "noRestrictions": "无限制" + }, + "quotaCollapsible": { + "title": "配额使用", + "daily": "日", + "monthly": "月", + "total": "总计" + }, + "logsCollapsible": { + "title": "使用日志", + "lastStatus": "最近: {code} ({time})", + "successRate": "{rate}%", + "noData": "无数据" } } diff --git a/messages/zh-CN/settings.json b/messages/zh-CN/settings.json index fed1cfe4f..151e6cb7e 100644 --- a/messages/zh-CN/settings.json +++ b/messages/zh-CN/settings.json @@ -85,6 +85,16 @@ "enableHttp2Desc": "启用后,代理请求将优先使用 HTTP/2 协议。如果 HTTP/2 失败,将自动降级到 HTTP/1.1。", "interceptAnthropicWarmupRequests": "拦截 Warmup 请求(Anthropic)", "interceptAnthropicWarmupRequestsDesc": "开启后,识别到 Claude Code 的 Warmup 探测请求将由 CCH 直接抢答短响应,避免访问上游供应商;该请求会记录在日志中,但不计费、不限流、不计入统计。", + "enableThinkingSignatureRectifier": "启用 thinking 签名整流器", + "enableThinkingSignatureRectifierDesc": "当 Anthropic 类型供应商返回 thinking 签名不兼容或非法请求等错误时,自动移除不兼容的 thinking 相关块并对同一供应商重试一次(默认开启)。", + "enableResponseFixer": "启用响应整流", + "enableResponseFixerDesc": "自动修复上游响应中常见的编码、SSE 与 JSON 格式问题(默认开启)。", + "responseFixerFixEncoding": "修复编码问题", + "responseFixerFixEncodingDesc": "移除 BOM 与空字节,并对无效 UTF-8 做兼容处理。", + "responseFixerFixSseFormat": "修复 SSE 格式", + "responseFixerFixSseFormatDesc": "补齐 data: 前缀、统一换行符,并修复常见字段格式。", + "responseFixerFixTruncatedJson": "修复截断的 JSON", + "responseFixerFixTruncatedJsonDesc": "补齐未闭合的括号/引号,移除尾随逗号,必要时补 null。", "saveSettings": "保存设置", "keepDays": "保留天数", "keepDaysDesc": "清理超过此天数的历史日志", @@ -130,6 +140,22 @@ "subtitle": "服务商管理", "subtitleDesc": "配置上游服务商的金额限流和并发限制,留空表示无限制。", "add": "添加供应商", + "autoSort": { + "button": "自动排序优先级", + "dialogTitle": "自动排序供应商优先级", + "dialogDescription": "根据成本倍率自动分配优先级(低成本 = 高优先级)", + "changeCount": "{count} 个供应商将被更新", + "noChanges": "无需更改(已排序)", + "costMultiplierHeader": "成本倍率", + "priorityHeader": "优先级", + "providersHeader": "供应商", + "changesTitle": "变更详情", + "providerHeader": "供应商", + "priorityChangeHeader": "优先级变更", + "confirm": "应用变更", + "success": "已更新 {count} 个供应商的优先级", + "error": "更新优先级失败" + }, "types": { "claude": { "label": "Claude", @@ -1236,24 +1262,92 @@ "description": "管理 AI 模型的价格配置" }, "searchPlaceholder": "搜索模型名称...", + "filters": { + "all": "全部", + "local": "本地", + "anthropic": "Anthropic", + "openai": "OpenAI", + "vertex": "Vertex" + }, + "badges": { + "local": "本地" + }, + "capabilities": { + "assistantPrefill": "助手预填充", + "computerUse": "电脑使用", + "functionCalling": "函数调用", + "pdfInput": "PDF 输入", + "promptCaching": "Prompt 缓存", + "reasoning": "推理", + "responseSchema": "响应 Schema", + "toolChoice": "工具选择", + "vision": "视觉", + "statusSupported": "支持", + "statusUnsupported": "不支持", + "tooltip": "{label}: {status}" + }, "sync": { - "button": "同步 LiteLLM 价格", + "button": "同步云端价格表", "syncing": "同步中...", + "checking": "检查冲突...", "successWithChanges": "价格表更新: 新增 {added} 个,更新 {updated} 个,未变化 {unchanged} 个", "successNoChanges": "价格表已是最新,无需更新", "failed": "同步失败", "failedError": "同步失败: {error}", "failedNoResult": "价格表更新成功但未返回处理结果", "noModels": "未找到支持的模型价格", - "partialFailure": "部分更新成功,但有 {failed} 个模型失败" + "partialFailure": "部分更新成功,但有 {failed} 个模型失败", + "failedModels": "失败模型: {models}", + "skippedConflicts": "跳过 {count} 个手动模型" + }, + "conflict": { + "title": "选择要覆盖的冲突项", + "description": "以下模型存在手动维护的价格,勾选后将用 LiteLLM 价格覆盖,未勾选的保持本地不变", + "searchPlaceholder": "搜索模型...", + "table": { + "modelName": "模型", + "manualPrice": "手动价格", + "litellmPrice": "LiteLLM 价格", + "action": "操作" + }, + "viewDiff": "查看差异", + "diffTitle": "价格差异对比", + "diff": { + "field": "字段", + "manual": "手动", + "litellm": "LiteLLM", + "inputPrice": "输入价格", + "outputPrice": "输出价格", + "imagePrice": "图片价格", + "provider": "供应商", + "mode": "类型" + }, + "pagination": { + "showing": "显示 {from}-{to} 条,共 {total} 条" + }, + "selectedCount": "已选择 {count}/{total} 个模型", + "noMatch": "未找到匹配的模型", + "noConflicts": "无冲突项", + "applyOverwrite": "应用覆盖", + "applying": "应用中..." }, "table": { "modelName": "模型名称", - "type": "类型", "provider": "提供商", + "capabilities": "能力", + "price": "价格", "inputPrice": "输入价格 ($/M)", "outputPrice": "输出价格 ($/M)", + "priceInput": "输入", + "priceOutput": "输出", + "pricePerRequest": "按次", + "cacheReadPrice": "缓存读取 ($/M)", + "cacheCreationPrice": "缓存创建 ($/M)", + "cache5m": "5m", + "cache1h": "1h+", + "copyModelId": "复制模型 ID", "updatedAt": "更新时间", + "actions": "操作", "typeChat": "对话", "typeImage": "图像生成", "typeCompletion": "补全", @@ -1267,6 +1361,7 @@ "showing": "显示 {from}-{to} 条,共 {total} 条", "previous": "上一页", "next": "下一页", + "perPageLabel": "每页", "perPage": "每页 {size} 条" }, "stats": { @@ -1276,23 +1371,25 @@ }, "dialog": { "title": "更新模型价格表", - "description": "选择包含模型价格数据的 JSON 文件并上传", - "selectFile": "点击选择 JSON 文件或拖拽到此处", + "description": "选择包含模型价格数据的 JSON 或 TOML 文件并上传", + "selectFile": "点击选择 JSON/TOML 文件或拖拽到此处", "fileSizeLimit": "文件大小不能超过 10MB", "fileSizeLimitSmall": "文件大小不超过 10MB", - "invalidFileType": "请选择 JSON 格式的文件", + "invalidFileType": "请选择 JSON 或 TOML 格式的文件", "fileTooLarge": "文件大小超过 10MB 限制", "upload": "上传并更新", "uploading": "上传中...", "updatePriceTable": "更新价格表", "updating": "更新中...", - "selectJson": "选择 JSON 文件", + "selectJson": "选择文件", "updateSuccess": "价格表更新成功,共更新 {count} 个模型", "updateFailed": "更新失败", "systemHasBuiltIn": "系统已内置价格表", "manualDownload": "你也可以手动下载", - "latestPriceTable": "最新价格表", + "latestPriceTable": "云端价格表", "andUploadViaButton": ",并通过上方按钮上传", + "cloudModelCountLoading": "云端模型数量加载中...", + "cloudModelCountFailed": "云端模型数量加载失败", "supportedModels": "当前支持 {count} 个模型", "results": { "title": "更新结果", @@ -1300,9 +1397,52 @@ "success": "成功: {success}", "failed": "失败: {failed}", "skipped": "跳过: {skipped}", + "more": " (+{count})", "details": "详细信息", "viewDetails": "查看详细日志" } + }, + "addModel": "添加模型", + "editModel": "编辑模型", + "deleteModel": "删除模型", + "addModelDescription": "手动添加新的模型价格配置", + "editModelDescription": "编辑模型的价格配置", + "deleteConfirm": "确定要删除模型 {name} 吗?此操作不可撤销。", + "form": { + "modelName": "模型 ID", + "modelNamePlaceholder": "例如: gpt-5.2-codex", + "modelNameRequired": "模型 ID 不能为空", + "displayName": "展示名称(可选)", + "displayNamePlaceholder": "例如: GPT-5.2 Codex", + "type": "类型", + "provider": "供应商", + "providerPlaceholder": "例如: openai", + "requestPrice": "按次调用价格 ($/request)", + "inputPrice": "输入价格 ($/M tokens)", + "outputPrice": "输出价格 ($/M tokens)", + "outputPriceImage": "输出价格 ($/image)", + "cacheReadPrice": "缓存读取价格 ($/M tokens)", + "cacheCreationPrice5m": "缓存创建价格(5m,$/M tokens)", + "cacheCreationPrice1h": "缓存创建价格(1h+,$/M tokens)" + }, + "drawer": { + "prefillLabel": "搜索现有模型并预填充", + "prefillEmpty": "未找到匹配的模型", + "prefillFailed": "搜索失败", + "promptCachingHint": "仅当模型支持缓存时开启,并配置下方缓存价格", + "cachePricingTitle": "缓存价格" + }, + "actions": { + "edit": "编辑", + "more": "更多操作", + "delete": "删除" + }, + "toast": { + "createSuccess": "模型已添加", + "updateSuccess": "模型已更新", + "deleteSuccess": "模型已删除", + "saveFailed": "保存失败", + "deleteFailed": "删除失败" } }, "sensitiveWords": { diff --git a/messages/zh-CN/usage.json b/messages/zh-CN/usage.json index fe5d700ca..0cf355274 100644 --- a/messages/zh-CN/usage.json +++ b/messages/zh-CN/usage.json @@ -469,6 +469,109 @@ } }, + "opencode": { + "title": "OpenCode 使用指南", + "description": "OpenCode 是一款在终端中运行的 CLI + TUI AI 编程代理工具,也提供 IDE 插件集成。你可以将 OpenCode 指向 cch 作为统一入口来接入 Claude、GPT 与 Gemini 等模型。", + + "installation": { + "title": "安装", + + "macos": { + "description": "在 macOS 上可以选择以下任一种方式安装 OpenCode:", + "homebrew": { + "title": "方式二:Homebrew", + "description": "也可以使用 Homebrew 安装:" + } + }, + + "linux": { + "description": "在 Linux 上可以选择以下任一种方式安装 OpenCode:", + "homebrew": { + "title": "方式二:Homebrew", + "description": "也可以使用 Homebrew 安装:" + }, + "paru": { + "title": "方式五:Paru(Arch Linux)", + "description": "如果你使用 Arch Linux,也可以通过 paru(AUR)安装:" + } + }, + + "script": { + "title": "方式一:官方安装脚本", + "description": "执行以下命令安装最新版:" + }, + + "npm": { + "title": "方式三:npm", + "description": "也可以通过 npm 全局安装:", + "note": "提示:不建议通过 npm 镜像源/第三方 registry 安装 opencode-ai,可能会导致依赖缺失;如遇问题请改用官方 npm registry。" + }, + + "bun": { + "title": "方式四:Bun", + "description": "如果你使用 Bun,也可以全局安装:" + }, + + "windows": { + "description": "Windows 推荐使用包管理器(Chocolatey/Scoop),也可以使用 npm:", + "choco": { + "title": "方式一:Chocolatey", + "description": "使用 Chocolatey 安装:", + "command": "choco install opencode" + }, + "scoop": { + "title": "方式二:Scoop", + "description": "使用 Scoop 安装:", + "command": "scoop bucket add extras\nscoop install extras/opencode" + }, + "note": "提示:官方说明 Windows 上通过 Bun 安装仍在推进。建议使用 Chocolatey/Scoop/npm,或从 GitHub Releases 下载二进制。" + } + }, + + "configuration": { + "title": "连接 cch 服务", + + "configFile": { + "title": "配置 opencode.json", + "path": "配置文件路径:", + "instruction": "编辑配置文件,写入以下内容(只需一份配置文件即可覆盖全部模型):", + + "important": "重要说明", + "importantPoints": [ + "请先在 cch 后台创建 API Key,并设置环境变量 CCH_API_KEY", + "三个 provider 的 baseURL 都使用 ${resolvedOrigin}/v1(cch v1 API 地址)", + "模型选择时使用 provider_id/model_id 格式(例如 cchClaude/claude-sonnet-4-5-20250929)" + ] + }, + + "modelSelection": { + "title": "选择模型", + "description": "启动 OpenCode 后,在 TUI 中输入以下命令查看/选择模型:", + "command": "/models" + } + }, + + "startup": { + "title": "启动 opencode", + "description": "在项目目录下运行:", + "initNote": "首次启动时,opencode 会加载配置并创建会话。" + }, + + "commonIssues": { + "title": "常见问题", + + "commandNotFound": "1. 命令未找到", + "commandNotFoundWindows": [ + "如果使用 npm 安装,请确保 npm 全局路径已添加到系统 PATH", + "重新打开终端窗口后再试" + ], + "commandNotFoundUnix": "检查安装路径并添加到 PATH(例如 ~/.local/bin 或 npm 全局目录)", + + "connectionFailed": "2. API 连接失败", + "updateCli": "3. 更新 opencode" + } + }, + "droid": { "title": "Droid CLI 使用指南", "description": "Droid 是 Factory AI 开发的交互式终端 AI 编程助手,支持通过 cch 代理服务使用。使用前必须先注册并登录 Droid 官方账号。", diff --git a/messages/zh-TW/dashboard.json b/messages/zh-TW/dashboard.json index 77149f016..5751f6d32 100644 --- a/messages/zh-TW/dashboard.json +++ b/messages/zh-TW/dashboard.json @@ -1,4 +1,9 @@ { + "actions": { + "copy": "複製", + "download": "下載", + "copied": "已複製" + }, "title": { "costRanking": "消耗排行榜", "costRankingDescription": "查看用戶消耗排名,資料每 5 分鐘更新一次", @@ -1343,6 +1348,10 @@ "threeMonths": "三個月後", "oneYear": "一年後" }, + "providerGroupSelect": { + "providersSuffix": "個供應商", + "loadFailed": "載入供應商分組失敗" + }, "providerGroup": { "label": "供應商分組", "placeholder": "選擇供應商分組", diff --git a/messages/zh-TW/myUsage.json b/messages/zh-TW/myUsage.json index be23f69eb..0fa88c279 100644 --- a/messages/zh-TW/myUsage.json +++ b/messages/zh-TW/myUsage.json @@ -1,7 +1,7 @@ { "header": { "title": "我的用量", - "subtitle": "查看額度與使用記錄", + "welcome": "歡迎,{name}", "logout": "登出", "keyLabel": "金鑰", "userLabel": "使用者", @@ -29,21 +29,6 @@ "unlimited": "不限", "empty": "暫無額度資料" }, - "today": { - "title": "今日使用", - "autoRefresh": "每{seconds}s自動刷新", - "refresh": "刷新", - "calls": "呼叫次數", - "tokensIn": "輸入 Tokens", - "tokensOut": "輸出 Tokens", - "cost": "{currency} 花費", - "modelBreakdown": "按模型", - "unknownModel": "未知模型", - "billingModel": "計費模型:{model}", - "callsShort": "{count} 次", - "tokensShort": "入 {in} / 出 {out}", - "noData": "今日無資料" - }, "logs": { "title": "使用紀錄", "autoRefresh": "每 {seconds} 秒自動刷新", @@ -64,7 +49,7 @@ "tokens": "Tokens (入/出)", "cacheWrite": "快取寫入", "cacheRead": "快取讀取", - "cost": "{currency} 花費", + "cost": "花費", "status": "狀態", "endpoint": "API 端點" }, @@ -79,15 +64,52 @@ "title": "到期時間", "keyExpires": "金鑰到期", "userExpires": "使用者到期", + "rpmLimit": "RPM限制", "neverExpires": "永不過期", "expired": "已過期", "expiresIn": "剩餘 {time}", "expiringWarning": "即將到期" }, "providerGroup": { + "title": "供應商分組", "keyGroup": "金鑰分組", "userGroup": "使用者分組", "allProviders": "全部供應商", "inheritedFromUser": "繼承自使用者" + }, + "stats": { + "title": "統計摘要", + "autoRefresh": "每{seconds}秒自動刷新", + "totalRequests": "總請求數", + "totalCost": "總費用", + "totalTokens": "總Token數", + "cacheTokens": "快取Token", + "input": "輸入", + "output": "輸出", + "write": "寫入", + "read": "讀取", + "modelBreakdown": "按模型", + "keyStats": "金鑰", + "userStats": "使用者", + "noData": "所選時段無資料", + "unknownModel": "未知" + }, + "accessRestrictions": { + "title": "存取限制", + "models": "模型", + "clients": "客戶端", + "noRestrictions": "無限制" + }, + "quotaCollapsible": { + "title": "配額使用", + "daily": "日", + "monthly": "月", + "total": "總計" + }, + "logsCollapsible": { + "title": "使用記錄", + "lastStatus": "最近: {code} ({time})", + "successRate": "{rate}%", + "noData": "無資料" } } diff --git a/messages/zh-TW/settings.json b/messages/zh-TW/settings.json index bce5b5019..7688f9d7b 100644 --- a/messages/zh-TW/settings.json +++ b/messages/zh-TW/settings.json @@ -102,6 +102,16 @@ "verboseProviderErrorDesc": "開啟後,當所有供應商不可用時返回詳細錯誤資訊(包含供應商數量、限流原因等);關閉後僅返回簡潔錯誤碼。", "interceptAnthropicWarmupRequests": "攔截 Warmup 請求(Anthropic)", "interceptAnthropicWarmupRequestsDesc": "開啟後,識別到 Claude Code 的 Warmup 探測請求將由 CCH 直接搶答短回應,避免存取上游供應商;該請求會記錄在日誌中,但不計費、不限流、不計入統計。", + "enableThinkingSignatureRectifier": "啟用 thinking 簽名整流器", + "enableThinkingSignatureRectifierDesc": "當 Anthropic 類型供應商返回 thinking 簽名不相容或非法請求等錯誤時,自動移除不相容的 thinking 相關區塊並對同一供應商重試一次(預設開啟)。", + "enableResponseFixer": "啟用回應整流", + "enableResponseFixerDesc": "自動修復上游回應中常見的編碼、SSE 與 JSON 格式問題(預設開啟)。", + "responseFixerFixEncoding": "修復編碼問題", + "responseFixerFixEncodingDesc": "移除 BOM 與空字節,並對無效 UTF-8 做相容處理。", + "responseFixerFixSseFormat": "修復 SSE 格式", + "responseFixerFixSseFormatDesc": "補齊 data: 前綴、統一換行符,並修復常見欄位格式。", + "responseFixerFixTruncatedJson": "修復截斷的 JSON", + "responseFixerFixTruncatedJsonDesc": "補齊未閉合的括號/引號,移除尾隨逗號,必要時補 null。", "cleanupSchedule": "清理週期", "cleanupScheduleDesc": "選擇自動清理的執行週期", "configUpdated": "系統設定已更新,頁面將重新整理以應用貨幣顯示變更。", @@ -524,24 +534,92 @@ "description": "管理 AI 模型的價格設定" }, "searchPlaceholder": "搜尋模型名稱...", + "filters": { + "all": "全部", + "local": "本地", + "anthropic": "Anthropic", + "openai": "OpenAI", + "vertex": "Vertex" + }, + "badges": { + "local": "本地" + }, + "capabilities": { + "assistantPrefill": "助手預填充", + "computerUse": "電腦使用", + "functionCalling": "函數呼叫", + "pdfInput": "PDF 輸入", + "promptCaching": "Prompt 快取", + "reasoning": "推理", + "responseSchema": "回應 Schema", + "toolChoice": "工具選擇", + "vision": "視覺", + "statusSupported": "支援", + "statusUnsupported": "不支援", + "tooltip": "{label}: {status}" + }, "sync": { - "button": "同步 LiteLLM 價格", + "button": "同步雲端價格表", "syncing": "同步中...", + "checking": "檢查衝突...", "successWithChanges": "價格表更新: 新增 {added} 個,更新 {updated} 個,未變化 {unchanged} 個", "successNoChanges": "價格表已是最新,無需更新", "failed": "同步失敗", "failedError": "同步失敗: {error}", "failedNoResult": "價格表更新成功但未返回處理結果", "noModels": "未找到支援的模型價格", - "partialFailure": "部分更新成功,但有 {failed} 個模型失敗" + "partialFailure": "部分更新成功,但有 {failed} 個模型失敗", + "failedModels": "失敗模型: {models}", + "skippedConflicts": "跳過 {count} 個手動模型" + }, + "conflict": { + "title": "選擇要覆蓋的衝突項", + "description": "以下模型存在手動維護的價格,勾選後將用 LiteLLM 價格覆蓋,未勾選的保持本地不變", + "searchPlaceholder": "搜尋模型...", + "table": { + "modelName": "模型", + "manualPrice": "手動價格", + "litellmPrice": "LiteLLM 價格", + "action": "操作" + }, + "viewDiff": "查看差異", + "diffTitle": "價格差異對比", + "diff": { + "field": "欄位", + "manual": "手動", + "litellm": "LiteLLM", + "inputPrice": "輸入價格", + "outputPrice": "輸出價格", + "imagePrice": "圖片價格", + "provider": "供應商", + "mode": "類型" + }, + "pagination": { + "showing": "顯示 {from}-{to} 條,共 {total} 條" + }, + "selectedCount": "已選擇 {count}/{total} 個模型", + "noMatch": "未找到符合的模型", + "noConflicts": "無衝突項", + "applyOverwrite": "套用覆蓋", + "applying": "套用中..." }, "table": { "modelName": "模型名稱", - "type": "類型", "provider": "提供商", + "capabilities": "能力", + "price": "價格", "inputPrice": "輸入價格 ($/M)", "outputPrice": "輸出價格 ($/M)", + "priceInput": "輸入", + "priceOutput": "輸出", + "pricePerRequest": "按次", + "cacheReadPrice": "快取讀取 ($/M)", + "cacheCreationPrice": "快取建立 ($/M)", + "cache5m": "5m", + "cache1h": "1h+", + "copyModelId": "複製模型 ID", "updatedAt": "更新時間", + "actions": "操作", "typeChat": "對話", "typeImage": "圖像生成", "typeCompletion": "補全", @@ -555,6 +633,7 @@ "showing": "顯示 {from}-{to} 條,共 {total} 條", "previous": "上一頁", "next": "下一頁", + "perPageLabel": "每頁", "perPage": "每頁 {size} 條" }, "stats": { @@ -564,23 +643,25 @@ }, "dialog": { "title": "更新模型價格表", - "description": "選擇包含模型價格資料的 JSON 檔案並上傳", - "selectFile": "點擊選擇 JSON 檔案或拖曳到此處", + "description": "選擇包含模型價格資料的 JSON 或 TOML 檔案並上傳", + "selectFile": "點擊選擇 JSON/TOML 檔案或拖曳到此處", "fileSizeLimit": "檔案大小不能超過 10MB", "fileSizeLimitSmall": "檔案大小不超過 10MB", - "invalidFileType": "請選擇 JSON 格式的檔案", + "invalidFileType": "請選擇 JSON 或 TOML 格式的檔案", "fileTooLarge": "檔案大小超過 10MB 限制", "upload": "上傳並更新", "uploading": "上傳中...", "updatePriceTable": "更新價格表", "updating": "更新中...", - "selectJson": "選擇 JSON 檔案", + "selectJson": "選擇檔案", "updateSuccess": "價格表更新成功,共更新 {count} 個模型", "updateFailed": "更新失敗", "systemHasBuiltIn": "系統已內置價格表", "manualDownload": "你也可以手動下載", - "latestPriceTable": "最新價格表", + "latestPriceTable": "雲端價格表", "andUploadViaButton": ",並透過上方按鈕上傳", + "cloudModelCountLoading": "雲端模型數量載入中...", + "cloudModelCountFailed": "雲端模型數量載入失敗", "supportedModels": "目前支援 {count} 個模型", "results": { "title": "更新結果", @@ -588,9 +669,52 @@ "success": "成功: {success}", "failed": "失敗: {failed}", "skipped": "跳過: {skipped}", + "more": " (+{count})", "details": "詳細資訊", "viewDetails": "檢視詳細記錄" } + }, + "addModel": "新增模型", + "editModel": "編輯模型", + "deleteModel": "刪除模型", + "addModelDescription": "手動新增模型價格設定", + "editModelDescription": "編輯模型的價格設定", + "deleteConfirm": "確定要刪除模型 {name} 嗎?此操作無法復原。", + "form": { + "modelName": "模型 ID", + "modelNamePlaceholder": "例如: gpt-5.2-codex", + "modelNameRequired": "模型 ID 為必填", + "displayName": "顯示名稱(選填)", + "displayNamePlaceholder": "例如: GPT-5.2 Codex", + "type": "類型", + "provider": "提供商", + "providerPlaceholder": "例如: openai", + "requestPrice": "按次呼叫價格 ($/request)", + "inputPrice": "輸入價格 ($/M tokens)", + "outputPrice": "輸出價格 ($/M tokens)", + "outputPriceImage": "輸出價格 ($/張圖)", + "cacheReadPrice": "快取讀取價格 ($/M tokens)", + "cacheCreationPrice5m": "快取建立價格(5m,$/M tokens)", + "cacheCreationPrice1h": "快取建立價格(1h+,$/M tokens)" + }, + "drawer": { + "prefillLabel": "搜尋現有模型並預填充", + "prefillEmpty": "未找到匹配的模型", + "prefillFailed": "搜尋失敗", + "promptCachingHint": "僅當模型支援快取時開啟,並配置下方快取價格", + "cachePricingTitle": "快取價格" + }, + "actions": { + "edit": "編輯", + "more": "更多操作", + "delete": "刪除" + }, + "toast": { + "createSuccess": "模型已新增", + "updateSuccess": "模型已更新", + "deleteSuccess": "模型已刪除", + "saveFailed": "儲存失敗", + "deleteFailed": "刪除失敗" } }, "providers": { @@ -598,6 +722,22 @@ "addFailed": "新增服務商失敗", "addProvider": "新增服务商", "addSuccess": "新增服務商成功", + "autoSort": { + "button": "自動排序優先級", + "dialogTitle": "自動排序供應商優先級", + "dialogDescription": "根據成本倍率自動分配優先級(低成本 = 高優先級)", + "changeCount": "{count} 個供應商將被更新", + "noChanges": "無需更改(已排序)", + "costMultiplierHeader": "成本倍率", + "priorityHeader": "優先級", + "providersHeader": "供應商", + "changesTitle": "變更詳情", + "providerHeader": "供應商", + "priorityChangeHeader": "優先級變更", + "confirm": "應用變更", + "success": "已更新 {count} 個供應商的優先級", + "error": "更新優先級失敗" + }, "circuitBroken": "熔断中", "clone": "複製服務商", "cloneFailed": "複製失敗", diff --git a/messages/zh-TW/usage.json b/messages/zh-TW/usage.json index e2956a282..62b7efb6f 100644 --- a/messages/zh-TW/usage.json +++ b/messages/zh-TW/usage.json @@ -469,6 +469,109 @@ } }, + "opencode": { + "title": "OpenCode 使用指南", + "description": "OpenCode 是一款在終端中運行的 CLI + TUI AI 編程代理工具,也提供 IDE 插件集成。你可以將 OpenCode 指向 cch 作為統一入口接入 Claude、GPT 與 Gemini 等模型。", + + "installation": { + "title": "安裝", + + "macos": { + "description": "在 macOS 上可以選擇以下任一方式安裝 OpenCode:", + "homebrew": { + "title": "方式二:Homebrew", + "description": "也可以使用 Homebrew 安裝:" + } + }, + + "linux": { + "description": "在 Linux 上可以選擇以下任一方式安裝 OpenCode:", + "homebrew": { + "title": "方式二:Homebrew", + "description": "也可以使用 Homebrew 安裝:" + }, + "paru": { + "title": "方式五:Paru(Arch Linux)", + "description": "如果你使用 Arch Linux,也可以通過 paru(AUR)安裝:" + } + }, + + "script": { + "title": "方式一:官方安裝腳本", + "description": "執行以下命令安裝最新版:" + }, + + "npm": { + "title": "方式三:npm", + "description": "也可以通過 npm 全局安裝:", + "note": "提示:不建議透過 npm 鏡像源/第三方 registry 安裝 opencode-ai,可能會導致依賴缺失;如遇問題請改用官方 npm registry。" + }, + + "bun": { + "title": "方式四:Bun", + "description": "如果你使用 Bun,也可以全局安裝:" + }, + + "windows": { + "description": "Windows 推薦使用包管理器(Chocolatey/Scoop),也可以使用 npm:", + "choco": { + "title": "方式一:Chocolatey", + "description": "使用 Chocolatey 安裝:", + "command": "choco install opencode" + }, + "scoop": { + "title": "方式二:Scoop", + "description": "使用 Scoop 安裝:", + "command": "scoop bucket add extras\nscoop install extras/opencode" + }, + "note": "提示:官方說明 Windows 上通過 Bun 安裝仍在推進。建議使用 Chocolatey/Scoop/npm,或從 GitHub Releases 下載二進制。" + } + }, + + "configuration": { + "title": "連接 cch 服務", + + "configFile": { + "title": "配置 opencode.json", + "path": "配置文件路徑:", + "instruction": "編輯配置文件,寫入以下內容(只需一份配置文件即可覆蓋全部模型):", + + "important": "重要說明", + "importantPoints": [ + "請先在 cch 後台創建 API Key,並設置環境變量 CCH_API_KEY", + "三個 provider 的 baseURL 都使用 ${resolvedOrigin}/v1(cch v1 API 地址)", + "模型選擇時使用 provider_id/model_id 格式(例如 cchClaude/claude-sonnet-4-5-20250929)" + ] + }, + + "modelSelection": { + "title": "選擇模型", + "description": "啟動 OpenCode 後,在 TUI 中輸入以下命令查看/選擇模型:", + "command": "/models" + } + }, + + "startup": { + "title": "啟動 opencode", + "description": "在項目目錄下運行:", + "initNote": "首次啟動時,opencode 會加載配置並創建會話。" + }, + + "commonIssues": { + "title": "常見問題", + + "commandNotFound": "1. 命令未找到", + "commandNotFoundWindows": [ + "如果使用 npm 安裝,請確保 npm 全局路徑已添加到系統 PATH", + "重新打開終端窗口後再試" + ], + "commandNotFoundUnix": "檢查安裝路徑並添加到 PATH(例如 ~/.local/bin 或 npm 全局目錄)", + + "connectionFailed": "2. API 連接失敗", + "updateCli": "3. 更新 opencode" + } + }, + "droid": { "title": "Droid CLI 使用指南", "description": "Droid 是 Factory AI 開發的交互式終端 AI 編程助手,支持通過 cch 代理服務使用。使用前必須先註冊並登錄 Droid 官方賬號。", diff --git a/package.json b/package.json index 8a8c639ae..13c3dfdd7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "claude-code-hub", - "version": "0.3.0", + "version": "0.4.0", "private": true, "scripts": { "dev": "next dev --port 13500", @@ -18,6 +18,7 @@ "test:e2e": "vitest run --config vitest.e2e.config.ts --reporter=verbose", "test:integration": "vitest run --config vitest.integration.config.ts --reporter=verbose", "test:coverage": "vitest run --coverage", + "test:coverage:thinking-signature-rectifier": "vitest run --config vitest.thinking-signature-rectifier.config.ts --coverage", "test:coverage:quota": "vitest run --config vitest.quota.config.ts --coverage", "test:coverage:my-usage": "vitest run --config vitest.my-usage.config.ts --coverage", "test:coverage:proxy-guard-pipeline": "vitest run --config vitest.proxy-guard-pipeline.config.ts --coverage", @@ -35,6 +36,7 @@ "@hono/swagger-ui": "^0.5", "@hono/zod-openapi": "^1", "@hookform/resolvers": "^5", + "@iarna/toml": "^2.2.5", "@lobehub/icons": "^2", "@radix-ui/react-alert-dialog": "^1", "@radix-ui/react-avatar": "^1", diff --git a/public/seed/litellm-prices.json b/public/seed/litellm-prices.json deleted file mode 100644 index 90b73e470..000000000 --- a/public/seed/litellm-prices.json +++ /dev/null @@ -1,32348 +0,0 @@ -{ - "sample_spec": { - "code_interpreter_cost_per_session": 0.0, - "computer_use_input_cost_per_1k_tokens": 0.0, - "computer_use_output_cost_per_1k_tokens": 0.0, - "deprecation_date": "date when the model becomes deprecated in the format YYYY-MM-DD", - "file_search_cost_per_1k_calls": 0.0, - "file_search_cost_per_gb_per_day": 0.0, - "input_cost_per_audio_token": 0.0, - "input_cost_per_token": 0.0, - "litellm_provider": "one of https://docs.litellm.ai/docs/providers", - "max_input_tokens": "max input tokens, if the provider specifies it. if not default to max_tokens", - "max_output_tokens": "max output tokens, if the provider specifies it. if not default to max_tokens", - "max_tokens": "LEGACY parameter. set to max_output_tokens if provider specifies it. IF not set to max_input_tokens, if provider specifies it.", - "mode": "one of: chat, embedding, completion, image_generation, audio_transcription, audio_speech, image_generation, moderation, rerank, search", - "output_cost_per_reasoning_token": 0.0, - "output_cost_per_token": 0.0, - "search_context_cost_per_query": { - "search_context_size_high": 0.0, - "search_context_size_low": 0.0, - "search_context_size_medium": 0.0 - }, - "supported_regions": [ - "global", - "us-west-2", - "eu-west-1", - "ap-southeast-1", - "ap-northeast-1" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_vision": true, - "supports_web_search": true, - "vector_store_cost_per_gb_per_day": 0.0 - }, - "1024-x-1024/50-steps/bedrock/amazon.nova-canvas-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 2600, - "mode": "image_generation", - "output_cost_per_image": 0.06 - }, - "1024-x-1024/50-steps/stability.stable-diffusion-xl-v1": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "image_generation", - "output_cost_per_image": 0.04 - }, - "1024-x-1024/dall-e-2": { - "input_cost_per_pixel": 1.9e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0 - }, - "1024-x-1024/max-steps/stability.stable-diffusion-xl-v1": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "image_generation", - "output_cost_per_image": 0.08 - }, - "256-x-256/dall-e-2": { - "input_cost_per_pixel": 2.4414e-07, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0 - }, - "512-x-512/50-steps/stability.stable-diffusion-xl-v0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "image_generation", - "output_cost_per_image": 0.018 - }, - "512-x-512/dall-e-2": { - "input_cost_per_pixel": 6.86e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0 - }, - "512-x-512/max-steps/stability.stable-diffusion-xl-v0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "image_generation", - "output_cost_per_image": 0.036 - }, - "ai21.j2-mid-v1": { - "input_cost_per_token": 1.25e-05, - "litellm_provider": "bedrock", - "max_input_tokens": 8191, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 1.25e-05 - }, - "ai21.j2-ultra-v1": { - "input_cost_per_token": 1.88e-05, - "litellm_provider": "bedrock", - "max_input_tokens": 8191, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 1.88e-05 - }, - "ai21.jamba-1-5-large-v1:0": { - "input_cost_per_token": 2e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 8e-06 - }, - "ai21.jamba-1-5-mini-v1:0": { - "input_cost_per_token": 2e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 4e-07 - }, - "ai21.jamba-instruct-v1:0": { - "input_cost_per_token": 5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 70000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 7e-07, - "supports_system_messages": true - }, - "aiml/dall-e-2": { - "litellm_provider": "aiml", - "metadata": { - "notes": "DALL-E 2 via AI/ML API - Reliable text-to-image generation" - }, - "mode": "image_generation", - "output_cost_per_image": 0.021, - "source": "https://docs.aimlapi.com/", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "aiml/dall-e-3": { - "litellm_provider": "aiml", - "metadata": { - "notes": "DALL-E 3 via AI/ML API - High-quality text-to-image generation" - }, - "mode": "image_generation", - "output_cost_per_image": 0.042, - "source": "https://docs.aimlapi.com/", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "aiml/flux-pro": { - "litellm_provider": "aiml", - "metadata": { - "notes": "Flux Dev - Development version optimized for experimentation" - }, - "mode": "image_generation", - "output_cost_per_image": 0.053, - "source": "https://docs.aimlapi.com/", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "aiml/flux-pro/v1.1": { - "litellm_provider": "aiml", - "mode": "image_generation", - "output_cost_per_image": 0.042, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "aiml/flux-pro/v1.1-ultra": { - "litellm_provider": "aiml", - "mode": "image_generation", - "output_cost_per_image": 0.063, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "aiml/flux-realism": { - "litellm_provider": "aiml", - "metadata": { - "notes": "Flux Pro - Professional-grade image generation model" - }, - "mode": "image_generation", - "output_cost_per_image": 0.037, - "source": "https://docs.aimlapi.com/", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "aiml/flux/dev": { - "litellm_provider": "aiml", - "metadata": { - "notes": "Flux Dev - Development version optimized for experimentation" - }, - "mode": "image_generation", - "output_cost_per_image": 0.026, - "source": "https://docs.aimlapi.com/", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "aiml/flux/kontext-max/text-to-image": { - "litellm_provider": "aiml", - "metadata": { - "notes": "Flux Pro v1.1 - Enhanced version with improved capabilities and 6x faster inference speed" - }, - "mode": "image_generation", - "output_cost_per_image": 0.084, - "source": "https://docs.aimlapi.com/", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "aiml/flux/kontext-pro/text-to-image": { - "litellm_provider": "aiml", - "metadata": { - "notes": "Flux Pro v1.1 - Enhanced version with improved capabilities and 6x faster inference speed" - }, - "mode": "image_generation", - "output_cost_per_image": 0.042, - "source": "https://docs.aimlapi.com/", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "aiml/flux/schnell": { - "litellm_provider": "aiml", - "metadata": { - "notes": "Flux Schnell - Fast generation model optimized for speed" - }, - "mode": "image_generation", - "output_cost_per_image": 0.003, - "source": "https://docs.aimlapi.com/", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "aiml/google/imagen-4.0-ultra-generate-001": { - "litellm_provider": "aiml", - "metadata": { - "notes": "Imagen 4.0 Ultra Generate API - Photorealistic image generation with precise text rendering" - }, - "mode": "image_generation", - "output_cost_per_image": 0.063, - "source": "https://docs.aimlapi.com/api-references/image-models/google/imagen-4-ultra-generate", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "aiml/google/nano-banana-pro": { - "litellm_provider": "aiml", - "metadata": { - "notes": "Gemini 3 Pro Image (Nano Banana Pro) - Advanced text-to-image generation with reasoning and 4K resolution support" - }, - "mode": "image_generation", - "output_cost_per_image": 0.1575, - "source": "https://docs.aimlapi.com/api-references/image-models/google/gemini-3-pro-image-preview", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "amazon.nova-canvas-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 2600, - "mode": "image_generation", - "output_cost_per_image": 0.06 - }, - "us.writer.palmyra-x4-v1:0": { - "input_cost_per_token": 2.5e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_pdf_input": true - }, - "us.writer.palmyra-x5-v1:0": { - "input_cost_per_token": 6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_function_calling": true, - "supports_pdf_input": true - }, - "writer.palmyra-x4-v1:0": { - "input_cost_per_token": 2.5e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_pdf_input": true - }, - "writer.palmyra-x5-v1:0": { - "input_cost_per_token": 6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_function_calling": true, - "supports_pdf_input": true - }, - "amazon.nova-lite-v1:0": { - "input_cost_per_token": 6e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 300000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 2.4e-07, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_vision": true - }, - "amazon.nova-2-lite-v1:0": { - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 2.5e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_video_input": true, - "supports_vision": true - }, - "apac.amazon.nova-2-lite-v1:0": { - "cache_read_input_token_cost": 8.25e-08, - "input_cost_per_token": 3.3e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 2.75e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_video_input": true, - "supports_vision": true - }, - "eu.amazon.nova-2-lite-v1:0": { - "cache_read_input_token_cost": 8.25e-08, - "input_cost_per_token": 3.3e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 2.75e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_video_input": true, - "supports_vision": true - }, - "us.amazon.nova-2-lite-v1:0": { - "cache_read_input_token_cost": 8.25e-08, - "input_cost_per_token": 3.3e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 2.75e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_video_input": true, - "supports_vision": true - }, - "amazon.nova-2-multimodal-embeddings-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 8172, - "max_tokens": 8172, - "mode": "embedding", - "input_cost_per_token": 1.35e-7, - "input_cost_per_image": 6e-5, - "input_cost_per_video_per_second": 0.0007, - "input_cost_per_audio_per_second": 0.00014, - "output_cost_per_token": 0.0, - "output_vector_size": 3072, - "source": "https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/model-catalog/serverless/amazon.nova-2-multimodal-embeddings-v1:0", - "supports_embedding_image_input": true, - "supports_image_input": true, - "supports_video_input": true, - "supports_audio_input": true - }, - "amazon.nova-micro-v1:0": { - "input_cost_per_token": 3.5e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 1.4e-07, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true - }, - "amazon.nova-pro-v1:0": { - "input_cost_per_token": 8e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 300000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 3.2e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_vision": true - }, - "amazon.rerank-v1:0": { - "input_cost_per_query": 0.001, - "input_cost_per_token": 0.0, - "litellm_provider": "bedrock", - "max_document_chunks_per_query": 100, - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "max_query_tokens": 32000, - "max_tokens": 32000, - "max_tokens_per_document_chunk": 512, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "amazon.titan-embed-image-v1": { - "input_cost_per_image": 6e-05, - "input_cost_per_token": 8e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128, - "max_tokens": 128, - "metadata": { - "notes": "'supports_image_input' is a deprecated field. Use 'supports_embedding_image_input' instead." - }, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1024, - "source": "https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/providers?model=amazon.titan-image-generator-v1", - "supports_embedding_image_input": true, - "supports_image_input": true - }, - "amazon.titan-embed-text-v1": { - "input_cost_per_token": 1e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1536 - }, - "amazon.titan-embed-text-v2:0": { - "input_cost_per_token": 2e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1024 - }, - "amazon.titan-image-generator-v1": { - "input_cost_per_image": 0.0, - "output_cost_per_image": 0.008, - "output_cost_per_image_premium_image": 0.01, - "output_cost_per_image_above_512_and_512_pixels": 0.01, - "output_cost_per_image_above_512_and_512_pixels_and_premium_image": 0.012, - "litellm_provider": "bedrock", - "mode": "image_generation" - }, - "amazon.titan-image-generator-v2": { - "input_cost_per_image": 0.0, - "output_cost_per_image": 0.008, - "output_cost_per_image_premium_image": 0.01, - "output_cost_per_image_above_1024_and_1024_pixels": 0.01, - "output_cost_per_image_above_1024_and_1024_pixels_and_premium_image": 0.012, - "litellm_provider": "bedrock", - "mode": "image_generation" - }, - "amazon.titan-image-generator-v2:0": { - "input_cost_per_image": 0.0, - "output_cost_per_image": 0.008, - "output_cost_per_image_premium_image": 0.01, - "output_cost_per_image_above_1024_and_1024_pixels": 0.01, - "output_cost_per_image_above_1024_and_1024_pixels_and_premium_image": 0.012, - "litellm_provider": "bedrock", - "mode": "image_generation" - }, - "twelvelabs.marengo-embed-2-7-v1:0": { - "input_cost_per_token": 7e-05, - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1024, - "supports_embedding_image_input": true, - "supports_image_input": true - }, - "us.twelvelabs.marengo-embed-2-7-v1:0": { - "input_cost_per_token": 7e-05, - "input_cost_per_video_per_second": 0.0007, - "input_cost_per_audio_per_second": 0.00014, - "input_cost_per_image": 0.0001, - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1024, - "supports_embedding_image_input": true, - "supports_image_input": true - }, - "eu.twelvelabs.marengo-embed-2-7-v1:0": { - "input_cost_per_token": 7e-05, - "input_cost_per_video_per_second": 0.0007, - "input_cost_per_audio_per_second": 0.00014, - "input_cost_per_image": 0.0001, - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1024, - "supports_embedding_image_input": true, - "supports_image_input": true - }, - "twelvelabs.pegasus-1-2-v1:0": { - "input_cost_per_video_per_second": 0.00049, - "output_cost_per_token": 7.5e-06, - "litellm_provider": "bedrock", - "mode": "chat", - "supports_video_input": true - }, - "us.twelvelabs.pegasus-1-2-v1:0": { - "input_cost_per_video_per_second": 0.00049, - "output_cost_per_token": 7.5e-06, - "litellm_provider": "bedrock", - "mode": "chat", - "supports_video_input": true - }, - "eu.twelvelabs.pegasus-1-2-v1:0": { - "input_cost_per_video_per_second": 0.00049, - "output_cost_per_token": 7.5e-06, - "litellm_provider": "bedrock", - "mode": "chat", - "supports_video_input": true - }, - "amazon.titan-text-express-v1": { - "input_cost_per_token": 1.3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 42000, - "max_output_tokens": 8000, - "max_tokens": 8000, - "mode": "chat", - "output_cost_per_token": 1.7e-06 - }, - "amazon.titan-text-lite-v1": { - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 42000, - "max_output_tokens": 4000, - "max_tokens": 4000, - "mode": "chat", - "output_cost_per_token": 4e-07 - }, - "amazon.titan-text-premier-v1:0": { - "input_cost_per_token": 5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 42000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 1.5e-06 - }, - "anthropic.claude-3-5-haiku-20241022-v1:0": { - "cache_creation_input_token_cost": 1e-06, - "cache_read_input_token_cost": 8e-08, - "input_cost_per_token": 8e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 4e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "anthropic.claude-haiku-4-5-20251001-v1:0": { - "cache_creation_input_token_cost": 1.25e-06, - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 1e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 5e-06, - "source": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock", - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "anthropic.claude-haiku-4-5@20251001": { - "cache_creation_input_token_cost": 1.25e-06, - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 1e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 5e-06, - "source": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock", - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "anthropic.claude-3-5-sonnet-20240620-v1:0": { - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "anthropic.claude-3-5-sonnet-20241022-v2:0": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "anthropic.claude-3-7-sonnet-20240620-v1:0": { - "cache_creation_input_token_cost": 4.5e-06, - "cache_read_input_token_cost": 3.6e-07, - "input_cost_per_token": 3.6e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.8e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "anthropic.claude-3-7-sonnet-20250219-v1:0": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "anthropic.claude-3-haiku-20240307-v1:0": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.25e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "anthropic.claude-3-opus-20240229-v1:0": { - "input_cost_per_token": 1.5e-05, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "anthropic.claude-3-sonnet-20240229-v1:0": { - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "anthropic.claude-instant-v1": { - "input_cost_per_token": 8e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-06, - "supports_tool_choice": true - }, - "anthropic.claude-opus-4-1-20250805-v1:0": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "anthropic.claude-opus-4-20250514-v1:0": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "anthropic.claude-opus-4-5-20251101-v1:0": { - "cache_creation_input_token_cost": 6.25e-06, - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 5e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 2.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "anthropic.claude-sonnet-4-20250514-v1:0": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "anthropic.claude-sonnet-4-5-20250929-v1:0": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "anthropic.claude-v1": { - "input_cost_per_token": 8e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-05 - }, - "anthropic.claude-v2:1": { - "input_cost_per_token": 8e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_tool_choice": true - }, - "anyscale/HuggingFaceH4/zephyr-7b-beta": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "anyscale", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.5e-07 - }, - "anyscale/codellama/CodeLlama-34b-Instruct-hf": { - "input_cost_per_token": 1e-06, - "litellm_provider": "anyscale", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1e-06 - }, - "anyscale/codellama/CodeLlama-70b-Instruct-hf": { - "input_cost_per_token": 1e-06, - "litellm_provider": "anyscale", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1e-06, - "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/codellama-CodeLlama-70b-Instruct-hf" - }, - "anyscale/google/gemma-7b-it": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "anyscale", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/google-gemma-7b-it" - }, - "anyscale/meta-llama/Llama-2-13b-chat-hf": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "anyscale", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.5e-07 - }, - "anyscale/meta-llama/Llama-2-70b-chat-hf": { - "input_cost_per_token": 1e-06, - "litellm_provider": "anyscale", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1e-06 - }, - "anyscale/meta-llama/Llama-2-7b-chat-hf": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "anyscale", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-07 - }, - "anyscale/meta-llama/Meta-Llama-3-70B-Instruct": { - "input_cost_per_token": 1e-06, - "litellm_provider": "anyscale", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1e-06, - "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/meta-llama-Meta-Llama-3-70B-Instruct" - }, - "anyscale/meta-llama/Meta-Llama-3-8B-Instruct": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "anyscale", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/meta-llama-Meta-Llama-3-8B-Instruct" - }, - "anyscale/mistralai/Mistral-7B-Instruct-v0.1": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "anyscale", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/mistralai-Mistral-7B-Instruct-v0.1", - "supports_function_calling": true - }, - "anyscale/mistralai/Mixtral-8x22B-Instruct-v0.1": { - "input_cost_per_token": 9e-07, - "litellm_provider": "anyscale", - "max_input_tokens": 65536, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 9e-07, - "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/mistralai-Mixtral-8x22B-Instruct-v0.1", - "supports_function_calling": true - }, - "anyscale/mistralai/Mixtral-8x7B-Instruct-v0.1": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "anyscale", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/mistralai-Mixtral-8x7B-Instruct-v0.1", - "supports_function_calling": true - }, - "apac.amazon.nova-lite-v1:0": { - "input_cost_per_token": 6.3e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 300000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 2.52e-07, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_vision": true - }, - "apac.amazon.nova-micro-v1:0": { - "input_cost_per_token": 3.7e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 1.48e-07, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true - }, - "apac.amazon.nova-pro-v1:0": { - "input_cost_per_token": 8.4e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 300000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 3.36e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_vision": true - }, - "apac.anthropic.claude-3-5-sonnet-20240620-v1:0": { - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "apac.anthropic.claude-3-5-sonnet-20241022-v2:0": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "apac.anthropic.claude-3-haiku-20240307-v1:0": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.25e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "apac.anthropic.claude-haiku-4-5-20251001-v1:0": { - "cache_creation_input_token_cost": 1.375e-06, - "cache_read_input_token_cost": 1.1e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 5.5e-06, - "source": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock", - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "apac.anthropic.claude-3-sonnet-20240229-v1:0": { - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "apac.anthropic.claude-sonnet-4-20250514-v1:0": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "assemblyai/best": { - "input_cost_per_second": 3.333e-05, - "litellm_provider": "assemblyai", - "mode": "audio_transcription", - "output_cost_per_second": 0.0 - }, - "assemblyai/nano": { - "input_cost_per_second": 0.00010278, - "litellm_provider": "assemblyai", - "mode": "audio_transcription", - "output_cost_per_second": 0.0 - }, - "au.anthropic.claude-sonnet-4-5-20250929-v1:0": { - "cache_creation_input_token_cost": 4.125e-06, - "cache_read_input_token_cost": 3.3e-07, - "input_cost_per_token": 3.3e-06, - "input_cost_per_token_above_200k_tokens": 6.6e-06, - "output_cost_per_token_above_200k_tokens": 2.475e-05, - "cache_creation_input_token_cost_above_200k_tokens": 8.25e-06, - "cache_read_input_token_cost_above_200k_tokens": 6.6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.65e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "azure/ada": { - "input_cost_per_token": 1e-07, - "litellm_provider": "azure", - "max_input_tokens": 8191, - "max_tokens": 8191, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "azure/codex-mini": { - "cache_read_input_token_cost": 3.75e-07, - "input_cost_per_token": 1.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "responses", - "output_cost_per_token": 6e-06, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/command-r-plus": { - "input_cost_per_token": 3e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true - }, - "azure_ai/claude-haiku-4-5": { - "input_cost_per_token": 1e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 5e-06, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure_ai/claude-opus-4-1": { - "input_cost_per_token": 1.5e-05, - "litellm_provider": "azure_ai", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure_ai/claude-sonnet-4-5": { - "input_cost_per_token": 3e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/computer-use-preview": { - "input_cost_per_token": 3e-06, - "litellm_provider": "azure", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "chat", - "output_cost_per_token": 1.2e-05, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": false, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/container": { - "code_interpreter_cost_per_session": 0.03, - "litellm_provider": "azure", - "mode": "chat" - }, - "azure_ai/gpt-oss-120b": { - "input_cost_per_token": 1.5e-7, - "output_cost_per_token": 6e-7, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "source": "https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "azure/eu/gpt-4o-2024-08-06": { - "deprecation_date": "2026-02-27", - "cache_read_input_token_cost": 1.375e-06, - "input_cost_per_token": 2.75e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.1e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/eu/gpt-4o-2024-11-20": { - "deprecation_date": "2026-03-01", - "cache_creation_input_token_cost": 1.38e-06, - "input_cost_per_token": 2.75e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.1e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/eu/gpt-4o-mini-2024-07-18": { - "cache_read_input_token_cost": 8.3e-08, - "input_cost_per_token": 1.65e-07, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 6.6e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/eu/gpt-4o-mini-realtime-preview-2024-12-17": { - "cache_creation_input_audio_token_cost": 3.3e-07, - "cache_read_input_token_cost": 3.3e-07, - "input_cost_per_audio_token": 1.1e-05, - "input_cost_per_token": 6.6e-07, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 2.2e-05, - "output_cost_per_token": 2.64e-06, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "azure/eu/gpt-4o-realtime-preview-2024-10-01": { - "cache_creation_input_audio_token_cost": 2.2e-05, - "cache_read_input_token_cost": 2.75e-06, - "input_cost_per_audio_token": 0.00011, - "input_cost_per_token": 5.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.00022, - "output_cost_per_token": 2.2e-05, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "azure/eu/gpt-4o-realtime-preview-2024-12-17": { - "cache_read_input_audio_token_cost": 2.5e-06, - "cache_read_input_token_cost": 2.75e-06, - "input_cost_per_audio_token": 4.4e-05, - "input_cost_per_token": 5.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 8e-05, - "output_cost_per_token": 2.2e-05, - "supported_modalities": [ - "text", - "audio" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "azure/eu/gpt-5-2025-08-07": { - "cache_read_input_token_cost": 1.375e-07, - "input_cost_per_token": 1.375e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/eu/gpt-5-mini-2025-08-07": { - "cache_read_input_token_cost": 2.75e-08, - "input_cost_per_token": 2.75e-07, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2.2e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/eu/gpt-5.1": { - "cache_read_input_token_cost": 1.4e-07, - "input_cost_per_token": 1.38e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/eu/gpt-5.1-chat": { - "cache_read_input_token_cost": 1.4e-07, - "input_cost_per_token": 1.38e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/eu/gpt-5.1-codex": { - "cache_read_input_token_cost": 1.4e-07, - "input_cost_per_token": 1.38e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1.1e-05, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/eu/gpt-5.1-codex-mini": { - "cache_read_input_token_cost": 2.8e-08, - "input_cost_per_token": 2.75e-07, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 2.2e-06, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/eu/gpt-5-nano-2025-08-07": { - "cache_read_input_token_cost": 5.5e-09, - "input_cost_per_token": 5.5e-08, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 4.4e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/eu/o1-2024-12-17": { - "cache_read_input_token_cost": 8.25e-06, - "input_cost_per_token": 1.65e-05, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 6.6e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/eu/o1-mini-2024-09-12": { - "cache_read_input_token_cost": 6.05e-07, - "input_cost_per_token": 1.21e-06, - "input_cost_per_token_batches": 6.05e-07, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 4.84e-06, - "output_cost_per_token_batches": 2.42e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_vision": false - }, - "azure/eu/o1-preview-2024-09-12": { - "cache_read_input_token_cost": 8.25e-06, - "input_cost_per_token": 1.65e-05, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 6.6e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_vision": false - }, - "azure/eu/o3-mini-2025-01-31": { - "cache_read_input_token_cost": 6.05e-07, - "input_cost_per_token": 1.21e-06, - "input_cost_per_token_batches": 6.05e-07, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 4.84e-06, - "output_cost_per_token_batches": 2.42e-06, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "azure/global-standard/gpt-4o-2024-08-06": { - "cache_read_input_token_cost": 1.25e-06, - "deprecation_date": "2026-02-27", - "input_cost_per_token": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/global-standard/gpt-4o-2024-11-20": { - "cache_read_input_token_cost": 1.25e-06, - "deprecation_date": "2026-03-01", - "input_cost_per_token": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/global-standard/gpt-4o-mini": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/global/gpt-4o-2024-08-06": { - "deprecation_date": "2026-02-27", - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/global/gpt-4o-2024-11-20": { - "deprecation_date": "2026-03-01", - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/global/gpt-5.1": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/global/gpt-5.1-chat": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/global/gpt-5.1-codex": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/global/gpt-5.1-codex-mini": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_token": 2.5e-07, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 2e-06, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-3.5-turbo": { - "input_cost_per_token": 5e-07, - "litellm_provider": "azure", - "max_input_tokens": 4097, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-3.5-turbo-0125": { - "deprecation_date": "2025-03-31", - "input_cost_per_token": 5e-07, - "litellm_provider": "azure", - "max_input_tokens": 16384, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-3.5-turbo-instruct-0914": { - "input_cost_per_token": 1.5e-06, - "litellm_provider": "azure_text", - "max_input_tokens": 4097, - "max_tokens": 4097, - "mode": "completion", - "output_cost_per_token": 2e-06 - }, - "azure/gpt-35-turbo": { - "input_cost_per_token": 5e-07, - "litellm_provider": "azure", - "max_input_tokens": 4097, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-35-turbo-0125": { - "deprecation_date": "2025-05-31", - "input_cost_per_token": 5e-07, - "litellm_provider": "azure", - "max_input_tokens": 16384, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-35-turbo-0301": { - "deprecation_date": "2025-02-13", - "input_cost_per_token": 2e-07, - "litellm_provider": "azure", - "max_input_tokens": 4097, - "max_output_tokens": 4096, - "max_tokens": 4097, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-35-turbo-0613": { - "deprecation_date": "2025-02-13", - "input_cost_per_token": 1.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 4097, - "max_output_tokens": 4096, - "max_tokens": 4097, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-35-turbo-1106": { - "deprecation_date": "2025-03-31", - "input_cost_per_token": 1e-06, - "litellm_provider": "azure", - "max_input_tokens": 16384, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-35-turbo-16k": { - "input_cost_per_token": 3e-06, - "litellm_provider": "azure", - "max_input_tokens": 16385, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 4e-06, - "supports_tool_choice": true - }, - "azure/gpt-35-turbo-16k-0613": { - "input_cost_per_token": 3e-06, - "litellm_provider": "azure", - "max_input_tokens": 16385, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 4e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-35-turbo-instruct": { - "input_cost_per_token": 1.5e-06, - "litellm_provider": "azure_text", - "max_input_tokens": 4097, - "max_tokens": 4097, - "mode": "completion", - "output_cost_per_token": 2e-06 - }, - "azure/gpt-35-turbo-instruct-0914": { - "input_cost_per_token": 1.5e-06, - "litellm_provider": "azure_text", - "max_input_tokens": 4097, - "max_tokens": 4097, - "mode": "completion", - "output_cost_per_token": 2e-06 - }, - "azure/gpt-4": { - "input_cost_per_token": 3e-05, - "litellm_provider": "azure", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-4-0125-preview": { - "input_cost_per_token": 1e-05, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-4-0613": { - "input_cost_per_token": 3e-05, - "litellm_provider": "azure", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-4-1106-preview": { - "input_cost_per_token": 1e-05, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-4-32k": { - "input_cost_per_token": 6e-05, - "litellm_provider": "azure", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.00012, - "supports_tool_choice": true - }, - "azure/gpt-4-32k-0613": { - "input_cost_per_token": 6e-05, - "litellm_provider": "azure", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.00012, - "supports_tool_choice": true - }, - "azure/gpt-4-turbo": { - "input_cost_per_token": 1e-05, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-4-turbo-2024-04-09": { - "input_cost_per_token": 1e-05, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-4-turbo-vision-preview": { - "input_cost_per_token": 1e-05, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3e-05, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-4.1": { - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 2e-06, - "input_cost_per_token_batches": 1e-06, - "litellm_provider": "azure", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 8e-06, - "output_cost_per_token_batches": 4e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": false - }, - "azure/gpt-4.1-2025-04-14": { - "deprecation_date": "2026-11-04", - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 2e-06, - "input_cost_per_token_batches": 1e-06, - "litellm_provider": "azure", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 8e-06, - "output_cost_per_token_batches": 4e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": false - }, - "azure/gpt-4.1-mini": { - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 4e-07, - "input_cost_per_token_batches": 2e-07, - "litellm_provider": "azure", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1.6e-06, - "output_cost_per_token_batches": 8e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": false - }, - "azure/gpt-4.1-mini-2025-04-14": { - "deprecation_date": "2026-11-04", - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 4e-07, - "input_cost_per_token_batches": 2e-07, - "litellm_provider": "azure", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1.6e-06, - "output_cost_per_token_batches": 8e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": false - }, - "azure/gpt-4.1-nano": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_token": 1e-07, - "input_cost_per_token_batches": 5e-08, - "litellm_provider": "azure", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 4e-07, - "output_cost_per_token_batches": 2e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-4.1-nano-2025-04-14": { - "deprecation_date": "2026-11-04", - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_token": 1e-07, - "input_cost_per_token_batches": 5e-08, - "litellm_provider": "azure", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 4e-07, - "output_cost_per_token_batches": 2e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-4.5-preview": { - "cache_read_input_token_cost": 3.75e-05, - "input_cost_per_token": 7.5e-05, - "input_cost_per_token_batches": 3.75e-05, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 0.00015, - "output_cost_per_token_batches": 7.5e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-4o": { - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-4o-2024-05-13": { - "input_cost_per_token": 5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-4o-2024-08-06": { - "deprecation_date": "2026-02-27", - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-4o-2024-11-20": { - "deprecation_date": "2026-03-01", - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 2.75e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.1e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-audio-2025-08-28": { - "input_cost_per_audio_token": 4e-05, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_audio_token": 8e-05, - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text", - "audio" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": false, - "supports_reasoning": false, - "supports_response_schema": false, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "azure/gpt-audio-mini-2025-10-06": { - "input_cost_per_audio_token": 1e-05, - "input_cost_per_token": 6e-07, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_audio_token": 2e-05, - "output_cost_per_token": 2.4e-06, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text", - "audio" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": false, - "supports_reasoning": false, - "supports_response_schema": false, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "azure/gpt-4o-audio-preview-2024-12-17": { - "input_cost_per_audio_token": 4e-05, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_audio_token": 8e-05, - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text", - "audio" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": false, - "supports_reasoning": false, - "supports_response_schema": false, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "azure/gpt-4o-mini": { - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_token": 1.65e-07, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 6.6e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-4o-mini-2024-07-18": { - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_token": 1.65e-07, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 6.6e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-4o-mini-audio-preview-2024-12-17": { - "input_cost_per_audio_token": 4e-05, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_audio_token": 8e-05, - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text", - "audio" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": false, - "supports_reasoning": false, - "supports_response_schema": false, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "azure/gpt-4o-mini-realtime-preview-2024-12-17": { - "cache_creation_input_audio_token_cost": 3e-07, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_audio_token": 1e-05, - "input_cost_per_token": 6e-07, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 2e-05, - "output_cost_per_token": 2.4e-06, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "azure/gpt-realtime-2025-08-28": { - "cache_creation_input_audio_token_cost": 4e-06, - "cache_read_input_token_cost": 4e-06, - "input_cost_per_audio_token": 3.2e-05, - "input_cost_per_image": 5e-06, - "input_cost_per_token": 4e-06, - "litellm_provider": "azure", - "max_input_tokens": 32000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 6.4e-05, - "output_cost_per_token": 1.6e-05, - "supported_endpoints": [ - "/v1/realtime" - ], - "supported_modalities": [ - "text", - "image", - "audio" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "azure/gpt-realtime-mini-2025-10-06": { - "cache_creation_input_audio_token_cost": 3e-07, - "cache_read_input_token_cost": 6e-08, - "input_cost_per_audio_token": 1e-05, - "input_cost_per_image": 8e-07, - "input_cost_per_token": 6e-07, - "litellm_provider": "azure", - "max_input_tokens": 32000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 2e-05, - "output_cost_per_token": 2.4e-06, - "supported_endpoints": [ - "/v1/realtime" - ], - "supported_modalities": [ - "text", - "image", - "audio" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "azure/gpt-4o-mini-transcribe": { - "input_cost_per_audio_token": 3e-06, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "azure", - "max_input_tokens": 16000, - "max_output_tokens": 2000, - "mode": "audio_transcription", - "output_cost_per_token": 5e-06, - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "azure/gpt-4o-mini-tts": { - "input_cost_per_token": 2.5e-06, - "litellm_provider": "azure", - "mode": "audio_speech", - "output_cost_per_audio_token": 1.2e-05, - "output_cost_per_second": 0.00025, - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/audio/speech" - ], - "supported_modalities": [ - "text", - "audio" - ], - "supported_output_modalities": [ - "audio" - ] - }, - "azure/gpt-4o-realtime-preview-2024-10-01": { - "cache_creation_input_audio_token_cost": 2e-05, - "cache_read_input_token_cost": 2.5e-06, - "input_cost_per_audio_token": 0.0001, - "input_cost_per_token": 5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.0002, - "output_cost_per_token": 2e-05, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "azure/gpt-4o-realtime-preview-2024-12-17": { - "cache_read_input_token_cost": 2.5e-06, - "input_cost_per_audio_token": 4e-05, - "input_cost_per_token": 5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 8e-05, - "output_cost_per_token": 2e-05, - "supported_modalities": [ - "text", - "audio" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "azure/gpt-4o-transcribe": { - "input_cost_per_audio_token": 6e-06, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 16000, - "max_output_tokens": 2000, - "mode": "audio_transcription", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "azure/gpt-4o-transcribe-diarize": { - "input_cost_per_audio_token": 6e-06, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 16000, - "max_output_tokens": 2000, - "mode": "audio_transcription", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "azure/gpt-5.1-2025-11-13": { - "cache_read_input_token_cost": 1.25e-07, - "cache_read_input_token_cost_priority": 2.5e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_priority": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_priority": 2e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "azure/gpt-5.1-chat-2025-11-13": { - "cache_read_input_token_cost": 1.25e-07, - "cache_read_input_token_cost_priority": 2.5e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_priority": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_priority": 2e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": false, - "supports_native_streaming": true, - "supports_parallel_function_calling": false, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "azure/gpt-5.1-codex-2025-11-13": { - "cache_read_input_token_cost": 1.25e-07, - "cache_read_input_token_cost_priority": 2.5e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_priority": 2.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1e-05, - "output_cost_per_token_priority": 2e-05, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5.1-codex-mini-2025-11-13": { - "cache_read_input_token_cost": 2.5e-08, - "cache_read_input_token_cost_priority": 4.5e-08, - "input_cost_per_token": 2.5e-07, - "input_cost_per_token_priority": 4.5e-07, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 2e-06, - "output_cost_per_token_priority": 3.6e-06, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5-2025-08-07": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5-chat": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "source": "https://azure.microsoft.com/en-us/blog/gpt-5-in-azure-ai-foundry-the-future-of-ai-apps-and-agents-starts-here/", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "azure/gpt-5-chat-latest": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "azure/gpt-5-codex": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5-mini": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_token": 2.5e-07, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5-mini-2025-08-07": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_token": 2.5e-07, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5-nano": { - "cache_read_input_token_cost": 5e-09, - "input_cost_per_token": 5e-08, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5-nano-2025-08-07": { - "cache_read_input_token_cost": 5e-09, - "input_cost_per_token": 5e-08, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5-pro": { - "input_cost_per_token": 1.5e-05, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 400000, - "mode": "responses", - "output_cost_per_token": 0.00012, - "source": "https://learn.microsoft.com/en-us/azure/ai-foundry/foundry-models/concepts/models-sold-directly-by-azure?pivots=azure-openai&tabs=global-standard-aoai%2Cstandard-chat-completions%2Cglobal-standard#gpt-5", - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5.1": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5.1-chat": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5.1-codex": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5.1-codex-max": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "azure", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5.1-codex-mini": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_token": 2.5e-07, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 2e-06, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5.2": { - "cache_read_input_token_cost": 1.75e-07, - "input_cost_per_token": 1.75e-06, - "litellm_provider": "azure", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.4e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5.2-2025-12-11": { - "cache_read_input_token_cost": 1.75e-07, - "cache_read_input_token_cost_priority": 3.5e-07, - "input_cost_per_token": 1.75e-06, - "input_cost_per_token_priority": 3.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.4e-05, - "output_cost_per_token_priority": 2.8e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "azure/gpt-5.2-chat": { - "cache_read_input_token_cost": 1.75e-07, - "cache_read_input_token_cost_priority": 3.5e-07, - "input_cost_per_token": 1.75e-06, - "input_cost_per_token_priority": 3.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.4e-05, - "output_cost_per_token_priority": 2.8e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5.2-chat-2025-12-11": { - "cache_read_input_token_cost": 1.75e-07, - "cache_read_input_token_cost_priority": 3.5e-07, - "input_cost_per_token": 1.75e-06, - "input_cost_per_token_priority": 3.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.4e-05, - "output_cost_per_token_priority": 2.8e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/gpt-5.2-pro": { - "input_cost_per_token": 2.1e-05, - "litellm_provider": "azure", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1.68e-04, - "supported_endpoints": [ - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "azure/gpt-5.2-pro-2025-12-11": { - "input_cost_per_token": 2.1e-05, - "litellm_provider": "azure", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1.68e-04, - "supported_endpoints": [ - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "azure/gpt-image-1": { - "cache_read_input_image_token_cost": 2.5e-06, - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_image_token": 1e-05, - "input_cost_per_token": 5e-06, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_image_token": 4e-05, - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ] - }, - "azure/hd/1024-x-1024/dall-e-3": { - "input_cost_per_pixel": 7.629e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_token": 0.0 - }, - "azure/hd/1024-x-1792/dall-e-3": { - "input_cost_per_pixel": 6.539e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_token": 0.0 - }, - "azure/hd/1792-x-1024/dall-e-3": { - "input_cost_per_pixel": 6.539e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_token": 0.0 - }, - "azure/high/1024-x-1024/gpt-image-1": { - "input_cost_per_pixel": 1.59263611e-07, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/high/1024-x-1536/gpt-image-1": { - "input_cost_per_pixel": 1.58945719e-07, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/high/1536-x-1024/gpt-image-1": { - "input_cost_per_pixel": 1.58945719e-07, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/low/1024-x-1024/gpt-image-1": { - "input_cost_per_pixel": 1.0490417e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/low/1024-x-1536/gpt-image-1": { - "input_cost_per_pixel": 1.0172526e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/low/1536-x-1024/gpt-image-1": { - "input_cost_per_pixel": 1.0172526e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/medium/1024-x-1024/gpt-image-1": { - "input_cost_per_pixel": 4.0054321e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/medium/1024-x-1536/gpt-image-1": { - "input_cost_per_pixel": 4.0054321e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/medium/1536-x-1024/gpt-image-1": { - "input_cost_per_pixel": 4.0054321e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/gpt-image-1-mini": { - "cache_read_input_image_token_cost": 2.5e-07, - "cache_read_input_token_cost": 2e-07, - "input_cost_per_image_token": 2.5e-06, - "input_cost_per_token": 2e-06, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_image_token": 8e-06, - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ] - }, - "azure/gpt-image-1.5": { - "cache_read_input_image_token_cost": 2e-06, - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 5e-06, - "input_cost_per_image_token": 8e-06, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_image_token": 3.2e-05, - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ] - }, - "azure/gpt-image-1.5-2025-12-16": { - "cache_read_input_image_token_cost": 2e-06, - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 5e-06, - "input_cost_per_image_token": 8e-06, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_image_token": 3.2e-05, - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ] - }, - "azure/low/1024-x-1024/gpt-image-1-mini": { - "input_cost_per_pixel": 2.0751953125e-09, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/low/1024-x-1536/gpt-image-1-mini": { - "input_cost_per_pixel": 2.0751953125e-09, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/low/1536-x-1024/gpt-image-1-mini": { - "input_cost_per_pixel": 2.0345052083e-09, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/medium/1024-x-1024/gpt-image-1-mini": { - "input_cost_per_pixel": 8.056640625e-09, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/medium/1024-x-1536/gpt-image-1-mini": { - "input_cost_per_pixel": 8.056640625e-09, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/medium/1536-x-1024/gpt-image-1-mini": { - "input_cost_per_pixel": 7.9752604167e-09, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/high/1024-x-1024/gpt-image-1-mini": { - "input_cost_per_pixel": 3.173828125e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/high/1024-x-1536/gpt-image-1-mini": { - "input_cost_per_pixel": 3.173828125e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/high/1536-x-1024/gpt-image-1-mini": { - "input_cost_per_pixel": 3.1575520833e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure/mistral-large-2402": { - "input_cost_per_token": 8e-06, - "litellm_provider": "azure", - "max_input_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_function_calling": true - }, - "azure/mistral-large-latest": { - "input_cost_per_token": 8e-06, - "litellm_provider": "azure", - "max_input_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_function_calling": true - }, - "azure/o1": { - "cache_read_input_token_cost": 7.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/o1-2024-12-17": { - "cache_read_input_token_cost": 7.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/o1-mini": { - "cache_read_input_token_cost": 6.05e-07, - "input_cost_per_token": 1.21e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 4.84e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_vision": false - }, - "azure/o1-mini-2024-09-12": { - "cache_read_input_token_cost": 5.5e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 4.4e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_vision": false - }, - "azure/o1-preview": { - "cache_read_input_token_cost": 7.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_vision": false - }, - "azure/o1-preview-2024-09-12": { - "cache_read_input_token_cost": 7.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_vision": false - }, - "azure/o3": { - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 2e-06, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 8e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/o3-2025-04-16": { - "deprecation_date": "2026-04-16", - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 2e-06, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 8e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/o3-deep-research": { - "cache_read_input_token_cost": 2.5e-06, - "input_cost_per_token": 1e-05, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "responses", - "output_cost_per_token": 4e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "azure/o3-mini": { - "cache_read_input_token_cost": 5.5e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 4.4e-06, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "azure/o3-mini-2025-01-31": { - "cache_read_input_token_cost": 5.5e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 4.4e-06, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "azure/o3-pro": { - "input_cost_per_token": 2e-05, - "input_cost_per_token_batches": 1e-05, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "responses", - "output_cost_per_token": 8e-05, - "output_cost_per_token_batches": 4e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": false, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/o3-pro-2025-06-10": { - "input_cost_per_token": 2e-05, - "input_cost_per_token_batches": 1e-05, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "responses", - "output_cost_per_token": 8e-05, - "output_cost_per_token_batches": 4e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": false, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/o4-mini": { - "cache_read_input_token_cost": 2.75e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 4.4e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/o4-mini-2025-04-16": { - "cache_read_input_token_cost": 2.75e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 4.4e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/standard/1024-x-1024/dall-e-2": { - "input_cost_per_pixel": 0.0, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_token": 0.0 - }, - "azure/standard/1024-x-1024/dall-e-3": { - "input_cost_per_pixel": 3.81469e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_token": 0.0 - }, - "azure/standard/1024-x-1792/dall-e-3": { - "input_cost_per_pixel": 4.359e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_token": 0.0 - }, - "azure/standard/1792-x-1024/dall-e-3": { - "input_cost_per_pixel": 4.359e-08, - "litellm_provider": "azure", - "mode": "image_generation", - "output_cost_per_token": 0.0 - }, - "azure/text-embedding-3-large": { - "input_cost_per_token": 1.3e-07, - "litellm_provider": "azure", - "max_input_tokens": 8191, - "max_tokens": 8191, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "azure/text-embedding-3-small": { - "deprecation_date": "2026-04-30", - "input_cost_per_token": 2e-08, - "litellm_provider": "azure", - "max_input_tokens": 8191, - "max_tokens": 8191, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "azure/text-embedding-ada-002": { - "input_cost_per_token": 1e-07, - "litellm_provider": "azure", - "max_input_tokens": 8191, - "max_tokens": 8191, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "azure/speech/azure-tts": { - "input_cost_per_character": 15e-06, - "litellm_provider": "azure", - "mode": "audio_speech", - "source": "https://azure.microsoft.com/en-us/pricing/calculator/" - }, - "azure/speech/azure-tts-hd": { - "input_cost_per_character": 30e-06, - "litellm_provider": "azure", - "mode": "audio_speech", - "source": "https://azure.microsoft.com/en-us/pricing/calculator/" - }, - "azure/tts-1": { - "input_cost_per_character": 1.5e-05, - "litellm_provider": "azure", - "mode": "audio_speech" - }, - "azure/tts-1-hd": { - "input_cost_per_character": 3e-05, - "litellm_provider": "azure", - "mode": "audio_speech" - }, - "azure/us/gpt-4.1-2025-04-14": { - "deprecation_date": "2026-11-04", - "cache_read_input_token_cost": 5.5e-07, - "input_cost_per_token": 2.2e-06, - "input_cost_per_token_batches": 1.1e-06, - "litellm_provider": "azure", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 8.8e-06, - "output_cost_per_token_batches": 4.4e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": false - }, - "azure/us/gpt-4.1-mini-2025-04-14": { - "deprecation_date": "2026-11-04", - "cache_read_input_token_cost": 1.1e-07, - "input_cost_per_token": 4.4e-07, - "input_cost_per_token_batches": 2.2e-07, - "litellm_provider": "azure", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1.76e-06, - "output_cost_per_token_batches": 8.8e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": false - }, - "azure/us/gpt-4.1-nano-2025-04-14": { - "deprecation_date": "2026-11-04", - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_token": 1.1e-07, - "input_cost_per_token_batches": 6e-08, - "litellm_provider": "azure", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 4.4e-07, - "output_cost_per_token_batches": 2.2e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/us/gpt-4o-2024-08-06": { - "deprecation_date": "2026-02-27", - "cache_read_input_token_cost": 1.375e-06, - "input_cost_per_token": 2.75e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.1e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/us/gpt-4o-2024-11-20": { - "deprecation_date": "2026-03-01", - "cache_creation_input_token_cost": 1.38e-06, - "input_cost_per_token": 2.75e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.1e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/us/gpt-4o-mini-2024-07-18": { - "cache_read_input_token_cost": 8.3e-08, - "input_cost_per_token": 1.65e-07, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 6.6e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/us/gpt-4o-mini-realtime-preview-2024-12-17": { - "cache_creation_input_audio_token_cost": 3.3e-07, - "cache_read_input_token_cost": 3.3e-07, - "input_cost_per_audio_token": 1.1e-05, - "input_cost_per_token": 6.6e-07, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 2.2e-05, - "output_cost_per_token": 2.64e-06, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "azure/us/gpt-4o-realtime-preview-2024-10-01": { - "cache_creation_input_audio_token_cost": 2.2e-05, - "cache_read_input_token_cost": 2.75e-06, - "input_cost_per_audio_token": 0.00011, - "input_cost_per_token": 5.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.00022, - "output_cost_per_token": 2.2e-05, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "azure/us/gpt-4o-realtime-preview-2024-12-17": { - "cache_read_input_audio_token_cost": 2.5e-06, - "cache_read_input_token_cost": 2.75e-06, - "input_cost_per_audio_token": 4.4e-05, - "input_cost_per_token": 5.5e-06, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 8e-05, - "output_cost_per_token": 2.2e-05, - "supported_modalities": [ - "text", - "audio" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "azure/us/gpt-5-2025-08-07": { - "cache_read_input_token_cost": 1.375e-07, - "input_cost_per_token": 1.375e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/us/gpt-5-mini-2025-08-07": { - "cache_read_input_token_cost": 2.75e-08, - "input_cost_per_token": 2.75e-07, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2.2e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/us/gpt-5-nano-2025-08-07": { - "cache_read_input_token_cost": 5.5e-09, - "input_cost_per_token": 5.5e-08, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 4.4e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/us/gpt-5.1": { - "cache_read_input_token_cost": 1.4e-07, - "input_cost_per_token": 1.38e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/us/gpt-5.1-chat": { - "cache_read_input_token_cost": 1.4e-07, - "input_cost_per_token": 1.38e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/us/gpt-5.1-codex": { - "cache_read_input_token_cost": 1.4e-07, - "input_cost_per_token": 1.38e-06, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1.1e-05, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/us/gpt-5.1-codex-mini": { - "cache_read_input_token_cost": 2.8e-08, - "input_cost_per_token": 2.75e-07, - "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 2.2e-06, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/us/o1-2024-12-17": { - "cache_read_input_token_cost": 8.25e-06, - "input_cost_per_token": 1.65e-05, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 6.6e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/us/o1-mini-2024-09-12": { - "cache_read_input_token_cost": 6.05e-07, - "input_cost_per_token": 1.21e-06, - "input_cost_per_token_batches": 6.05e-07, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 4.84e-06, - "output_cost_per_token_batches": 2.42e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_vision": false - }, - "azure/us/o1-preview-2024-09-12": { - "cache_read_input_token_cost": 8.25e-06, - "input_cost_per_token": 1.65e-05, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 6.6e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_vision": false - }, - "azure/us/o3-2025-04-16": { - "deprecation_date": "2026-04-16", - "cache_read_input_token_cost": 5.5e-07, - "input_cost_per_token": 2.2e-06, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 8.8e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/us/o3-mini-2025-01-31": { - "cache_read_input_token_cost": 6.05e-07, - "input_cost_per_token": 1.21e-06, - "input_cost_per_token_batches": 6.05e-07, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 4.84e-06, - "output_cost_per_token_batches": 2.42e-06, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "azure/us/o4-mini-2025-04-16": { - "cache_read_input_token_cost": 3.1e-07, - "input_cost_per_token": 1.21e-06, - "litellm_provider": "azure", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 4.84e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure/whisper-1": { - "input_cost_per_second": 0.0001, - "litellm_provider": "azure", - "mode": "audio_transcription", - "output_cost_per_second": 0.0001 - }, - "azure_ai/Cohere-embed-v3-english": { - "input_cost_per_token": 1e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 512, - "max_tokens": 512, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1024, - "source": "https://azuremarketplace.microsoft.com/en-us/marketplace/apps/cohere.cohere-embed-v3-english-offer?tab=PlansAndPrice", - "supports_embedding_image_input": true - }, - "azure_ai/Cohere-embed-v3-multilingual": { - "input_cost_per_token": 1e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 512, - "max_tokens": 512, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1024, - "source": "https://azuremarketplace.microsoft.com/en-us/marketplace/apps/cohere.cohere-embed-v3-english-offer?tab=PlansAndPrice", - "supports_embedding_image_input": true - }, - "azure_ai/FLUX-1.1-pro": { - "litellm_provider": "azure_ai", - "mode": "image_generation", - "output_cost_per_image": 0.04, - "source": "https://techcommunity.microsoft.com/blog/azure-ai-foundry-blog/black-forest-labs-flux-1-kontext-pro-and-flux1-1-pro-now-available-in-azure-ai-f/4434659", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure_ai/FLUX.1-Kontext-pro": { - "litellm_provider": "azure_ai", - "mode": "image_generation", - "output_cost_per_image": 0.04, - "source": "https://azuremarketplace.microsoft.com/pt-br/marketplace/apps/cohere.cohere-embed-4-offer?tab=PlansAndPrice", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "azure_ai/Llama-3.2-11B-Vision-Instruct": { - "input_cost_per_token": 3.7e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 3.7e-07, - "source": "https://azuremarketplace.microsoft.com/en/marketplace/apps/metagenai.meta-llama-3-2-11b-vision-instruct-offer?tab=Overview", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure_ai/Llama-3.2-90B-Vision-Instruct": { - "input_cost_per_token": 2.04e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 2.04e-06, - "source": "https://azuremarketplace.microsoft.com/en/marketplace/apps/metagenai.meta-llama-3-2-90b-vision-instruct-offer?tab=Overview", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure_ai/Llama-3.3-70B-Instruct": { - "input_cost_per_token": 7.1e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 7.1e-07, - "source": "https://azuremarketplace.microsoft.com/en/marketplace/apps/metagenai.llama-3-3-70b-instruct-offer?tab=Overview", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure_ai/Llama-4-Maverick-17B-128E-Instruct-FP8": { - "input_cost_per_token": 1.41e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 1000000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 3.5e-07, - "source": "https://azure.microsoft.com/en-us/blog/introducing-the-llama-4-herd-in-azure-ai-foundry-and-azure-databricks/", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure_ai/Llama-4-Scout-17B-16E-Instruct": { - "input_cost_per_token": 2e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 10000000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 7.8e-07, - "source": "https://azure.microsoft.com/en-us/blog/introducing-the-llama-4-herd-in-azure-ai-foundry-and-azure-databricks/", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure_ai/Meta-Llama-3-70B-Instruct": { - "input_cost_per_token": 1.1e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 8192, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 3.7e-07, - "supports_tool_choice": true - }, - "azure_ai/Meta-Llama-3.1-405B-Instruct": { - "input_cost_per_token": 5.33e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 1.6e-05, - "source": "https://azuremarketplace.microsoft.com/en-us/marketplace/apps/metagenai.meta-llama-3-1-405b-instruct-offer?tab=PlansAndPrice", - "supports_tool_choice": true - }, - "azure_ai/Meta-Llama-3.1-70B-Instruct": { - "input_cost_per_token": 2.68e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 3.54e-06, - "source": "https://azuremarketplace.microsoft.com/en-us/marketplace/apps/metagenai.meta-llama-3-1-70b-instruct-offer?tab=PlansAndPrice", - "supports_tool_choice": true - }, - "azure_ai/Meta-Llama-3.1-8B-Instruct": { - "input_cost_per_token": 3e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 6.1e-07, - "source": "https://azuremarketplace.microsoft.com/en-us/marketplace/apps/metagenai.meta-llama-3-1-8b-instruct-offer?tab=PlansAndPrice", - "supports_tool_choice": true - }, - "azure_ai/Phi-3-medium-128k-instruct": { - "input_cost_per_token": 1.7e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6.8e-07, - "source": "https://azure.microsoft.com/en-us/pricing/details/phi-3/", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3-medium-4k-instruct": { - "input_cost_per_token": 1.7e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6.8e-07, - "source": "https://azure.microsoft.com/en-us/pricing/details/phi-3/", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3-mini-128k-instruct": { - "input_cost_per_token": 1.3e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 5.2e-07, - "source": "https://azure.microsoft.com/en-us/pricing/details/phi-3/", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3-mini-4k-instruct": { - "input_cost_per_token": 1.3e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 5.2e-07, - "source": "https://azure.microsoft.com/en-us/pricing/details/phi-3/", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3-small-128k-instruct": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-07, - "source": "https://azure.microsoft.com/en-us/pricing/details/phi-3/", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3-small-8k-instruct": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-07, - "source": "https://azure.microsoft.com/en-us/pricing/details/phi-3/", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3.5-MoE-instruct": { - "input_cost_per_token": 1.6e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6.4e-07, - "source": "https://azure.microsoft.com/en-us/pricing/details/phi-3/", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3.5-mini-instruct": { - "input_cost_per_token": 1.3e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 5.2e-07, - "source": "https://azure.microsoft.com/en-us/pricing/details/phi-3/", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3.5-vision-instruct": { - "input_cost_per_token": 1.3e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 5.2e-07, - "source": "https://azure.microsoft.com/en-us/pricing/details/phi-3/", - "supports_tool_choice": true, - "supports_vision": true - }, - "azure_ai/Phi-4": { - "input_cost_per_token": 1.25e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 5e-07, - "source": "https://techcommunity.microsoft.com/blog/machinelearningblog/affordable-innovation-unveiling-the-pricing-of-phi-3-slms-on-models-as-a-service/4156495", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-4-mini-instruct": { - "input_cost_per_token": 7.5e-08, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3e-07, - "source": "https://techcommunity.microsoft.com/blog/Azure-AI-Services-blog/announcing-new-phi-pricing-empowering-your-business-with-small-language-models/4395112", - "supports_function_calling": true - }, - "azure_ai/Phi-4-multimodal-instruct": { - "input_cost_per_audio_token": 4e-06, - "input_cost_per_token": 8e-08, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3.2e-07, - "source": "https://techcommunity.microsoft.com/blog/Azure-AI-Services-blog/announcing-new-phi-pricing-empowering-your-business-with-small-language-models/4395112", - "supports_audio_input": true, - "supports_function_calling": true, - "supports_vision": true - }, - "azure_ai/Phi-4-mini-reasoning": { - "input_cost_per_token": 8e-08, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3.2e-07, - "source": "https://azure.microsoft.com/en-us/pricing/details/ai-foundry-models/microsoft/", - "supports_function_calling": true - }, - "azure_ai/Phi-4-reasoning": { - "input_cost_per_token": 1.25e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 5e-07, - "source": "https://azure.microsoft.com/en-us/pricing/details/ai-foundry-models/microsoft/", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_reasoning": true - }, - "azure_ai/mistral-document-ai-2505": { - "litellm_provider": "azure_ai", - "ocr_cost_per_page": 3e-3, - "mode": "ocr", - "supported_endpoints": [ - "/v1/ocr" - ], - "source": "https://devblogs.microsoft.com/foundry/whats-new-in-azure-ai-foundry-august-2025/#mistral-document-ai-(ocr)-%E2%80%94-serverless-in-foundry" - }, - "azure_ai/doc-intelligence/prebuilt-read": { - "litellm_provider": "azure_ai", - "ocr_cost_per_page": 1.5e-3, - "mode": "ocr", - "supported_endpoints": [ - "/v1/ocr" - ], - "source": "https://azure.microsoft.com/en-us/pricing/details/ai-document-intelligence/" - }, - "azure_ai/doc-intelligence/prebuilt-layout": { - "litellm_provider": "azure_ai", - "ocr_cost_per_page": 1e-2, - "mode": "ocr", - "supported_endpoints": [ - "/v1/ocr" - ], - "source": "https://azure.microsoft.com/en-us/pricing/details/ai-document-intelligence/" - }, - "azure_ai/doc-intelligence/prebuilt-document": { - "litellm_provider": "azure_ai", - "ocr_cost_per_page": 1e-2, - "mode": "ocr", - "supported_endpoints": [ - "/v1/ocr" - ], - "source": "https://azure.microsoft.com/en-us/pricing/details/ai-document-intelligence/" - }, - "azure_ai/MAI-DS-R1": { - "input_cost_per_token": 1.35e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 5.4e-06, - "source": "https://azure.microsoft.com/en-us/pricing/details/ai-foundry-models/microsoft/", - "supports_reasoning": true, - "supports_tool_choice": true - }, - "azure_ai/cohere-rerank-v3-english": { - "input_cost_per_query": 0.002, - "input_cost_per_token": 0.0, - "litellm_provider": "azure_ai", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_query_tokens": 2048, - "max_tokens": 4096, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "azure_ai/cohere-rerank-v3-multilingual": { - "input_cost_per_query": 0.002, - "input_cost_per_token": 0.0, - "litellm_provider": "azure_ai", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_query_tokens": 2048, - "max_tokens": 4096, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "azure_ai/cohere-rerank-v3.5": { - "input_cost_per_query": 0.002, - "input_cost_per_token": 0.0, - "litellm_provider": "azure_ai", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_query_tokens": 2048, - "max_tokens": 4096, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "azure_ai/cohere-rerank-v4.0-pro": { - "input_cost_per_query": 0.0025, - "input_cost_per_token": 0.0, - "litellm_provider": "azure_ai", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_query_tokens": 4096, - "max_tokens": 32768, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "azure_ai/cohere-rerank-v4.0-fast": { - "input_cost_per_query": 0.002, - "input_cost_per_token": 0.0, - "litellm_provider": "azure_ai", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_query_tokens": 4096, - "max_tokens": 32768, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "azure_ai/deepseek-v3.2": { - "input_cost_per_token": 5.8e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.68e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "azure_ai/deepseek-v3.2-speciale": { - "input_cost_per_token": 5.8e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.68e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "azure_ai/deepseek-r1": { - "input_cost_per_token": 1.35e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 5.4e-06, - "source": "https://techcommunity.microsoft.com/blog/machinelearningblog/deepseek-r1-improved-performance-higher-limits-and-transparent-pricing/4386367", - "supports_reasoning": true, - "supports_tool_choice": true - }, - "azure_ai/deepseek-v3": { - "input_cost_per_token": 1.14e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 4.56e-06, - "source": "https://techcommunity.microsoft.com/blog/machinelearningblog/announcing-deepseek-v3-on-azure-ai-foundry-and-github/4390438", - "supports_tool_choice": true - }, - "azure_ai/deepseek-v3-0324": { - "input_cost_per_token": 1.14e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 4.56e-06, - "source": "https://techcommunity.microsoft.com/blog/machinelearningblog/announcing-deepseek-v3-on-azure-ai-foundry-and-github/4390438", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure_ai/embed-v-4-0": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_tokens": 128000, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 3072, - "source": "https://azuremarketplace.microsoft.com/pt-br/marketplace/apps/cohere.cohere-embed-4-offer?tab=PlansAndPrice", - "supported_endpoints": [ - "/v1/embeddings" - ], - "supported_modalities": [ - "text", - "image" - ], - "supports_embedding_image_input": true - }, - "azure_ai/global/grok-3": { - "input_cost_per_token": 3e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "source": "https://devblogs.microsoft.com/foundry/announcing-grok-3-and-grok-3-mini-on-azure-ai-foundry/", - "supports_function_calling": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "azure_ai/global/grok-3-mini": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.27e-06, - "source": "https://devblogs.microsoft.com/foundry/announcing-grok-3-and-grok-3-mini-on-azure-ai-foundry/", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "azure_ai/grok-3": { - "input_cost_per_token": 3.3e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.65e-05, - "source": "https://devblogs.microsoft.com/foundry/announcing-grok-3-and-grok-3-mini-on-azure-ai-foundry/", - "supports_function_calling": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "azure_ai/grok-3-mini": { - "input_cost_per_token": 2.75e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.38e-06, - "source": "https://devblogs.microsoft.com/foundry/announcing-grok-3-and-grok-3-mini-on-azure-ai-foundry/", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "azure_ai/grok-4": { - "input_cost_per_token": 5.5e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.75e-05, - "source": "https://azure.microsoft.com/en-us/blog/grok-4-is-now-available-in-azure-ai-foundry-unlock-frontier-intelligence-and-business-ready-capabilities/", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "azure_ai/grok-4-fast-non-reasoning": { - "input_cost_per_token": 0.43e-06, - "output_cost_per_token": 1.73e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "azure_ai/grok-4-fast-reasoning": { - "input_cost_per_token": 0.43e-06, - "output_cost_per_token": 1.73e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "source": "https://techcommunity.microsoft.com/blog/azure-ai-foundry-blog/announcing-the-grok-4-fast-models-from-xai-now-available-in-azure-ai-foundry/4456701", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "azure_ai/grok-code-fast-1": { - "input_cost_per_token": 3.5e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.75e-05, - "source": "https://azure.microsoft.com/en-us/blog/grok-4-is-now-available-in-azure-ai-foundry-unlock-frontier-intelligence-and-business-ready-capabilities/", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "azure_ai/jais-30b-chat": { - "input_cost_per_token": 0.0032, - "litellm_provider": "azure_ai", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.00971, - "source": "https://azure.microsoft.com/en-us/products/ai-services/ai-foundry/models/jais-30b-chat" - }, - "azure_ai/jamba-instruct": { - "input_cost_per_token": 5e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 70000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 7e-07, - "supports_tool_choice": true - }, - "azure_ai/ministral-3b": { - "input_cost_per_token": 4e-08, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 4e-08, - "source": "https://azuremarketplace.microsoft.com/en/marketplace/apps/000-000.ministral-3b-2410-offer?tab=Overview", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure_ai/mistral-large": { - "input_cost_per_token": 4e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 1.2e-05, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure_ai/mistral-large-2407": { - "input_cost_per_token": 2e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-06, - "source": "https://azuremarketplace.microsoft.com/en/marketplace/apps/000-000.mistral-ai-large-2407-offer?tab=Overview", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure_ai/mistral-large-latest": { - "input_cost_per_token": 2e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-06, - "source": "https://azuremarketplace.microsoft.com/en/marketplace/apps/000-000.mistral-ai-large-2407-offer?tab=Overview", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure_ai/mistral-large-3": { - "input_cost_per_token": 5e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 256000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "source": "https://azure.microsoft.com/en-us/blog/introducing-mistral-large-3-in-microsoft-foundry-open-capable-and-ready-for-production-workloads/", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "azure_ai/mistral-medium-2505": { - "input_cost_per_token": 4e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure_ai/mistral-nemo": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "azure_ai", - "max_input_tokens": 131072, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "source": "https://azuremarketplace.microsoft.com/en/marketplace/apps/000-000.mistral-nemo-12b-2407?tab=PlansAndPrice", - "supports_function_calling": true - }, - "azure_ai/mistral-small": { - "input_cost_per_token": 1e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 3e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure_ai/mistral-small-2503": { - "input_cost_per_token": 1e-06, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 3e-06, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "babbage-002": { - "input_cost_per_token": 4e-07, - "litellm_provider": "text-completion-openai", - "max_input_tokens": 16384, - "max_output_tokens": 4096, - "max_tokens": 16384, - "mode": "completion", - "output_cost_per_token": 4e-07 - }, - "bedrock/*/1-month-commitment/cohere.command-light-text-v14": { - "input_cost_per_second": 0.001902, - "litellm_provider": "bedrock", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_second": 0.001902, - "supports_tool_choice": true - }, - "bedrock/*/1-month-commitment/cohere.command-text-v14": { - "input_cost_per_second": 0.011, - "litellm_provider": "bedrock", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_second": 0.011, - "supports_tool_choice": true - }, - "bedrock/*/6-month-commitment/cohere.command-light-text-v14": { - "input_cost_per_second": 0.0011416, - "litellm_provider": "bedrock", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_second": 0.0011416, - "supports_tool_choice": true - }, - "bedrock/*/6-month-commitment/cohere.command-text-v14": { - "input_cost_per_second": 0.0066027, - "litellm_provider": "bedrock", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_second": 0.0066027, - "supports_tool_choice": true - }, - "bedrock/ap-northeast-1/1-month-commitment/anthropic.claude-instant-v1": { - "input_cost_per_second": 0.01475, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.01475, - "supports_tool_choice": true - }, - "bedrock/ap-northeast-1/1-month-commitment/anthropic.claude-v1": { - "input_cost_per_second": 0.0455, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.0455 - }, - "bedrock/ap-northeast-1/1-month-commitment/anthropic.claude-v2:1": { - "input_cost_per_second": 0.0455, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.0455, - "supports_tool_choice": true - }, - "bedrock/ap-northeast-1/6-month-commitment/anthropic.claude-instant-v1": { - "input_cost_per_second": 0.008194, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.008194, - "supports_tool_choice": true - }, - "bedrock/ap-northeast-1/6-month-commitment/anthropic.claude-v1": { - "input_cost_per_second": 0.02527, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.02527 - }, - "bedrock/ap-northeast-1/6-month-commitment/anthropic.claude-v2:1": { - "input_cost_per_second": 0.02527, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.02527, - "supports_tool_choice": true - }, - "bedrock/ap-northeast-1/anthropic.claude-instant-v1": { - "input_cost_per_token": 2.23e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 7.55e-06, - "supports_tool_choice": true - }, - "bedrock/ap-northeast-1/anthropic.claude-v1": { - "input_cost_per_token": 8e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_tool_choice": true - }, - "bedrock/ap-northeast-1/anthropic.claude-v2:1": { - "input_cost_per_token": 8e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_tool_choice": true - }, - "bedrock/ap-south-1/meta.llama3-70b-instruct-v1:0": { - "input_cost_per_token": 3.18e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 4.2e-06 - }, - "bedrock/ap-south-1/meta.llama3-8b-instruct-v1:0": { - "input_cost_per_token": 3.6e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 7.2e-07 - }, - "bedrock/ca-central-1/meta.llama3-70b-instruct-v1:0": { - "input_cost_per_token": 3.05e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 4.03e-06 - }, - "bedrock/ca-central-1/meta.llama3-8b-instruct-v1:0": { - "input_cost_per_token": 3.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 6.9e-07 - }, - "bedrock/eu-central-1/1-month-commitment/anthropic.claude-instant-v1": { - "input_cost_per_second": 0.01635, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.01635, - "supports_tool_choice": true - }, - "bedrock/eu-central-1/1-month-commitment/anthropic.claude-v1": { - "input_cost_per_second": 0.0415, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.0415 - }, - "bedrock/eu-central-1/1-month-commitment/anthropic.claude-v2:1": { - "input_cost_per_second": 0.0415, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.0415, - "supports_tool_choice": true - }, - "bedrock/eu-central-1/6-month-commitment/anthropic.claude-instant-v1": { - "input_cost_per_second": 0.009083, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.009083, - "supports_tool_choice": true - }, - "bedrock/eu-central-1/6-month-commitment/anthropic.claude-v1": { - "input_cost_per_second": 0.02305, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.02305 - }, - "bedrock/eu-central-1/6-month-commitment/anthropic.claude-v2:1": { - "input_cost_per_second": 0.02305, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.02305, - "supports_tool_choice": true - }, - "bedrock/eu-central-1/anthropic.claude-instant-v1": { - "input_cost_per_token": 2.48e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 8.38e-06, - "supports_tool_choice": true - }, - "bedrock/eu-central-1/anthropic.claude-v1": { - "input_cost_per_token": 8e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-05 - }, - "bedrock/eu-central-1/anthropic.claude-v2:1": { - "input_cost_per_token": 8e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_tool_choice": true - }, - "bedrock/eu-west-1/meta.llama3-70b-instruct-v1:0": { - "input_cost_per_token": 2.86e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 3.78e-06 - }, - "bedrock/eu-west-1/meta.llama3-8b-instruct-v1:0": { - "input_cost_per_token": 3.2e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 6.5e-07 - }, - "bedrock/eu-west-2/meta.llama3-70b-instruct-v1:0": { - "input_cost_per_token": 3.45e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 4.55e-06 - }, - "bedrock/eu-west-2/meta.llama3-8b-instruct-v1:0": { - "input_cost_per_token": 3.9e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 7.8e-07 - }, - "bedrock/eu-west-3/mistral.mistral-7b-instruct-v0:2": { - "input_cost_per_token": 2e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.6e-07, - "supports_tool_choice": true - }, - "bedrock/eu-west-3/mistral.mistral-large-2402-v1:0": { - "input_cost_per_token": 1.04e-05, - "litellm_provider": "bedrock", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 3.12e-05, - "supports_function_calling": true - }, - "bedrock/eu-west-3/mistral.mixtral-8x7b-instruct-v0:1": { - "input_cost_per_token": 5.9e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 9.1e-07, - "supports_tool_choice": true - }, - "bedrock/invoke/anthropic.claude-3-5-sonnet-20240620-v1:0": { - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "metadata": { - "notes": "Anthropic via Invoke route does not currently support pdf input." - }, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "bedrock/sa-east-1/meta.llama3-70b-instruct-v1:0": { - "input_cost_per_token": 4.45e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 5.88e-06 - }, - "bedrock/sa-east-1/meta.llama3-8b-instruct-v1:0": { - "input_cost_per_token": 5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.01e-06 - }, - "bedrock/us-east-1/1-month-commitment/anthropic.claude-instant-v1": { - "input_cost_per_second": 0.011, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.011, - "supports_tool_choice": true - }, - "bedrock/us-east-1/1-month-commitment/anthropic.claude-v1": { - "input_cost_per_second": 0.0175, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.0175 - }, - "bedrock/us-east-1/1-month-commitment/anthropic.claude-v2:1": { - "input_cost_per_second": 0.0175, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.0175, - "supports_tool_choice": true - }, - "bedrock/us-east-1/6-month-commitment/anthropic.claude-instant-v1": { - "input_cost_per_second": 0.00611, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.00611, - "supports_tool_choice": true - }, - "bedrock/us-east-1/6-month-commitment/anthropic.claude-v1": { - "input_cost_per_second": 0.00972, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.00972 - }, - "bedrock/us-east-1/6-month-commitment/anthropic.claude-v2:1": { - "input_cost_per_second": 0.00972, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.00972, - "supports_tool_choice": true - }, - "bedrock/us-east-1/anthropic.claude-instant-v1": { - "input_cost_per_token": 8e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-06, - "supports_tool_choice": true - }, - "bedrock/us-east-1/anthropic.claude-v1": { - "input_cost_per_token": 8e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_tool_choice": true - }, - "bedrock/us-east-1/anthropic.claude-v2:1": { - "input_cost_per_token": 8e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_tool_choice": true - }, - "bedrock/us-east-1/meta.llama3-70b-instruct-v1:0": { - "input_cost_per_token": 2.65e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 3.5e-06 - }, - "bedrock/us-east-1/meta.llama3-8b-instruct-v1:0": { - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 6e-07 - }, - "bedrock/us-east-1/mistral.mistral-7b-instruct-v0:2": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2e-07, - "supports_tool_choice": true - }, - "bedrock/us-east-1/mistral.mistral-large-2402-v1:0": { - "input_cost_per_token": 8e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_function_calling": true - }, - "bedrock/us-east-1/mistral.mixtral-8x7b-instruct-v0:1": { - "input_cost_per_token": 4.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 7e-07, - "supports_tool_choice": true - }, - "bedrock/us-gov-east-1/amazon.nova-pro-v1:0": { - "input_cost_per_token": 9.6e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 300000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 3.84e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_vision": true - }, - "bedrock/us-gov-east-1/amazon.titan-embed-text-v1": { - "input_cost_per_token": 1e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1536 - }, - "bedrock/us-gov-east-1/amazon.titan-embed-text-v2:0": { - "input_cost_per_token": 2e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1024 - }, - "bedrock/us-gov-east-1/amazon.titan-text-express-v1": { - "input_cost_per_token": 1.3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 42000, - "max_output_tokens": 8000, - "max_tokens": 8000, - "mode": "chat", - "output_cost_per_token": 1.7e-06 - }, - "bedrock/us-gov-east-1/amazon.titan-text-lite-v1": { - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 42000, - "max_output_tokens": 4000, - "max_tokens": 4000, - "mode": "chat", - "output_cost_per_token": 4e-07 - }, - "bedrock/us-gov-east-1/amazon.titan-text-premier-v1:0": { - "input_cost_per_token": 5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 42000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 1.5e-06 - }, - "bedrock/us-gov-east-1/anthropic.claude-3-5-sonnet-20240620-v1:0": { - "input_cost_per_token": 3.6e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.8e-05, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "bedrock/us-gov-east-1/anthropic.claude-3-haiku-20240307-v1:0": { - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "bedrock/us-gov-east-1/claude-sonnet-4-5-20250929-v1:0": { - "input_cost_per_token": 3.3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.65e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "bedrock/us-gov-east-1/meta.llama3-70b-instruct-v1:0": { - "input_cost_per_token": 2.65e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 8000, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 3.5e-06, - "supports_pdf_input": true - }, - "bedrock/us-gov-east-1/meta.llama3-8b-instruct-v1:0": { - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8000, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 2.65e-06, - "supports_pdf_input": true - }, - "bedrock/us-gov-west-1/amazon.nova-pro-v1:0": { - "input_cost_per_token": 9.6e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 300000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 3.84e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_vision": true - }, - "bedrock/us-gov-west-1/amazon.titan-embed-text-v1": { - "input_cost_per_token": 1e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1536 - }, - "bedrock/us-gov-west-1/amazon.titan-embed-text-v2:0": { - "input_cost_per_token": 2e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1024 - }, - "bedrock/us-gov-west-1/amazon.titan-text-express-v1": { - "input_cost_per_token": 1.3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 42000, - "max_output_tokens": 8000, - "max_tokens": 8000, - "mode": "chat", - "output_cost_per_token": 1.7e-06 - }, - "bedrock/us-gov-west-1/amazon.titan-text-lite-v1": { - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 42000, - "max_output_tokens": 4000, - "max_tokens": 4000, - "mode": "chat", - "output_cost_per_token": 4e-07 - }, - "bedrock/us-gov-west-1/amazon.titan-text-premier-v1:0": { - "input_cost_per_token": 5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 42000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 1.5e-06 - }, - "bedrock/us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0": { - "cache_creation_input_token_cost": 4.5e-06, - "cache_read_input_token_cost": 3.6e-07, - "input_cost_per_token": 3.6e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.8e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "bedrock/us-gov-west-1/anthropic.claude-3-5-sonnet-20240620-v1:0": { - "input_cost_per_token": 3.6e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.8e-05, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "bedrock/us-gov-west-1/anthropic.claude-3-haiku-20240307-v1:0": { - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "bedrock/us-gov-west-1/claude-sonnet-4-5-20250929-v1:0": { - "input_cost_per_token": 3.3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.65e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "bedrock/us-gov-west-1/meta.llama3-70b-instruct-v1:0": { - "input_cost_per_token": 2.65e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 8000, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 3.5e-06, - "supports_pdf_input": true - }, - "bedrock/us-gov-west-1/meta.llama3-8b-instruct-v1:0": { - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8000, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 2.65e-06, - "supports_pdf_input": true - }, - "bedrock/us-west-1/meta.llama3-70b-instruct-v1:0": { - "input_cost_per_token": 2.65e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 3.5e-06 - }, - "bedrock/us-west-1/meta.llama3-8b-instruct-v1:0": { - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 6e-07 - }, - "bedrock/us-west-2/1-month-commitment/anthropic.claude-instant-v1": { - "input_cost_per_second": 0.011, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.011, - "supports_tool_choice": true - }, - "bedrock/us-west-2/1-month-commitment/anthropic.claude-v1": { - "input_cost_per_second": 0.0175, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.0175 - }, - "bedrock/us-west-2/1-month-commitment/anthropic.claude-v2:1": { - "input_cost_per_second": 0.0175, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.0175, - "supports_tool_choice": true - }, - "bedrock/us-west-2/6-month-commitment/anthropic.claude-instant-v1": { - "input_cost_per_second": 0.00611, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.00611, - "supports_tool_choice": true - }, - "bedrock/us-west-2/6-month-commitment/anthropic.claude-v1": { - "input_cost_per_second": 0.00972, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.00972 - }, - "bedrock/us-west-2/6-month-commitment/anthropic.claude-v2:1": { - "input_cost_per_second": 0.00972, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_second": 0.00972, - "supports_tool_choice": true - }, - "bedrock/us-west-2/anthropic.claude-instant-v1": { - "input_cost_per_token": 8e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-06, - "supports_tool_choice": true - }, - "bedrock/us-west-2/anthropic.claude-v1": { - "input_cost_per_token": 8e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_tool_choice": true - }, - "bedrock/us-west-2/anthropic.claude-v2:1": { - "input_cost_per_token": 8e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_tool_choice": true - }, - "bedrock/us-west-2/mistral.mistral-7b-instruct-v0:2": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2e-07, - "supports_tool_choice": true - }, - "bedrock/us-west-2/mistral.mistral-large-2402-v1:0": { - "input_cost_per_token": 8e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_function_calling": true - }, - "bedrock/us-west-2/mistral.mixtral-8x7b-instruct-v0:1": { - "input_cost_per_token": 4.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 7e-07, - "supports_tool_choice": true - }, - "bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0": { - "cache_creation_input_token_cost": 1e-06, - "cache_read_input_token_cost": 8e-08, - "input_cost_per_token": 8e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 4e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "cerebras/llama-3.3-70b": { - "input_cost_per_token": 8.5e-07, - "litellm_provider": "cerebras", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "cerebras/llama3.1-70b": { - "input_cost_per_token": 6e-07, - "litellm_provider": "cerebras", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "cerebras/llama3.1-8b": { - "input_cost_per_token": 1e-07, - "litellm_provider": "cerebras", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-07, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "cerebras/gpt-oss-120b": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "cerebras", - "max_input_tokens": 131072, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 6.9e-07, - "source": "https://www.cerebras.ai/blog/openai-gpt-oss-120b-runs-fastest-on-cerebras", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "cerebras/qwen-3-32b": { - "input_cost_per_token": 4e-07, - "litellm_provider": "cerebras", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 8e-07, - "source": "https://inference-docs.cerebras.ai/support/pricing", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "cerebras/zai-glm-4.6": { - "input_cost_per_token": 2.25e-06, - "litellm_provider": "cerebras", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2.75e-06, - "source": "https://www.cerebras.ai/pricing", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "chat-bison": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-chat-models", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "chat-bison-32k": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-chat-models", - "max_input_tokens": 32000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "chat-bison-32k@002": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-chat-models", - "max_input_tokens": 32000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "chat-bison@001": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-chat-models", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "chat-bison@002": { - "deprecation_date": "2025-04-09", - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-chat-models", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "chatdolphin": { - "input_cost_per_token": 5e-07, - "litellm_provider": "nlp_cloud", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 5e-07 - }, - "chatgpt-4o-latest": { - "input_cost_per_token": 5e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-4o-transcribe-diarize": { - "input_cost_per_audio_token": 6e-06, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 16000, - "max_output_tokens": 2000, - "mode": "audio_transcription", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "claude-3-5-haiku-20241022": { - "cache_creation_input_token_cost": 1e-06, - "cache_creation_input_token_cost_above_1hr": 6e-06, - "cache_read_input_token_cost": 8e-08, - "deprecation_date": "2025-10-01", - "input_cost_per_token": 8e-07, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 4e-06, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tool_use_system_prompt_tokens": 264 - }, - "claude-3-5-haiku-latest": { - "cache_creation_input_token_cost": 1.25e-06, - "cache_creation_input_token_cost_above_1hr": 6e-06, - "cache_read_input_token_cost": 1e-07, - "deprecation_date": "2025-10-01", - "input_cost_per_token": 1e-06, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 5e-06, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tool_use_system_prompt_tokens": 264 - }, - "claude-haiku-4-5-20251001": { - "cache_creation_input_token_cost": 1.25e-06, - "cache_creation_input_token_cost_above_1hr": 2e-06, - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 1e-06, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 5e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_computer_use": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "claude-haiku-4-5": { - "cache_creation_input_token_cost": 1.25e-06, - "cache_creation_input_token_cost_above_1hr": 2e-06, - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 1e-06, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 5e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_computer_use": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "claude-3-5-sonnet-20240620": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_creation_input_token_cost_above_1hr": 6e-06, - "cache_read_input_token_cost": 3e-07, - "deprecation_date": "2025-06-01", - "input_cost_per_token": 3e-06, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "claude-3-5-sonnet-20241022": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_creation_input_token_cost_above_1hr": 6e-06, - "cache_read_input_token_cost": 3e-07, - "deprecation_date": "2025-10-01", - "input_cost_per_token": 3e-06, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tool_use_system_prompt_tokens": 159 - }, - "claude-3-5-sonnet-latest": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_creation_input_token_cost_above_1hr": 6e-06, - "cache_read_input_token_cost": 3e-07, - "deprecation_date": "2025-06-01", - "input_cost_per_token": 3e-06, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tool_use_system_prompt_tokens": 159 - }, - "claude-3-7-sonnet-20250219": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_creation_input_token_cost_above_1hr": 6e-06, - "cache_read_input_token_cost": 3e-07, - "deprecation_date": "2026-02-19", - "input_cost_per_token": 3e-06, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tool_use_system_prompt_tokens": 159 - }, - "claude-3-7-sonnet-latest": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_creation_input_token_cost_above_1hr": 6e-06, - "cache_read_input_token_cost": 3e-07, - "deprecation_date": "2025-06-01", - "input_cost_per_token": 3e-06, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "claude-3-haiku-20240307": { - "cache_creation_input_token_cost": 3e-07, - "cache_creation_input_token_cost_above_1hr": 6e-06, - "cache_read_input_token_cost": 3e-08, - "input_cost_per_token": 2.5e-07, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.25e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 264 - }, - "claude-3-opus-20240229": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_creation_input_token_cost_above_1hr": 6e-06, - "cache_read_input_token_cost": 1.5e-06, - "deprecation_date": "2026-05-01", - "input_cost_per_token": 1.5e-05, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 395 - }, - "claude-3-opus-latest": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_creation_input_token_cost_above_1hr": 6e-06, - "cache_read_input_token_cost": 1.5e-06, - "deprecation_date": "2025-03-01", - "input_cost_per_token": 1.5e-05, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 395 - }, - "claude-4-opus-20250514": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "claude-4-sonnet-20250514": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost": 3e-07, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "litellm_provider": "anthropic", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 1000000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "claude-sonnet-4-5": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "claude-sonnet-4-5-20250929": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tool_use_system_prompt_tokens": 346 - }, - "claude-sonnet-4-5-20250929-v1:0": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "claude-opus-4-1": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_creation_input_token_cost_above_1hr": 3e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "claude-opus-4-1-20250805": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_creation_input_token_cost_above_1hr": 3e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "deprecation_date": "2026-08-05", - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "claude-opus-4-20250514": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_creation_input_token_cost_above_1hr": 3e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "deprecation_date": "2026-05-14", - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "claude-opus-4-5-20251101": { - "cache_creation_input_token_cost": 6.25e-06, - "cache_creation_input_token_cost_above_1hr": 1e-05, - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 5e-06, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 2.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "claude-opus-4-5": { - "cache_creation_input_token_cost": 6.25e-06, - "cache_creation_input_token_cost_above_1hr": 1e-05, - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 5e-06, - "litellm_provider": "anthropic", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 2.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "claude-sonnet-4-20250514": { - "deprecation_date": "2026-05-14", - "cache_creation_input_token_cost": 3.75e-06, - "cache_creation_input_token_cost_above_1hr": 6e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "anthropic", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "cloudflare/@cf/meta/llama-2-7b-chat-fp16": { - "input_cost_per_token": 1.923e-06, - "litellm_provider": "cloudflare", - "max_input_tokens": 3072, - "max_output_tokens": 3072, - "max_tokens": 3072, - "mode": "chat", - "output_cost_per_token": 1.923e-06 - }, - "cloudflare/@cf/meta/llama-2-7b-chat-int8": { - "input_cost_per_token": 1.923e-06, - "litellm_provider": "cloudflare", - "max_input_tokens": 2048, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 1.923e-06 - }, - "cloudflare/@cf/mistral/mistral-7b-instruct-v0.1": { - "input_cost_per_token": 1.923e-06, - "litellm_provider": "cloudflare", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.923e-06 - }, - "cloudflare/@hf/thebloke/codellama-7b-instruct-awq": { - "input_cost_per_token": 1.923e-06, - "litellm_provider": "cloudflare", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.923e-06 - }, - "code-bison": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-text-models", - "max_input_tokens": 6144, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "chat", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "code-bison-32k@002": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-text-models", - "max_input_tokens": 6144, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "code-bison32k": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-text-models", - "max_input_tokens": 6144, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "code-bison@001": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-text-models", - "max_input_tokens": 6144, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "code-bison@002": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-text-models", - "max_input_tokens": 6144, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "code-gecko": { - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-text-models", - "max_input_tokens": 2048, - "max_output_tokens": 64, - "max_tokens": 64, - "mode": "completion", - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "code-gecko-latest": { - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-text-models", - "max_input_tokens": 2048, - "max_output_tokens": 64, - "max_tokens": 64, - "mode": "completion", - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "code-gecko@001": { - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-text-models", - "max_input_tokens": 2048, - "max_output_tokens": 64, - "max_tokens": 64, - "mode": "completion", - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "code-gecko@002": { - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-text-models", - "max_input_tokens": 2048, - "max_output_tokens": 64, - "max_tokens": 64, - "mode": "completion", - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "codechat-bison": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-chat-models", - "max_input_tokens": 6144, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "chat", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "codechat-bison-32k": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-chat-models", - "max_input_tokens": 32000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "codechat-bison-32k@002": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-chat-models", - "max_input_tokens": 32000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "codechat-bison@001": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-chat-models", - "max_input_tokens": 6144, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "chat", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "codechat-bison@002": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-chat-models", - "max_input_tokens": 6144, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "chat", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "codechat-bison@latest": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-code-chat-models", - "max_input_tokens": 6144, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "chat", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "codestral/codestral-2405": { - "input_cost_per_token": 0.0, - "litellm_provider": "codestral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://docs.mistral.ai/capabilities/code_generation/", - "supports_assistant_prefill": true, - "supports_tool_choice": true - }, - "codestral/codestral-latest": { - "input_cost_per_token": 0.0, - "litellm_provider": "codestral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://docs.mistral.ai/capabilities/code_generation/", - "supports_assistant_prefill": true, - "supports_tool_choice": true - }, - "codex-mini-latest": { - "cache_read_input_token_cost": 3.75e-07, - "input_cost_per_token": 1.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "responses", - "output_cost_per_token": 6e-06, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "cohere.command-light-text-v14": { - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_tool_choice": true - }, - "cohere.command-r-plus-v1:0": { - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_tool_choice": true - }, - "cohere.command-r-v1:0": { - "input_cost_per_token": 5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "supports_tool_choice": true - }, - "cohere.command-text-v14": { - "input_cost_per_token": 1.5e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_tool_choice": true - }, - "cohere.embed-english-v3": { - "input_cost_per_token": 1e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 512, - "max_tokens": 512, - "mode": "embedding", - "output_cost_per_token": 0.0, - "supports_embedding_image_input": true - }, - "cohere.embed-multilingual-v3": { - "input_cost_per_token": 1e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 512, - "max_tokens": 512, - "mode": "embedding", - "output_cost_per_token": 0.0, - "supports_embedding_image_input": true - }, - "cohere.embed-v4:0": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_tokens": 128000, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1536, - "supports_embedding_image_input": true - }, - "cohere/embed-v4.0": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "cohere", - "max_input_tokens": 128000, - "max_tokens": 128000, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1536, - "supports_embedding_image_input": true - }, - "cohere.rerank-v3-5:0": { - "input_cost_per_query": 0.002, - "input_cost_per_token": 0.0, - "litellm_provider": "bedrock", - "max_document_chunks_per_query": 100, - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "max_query_tokens": 32000, - "max_tokens": 32000, - "max_tokens_per_document_chunk": 512, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "command": { - "input_cost_per_token": 1e-06, - "litellm_provider": "cohere", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "completion", - "output_cost_per_token": 2e-06 - }, - "command-a-03-2025": { - "input_cost_per_token": 2.5e-06, - "litellm_provider": "cohere_chat", - "max_input_tokens": 256000, - "max_output_tokens": 8000, - "max_tokens": 8000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "command-light": { - "input_cost_per_token": 3e-07, - "litellm_provider": "cohere_chat", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_tool_choice": true - }, - "command-nightly": { - "input_cost_per_token": 1e-06, - "litellm_provider": "cohere", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "completion", - "output_cost_per_token": 2e-06 - }, - "command-r": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "cohere_chat", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "command-r-08-2024": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "cohere_chat", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "command-r-plus": { - "input_cost_per_token": 2.5e-06, - "litellm_provider": "cohere_chat", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "command-r-plus-08-2024": { - "input_cost_per_token": 2.5e-06, - "litellm_provider": "cohere_chat", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "command-r7b-12-2024": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "cohere_chat", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3.75e-08, - "source": "https://docs.cohere.com/v2/docs/command-r7b", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "computer-use-preview": { - "input_cost_per_token": 3e-06, - "litellm_provider": "azure", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "chat", - "output_cost_per_token": 1.2e-05, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": false, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "deepseek-chat": { - "cache_read_input_token_cost": 6e-08, - "input_cost_per_token": 6e-07, - "litellm_provider": "deepseek", - "max_input_tokens": 131072, - "max_output_tokens": 8192, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.7e-06, - "source": "https://api-docs.deepseek.com/quick_start/pricing", - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "deepseek-reasoner": { - "cache_read_input_token_cost": 6e-08, - "input_cost_per_token": 6e-07, - "litellm_provider": "deepseek", - "max_input_tokens": 131072, - "max_output_tokens": 65536, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.7e-06, - "source": "https://api-docs.deepseek.com/quick_start/pricing", - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supports_function_calling": false, - "supports_native_streaming": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": false - }, - "dashscope/qwen-coder": { - "input_cost_per_token": 3e-07, - "litellm_provider": "dashscope", - "max_input_tokens": 1000000, - "max_output_tokens": 16384, - "max_tokens": 1000000, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "dashscope/qwen-flash": { - "litellm_provider": "dashscope", - "max_input_tokens": 997952, - "max_output_tokens": 32768, - "max_tokens": 1000000, - "mode": "chat", - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "tiered_pricing": [ - { - "input_cost_per_token": 5e-08, - "output_cost_per_token": 4e-07, - "range": [ - 0, - 256000.0 - ] - }, - { - "input_cost_per_token": 2.5e-07, - "output_cost_per_token": 2e-06, - "range": [ - 256000.0, - 1000000.0 - ] - } - ] - }, - "dashscope/qwen-flash-2025-07-28": { - "litellm_provider": "dashscope", - "max_input_tokens": 997952, - "max_output_tokens": 32768, - "max_tokens": 1000000, - "mode": "chat", - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "tiered_pricing": [ - { - "input_cost_per_token": 5e-08, - "output_cost_per_token": 4e-07, - "range": [ - 0, - 256000.0 - ] - }, - { - "input_cost_per_token": 2.5e-07, - "output_cost_per_token": 2e-06, - "range": [ - 256000.0, - 1000000.0 - ] - } - ] - }, - "dashscope/qwen-max": { - "input_cost_per_token": 1.6e-06, - "litellm_provider": "dashscope", - "max_input_tokens": 30720, - "max_output_tokens": 8192, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 6.4e-06, - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "dashscope/qwen-plus": { - "input_cost_per_token": 4e-07, - "litellm_provider": "dashscope", - "max_input_tokens": 129024, - "max_output_tokens": 16384, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "dashscope/qwen-plus-2025-01-25": { - "input_cost_per_token": 4e-07, - "litellm_provider": "dashscope", - "max_input_tokens": 129024, - "max_output_tokens": 8192, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "dashscope/qwen-plus-2025-04-28": { - "input_cost_per_token": 4e-07, - "litellm_provider": "dashscope", - "max_input_tokens": 129024, - "max_output_tokens": 16384, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_reasoning_token": 4e-06, - "output_cost_per_token": 1.2e-06, - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "dashscope/qwen-plus-2025-07-14": { - "input_cost_per_token": 4e-07, - "litellm_provider": "dashscope", - "max_input_tokens": 129024, - "max_output_tokens": 16384, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_reasoning_token": 4e-06, - "output_cost_per_token": 1.2e-06, - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "dashscope/qwen-plus-2025-07-28": { - "litellm_provider": "dashscope", - "max_input_tokens": 997952, - "max_output_tokens": 32768, - "max_tokens": 1000000, - "mode": "chat", - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "tiered_pricing": [ - { - "input_cost_per_token": 4e-07, - "output_cost_per_reasoning_token": 4e-06, - "output_cost_per_token": 1.2e-06, - "range": [ - 0, - 256000.0 - ] - }, - { - "input_cost_per_token": 1.2e-06, - "output_cost_per_reasoning_token": 1.2e-05, - "output_cost_per_token": 3.6e-06, - "range": [ - 256000.0, - 1000000.0 - ] - } - ] - }, - "dashscope/qwen-plus-2025-09-11": { - "litellm_provider": "dashscope", - "max_input_tokens": 997952, - "max_output_tokens": 32768, - "max_tokens": 1000000, - "mode": "chat", - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "tiered_pricing": [ - { - "input_cost_per_token": 4e-07, - "output_cost_per_reasoning_token": 4e-06, - "output_cost_per_token": 1.2e-06, - "range": [ - 0, - 256000.0 - ] - }, - { - "input_cost_per_token": 1.2e-06, - "output_cost_per_reasoning_token": 1.2e-05, - "output_cost_per_token": 3.6e-06, - "range": [ - 256000.0, - 1000000.0 - ] - } - ] - }, - "dashscope/qwen-plus-latest": { - "litellm_provider": "dashscope", - "max_input_tokens": 997952, - "max_output_tokens": 32768, - "max_tokens": 1000000, - "mode": "chat", - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "tiered_pricing": [ - { - "input_cost_per_token": 4e-07, - "output_cost_per_reasoning_token": 4e-06, - "output_cost_per_token": 1.2e-06, - "range": [ - 0, - 256000.0 - ] - }, - { - "input_cost_per_token": 1.2e-06, - "output_cost_per_reasoning_token": 1.2e-05, - "output_cost_per_token": 3.6e-06, - "range": [ - 256000.0, - 1000000.0 - ] - } - ] - }, - "dashscope/qwen-turbo": { - "input_cost_per_token": 5e-08, - "litellm_provider": "dashscope", - "max_input_tokens": 129024, - "max_output_tokens": 16384, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_reasoning_token": 5e-07, - "output_cost_per_token": 2e-07, - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "dashscope/qwen-turbo-2024-11-01": { - "input_cost_per_token": 5e-08, - "litellm_provider": "dashscope", - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_tokens": 1000000, - "mode": "chat", - "output_cost_per_token": 2e-07, - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "dashscope/qwen-turbo-2025-04-28": { - "input_cost_per_token": 5e-08, - "litellm_provider": "dashscope", - "max_input_tokens": 1000000, - "max_output_tokens": 16384, - "max_tokens": 1000000, - "mode": "chat", - "output_cost_per_reasoning_token": 5e-07, - "output_cost_per_token": 2e-07, - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "dashscope/qwen-turbo-latest": { - "input_cost_per_token": 5e-08, - "litellm_provider": "dashscope", - "max_input_tokens": 1000000, - "max_output_tokens": 16384, - "max_tokens": 1000000, - "mode": "chat", - "output_cost_per_reasoning_token": 5e-07, - "output_cost_per_token": 2e-07, - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "dashscope/qwen3-30b-a3b": { - "litellm_provider": "dashscope", - "max_input_tokens": 129024, - "max_output_tokens": 16384, - "max_tokens": 131072, - "mode": "chat", - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "dashscope/qwen3-coder-flash": { - "litellm_provider": "dashscope", - "max_input_tokens": 997952, - "max_output_tokens": 65536, - "max_tokens": 1000000, - "mode": "chat", - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "tiered_pricing": [ - { - "cache_read_input_token_cost": 8e-08, - "input_cost_per_token": 3e-07, - "output_cost_per_token": 1.5e-06, - "range": [ - 0, - 32000.0 - ] - }, - { - "cache_read_input_token_cost": 1.2e-07, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 2.5e-06, - "range": [ - 32000.0, - 128000.0 - ] - }, - { - "cache_read_input_token_cost": 2e-07, - "input_cost_per_token": 8e-07, - "output_cost_per_token": 4e-06, - "range": [ - 128000.0, - 256000.0 - ] - }, - { - "cache_read_input_token_cost": 4e-07, - "input_cost_per_token": 1.6e-06, - "output_cost_per_token": 9.6e-06, - "range": [ - 256000.0, - 1000000.0 - ] - } - ] - }, - "dashscope/qwen3-coder-flash-2025-07-28": { - "litellm_provider": "dashscope", - "max_input_tokens": 997952, - "max_output_tokens": 65536, - "max_tokens": 1000000, - "mode": "chat", - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "tiered_pricing": [ - { - "input_cost_per_token": 3e-07, - "output_cost_per_token": 1.5e-06, - "range": [ - 0, - 32000.0 - ] - }, - { - "input_cost_per_token": 5e-07, - "output_cost_per_token": 2.5e-06, - "range": [ - 32000.0, - 128000.0 - ] - }, - { - "input_cost_per_token": 8e-07, - "output_cost_per_token": 4e-06, - "range": [ - 128000.0, - 256000.0 - ] - }, - { - "input_cost_per_token": 1.6e-06, - "output_cost_per_token": 9.6e-06, - "range": [ - 256000.0, - 1000000.0 - ] - } - ] - }, - "dashscope/qwen3-coder-plus": { - "litellm_provider": "dashscope", - "max_input_tokens": 997952, - "max_output_tokens": 65536, - "max_tokens": 1000000, - "mode": "chat", - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "tiered_pricing": [ - { - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 1e-06, - "output_cost_per_token": 5e-06, - "range": [ - 0, - 32000.0 - ] - }, - { - "cache_read_input_token_cost": 1.8e-07, - "input_cost_per_token": 1.8e-06, - "output_cost_per_token": 9e-06, - "range": [ - 32000.0, - 128000.0 - ] - }, - { - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "output_cost_per_token": 1.5e-05, - "range": [ - 128000.0, - 256000.0 - ] - }, - { - "cache_read_input_token_cost": 6e-07, - "input_cost_per_token": 6e-06, - "output_cost_per_token": 6e-05, - "range": [ - 256000.0, - 1000000.0 - ] - } - ] - }, - "dashscope/qwen3-coder-plus-2025-07-22": { - "litellm_provider": "dashscope", - "max_input_tokens": 997952, - "max_output_tokens": 65536, - "max_tokens": 1000000, - "mode": "chat", - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "tiered_pricing": [ - { - "input_cost_per_token": 1e-06, - "output_cost_per_token": 5e-06, - "range": [ - 0, - 32000.0 - ] - }, - { - "input_cost_per_token": 1.8e-06, - "output_cost_per_token": 9e-06, - "range": [ - 32000.0, - 128000.0 - ] - }, - { - "input_cost_per_token": 3e-06, - "output_cost_per_token": 1.5e-05, - "range": [ - 128000.0, - 256000.0 - ] - }, - { - "input_cost_per_token": 6e-06, - "output_cost_per_token": 6e-05, - "range": [ - 256000.0, - 1000000.0 - ] - } - ] - }, - "dashscope/qwen3-max-preview": { - "litellm_provider": "dashscope", - "max_input_tokens": 258048, - "max_output_tokens": 65536, - "max_tokens": 262144, - "mode": "chat", - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "tiered_pricing": [ - { - "input_cost_per_token": 1.2e-06, - "output_cost_per_token": 6e-06, - "range": [ - 0, - 32000.0 - ] - }, - { - "input_cost_per_token": 2.4e-06, - "output_cost_per_token": 1.2e-05, - "range": [ - 32000.0, - 128000.0 - ] - }, - { - "input_cost_per_token": 3e-06, - "output_cost_per_token": 1.5e-05, - "range": [ - 128000.0, - 252000.0 - ] - } - ] - }, - "dashscope/qwq-plus": { - "input_cost_per_token": 8e-07, - "litellm_provider": "dashscope", - "max_input_tokens": 98304, - "max_output_tokens": 8192, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.4e-06, - "source": "https://www.alibabacloud.com/help/en/model-studio/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "databricks/databricks-bge-large-en": { - "input_cost_per_token": 1.0003e-07, - "input_dbu_cost_per_token": 1.429e-06, - "litellm_provider": "databricks", - "max_input_tokens": 512, - "max_tokens": 512, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070, based on databricks Llama 3.1 70B conversion. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_dbu_cost_per_token": 0.0, - "output_vector_size": 1024, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving" - }, - "databricks/databricks-claude-3-7-sonnet": { - "input_cost_per_token": 2.9999900000000002e-06, - "input_dbu_cost_per_token": 4.2857e-05, - "litellm_provider": "databricks", - "max_input_tokens": 200000, - "max_output_tokens": 128000, - "max_tokens": 200000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 1.5000020000000002e-05, - "output_dbu_cost_per_token": 0.000214286, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "databricks/databricks-claude-haiku-4-5": { - "input_cost_per_token": 1.00002e-06, - "input_dbu_cost_per_token": 1.4286e-05, - "litellm_provider": "databricks", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 200000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 5.00003e-06, - "output_dbu_cost_per_token": 7.1429e-05, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "databricks/databricks-claude-opus-4": { - "input_cost_per_token": 1.5000020000000002e-05, - "input_dbu_cost_per_token": 0.000214286, - "litellm_provider": "databricks", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 200000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 7.500003000000001e-05, - "output_dbu_cost_per_token": 0.001071429, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "databricks/databricks-claude-opus-4-1": { - "input_cost_per_token": 1.5000020000000002e-05, - "input_dbu_cost_per_token": 0.000214286, - "litellm_provider": "databricks", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 200000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 7.500003000000001e-05, - "output_dbu_cost_per_token": 0.001071429, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "databricks/databricks-claude-opus-4-5": { - "input_cost_per_token": 5.00003e-06, - "input_dbu_cost_per_token": 7.1429e-05, - "litellm_provider": "databricks", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 200000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 2.5000010000000002e-05, - "output_dbu_cost_per_token": 0.000357143, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "databricks/databricks-claude-sonnet-4": { - "input_cost_per_token": 2.9999900000000002e-06, - "input_dbu_cost_per_token": 4.2857e-05, - "litellm_provider": "databricks", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 200000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 1.5000020000000002e-05, - "output_dbu_cost_per_token": 0.000214286, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "databricks/databricks-claude-sonnet-4-1": { - "input_cost_per_token": 2.9999900000000002e-06, - "input_dbu_cost_per_token": 4.2857e-05, - "litellm_provider": "databricks", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 200000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 1.5000020000000002e-05, - "output_dbu_cost_per_token": 0.000214286, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "databricks/databricks-claude-sonnet-4-5": { - "input_cost_per_token": 2.9999900000000002e-06, - "input_dbu_cost_per_token": 4.2857e-05, - "litellm_provider": "databricks", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 200000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 1.5000020000000002e-05, - "output_dbu_cost_per_token": 0.000214286, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "databricks/databricks-gemini-2-5-flash": { - "input_cost_per_token": 3.0001999999999996e-07, - "input_dbu_cost_per_token": 4.285999999999999e-06, - "litellm_provider": "databricks", - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_tokens": 1048576, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 2.49998e-06, - "output_dbu_cost_per_token": 3.5714e-05, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "databricks/databricks-gemini-2-5-pro": { - "input_cost_per_token": 1.24999e-06, - "input_dbu_cost_per_token": 1.7857e-05, - "litellm_provider": "databricks", - "max_input_tokens": 1048576, - "max_output_tokens": 65536, - "max_tokens": 1048576, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 9.999990000000002e-06, - "output_dbu_cost_per_token": 0.000142857, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "databricks/databricks-gemma-3-12b": { - "input_cost_per_token": 1.5000999999999998e-07, - "input_dbu_cost_per_token": 2.1429999999999996e-06, - "litellm_provider": "databricks", - "max_input_tokens": 128000, - "max_output_tokens": 32000, - "max_tokens": 128000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 5.0001e-07, - "output_dbu_cost_per_token": 7.143e-06, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving" - }, - "databricks/databricks-gpt-5": { - "input_cost_per_token": 1.24999e-06, - "input_dbu_cost_per_token": 1.7857e-05, - "litellm_provider": "databricks", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 400000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 9.999990000000002e-06, - "output_dbu_cost_per_token": 0.000142857, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving" - }, - "databricks/databricks-gpt-5-1": { - "input_cost_per_token": 1.24999e-06, - "input_dbu_cost_per_token": 1.7857e-05, - "litellm_provider": "databricks", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 400000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 9.999990000000002e-06, - "output_dbu_cost_per_token": 0.000142857, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving" - }, - "databricks/databricks-gpt-5-mini": { - "input_cost_per_token": 2.4997000000000006e-07, - "input_dbu_cost_per_token": 3.571e-06, - "litellm_provider": "databricks", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 400000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 1.9999700000000004e-06, - "output_dbu_cost_per_token": 2.8571e-05, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving" - }, - "databricks/databricks-gpt-5-nano": { - "input_cost_per_token": 4.998e-08, - "input_dbu_cost_per_token": 7.14e-07, - "litellm_provider": "databricks", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 400000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 3.9998000000000007e-07, - "output_dbu_cost_per_token": 5.714000000000001e-06, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving" - }, - "databricks/databricks-gpt-oss-120b": { - "input_cost_per_token": 1.5000999999999998e-07, - "input_dbu_cost_per_token": 2.1429999999999996e-06, - "litellm_provider": "databricks", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 5.9997e-07, - "output_dbu_cost_per_token": 8.571e-06, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving" - }, - "databricks/databricks-gpt-oss-20b": { - "input_cost_per_token": 7e-08, - "input_dbu_cost_per_token": 1e-06, - "litellm_provider": "databricks", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 3.0001999999999996e-07, - "output_dbu_cost_per_token": 4.285999999999999e-06, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving" - }, - "databricks/databricks-gte-large-en": { - "input_cost_per_token": 1.2999000000000001e-07, - "input_dbu_cost_per_token": 1.857e-06, - "litellm_provider": "databricks", - "max_input_tokens": 8192, - "max_tokens": 8192, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070, based on databricks Llama 3.1 70B conversion. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_dbu_cost_per_token": 0.0, - "output_vector_size": 1024, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving" - }, - "databricks/databricks-llama-2-70b-chat": { - "input_cost_per_token": 5.0001e-07, - "input_dbu_cost_per_token": 7.143e-06, - "litellm_provider": "databricks", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070, based on databricks Llama 3.1 70B conversion. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 1.5000300000000002e-06, - "output_dbu_cost_per_token": 2.1429e-05, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving", - "supports_tool_choice": true - }, - "databricks/databricks-llama-4-maverick": { - "input_cost_per_token": 5.0001e-07, - "input_dbu_cost_per_token": 7.143e-06, - "litellm_provider": "databricks", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "metadata": { - "notes": "Databricks documentation now provides both DBU costs (_dbu_cost_per_token) and dollar costs(_cost_per_token)." - }, - "mode": "chat", - "output_cost_per_token": 1.5000300000000002e-06, - "output_dbu_cost_per_token": 2.1429e-05, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving", - "supports_tool_choice": true - }, - "databricks/databricks-meta-llama-3-1-405b-instruct": { - "input_cost_per_token": 5.00003e-06, - "input_dbu_cost_per_token": 7.1429e-05, - "litellm_provider": "databricks", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070, based on databricks Llama 3.1 70B conversion. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 1.5000020000000002e-05, - "output_dbu_cost_per_token": 0.000214286, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving", - "supports_tool_choice": true - }, - "databricks/databricks-meta-llama-3-1-8b-instruct": { - "input_cost_per_token": 1.5000999999999998e-07, - "input_dbu_cost_per_token": 2.1429999999999996e-06, - "litellm_provider": "databricks", - "max_input_tokens": 200000, - "max_output_tokens": 128000, - "max_tokens": 200000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 4.5003000000000007e-07, - "output_dbu_cost_per_token": 6.429000000000001e-06, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving" - }, - "databricks/databricks-meta-llama-3-3-70b-instruct": { - "input_cost_per_token": 5.0001e-07, - "input_dbu_cost_per_token": 7.143e-06, - "litellm_provider": "databricks", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070, based on databricks Llama 3.1 70B conversion. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 1.5000300000000002e-06, - "output_dbu_cost_per_token": 2.1429e-05, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving", - "supports_tool_choice": true - }, - "databricks/databricks-meta-llama-3-70b-instruct": { - "input_cost_per_token": 1.00002e-06, - "input_dbu_cost_per_token": 1.4286e-05, - "litellm_provider": "databricks", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070, based on databricks Llama 3.1 70B conversion. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 2.9999900000000002e-06, - "output_dbu_cost_per_token": 4.2857e-05, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving", - "supports_tool_choice": true - }, - "databricks/databricks-mixtral-8x7b-instruct": { - "input_cost_per_token": 5.0001e-07, - "input_dbu_cost_per_token": 7.143e-06, - "litellm_provider": "databricks", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070, based on databricks Llama 3.1 70B conversion. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 1.00002e-06, - "output_dbu_cost_per_token": 1.4286e-05, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving", - "supports_tool_choice": true - }, - "databricks/databricks-mpt-30b-instruct": { - "input_cost_per_token": 1.00002e-06, - "input_dbu_cost_per_token": 1.4286e-05, - "litellm_provider": "databricks", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070, based on databricks Llama 3.1 70B conversion. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 1.00002e-06, - "output_dbu_cost_per_token": 1.4286e-05, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving", - "supports_tool_choice": true - }, - "databricks/databricks-mpt-7b-instruct": { - "input_cost_per_token": 5.0001e-07, - "input_dbu_cost_per_token": 7.143e-06, - "litellm_provider": "databricks", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "metadata": { - "notes": "Input/output cost per token is dbu cost * $0.070, based on databricks Llama 3.1 70B conversion. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." - }, - "mode": "chat", - "output_cost_per_token": 0.0, - "output_dbu_cost_per_token": 0.0, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving", - "supports_tool_choice": true - }, - "dataforseo/search": { - "input_cost_per_query": 0.003, - "litellm_provider": "dataforseo", - "mode": "search" - }, - "davinci-002": { - "input_cost_per_token": 2e-06, - "litellm_provider": "text-completion-openai", - "max_input_tokens": 16384, - "max_output_tokens": 4096, - "max_tokens": 16384, - "mode": "completion", - "output_cost_per_token": 2e-06 - }, - "deepgram/base": { - "input_cost_per_second": 0.00020833, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0125/60 seconds = $0.00020833 per second", - "original_pricing_per_minute": 0.0125 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/base-conversationalai": { - "input_cost_per_second": 0.00020833, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0125/60 seconds = $0.00020833 per second", - "original_pricing_per_minute": 0.0125 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/base-finance": { - "input_cost_per_second": 0.00020833, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0125/60 seconds = $0.00020833 per second", - "original_pricing_per_minute": 0.0125 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/base-general": { - "input_cost_per_second": 0.00020833, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0125/60 seconds = $0.00020833 per second", - "original_pricing_per_minute": 0.0125 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/base-meeting": { - "input_cost_per_second": 0.00020833, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0125/60 seconds = $0.00020833 per second", - "original_pricing_per_minute": 0.0125 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/base-phonecall": { - "input_cost_per_second": 0.00020833, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0125/60 seconds = $0.00020833 per second", - "original_pricing_per_minute": 0.0125 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/base-video": { - "input_cost_per_second": 0.00020833, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0125/60 seconds = $0.00020833 per second", - "original_pricing_per_minute": 0.0125 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/base-voicemail": { - "input_cost_per_second": 0.00020833, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0125/60 seconds = $0.00020833 per second", - "original_pricing_per_minute": 0.0125 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/enhanced": { - "input_cost_per_second": 0.00024167, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0145/60 seconds = $0.00024167 per second", - "original_pricing_per_minute": 0.0145 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/enhanced-finance": { - "input_cost_per_second": 0.00024167, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0145/60 seconds = $0.00024167 per second", - "original_pricing_per_minute": 0.0145 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/enhanced-general": { - "input_cost_per_second": 0.00024167, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0145/60 seconds = $0.00024167 per second", - "original_pricing_per_minute": 0.0145 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/enhanced-meeting": { - "input_cost_per_second": 0.00024167, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0145/60 seconds = $0.00024167 per second", - "original_pricing_per_minute": 0.0145 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/enhanced-phonecall": { - "input_cost_per_second": 0.00024167, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0145/60 seconds = $0.00024167 per second", - "original_pricing_per_minute": 0.0145 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-2": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-2-atc": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-2-automotive": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-2-conversationalai": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-2-drivethru": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-2-finance": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-2-general": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-2-meeting": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-2-phonecall": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-2-video": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-2-voicemail": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-3": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-3-general": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-3-medical": { - "input_cost_per_second": 8.667e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0052/60 seconds = $0.00008667 per second (multilingual)", - "original_pricing_per_minute": 0.0052 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-general": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/nova-phonecall": { - "input_cost_per_second": 7.167e-05, - "litellm_provider": "deepgram", - "metadata": { - "calculation": "$0.0043/60 seconds = $0.00007167 per second", - "original_pricing_per_minute": 0.0043 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/whisper": { - "input_cost_per_second": 0.0001, - "litellm_provider": "deepgram", - "metadata": { - "notes": "Deepgram's hosted OpenAI Whisper models - pricing may differ from native Deepgram models" - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/whisper-base": { - "input_cost_per_second": 0.0001, - "litellm_provider": "deepgram", - "metadata": { - "notes": "Deepgram's hosted OpenAI Whisper models - pricing may differ from native Deepgram models" - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/whisper-large": { - "input_cost_per_second": 0.0001, - "litellm_provider": "deepgram", - "metadata": { - "notes": "Deepgram's hosted OpenAI Whisper models - pricing may differ from native Deepgram models" - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/whisper-medium": { - "input_cost_per_second": 0.0001, - "litellm_provider": "deepgram", - "metadata": { - "notes": "Deepgram's hosted OpenAI Whisper models - pricing may differ from native Deepgram models" - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/whisper-small": { - "input_cost_per_second": 0.0001, - "litellm_provider": "deepgram", - "metadata": { - "notes": "Deepgram's hosted OpenAI Whisper models - pricing may differ from native Deepgram models" - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepgram/whisper-tiny": { - "input_cost_per_second": 0.0001, - "litellm_provider": "deepgram", - "metadata": { - "notes": "Deepgram's hosted OpenAI Whisper models - pricing may differ from native Deepgram models" - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://deepgram.com/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "deepinfra/Gryphe/MythoMax-L2-13b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 8e-08, - "output_cost_per_token": 9e-08, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/NousResearch/Hermes-3-Llama-3.1-405B": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1e-06, - "output_cost_per_token": 1e-06, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/NousResearch/Hermes-3-Llama-3.1-70B": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 3e-07, - "output_cost_per_token": 3e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": false - }, - "deepinfra/Qwen/QwQ-32B": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1.5e-07, - "output_cost_per_token": 4e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/Qwen/Qwen2.5-72B-Instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 1.2e-07, - "output_cost_per_token": 3.9e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/Qwen/Qwen2.5-7B-Instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 4e-08, - "output_cost_per_token": 1e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": false - }, - "deepinfra/Qwen/Qwen2.5-VL-32B-Instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 6e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true, - "supports_vision": true - }, - "deepinfra/Qwen/Qwen3-14B": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 6e-08, - "output_cost_per_token": 2.4e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/Qwen/Qwen3-235B-A22B": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 1.8e-07, - "output_cost_per_token": 5.4e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 9e-08, - "output_cost_per_token": 6e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/Qwen/Qwen3-235B-A22B-Thinking-2507": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 3e-07, - "output_cost_per_token": 2.9e-06, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/Qwen/Qwen3-30B-A3B": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 8e-08, - "output_cost_per_token": 2.9e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/Qwen/Qwen3-32B": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 2.8e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 4e-07, - "output_cost_per_token": 1.6e-06, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 2.9e-07, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 1.4e-07, - "output_cost_per_token": 1.4e-06, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/Qwen/Qwen3-Next-80B-A3B-Thinking": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 1.4e-07, - "output_cost_per_token": 1.4e-06, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/Sao10K/L3-8B-Lunaris-v1-Turbo": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 4e-08, - "output_cost_per_token": 5e-08, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": false - }, - "deepinfra/Sao10K/L3.1-70B-Euryale-v2.2": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 6.5e-07, - "output_cost_per_token": 7.5e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": false - }, - "deepinfra/Sao10K/L3.3-70B-Euryale-v2.3": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 6.5e-07, - "output_cost_per_token": 7.5e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": false - }, - "deepinfra/allenai/olmOCR-7B-0725-FP8": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 2.7e-07, - "output_cost_per_token": 1.5e-06, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": false - }, - "deepinfra/anthropic/claude-3-7-sonnet-latest": { - "max_tokens": 200000, - "max_input_tokens": 200000, - "max_output_tokens": 200000, - "input_cost_per_token": 3.3e-06, - "output_cost_per_token": 1.65e-05, - "cache_read_input_token_cost": 3.3e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/anthropic/claude-4-opus": { - "max_tokens": 200000, - "max_input_tokens": 200000, - "max_output_tokens": 200000, - "input_cost_per_token": 1.65e-05, - "output_cost_per_token": 8.25e-05, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/anthropic/claude-4-sonnet": { - "max_tokens": 200000, - "max_input_tokens": 200000, - "max_output_tokens": 200000, - "input_cost_per_token": 3.3e-06, - "output_cost_per_token": 1.65e-05, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/deepseek-ai/DeepSeek-R1": { - "max_tokens": 163840, - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "input_cost_per_token": 7e-07, - "output_cost_per_token": 2.4e-06, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/deepseek-ai/DeepSeek-R1-0528": { - "max_tokens": 163840, - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 2.15e-06, - "cache_read_input_token_cost": 4e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/deepseek-ai/DeepSeek-R1-0528-Turbo": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 1e-06, - "output_cost_per_token": 3e-06, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/deepseek-ai/DeepSeek-R1-Distill-Llama-70B": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 6e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": false - }, - "deepinfra/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2.7e-07, - "output_cost_per_token": 2.7e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/deepseek-ai/DeepSeek-R1-Turbo": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 1e-06, - "output_cost_per_token": 3e-06, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/deepseek-ai/DeepSeek-V3": { - "max_tokens": 163840, - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "input_cost_per_token": 3.8e-07, - "output_cost_per_token": 8.9e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/deepseek-ai/DeepSeek-V3-0324": { - "max_tokens": 163840, - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "input_cost_per_token": 2.5e-07, - "output_cost_per_token": 8.8e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/deepseek-ai/DeepSeek-V3.1": { - "max_tokens": 163840, - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "input_cost_per_token": 2.7e-07, - "output_cost_per_token": 1e-06, - "cache_read_input_token_cost": 2.16e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true, - "supports_reasoning": true - }, - "deepinfra/deepseek-ai/DeepSeek-V3.1-Terminus": { - "max_tokens": 163840, - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "input_cost_per_token": 2.7e-07, - "output_cost_per_token": 1e-06, - "cache_read_input_token_cost": 2.16e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/google/gemini-2.0-flash-001": { - "max_tokens": 1000000, - "max_input_tokens": 1000000, - "max_output_tokens": 1000000, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 4e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/google/gemini-2.5-flash": { - "max_tokens": 1000000, - "max_input_tokens": 1000000, - "max_output_tokens": 1000000, - "input_cost_per_token": 3e-07, - "output_cost_per_token": 2.5e-06, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/google/gemini-2.5-pro": { - "max_tokens": 1000000, - "max_input_tokens": 1000000, - "max_output_tokens": 1000000, - "input_cost_per_token": 1.25e-06, - "output_cost_per_token": 1e-05, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/google/gemma-3-12b-it": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 5e-08, - "output_cost_per_token": 1e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/google/gemma-3-27b-it": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-08, - "output_cost_per_token": 1.6e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/google/gemma-3-4b-it": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 4e-08, - "output_cost_per_token": 8e-08, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 4.9e-08, - "output_cost_per_token": 4.9e-08, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": false - }, - "deepinfra/meta-llama/Llama-3.2-3B-Instruct": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-08, - "output_cost_per_token": 2e-08, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/meta-llama/Llama-3.3-70B-Instruct": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2.3e-07, - "output_cost_per_token": 4e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/meta-llama/Llama-3.3-70B-Instruct-Turbo": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1.3e-07, - "output_cost_per_token": 3.9e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8": { - "max_tokens": 1048576, - "max_input_tokens": 1048576, - "max_output_tokens": 1048576, - "input_cost_per_token": 1.5e-07, - "output_cost_per_token": 6e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct": { - "max_tokens": 327680, - "max_input_tokens": 327680, - "max_output_tokens": 327680, - "input_cost_per_token": 8e-08, - "output_cost_per_token": 3e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/meta-llama/Llama-Guard-3-8B": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 5.5e-08, - "output_cost_per_token": 5.5e-08, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": false - }, - "deepinfra/meta-llama/Llama-Guard-4-12B": { - "max_tokens": 163840, - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "input_cost_per_token": 1.8e-07, - "output_cost_per_token": 1.8e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": false - }, - "deepinfra/meta-llama/Meta-Llama-3-8B-Instruct": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 3e-08, - "output_cost_per_token": 6e-08, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 4e-07, - "output_cost_per_token": 4e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 2.8e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 3e-08, - "output_cost_per_token": 5e-08, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-08, - "output_cost_per_token": 3e-08, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/microsoft/WizardLM-2-8x22B": { - "max_tokens": 65536, - "max_input_tokens": 65536, - "max_output_tokens": 65536, - "input_cost_per_token": 4.8e-07, - "output_cost_per_token": 4.8e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": false - }, - "deepinfra/microsoft/phi-4": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 7e-08, - "output_cost_per_token": 1.4e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/mistralai/Mistral-Nemo-Instruct-2407": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-08, - "output_cost_per_token": 4e-08, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/mistralai/Mistral-Small-24B-Instruct-2501": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 5e-08, - "output_cost_per_token": 8e-08, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/mistralai/Mistral-Small-3.2-24B-Instruct-2506": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 7.5e-08, - "output_cost_per_token": 2e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/mistralai/Mixtral-8x7B-Instruct-v0.1": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 4e-07, - "output_cost_per_token": 4e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/moonshotai/Kimi-K2-Instruct": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 2e-06, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/moonshotai/Kimi-K2-Instruct-0905": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 2e-06, - "cache_read_input_token_cost": 4e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 6e-07, - "output_cost_per_token": 6e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/nvidia/Llama-3.3-Nemotron-Super-49B-v1.5": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 4e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/nvidia/NVIDIA-Nemotron-Nano-9B-v2": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 4e-08, - "output_cost_per_token": 1.6e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/openai/gpt-oss-120b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 5e-08, - "output_cost_per_token": 4.5e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/openai/gpt-oss-20b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 4e-08, - "output_cost_per_token": 1.5e-07, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepinfra/zai-org/GLM-4.5": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 4e-07, - "output_cost_per_token": 1.6e-06, - "litellm_provider": "deepinfra", - "mode": "chat", - "supports_tool_choice": true - }, - "deepseek/deepseek-chat": { - "cache_creation_input_token_cost": 0.0, - "cache_read_input_token_cost": 7e-08, - "input_cost_per_token": 2.7e-07, - "input_cost_per_token_cache_hit": 7e-08, - "litellm_provider": "deepseek", - "max_input_tokens": 65536, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.1e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_tool_choice": true - }, - "deepseek/deepseek-coder": { - "input_cost_per_token": 1.4e-07, - "input_cost_per_token_cache_hit": 1.4e-08, - "litellm_provider": "deepseek", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.8e-07, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_tool_choice": true - }, - "deepseek/deepseek-r1": { - "input_cost_per_token": 5.5e-07, - "input_cost_per_token_cache_hit": 1.4e-07, - "litellm_provider": "deepseek", - "max_input_tokens": 65536, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.19e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "deepseek/deepseek-reasoner": { - "input_cost_per_token": 5.5e-07, - "input_cost_per_token_cache_hit": 1.4e-07, - "litellm_provider": "deepseek", - "max_input_tokens": 65536, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.19e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "deepseek/deepseek-v3": { - "cache_creation_input_token_cost": 0.0, - "cache_read_input_token_cost": 7e-08, - "input_cost_per_token": 2.7e-07, - "input_cost_per_token_cache_hit": 7e-08, - "litellm_provider": "deepseek", - "max_input_tokens": 65536, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.1e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_tool_choice": true - }, - "deepseek/deepseek-v3.2": { - "input_cost_per_token": 2.8e-07, - "input_cost_per_token_cache_hit": 2.8e-08, - "litellm_provider": "deepseek", - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "deepseek.v3-v1:0": { - "input_cost_per_token": 5.8e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 163840, - "max_output_tokens": 81920, - "max_tokens": 163840, - "mode": "chat", - "output_cost_per_token": 1.68e-06, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "dolphin": { - "input_cost_per_token": 5e-07, - "litellm_provider": "nlp_cloud", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "completion", - "output_cost_per_token": 5e-07 - }, - "doubao-embedding": { - "input_cost_per_token": 0.0, - "litellm_provider": "volcengine", - "max_input_tokens": 4096, - "max_tokens": 4096, - "metadata": { - "notes": "Volcengine Doubao embedding model - standard version with 2560 dimensions" - }, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 2560 - }, - "doubao-embedding-large": { - "input_cost_per_token": 0.0, - "litellm_provider": "volcengine", - "max_input_tokens": 4096, - "max_tokens": 4096, - "metadata": { - "notes": "Volcengine Doubao embedding model - large version with 2048 dimensions" - }, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 2048 - }, - "doubao-embedding-large-text-240915": { - "input_cost_per_token": 0.0, - "litellm_provider": "volcengine", - "max_input_tokens": 4096, - "max_tokens": 4096, - "metadata": { - "notes": "Volcengine Doubao embedding model - text-240915 version with 4096 dimensions" - }, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 4096 - }, - "doubao-embedding-large-text-250515": { - "input_cost_per_token": 0.0, - "litellm_provider": "volcengine", - "max_input_tokens": 4096, - "max_tokens": 4096, - "metadata": { - "notes": "Volcengine Doubao embedding model - text-250515 version with 2048 dimensions" - }, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 2048 - }, - "doubao-embedding-text-240715": { - "input_cost_per_token": 0.0, - "litellm_provider": "volcengine", - "max_input_tokens": 4096, - "max_tokens": 4096, - "metadata": { - "notes": "Volcengine Doubao embedding model - text-240715 version with 2560 dimensions" - }, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 2560 - }, - "exa_ai/search": { - "litellm_provider": "exa_ai", - "mode": "search", - "tiered_pricing": [ - { - "input_cost_per_query": 5e-03, - "max_results_range": [ - 0, - 25 - ] - }, - { - "input_cost_per_query": 25e-03, - "max_results_range": [ - 26, - 100 - ] - } - ] - }, - "firecrawl/search": { - "litellm_provider": "firecrawl", - "mode": "search", - "tiered_pricing": [ - { - "input_cost_per_query": 1.66e-03, - "max_results_range": [ - 1, - 10 - ] - }, - { - "input_cost_per_query": 3.32e-03, - "max_results_range": [ - 11, - 20 - ] - }, - { - "input_cost_per_query": 4.98e-03, - "max_results_range": [ - 21, - 30 - ] - }, - { - "input_cost_per_query": 6.64e-03, - "max_results_range": [ - 31, - 40 - ] - }, - { - "input_cost_per_query": 8.3e-03, - "max_results_range": [ - 41, - 50 - ] - }, - { - "input_cost_per_query": 9.96e-03, - "max_results_range": [ - 51, - 60 - ] - }, - { - "input_cost_per_query": 11.62e-03, - "max_results_range": [ - 61, - 70 - ] - }, - { - "input_cost_per_query": 13.28e-03, - "max_results_range": [ - 71, - 80 - ] - }, - { - "input_cost_per_query": 14.94e-03, - "max_results_range": [ - 81, - 90 - ] - }, - { - "input_cost_per_query": 16.6e-03, - "max_results_range": [ - 91, - 100 - ] - } - ], - "metadata": { - "notes": "Firecrawl search pricing: $83 for 100,000 credits, 2 credits per 10 results. Cost = ceiling(limit/10) * 2 * $0.00083" - } - }, - "perplexity/search": { - "input_cost_per_query": 5e-03, - "litellm_provider": "perplexity", - "mode": "search" - }, - "searxng/search": { - "litellm_provider": "searxng", - "mode": "search", - "input_cost_per_query": 0.0, - "metadata": { - "notes": "SearXNG is an open-source metasearch engine. Free to use when self-hosted or using public instances." - } - }, - "elevenlabs/scribe_v1": { - "input_cost_per_second": 6.11e-05, - "litellm_provider": "elevenlabs", - "metadata": { - "calculation": "$0.22/hour = $0.00366/minute = $0.0000611 per second (enterprise pricing)", - "notes": "ElevenLabs Scribe v1 - state-of-the-art speech recognition model with 99 language support", - "original_pricing_per_hour": 0.22 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://elevenlabs.io/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "elevenlabs/scribe_v1_experimental": { - "input_cost_per_second": 6.11e-05, - "litellm_provider": "elevenlabs", - "metadata": { - "calculation": "$0.22/hour = $0.00366/minute = $0.0000611 per second (enterprise pricing)", - "notes": "ElevenLabs Scribe v1 experimental - enhanced version of the main Scribe model", - "original_pricing_per_hour": 0.22 - }, - "mode": "audio_transcription", - "output_cost_per_second": 0.0, - "source": "https://elevenlabs.io/pricing", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "embed-english-light-v2.0": { - "input_cost_per_token": 1e-07, - "litellm_provider": "cohere", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "embed-english-light-v3.0": { - "input_cost_per_token": 1e-07, - "litellm_provider": "cohere", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "embed-english-v2.0": { - "input_cost_per_token": 1e-07, - "litellm_provider": "cohere", - "max_input_tokens": 4096, - "max_tokens": 4096, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "embed-english-v3.0": { - "input_cost_per_image": 0.0001, - "input_cost_per_token": 1e-07, - "litellm_provider": "cohere", - "max_input_tokens": 1024, - "max_tokens": 1024, - "metadata": { - "notes": "'supports_image_input' is a deprecated field. Use 'supports_embedding_image_input' instead." - }, - "mode": "embedding", - "output_cost_per_token": 0.0, - "supports_embedding_image_input": true, - "supports_image_input": true - }, - "embed-multilingual-v2.0": { - "input_cost_per_token": 1e-07, - "litellm_provider": "cohere", - "max_input_tokens": 768, - "max_tokens": 768, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "embed-multilingual-v3.0": { - "input_cost_per_token": 1e-07, - "litellm_provider": "cohere", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "embedding", - "output_cost_per_token": 0.0, - "supports_embedding_image_input": true - }, - "embed-multilingual-light-v3.0": { - "input_cost_per_token": 1e-04, - "litellm_provider": "cohere", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "embedding", - "output_cost_per_token": 0.0, - "supports_embedding_image_input": true - }, - "eu.amazon.nova-lite-v1:0": { - "input_cost_per_token": 7.8e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 300000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 3.12e-07, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_vision": true - }, - "eu.amazon.nova-micro-v1:0": { - "input_cost_per_token": 4.6e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 1.84e-07, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true - }, - "eu.amazon.nova-pro-v1:0": { - "input_cost_per_token": 1.05e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 300000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 4.2e-06, - "source": "https://aws.amazon.com/bedrock/pricing/", - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_vision": true - }, - "eu.anthropic.claude-3-5-haiku-20241022-v1:0": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.25e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "eu.anthropic.claude-haiku-4-5-20251001-v1:0": { - "cache_creation_input_token_cost": 1.375e-06, - "cache_read_input_token_cost": 1.1e-07, - "input_cost_per_token": 1.1e-06, - "deprecation_date": "2026-10-15", - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 5.5e-06, - "source": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock", - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "eu.anthropic.claude-3-5-sonnet-20240620-v1:0": { - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "eu.anthropic.claude-3-5-sonnet-20241022-v2:0": { - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "eu.anthropic.claude-3-7-sonnet-20250219-v1:0": { - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "eu.anthropic.claude-3-haiku-20240307-v1:0": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.25e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "eu.anthropic.claude-3-opus-20240229-v1:0": { - "input_cost_per_token": 1.5e-05, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "eu.anthropic.claude-3-sonnet-20240229-v1:0": { - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "eu.anthropic.claude-opus-4-1-20250805-v1:0": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "eu.anthropic.claude-opus-4-20250514-v1:0": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "eu.anthropic.claude-sonnet-4-20250514-v1:0": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "eu.anthropic.claude-sonnet-4-5-20250929-v1:0": { - "cache_creation_input_token_cost": 4.125e-06, - "cache_read_input_token_cost": 3.3e-07, - "input_cost_per_token": 3.3e-06, - "input_cost_per_token_above_200k_tokens": 6.6e-06, - "output_cost_per_token_above_200k_tokens": 2.475e-05, - "cache_creation_input_token_cost_above_200k_tokens": 8.25e-06, - "cache_read_input_token_cost_above_200k_tokens": 6.6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.65e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "eu.meta.llama3-2-1b-instruct-v1:0": { - "input_cost_per_token": 1.3e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.3e-07, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "eu.meta.llama3-2-3b-instruct-v1:0": { - "input_cost_per_token": 1.9e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.9e-07, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "eu.mistral.pixtral-large-2502-v1:0": { - "input_cost_per_token": 2e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "fal_ai/bria/text-to-image/3.2": { - "litellm_provider": "fal_ai", - "mode": "image_generation", - "output_cost_per_image": 0.0398, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "fal_ai/fal-ai/flux-pro/v1.1": { - "litellm_provider": "fal_ai", - "mode": "image_generation", - "output_cost_per_image": 0.04, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "fal_ai/fal-ai/flux-pro/v1.1-ultra": { - "litellm_provider": "fal_ai", - "mode": "image_generation", - "output_cost_per_image": 0.06, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "fal_ai/fal-ai/flux/schnell": { - "litellm_provider": "fal_ai", - "mode": "image_generation", - "output_cost_per_image": 0.003, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "fal_ai/fal-ai/bytedance/seedream/v3/text-to-image": { - "litellm_provider": "fal_ai", - "mode": "image_generation", - "output_cost_per_image": 0.03, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "fal_ai/fal-ai/bytedance/dreamina/v3.1/text-to-image": { - "litellm_provider": "fal_ai", - "mode": "image_generation", - "output_cost_per_image": 0.03, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "fal_ai/fal-ai/ideogram/v3": { - "litellm_provider": "fal_ai", - "mode": "image_generation", - "output_cost_per_image": 0.06, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "fal_ai/fal-ai/imagen4/preview": { - "litellm_provider": "fal_ai", - "mode": "image_generation", - "output_cost_per_image": 0.0398, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "fal_ai/fal-ai/imagen4/preview/fast": { - "litellm_provider": "fal_ai", - "mode": "image_generation", - "output_cost_per_image": 0.02, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "fal_ai/fal-ai/imagen4/preview/ultra": { - "litellm_provider": "fal_ai", - "mode": "image_generation", - "output_cost_per_image": 0.06, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "fal_ai/fal-ai/recraft/v3/text-to-image": { - "litellm_provider": "fal_ai", - "mode": "image_generation", - "output_cost_per_image": 0.0398, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "fal_ai/fal-ai/stable-diffusion-v35-medium": { - "litellm_provider": "fal_ai", - "mode": "image_generation", - "output_cost_per_image": 0.0398, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "featherless_ai/featherless-ai/Qwerky-72B": { - "litellm_provider": "featherless_ai", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 32768, - "mode": "chat" - }, - "featherless_ai/featherless-ai/Qwerky-QwQ-32B": { - "litellm_provider": "featherless_ai", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 32768, - "mode": "chat" - }, - "fireworks-ai-4.1b-to-16b": { - "input_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "output_cost_per_token": 2e-07 - }, - "fireworks-ai-56b-to-176b": { - "input_cost_per_token": 1.2e-06, - "litellm_provider": "fireworks_ai", - "output_cost_per_token": 1.2e-06 - }, - "fireworks-ai-above-16b": { - "input_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "output_cost_per_token": 9e-07 - }, - "fireworks-ai-default": { - "input_cost_per_token": 0.0, - "litellm_provider": "fireworks_ai", - "output_cost_per_token": 0.0 - }, - "fireworks-ai-embedding-150m-to-350m": { - "input_cost_per_token": 1.6e-08, - "litellm_provider": "fireworks_ai-embedding-models", - "output_cost_per_token": 0.0 - }, - "fireworks-ai-embedding-up-to-150m": { - "input_cost_per_token": 8e-09, - "litellm_provider": "fireworks_ai-embedding-models", - "output_cost_per_token": 0.0 - }, - "fireworks-ai-moe-up-to-56b": { - "input_cost_per_token": 5e-07, - "litellm_provider": "fireworks_ai", - "output_cost_per_token": 5e-07 - }, - "fireworks-ai-up-to-4b": { - "input_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "output_cost_per_token": 2e-07 - }, - "fireworks_ai/WhereIsAI/UAE-Large-V1": { - "input_cost_per_token": 1.6e-08, - "litellm_provider": "fireworks_ai-embedding-models", - "max_input_tokens": 512, - "max_tokens": 512, - "mode": "embedding", - "output_cost_per_token": 0.0, - "source": "https://fireworks.ai/pricing" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-instruct": { - "input_cost_per_token": 1.2e-06, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 65536, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": false, - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/accounts/fireworks/models/deepseek-r1": { - "input_cost_per_token": 3e-06, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, - "max_output_tokens": 20480, - "max_tokens": 20480, - "mode": "chat", - "output_cost_per_token": 8e-06, - "source": "https://fireworks.ai/pricing", - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/accounts/fireworks/models/deepseek-r1-0528": { - "input_cost_per_token": 3e-06, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 160000, - "max_output_tokens": 160000, - "max_tokens": 160000, - "mode": "chat", - "output_cost_per_token": 8e-06, - "source": "https://fireworks.ai/pricing", - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/accounts/fireworks/models/deepseek-r1-basic": { - "input_cost_per_token": 5.5e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, - "max_output_tokens": 20480, - "max_tokens": 20480, - "mode": "chat", - "output_cost_per_token": 2.19e-06, - "source": "https://fireworks.ai/pricing", - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/accounts/fireworks/models/deepseek-v3": { - "input_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 9e-07, - "source": "https://fireworks.ai/pricing", - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/accounts/fireworks/models/deepseek-v3-0324": { - "input_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "max_tokens": 163840, - "mode": "chat", - "output_cost_per_token": 9e-07, - "source": "https://fireworks.ai/models/fireworks/deepseek-v3-0324", - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/accounts/fireworks/models/deepseek-v3p1": { - "input_cost_per_token": 5.6e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.68e-06, - "source": "https://fireworks.ai/pricing", - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "fireworks_ai/accounts/fireworks/models/deepseek-v3p1-terminus": { - "input_cost_per_token": 5.6e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.68e-06, - "source": "https://fireworks.ai/pricing", - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "fireworks_ai/accounts/fireworks/models/deepseek-v3p2": { - "input_cost_per_token": 5.6e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "max_tokens": 163840, - "mode": "chat", - "output_cost_per_token": 1.68e-06, - "source": "https://fireworks.ai/models/fireworks/deepseek-v3p2", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "fireworks_ai/accounts/fireworks/models/firefunction-v2": { - "input_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 9e-07, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "fireworks_ai/accounts/fireworks/models/glm-4p5": { - "input_cost_per_token": 5.5e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, - "max_output_tokens": 96000, - "max_tokens": 96000, - "mode": "chat", - "output_cost_per_token": 2.19e-06, - "source": "https://fireworks.ai/models/fireworks/glm-4p5", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "fireworks_ai/accounts/fireworks/models/glm-4p5-air": { - "input_cost_per_token": 2.2e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, - "max_output_tokens": 96000, - "max_tokens": 96000, - "mode": "chat", - "output_cost_per_token": 8.8e-07, - "source": "https://artificialanalysis.ai/models/glm-4-5-air", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "fireworks_ai/accounts/fireworks/models/glm-4p6": { - "input_cost_per_token": 0.55e-06, - "output_cost_per_token": 2.19e-06, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 202800, - "max_output_tokens": 202800, - "max_tokens": 202800, - "mode": "chat", - "source": "https://fireworks.ai/pricing", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "fireworks_ai/accounts/fireworks/models/gpt-oss-120b": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 6e-07, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "fireworks_ai/accounts/fireworks/models/gpt-oss-20b": { - "input_cost_per_token": 5e-08, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2e-07, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "fireworks_ai/accounts/fireworks/models/kimi-k2-instruct": { - "input_cost_per_token": 6e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 131072, - "max_output_tokens": 16384, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.5e-06, - "source": "https://fireworks.ai/models/fireworks/kimi-k2-instruct", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "fireworks_ai/accounts/fireworks/models/kimi-k2-instruct-0905": { - "input_cost_per_token": 6e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 262144, - "max_output_tokens": 32768, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 2.5e-06, - "source": "https://app.fireworks.ai/models/fireworks/kimi-k2-instruct-0905", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "fireworks_ai/accounts/fireworks/models/kimi-k2-thinking": { - "input_cost_per_token": 6e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 2.5e-06, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct": { - "input_cost_per_token": 3e-06, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 3e-06, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "fireworks_ai/accounts/fireworks/models/llama-v3p1-8b-instruct": { - "input_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-07, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": false, - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/accounts/fireworks/models/llama-v3p2-11b-vision-instruct": { - "input_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 2e-07, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": false, - "supports_response_schema": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "fireworks_ai/accounts/fireworks/models/llama-v3p2-1b-instruct": { - "input_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-07, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": false, - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/accounts/fireworks/models/llama-v3p2-3b-instruct": { - "input_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-07, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": false, - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/accounts/fireworks/models/llama-v3p2-90b-vision-instruct": { - "input_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 9e-07, - "source": "https://fireworks.ai/pricing", - "supports_response_schema": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "fireworks_ai/accounts/fireworks/models/llama4-maverick-instruct-basic": { - "input_cost_per_token": 2.2e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 8.8e-07, - "source": "https://fireworks.ai/pricing", - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/accounts/fireworks/models/llama4-scout-instruct-basic": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 6e-07, - "source": "https://fireworks.ai/pricing", - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct-hf": { - "input_cost_per_token": 1.2e-06, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 65536, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "fireworks_ai/accounts/fireworks/models/qwen2-72b-instruct": { - "input_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 9e-07, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": false, - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct": { - "input_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 9e-07, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": false, - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/accounts/fireworks/models/yi-large": { - "input_cost_per_token": 3e-06, - "litellm_provider": "fireworks_ai", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 3e-06, - "source": "https://fireworks.ai/pricing", - "supports_function_calling": false, - "supports_response_schema": true, - "supports_tool_choice": false - }, - "fireworks_ai/nomic-ai/nomic-embed-text-v1": { - "input_cost_per_token": 8e-09, - "litellm_provider": "fireworks_ai-embedding-models", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "embedding", - "output_cost_per_token": 0.0, - "source": "https://fireworks.ai/pricing" - }, - "fireworks_ai/nomic-ai/nomic-embed-text-v1.5": { - "input_cost_per_token": 8e-09, - "litellm_provider": "fireworks_ai-embedding-models", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "embedding", - "output_cost_per_token": 0.0, - "source": "https://fireworks.ai/pricing" - }, - "fireworks_ai/thenlper/gte-base": { - "input_cost_per_token": 8e-09, - "litellm_provider": "fireworks_ai-embedding-models", - "max_input_tokens": 512, - "max_tokens": 512, - "mode": "embedding", - "output_cost_per_token": 0.0, - "source": "https://fireworks.ai/pricing" - }, - "fireworks_ai/thenlper/gte-large": { - "input_cost_per_token": 1.6e-08, - "litellm_provider": "fireworks_ai-embedding-models", - "max_input_tokens": 512, - "max_tokens": 512, - "mode": "embedding", - "output_cost_per_token": 0.0, - "source": "https://fireworks.ai/pricing" - }, - "friendliai/meta-llama-3.1-70b-instruct": { - "input_cost_per_token": 6e-07, - "litellm_provider": "friendliai", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "friendliai/meta-llama-3.1-8b-instruct": { - "input_cost_per_token": 1e-07, - "litellm_provider": "friendliai", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "ft:babbage-002": { - "input_cost_per_token": 1.6e-06, - "input_cost_per_token_batches": 2e-07, - "litellm_provider": "text-completion-openai", - "max_input_tokens": 16384, - "max_output_tokens": 4096, - "max_tokens": 16384, - "mode": "completion", - "output_cost_per_token": 1.6e-06, - "output_cost_per_token_batches": 2e-07 - }, - "ft:davinci-002": { - "input_cost_per_token": 1.2e-05, - "input_cost_per_token_batches": 1e-06, - "litellm_provider": "text-completion-openai", - "max_input_tokens": 16384, - "max_output_tokens": 4096, - "max_tokens": 16384, - "mode": "completion", - "output_cost_per_token": 1.2e-05, - "output_cost_per_token_batches": 1e-06 - }, - "ft:gpt-3.5-turbo": { - "input_cost_per_token": 3e-06, - "input_cost_per_token_batches": 1.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 16385, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-06, - "output_cost_per_token_batches": 3e-06, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "ft:gpt-3.5-turbo-0125": { - "input_cost_per_token": 3e-06, - "litellm_provider": "openai", - "max_input_tokens": 16385, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "ft:gpt-3.5-turbo-0613": { - "input_cost_per_token": 3e-06, - "litellm_provider": "openai", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "ft:gpt-3.5-turbo-1106": { - "input_cost_per_token": 3e-06, - "litellm_provider": "openai", - "max_input_tokens": 16385, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "ft:gpt-4-0613": { - "input_cost_per_token": 3e-05, - "litellm_provider": "openai", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-05, - "source": "OpenAI needs to add pricing for this ft model, will be updated when added by OpenAI. Defaulting to base model pricing", - "supports_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "ft:gpt-4o-2024-08-06": { - "cache_read_input_token_cost": 1.875e-06, - "input_cost_per_token": 3.75e-06, - "input_cost_per_token_batches": 1.875e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "output_cost_per_token_batches": 7.5e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "ft:gpt-4o-2024-11-20": { - "cache_creation_input_token_cost": 1.875e-06, - "input_cost_per_token": 3.75e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "ft:gpt-4o-mini-2024-07-18": { - "cache_read_input_token_cost": 1.5e-07, - "input_cost_per_token": 3e-07, - "input_cost_per_token_batches": 1.5e-07, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "output_cost_per_token_batches": 6e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "ft:gpt-4.1-2025-04-14": { - "cache_read_input_token_cost": 7.5e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_batches": 1.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1.2e-05, - "output_cost_per_token_batches": 6e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "ft:gpt-4.1-mini-2025-04-14": { - "cache_read_input_token_cost": 2e-07, - "input_cost_per_token": 8e-07, - "input_cost_per_token_batches": 4e-07, - "litellm_provider": "openai", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 3.2e-06, - "output_cost_per_token_batches": 1.6e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "ft:gpt-4.1-nano-2025-04-14": { - "cache_read_input_token_cost": 5e-08, - "input_cost_per_token": 2e-07, - "input_cost_per_token_batches": 1e-07, - "litellm_provider": "openai", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 8e-07, - "output_cost_per_token_batches": 4e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "ft:o4-mini-2025-04-16": { - "cache_read_input_token_cost": 1e-06, - "input_cost_per_token": 4e-06, - "input_cost_per_token_batches": 2e-06, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 1.6e-05, - "output_cost_per_token_batches": 8e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "gemini-1.0-pro": { - "input_cost_per_character": 1.25e-07, - "input_cost_per_image": 0.0025, - "input_cost_per_token": 5e-07, - "input_cost_per_video_per_second": 0.002, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 32760, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 3.75e-07, - "output_cost_per_token": 1.5e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#google_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "gemini-1.0-pro-001": { - "deprecation_date": "2025-04-09", - "input_cost_per_character": 1.25e-07, - "input_cost_per_image": 0.0025, - "input_cost_per_token": 5e-07, - "input_cost_per_video_per_second": 0.002, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 32760, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 3.75e-07, - "output_cost_per_token": 1.5e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "gemini-1.0-pro-002": { - "deprecation_date": "2025-04-09", - "input_cost_per_character": 1.25e-07, - "input_cost_per_image": 0.0025, - "input_cost_per_token": 5e-07, - "input_cost_per_video_per_second": 0.002, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 32760, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 3.75e-07, - "output_cost_per_token": 1.5e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "gemini-1.0-pro-vision": { - "input_cost_per_image": 0.0025, - "input_cost_per_token": 5e-07, - "litellm_provider": "vertex_ai-vision-models", - "max_images_per_prompt": 16, - "max_input_tokens": 16384, - "max_output_tokens": 2048, - "max_tokens": 2048, - "max_video_length": 2, - "max_videos_per_prompt": 1, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini-1.0-pro-vision-001": { - "deprecation_date": "2025-04-09", - "input_cost_per_image": 0.0025, - "input_cost_per_token": 5e-07, - "litellm_provider": "vertex_ai-vision-models", - "max_images_per_prompt": 16, - "max_input_tokens": 16384, - "max_output_tokens": 2048, - "max_tokens": 2048, - "max_video_length": 2, - "max_videos_per_prompt": 1, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini-1.0-ultra": { - "input_cost_per_character": 1.25e-07, - "input_cost_per_image": 0.0025, - "input_cost_per_token": 5e-07, - "input_cost_per_video_per_second": 0.002, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 8192, - "max_output_tokens": 2048, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 3.75e-07, - "output_cost_per_token": 1.5e-06, - "source": "As of Jun, 2024. There is no available doc on vertex ai pricing gemini-1.0-ultra-001. Using gemini-1.0-pro pricing. Got max_tokens info here: https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "gemini-1.0-ultra-001": { - "input_cost_per_character": 1.25e-07, - "input_cost_per_image": 0.0025, - "input_cost_per_token": 5e-07, - "input_cost_per_video_per_second": 0.002, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 8192, - "max_output_tokens": 2048, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 3.75e-07, - "output_cost_per_token": 1.5e-06, - "source": "As of Jun, 2024. There is no available doc on vertex ai pricing gemini-1.0-ultra-001. Using gemini-1.0-pro pricing. Got max_tokens info here: https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "gemini-1.5-flash": { - "deprecation_date": "2025-09-29", - "input_cost_per_audio_per_second": 2e-06, - "input_cost_per_audio_per_second_above_128k_tokens": 4e-06, - "input_cost_per_character": 1.875e-08, - "input_cost_per_character_above_128k_tokens": 2.5e-07, - "input_cost_per_image": 2e-05, - "input_cost_per_image_above_128k_tokens": 4e-05, - "input_cost_per_token": 7.5e-08, - "input_cost_per_token_above_128k_tokens": 1e-06, - "input_cost_per_video_per_second": 2e-05, - "input_cost_per_video_per_second_above_128k_tokens": 4e-05, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_character": 7.5e-08, - "output_cost_per_character_above_128k_tokens": 1.5e-07, - "output_cost_per_token": 3e-07, - "output_cost_per_token_above_128k_tokens": 6e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini-1.5-flash-001": { - "deprecation_date": "2025-05-24", - "input_cost_per_audio_per_second": 2e-06, - "input_cost_per_audio_per_second_above_128k_tokens": 4e-06, - "input_cost_per_character": 1.875e-08, - "input_cost_per_character_above_128k_tokens": 2.5e-07, - "input_cost_per_image": 2e-05, - "input_cost_per_image_above_128k_tokens": 4e-05, - "input_cost_per_token": 7.5e-08, - "input_cost_per_token_above_128k_tokens": 1e-06, - "input_cost_per_video_per_second": 2e-05, - "input_cost_per_video_per_second_above_128k_tokens": 4e-05, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_character": 7.5e-08, - "output_cost_per_character_above_128k_tokens": 1.5e-07, - "output_cost_per_token": 3e-07, - "output_cost_per_token_above_128k_tokens": 6e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini-1.5-flash-002": { - "deprecation_date": "2025-09-24", - "input_cost_per_audio_per_second": 2e-06, - "input_cost_per_audio_per_second_above_128k_tokens": 4e-06, - "input_cost_per_character": 1.875e-08, - "input_cost_per_character_above_128k_tokens": 2.5e-07, - "input_cost_per_image": 2e-05, - "input_cost_per_image_above_128k_tokens": 4e-05, - "input_cost_per_token": 7.5e-08, - "input_cost_per_token_above_128k_tokens": 1e-06, - "input_cost_per_video_per_second": 2e-05, - "input_cost_per_video_per_second_above_128k_tokens": 4e-05, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_character": 7.5e-08, - "output_cost_per_character_above_128k_tokens": 1.5e-07, - "output_cost_per_token": 3e-07, - "output_cost_per_token_above_128k_tokens": 6e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-1.5-flash", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini-1.5-flash-exp-0827": { - "deprecation_date": "2025-09-29", - "input_cost_per_audio_per_second": 2e-06, - "input_cost_per_audio_per_second_above_128k_tokens": 4e-06, - "input_cost_per_character": 1.875e-08, - "input_cost_per_character_above_128k_tokens": 2.5e-07, - "input_cost_per_image": 2e-05, - "input_cost_per_image_above_128k_tokens": 4e-05, - "input_cost_per_token": 4.688e-09, - "input_cost_per_token_above_128k_tokens": 1e-06, - "input_cost_per_video_per_second": 2e-05, - "input_cost_per_video_per_second_above_128k_tokens": 4e-05, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_character": 1.875e-08, - "output_cost_per_character_above_128k_tokens": 3.75e-08, - "output_cost_per_token": 4.6875e-09, - "output_cost_per_token_above_128k_tokens": 9.375e-09, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini-1.5-flash-preview-0514": { - "deprecation_date": "2025-09-29", - "input_cost_per_audio_per_second": 2e-06, - "input_cost_per_audio_per_second_above_128k_tokens": 4e-06, - "input_cost_per_character": 1.875e-08, - "input_cost_per_character_above_128k_tokens": 2.5e-07, - "input_cost_per_image": 2e-05, - "input_cost_per_image_above_128k_tokens": 4e-05, - "input_cost_per_token": 7.5e-08, - "input_cost_per_token_above_128k_tokens": 1e-06, - "input_cost_per_video_per_second": 2e-05, - "input_cost_per_video_per_second_above_128k_tokens": 4e-05, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_character": 1.875e-08, - "output_cost_per_character_above_128k_tokens": 3.75e-08, - "output_cost_per_token": 4.6875e-09, - "output_cost_per_token_above_128k_tokens": 9.375e-09, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini-1.5-pro": { - "deprecation_date": "2025-09-29", - "input_cost_per_audio_per_second": 3.125e-05, - "input_cost_per_audio_per_second_above_128k_tokens": 6.25e-05, - "input_cost_per_character": 3.125e-07, - "input_cost_per_character_above_128k_tokens": 6.25e-07, - "input_cost_per_image": 0.00032875, - "input_cost_per_image_above_128k_tokens": 0.0006575, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_128k_tokens": 2.5e-06, - "input_cost_per_video_per_second": 0.00032875, - "input_cost_per_video_per_second_above_128k_tokens": 0.0006575, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 2097152, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 1.25e-06, - "output_cost_per_character_above_128k_tokens": 2.5e-06, - "output_cost_per_token": 5e-06, - "output_cost_per_token_above_128k_tokens": 1e-05, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini-1.5-pro-001": { - "deprecation_date": "2025-05-24", - "input_cost_per_audio_per_second": 3.125e-05, - "input_cost_per_audio_per_second_above_128k_tokens": 6.25e-05, - "input_cost_per_character": 3.125e-07, - "input_cost_per_character_above_128k_tokens": 6.25e-07, - "input_cost_per_image": 0.00032875, - "input_cost_per_image_above_128k_tokens": 0.0006575, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_128k_tokens": 2.5e-06, - "input_cost_per_video_per_second": 0.00032875, - "input_cost_per_video_per_second_above_128k_tokens": 0.0006575, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 1.25e-06, - "output_cost_per_character_above_128k_tokens": 2.5e-06, - "output_cost_per_token": 5e-06, - "output_cost_per_token_above_128k_tokens": 1e-05, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini-1.5-pro-002": { - "deprecation_date": "2025-09-24", - "input_cost_per_audio_per_second": 3.125e-05, - "input_cost_per_audio_per_second_above_128k_tokens": 6.25e-05, - "input_cost_per_character": 3.125e-07, - "input_cost_per_character_above_128k_tokens": 6.25e-07, - "input_cost_per_image": 0.00032875, - "input_cost_per_image_above_128k_tokens": 0.0006575, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_128k_tokens": 2.5e-06, - "input_cost_per_video_per_second": 0.00032875, - "input_cost_per_video_per_second_above_128k_tokens": 0.0006575, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 2097152, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 1.25e-06, - "output_cost_per_character_above_128k_tokens": 2.5e-06, - "output_cost_per_token": 5e-06, - "output_cost_per_token_above_128k_tokens": 1e-05, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-1.5-pro", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini-1.5-pro-preview-0215": { - "deprecation_date": "2025-09-29", - "input_cost_per_audio_per_second": 3.125e-05, - "input_cost_per_audio_per_second_above_128k_tokens": 6.25e-05, - "input_cost_per_character": 3.125e-07, - "input_cost_per_character_above_128k_tokens": 6.25e-07, - "input_cost_per_image": 0.00032875, - "input_cost_per_image_above_128k_tokens": 0.0006575, - "input_cost_per_token": 7.8125e-08, - "input_cost_per_token_above_128k_tokens": 1.5625e-07, - "input_cost_per_video_per_second": 0.00032875, - "input_cost_per_video_per_second_above_128k_tokens": 0.0006575, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 1.25e-06, - "output_cost_per_character_above_128k_tokens": 2.5e-06, - "output_cost_per_token": 3.125e-07, - "output_cost_per_token_above_128k_tokens": 6.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gemini-1.5-pro-preview-0409": { - "deprecation_date": "2025-09-29", - "input_cost_per_audio_per_second": 3.125e-05, - "input_cost_per_audio_per_second_above_128k_tokens": 6.25e-05, - "input_cost_per_character": 3.125e-07, - "input_cost_per_character_above_128k_tokens": 6.25e-07, - "input_cost_per_image": 0.00032875, - "input_cost_per_image_above_128k_tokens": 0.0006575, - "input_cost_per_token": 7.8125e-08, - "input_cost_per_token_above_128k_tokens": 1.5625e-07, - "input_cost_per_video_per_second": 0.00032875, - "input_cost_per_video_per_second_above_128k_tokens": 0.0006575, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 1.25e-06, - "output_cost_per_character_above_128k_tokens": 2.5e-06, - "output_cost_per_token": 3.125e-07, - "output_cost_per_token_above_128k_tokens": 6.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "gemini-1.5-pro-preview-0514": { - "deprecation_date": "2025-09-29", - "input_cost_per_audio_per_second": 3.125e-05, - "input_cost_per_audio_per_second_above_128k_tokens": 6.25e-05, - "input_cost_per_character": 3.125e-07, - "input_cost_per_character_above_128k_tokens": 6.25e-07, - "input_cost_per_image": 0.00032875, - "input_cost_per_image_above_128k_tokens": 0.0006575, - "input_cost_per_token": 7.8125e-08, - "input_cost_per_token_above_128k_tokens": 1.5625e-07, - "input_cost_per_video_per_second": 0.00032875, - "input_cost_per_video_per_second_above_128k_tokens": 0.0006575, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 1.25e-06, - "output_cost_per_character_above_128k_tokens": 2.5e-06, - "output_cost_per_token": 3.125e-07, - "output_cost_per_token_above_128k_tokens": 6.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gemini-2.0-flash": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_audio_token": 7e-07, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 4e-07, - "source": "https://ai.google.dev/pricing#2_0flash", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.0-flash-001": { - "cache_read_input_token_cost": 3.75e-08, - "deprecation_date": "2026-02-05", - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 6e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.0-flash-exp": { - "cache_read_input_token_cost": 3.75e-08, - "input_cost_per_audio_per_second": 0, - "input_cost_per_audio_per_second_above_128k_tokens": 0, - "input_cost_per_character": 0, - "input_cost_per_character_above_128k_tokens": 0, - "input_cost_per_image": 0, - "input_cost_per_image_above_128k_tokens": 0, - "input_cost_per_token": 1.5e-07, - "input_cost_per_token_above_128k_tokens": 0, - "input_cost_per_video_per_second": 0, - "input_cost_per_video_per_second_above_128k_tokens": 0, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_character": 0, - "output_cost_per_character_above_128k_tokens": 0, - "output_cost_per_token": 6e-07, - "output_cost_per_token_above_128k_tokens": 0, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.0-flash-lite": { - "cache_read_input_token_cost": 1.875e-08, - "input_cost_per_audio_token": 7.5e-08, - "input_cost_per_token": 7.5e-08, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 50, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 3e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.0-flash-lite-001": { - "cache_read_input_token_cost": 1.875e-08, - "deprecation_date": "2026-02-25", - "input_cost_per_audio_token": 7.5e-08, - "input_cost_per_token": 7.5e-08, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 50, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 3e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.0-flash-live-preview-04-09": { - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_audio_token": 3e-06, - "input_cost_per_image": 3e-06, - "input_cost_per_token": 5e-07, - "input_cost_per_video_per_second": 3e-06, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_audio_token": 1.2e-05, - "output_cost_per_token": 2e-06, - "rpm": 10, - "source": "https://cloud.google.com/vertex-ai/docs/generative-ai/model-reference/gemini#gemini-2-0-flash-live-preview-04-09", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_audio_output": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 250000 - }, - "gemini-2.0-flash-preview-image-generation": { - "deprecation_date": "2025-11-14", - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_audio_token": 7e-07, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 4e-07, - "source": "https://ai.google.dev/pricing#2_0flash", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.0-flash-thinking-exp": { - "deprecation_date": "2025-12-02", - "cache_read_input_token_cost": 0.0, - "input_cost_per_audio_per_second": 0, - "input_cost_per_audio_per_second_above_128k_tokens": 0, - "input_cost_per_character": 0, - "input_cost_per_character_above_128k_tokens": 0, - "input_cost_per_image": 0, - "input_cost_per_image_above_128k_tokens": 0, - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "input_cost_per_video_per_second": 0, - "input_cost_per_video_per_second_above_128k_tokens": 0, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_character": 0, - "output_cost_per_character_above_128k_tokens": 0, - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.0-flash-thinking-exp-01-21": { - "deprecation_date": "2025-12-02", - "cache_read_input_token_cost": 0.0, - "input_cost_per_audio_per_second": 0, - "input_cost_per_audio_per_second_above_128k_tokens": 0, - "input_cost_per_character": 0, - "input_cost_per_character_above_128k_tokens": 0, - "input_cost_per_image": 0, - "input_cost_per_image_above_128k_tokens": 0, - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "input_cost_per_video_per_second": 0, - "input_cost_per_video_per_second_above_128k_tokens": 0, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65536, - "max_pdf_size_mb": 30, - "max_tokens": 65536, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_character": 0, - "output_cost_per_character_above_128k_tokens": 0, - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_output": false, - "supports_function_calling": false, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": false, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.0-pro-exp-02-05": { - "cache_read_input_token_cost": 3.125e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_200k_tokens": 2.5e-06, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 2097152, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_above_200k_tokens": 1.5e-05, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_input": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.5-flash": { - "cache_read_input_token_cost": 3e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 2.5e-06, - "output_cost_per_token": 2.5e-06, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.5-flash-image": { - "cache_read_input_token_cost": 3e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "max_pdf_size_mb": 30, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "image_generation", - "output_cost_per_image": 0.039, - "output_cost_per_image_token": 3e-05, - "output_cost_per_reasoning_token": 2.5e-06, - "output_cost_per_token": 2.5e-06, - "rpm": 100000, - "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-flash-image", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": false, - "tpm": 8000000 - }, - "gemini-2.5-flash-image-preview": { - "deprecation_date": "2026-01-15", - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "image_generation", - "output_cost_per_image": 0.039, - "output_cost_per_image_token": 3e-05, - "output_cost_per_reasoning_token": 3e-05, - "output_cost_per_token": 3e-05, - "rpm": 100000, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 8000000 - }, - "gemini-3-pro-image-preview": { - "input_cost_per_image": 0.0011, - "input_cost_per_token": 2e-06, - "input_cost_per_token_batches": 1e-06, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 65536, - "max_output_tokens": 32768, - "max_tokens": 65536, - "mode": "image_generation", - "output_cost_per_image": 0.134, - "output_cost_per_image_token": 1.2e-04, - "output_cost_per_token": 1.2e-05, - "output_cost_per_token_batches": 6e-06, - "source": "https://ai.google.dev/gemini-api/docs/pricing", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": false, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.5-flash-lite": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_audio_token": 5e-07, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 4e-07, - "output_cost_per_token": 4e-07, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.5-flash-lite-preview-09-2025": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_audio_token": 3e-07, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 4e-07, - "output_cost_per_token": 4e-07, - "source": "https://developers.googleblog.com/en/continuing-to-bring-you-our-latest-models-with-an-improved-gemini-2-5-flash-and-flash-lite-release/", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.5-flash-preview-09-2025": { - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 2.5e-06, - "output_cost_per_token": 2.5e-06, - "source": "https://developers.googleblog.com/en/continuing-to-bring-you-our-latest-models-with-an-improved-gemini-2-5-flash-and-flash-lite-release/", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-live-2.5-flash-preview-native-audio-09-2025": { - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_audio_token": 3e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_audio_token": 1.2e-05, - "output_cost_per_token": 2e-06, - "source": "https://ai.google.dev/gemini-api/docs/pricing", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini/gemini-live-2.5-flash-preview-native-audio-09-2025": { - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_audio_token": 3e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_audio_token": 1.2e-05, - "output_cost_per_token": 2e-06, - "rpm": 100000, - "source": "https://ai.google.dev/gemini-api/docs/pricing", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 8000000 - }, - "gemini-2.5-flash-lite-preview-06-17": { - "deprecation_date": "2025-11-18", - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_audio_token": 5e-07, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 4e-07, - "output_cost_per_token": 4e-07, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.5-flash-preview-04-17": { - "cache_read_input_token_cost": 3.75e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 3.5e-06, - "output_cost_per_token": 6e-07, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.5-flash-preview-05-20": { - "deprecation_date": "2025-11-18", - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 2.5e-06, - "output_cost_per_token": 2.5e-06, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.5-pro": { - "cache_read_input_token_cost": 1.25e-07, - "cache_creation_input_token_cost_above_200k_tokens": 2.5e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_200k_tokens": 2.5e-06, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_above_200k_tokens": 1.5e-05, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_input": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-3-pro-preview": { - "cache_read_input_token_cost": 2e-07, - "cache_read_input_token_cost_above_200k_tokens": 4e-07, - "cache_creation_input_token_cost_above_200k_tokens": 2.5e-07, - "input_cost_per_token": 2e-06, - "input_cost_per_token_above_200k_tokens": 4e-06, - "input_cost_per_token_batches": 1e-06, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1.2e-05, - "output_cost_per_token_above_200k_tokens": 1.8e-05, - "output_cost_per_token_batches": 6e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_input": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true, - "supports_web_search": true - }, - "vertex_ai/gemini-3-pro-preview": { - "cache_read_input_token_cost": 2e-07, - "cache_read_input_token_cost_above_200k_tokens": 4e-07, - "cache_creation_input_token_cost_above_200k_tokens": 2.5e-07, - "input_cost_per_token": 2e-06, - "input_cost_per_token_above_200k_tokens": 4e-06, - "input_cost_per_token_batches": 1e-06, - "litellm_provider": "vertex_ai", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1.2e-05, - "output_cost_per_token_above_200k_tokens": 1.8e-05, - "output_cost_per_token_batches": 6e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_input": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true, - "supports_web_search": true - }, - "vertex_ai/gemini-3-flash-preview": { - "cache_read_input_token_cost": 5e-08, - "input_cost_per_token": 5e-07, - "input_cost_per_audio_token": 1e-06, - "litellm_provider": "vertex_ai", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 3e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_input": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.5-pro-exp-03-25": { - "cache_read_input_token_cost": 3.125e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_200k_tokens": 2.5e-06, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_above_200k_tokens": 1.5e-05, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_input": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.5-pro-preview-03-25": { - "deprecation_date": "2025-12-02", - "cache_read_input_token_cost": 3.125e-07, - "input_cost_per_audio_token": 1.25e-06, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_200k_tokens": 2.5e-06, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_above_200k_tokens": 1.5e-05, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.5-pro-preview-05-06": { - "deprecation_date": "2025-12-02", - "cache_read_input_token_cost": 3.125e-07, - "input_cost_per_audio_token": 1.25e-06, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_200k_tokens": 2.5e-06, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_above_200k_tokens": 1.5e-05, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supported_regions": [ - "global" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.5-pro-preview-06-05": { - "cache_read_input_token_cost": 3.125e-07, - "input_cost_per_audio_token": 1.25e-06, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_200k_tokens": 2.5e-06, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_above_200k_tokens": 1.5e-05, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-2.5-pro-preview-tts": { - "cache_read_input_token_cost": 3.125e-07, - "input_cost_per_audio_token": 7e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_200k_tokens": 2.5e-06, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_above_200k_tokens": 1.5e-05, - "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "audio" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini-embedding-001": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 2048, - "max_tokens": 2048, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 3072, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models" - }, - "gemini-flash-experimental": { - "input_cost_per_character": 0, - "input_cost_per_token": 0, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 0, - "output_cost_per_token": 0, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/gemini-experimental", - "supports_function_calling": false, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "gemini-pro": { - "input_cost_per_character": 1.25e-07, - "input_cost_per_image": 0.0025, - "input_cost_per_token": 5e-07, - "input_cost_per_video_per_second": 0.002, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 32760, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 3.75e-07, - "output_cost_per_token": 1.5e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "gemini-pro-experimental": { - "input_cost_per_character": 0, - "input_cost_per_token": 0, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 0, - "output_cost_per_token": 0, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/gemini-experimental", - "supports_function_calling": false, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "gemini-pro-vision": { - "input_cost_per_image": 0.0025, - "input_cost_per_token": 5e-07, - "litellm_provider": "vertex_ai-vision-models", - "max_images_per_prompt": 16, - "max_input_tokens": 16384, - "max_output_tokens": 2048, - "max_tokens": 2048, - "max_video_length": 2, - "max_videos_per_prompt": 1, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini/gemini-embedding-001": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "gemini", - "max_input_tokens": 2048, - "max_tokens": 2048, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 3072, - "rpm": 10000, - "source": "https://ai.google.dev/gemini-api/docs/embeddings#model-versions", - "tpm": 10000000 - }, - "gemini/gemini-1.5-flash": { - "deprecation_date": "2025-09-29", - "input_cost_per_token": 7.5e-08, - "input_cost_per_token_above_128k_tokens": 1.5e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 3e-07, - "output_cost_per_token_above_128k_tokens": 6e-07, - "rpm": 2000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-1.5-flash-001": { - "cache_creation_input_token_cost": 1e-06, - "cache_read_input_token_cost": 1.875e-08, - "deprecation_date": "2025-05-24", - "input_cost_per_token": 7.5e-08, - "input_cost_per_token_above_128k_tokens": 1.5e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 3e-07, - "output_cost_per_token_above_128k_tokens": 6e-07, - "rpm": 2000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-1.5-flash-002": { - "cache_creation_input_token_cost": 1e-06, - "cache_read_input_token_cost": 1.875e-08, - "deprecation_date": "2025-09-24", - "input_cost_per_token": 7.5e-08, - "input_cost_per_token_above_128k_tokens": 1.5e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 3e-07, - "output_cost_per_token_above_128k_tokens": 6e-07, - "rpm": 2000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-1.5-flash-8b": { - "deprecation_date": "2025-09-29", - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "rpm": 4000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-1.5-flash-8b-exp-0827": { - "deprecation_date": "2025-09-29", - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "rpm": 4000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-1.5-flash-8b-exp-0924": { - "deprecation_date": "2025-09-29", - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "rpm": 4000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-1.5-flash-exp-0827": { - "deprecation_date": "2025-09-29", - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "rpm": 2000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-1.5-flash-latest": { - "deprecation_date": "2025-09-29", - "input_cost_per_token": 7.5e-08, - "input_cost_per_token_above_128k_tokens": 1.5e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 3e-07, - "output_cost_per_token_above_128k_tokens": 6e-07, - "rpm": 2000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-1.5-pro": { - "deprecation_date": "2025-09-29", - "input_cost_per_token": 3.5e-06, - "input_cost_per_token_above_128k_tokens": 7e-06, - "litellm_provider": "gemini", - "max_input_tokens": 2097152, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.05e-05, - "output_cost_per_token_above_128k_tokens": 2.1e-05, - "rpm": 1000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-1.5-pro-001": { - "deprecation_date": "2025-05-24", - "input_cost_per_token": 3.5e-06, - "input_cost_per_token_above_128k_tokens": 7e-06, - "litellm_provider": "gemini", - "max_input_tokens": 2097152, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.05e-05, - "output_cost_per_token_above_128k_tokens": 2.1e-05, - "rpm": 1000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-1.5-pro-002": { - "deprecation_date": "2025-09-24", - "input_cost_per_token": 3.5e-06, - "input_cost_per_token_above_128k_tokens": 7e-06, - "litellm_provider": "gemini", - "max_input_tokens": 2097152, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.05e-05, - "output_cost_per_token_above_128k_tokens": 2.1e-05, - "rpm": 1000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-1.5-pro-exp-0801": { - "deprecation_date": "2025-09-29", - "input_cost_per_token": 3.5e-06, - "input_cost_per_token_above_128k_tokens": 7e-06, - "litellm_provider": "gemini", - "max_input_tokens": 2097152, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.05e-05, - "output_cost_per_token_above_128k_tokens": 2.1e-05, - "rpm": 1000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-1.5-pro-exp-0827": { - "deprecation_date": "2025-09-29", - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "litellm_provider": "gemini", - "max_input_tokens": 2097152, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "rpm": 1000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-1.5-pro-latest": { - "deprecation_date": "2025-09-29", - "input_cost_per_token": 3.5e-06, - "input_cost_per_token_above_128k_tokens": 7e-06, - "litellm_provider": "gemini", - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.05e-06, - "output_cost_per_token_above_128k_tokens": 2.1e-05, - "rpm": 1000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-2.0-flash": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_audio_token": 7e-07, - "input_cost_per_token": 1e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 4e-07, - "rpm": 10000, - "source": "https://ai.google.dev/pricing#2_0flash", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 10000000 - }, - "gemini/gemini-2.0-flash-001": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_audio_token": 7e-07, - "input_cost_per_token": 1e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 4e-07, - "rpm": 10000, - "source": "https://ai.google.dev/pricing#2_0flash", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 10000000 - }, - "gemini/gemini-2.0-flash-exp": { - "cache_read_input_token_cost": 0.0, - "input_cost_per_audio_per_second": 0, - "input_cost_per_audio_per_second_above_128k_tokens": 0, - "input_cost_per_character": 0, - "input_cost_per_character_above_128k_tokens": 0, - "input_cost_per_image": 0, - "input_cost_per_image_above_128k_tokens": 0, - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "input_cost_per_video_per_second": 0, - "input_cost_per_video_per_second_above_128k_tokens": 0, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_character": 0, - "output_cost_per_character_above_128k_tokens": 0, - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "rpm": 10, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_output": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 4000000 - }, - "gemini/gemini-2.0-flash-lite": { - "cache_read_input_token_cost": 1.875e-08, - "input_cost_per_audio_token": 7.5e-08, - "input_cost_per_token": 7.5e-08, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 50, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 3e-07, - "rpm": 4000, - "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.0-flash-lite", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 4000000 - }, - "gemini/gemini-2.0-flash-lite-preview-02-05": { - "deprecation_date": "2025-12-02", - "cache_read_input_token_cost": 1.875e-08, - "input_cost_per_audio_token": 7.5e-08, - "input_cost_per_token": 7.5e-08, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 3e-07, - "rpm": 60000, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash-lite", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 10000000 - }, - "gemini/gemini-2.0-flash-live-001": { - "deprecation_date": "2025-12-09", - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_audio_token": 2.1e-06, - "input_cost_per_image": 2.1e-06, - "input_cost_per_token": 3.5e-07, - "input_cost_per_video_per_second": 2.1e-06, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_audio_token": 8.5e-06, - "output_cost_per_token": 1.5e-06, - "rpm": 10, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2-0-flash-live-001", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_audio_output": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 250000 - }, - "gemini/gemini-2.0-flash-preview-image-generation": { - "deprecation_date": "2025-11-14", - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_audio_token": 7e-07, - "input_cost_per_token": 1e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 4e-07, - "rpm": 10000, - "source": "https://ai.google.dev/pricing#2_0flash", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 10000000 - }, - "gemini/gemini-2.0-flash-thinking-exp": { - "deprecation_date": "2025-12-02", - "cache_read_input_token_cost": 0.0, - "input_cost_per_audio_per_second": 0, - "input_cost_per_audio_per_second_above_128k_tokens": 0, - "input_cost_per_character": 0, - "input_cost_per_character_above_128k_tokens": 0, - "input_cost_per_image": 0, - "input_cost_per_image_above_128k_tokens": 0, - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "input_cost_per_video_per_second": 0, - "input_cost_per_video_per_second_above_128k_tokens": 0, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65536, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_character": 0, - "output_cost_per_character_above_128k_tokens": 0, - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "rpm": 10, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_output": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 4000000 - }, - "gemini/gemini-2.0-flash-thinking-exp-01-21": { - "deprecation_date": "2025-12-02", - "cache_read_input_token_cost": 0.0, - "input_cost_per_audio_per_second": 0, - "input_cost_per_audio_per_second_above_128k_tokens": 0, - "input_cost_per_character": 0, - "input_cost_per_character_above_128k_tokens": 0, - "input_cost_per_image": 0, - "input_cost_per_image_above_128k_tokens": 0, - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "input_cost_per_video_per_second": 0, - "input_cost_per_video_per_second_above_128k_tokens": 0, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65536, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_character": 0, - "output_cost_per_character_above_128k_tokens": 0, - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "rpm": 10, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_output": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 4000000 - }, - "gemini/gemini-2.0-pro-exp-02-05": { - "cache_read_input_token_cost": 0.0, - "input_cost_per_audio_per_second": 0, - "input_cost_per_audio_per_second_above_128k_tokens": 0, - "input_cost_per_character": 0, - "input_cost_per_character_above_128k_tokens": 0, - "input_cost_per_image": 0, - "input_cost_per_image_above_128k_tokens": 0, - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "input_cost_per_video_per_second": 0, - "input_cost_per_video_per_second_above_128k_tokens": 0, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 2097152, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_character": 0, - "output_cost_per_character_above_128k_tokens": 0, - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "rpm": 2, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supports_audio_input": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 1000000 - }, - "gemini/gemini-2.5-flash": { - "cache_read_input_token_cost": 3e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 2.5e-06, - "output_cost_per_token": 2.5e-06, - "rpm": 100000, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 8000000 - }, - "gemini/gemini-2.5-flash-image": { - "cache_read_input_token_cost": 3e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "supports_reasoning": false, - "max_images_per_prompt": 3000, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "max_pdf_size_mb": 30, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "image_generation", - "output_cost_per_image": 0.039, - "output_cost_per_image_token": 3e-05, - "output_cost_per_reasoning_token": 2.5e-06, - "output_cost_per_token": 2.5e-06, - "rpm": 100000, - "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-flash-image", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 8000000 - }, - "gemini/gemini-2.5-flash-image-preview": { - "deprecation_date": "2026-01-15", - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "image_generation", - "output_cost_per_image": 0.039, - "output_cost_per_image_token": 3e-05, - "output_cost_per_reasoning_token": 3e-05, - "output_cost_per_token": 3e-05, - "rpm": 100000, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 8000000 - }, - "gemini/gemini-3-pro-image-preview": { - "input_cost_per_image": 0.0011, - "input_cost_per_token": 2e-06, - "input_cost_per_token_batches": 1e-06, - "litellm_provider": "gemini", - "max_input_tokens": 65536, - "max_output_tokens": 32768, - "max_tokens": 65536, - "mode": "image_generation", - "output_cost_per_image": 0.134, - "output_cost_per_image_token": 1.2e-04, - "output_cost_per_token": 1.2e-05, - "rpm": 1000, - "tpm": 4000000, - "output_cost_per_token_batches": 6e-06, - "source": "https://ai.google.dev/gemini-api/docs/pricing", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": false, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini/gemini-2.5-flash-lite": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_audio_token": 5e-07, - "input_cost_per_token": 1e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 4e-07, - "output_cost_per_token": 4e-07, - "rpm": 15, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-lite", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 250000 - }, - "gemini/gemini-2.5-flash-lite-preview-09-2025": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_audio_token": 3e-07, - "input_cost_per_token": 1e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 4e-07, - "output_cost_per_token": 4e-07, - "rpm": 15, - "source": "https://developers.googleblog.com/en/continuing-to-bring-you-our-latest-models-with-an-improved-gemini-2-5-flash-and-flash-lite-release/", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 250000 - }, - "gemini/gemini-2.5-flash-preview-09-2025": { - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 2.5e-06, - "output_cost_per_token": 2.5e-06, - "rpm": 15, - "source": "https://developers.googleblog.com/en/continuing-to-bring-you-our-latest-models-with-an-improved-gemini-2-5-flash-and-flash-lite-release/", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 250000 - }, - "gemini/gemini-flash-latest": { - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 2.5e-06, - "output_cost_per_token": 2.5e-06, - "rpm": 15, - "source": "https://developers.googleblog.com/en/continuing-to-bring-you-our-latest-models-with-an-improved-gemini-2-5-flash-and-flash-lite-release/", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 250000 - }, - "gemini/gemini-flash-lite-latest": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_audio_token": 3e-07, - "input_cost_per_token": 1e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 4e-07, - "output_cost_per_token": 4e-07, - "rpm": 15, - "source": "https://developers.googleblog.com/en/continuing-to-bring-you-our-latest-models-with-an-improved-gemini-2-5-flash-and-flash-lite-release/", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 250000 - }, - "gemini/gemini-2.5-flash-lite-preview-06-17": { - "deprecation_date": "2025-11-18", - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_audio_token": 5e-07, - "input_cost_per_token": 1e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 4e-07, - "output_cost_per_token": 4e-07, - "rpm": 15, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-lite", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 250000 - }, - "gemini/gemini-2.5-flash-preview-04-17": { - "cache_read_input_token_cost": 3.75e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 1.5e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 3.5e-06, - "output_cost_per_token": 6e-07, - "rpm": 10, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 250000 - }, - "gemini/gemini-2.5-flash-preview-05-20": { - "deprecation_date": "2025-11-18", - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 2.5e-06, - "output_cost_per_token": 2.5e-06, - "rpm": 10, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 250000 - }, - "gemini/gemini-2.5-flash-preview-tts": { - "cache_read_input_token_cost": 3.75e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 1.5e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 3.5e-06, - "output_cost_per_token": 6e-07, - "rpm": 10, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions" - ], - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "audio" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 250000 - }, - "gemini/gemini-2.5-pro": { - "cache_read_input_token_cost": 3.125e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_200k_tokens": 2.5e-06, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_above_200k_tokens": 1.5e-05, - "rpm": 2000, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_input": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 800000 - }, - "gemini/gemini-2.5-computer-use-preview-10-2025": { - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_200k_tokens": 2.5e-06, - "litellm_provider": "gemini", - "max_images_per_prompt": 3000, - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_above_200k_tokens": 1.5e-05, - "rpm": 2000, - "source": "https://ai.google.dev/gemini-api/docs/computer-use", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_computer_use": true, - "supports_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 800000 - }, - "gemini/gemini-3-pro-preview": { - "cache_read_input_token_cost": 2e-07, - "cache_read_input_token_cost_above_200k_tokens": 4e-07, - "input_cost_per_token": 2e-06, - "input_cost_per_token_above_200k_tokens": 4e-06, - "input_cost_per_token_batches": 1e-06, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1.2e-05, - "output_cost_per_token_above_200k_tokens": 1.8e-05, - "output_cost_per_token_batches": 6e-06, - "rpm": 2000, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_input": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 800000 - }, - "gemini/gemini-3-flash-preview": { - "cache_read_input_token_cost": 5e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 5e-07, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 3e-06, - "output_cost_per_token": 3e-06, - "rpm": 2000, - "source": "https://ai.google.dev/pricing/gemini-3", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 800000 - }, - "gemini-3-flash-preview": { - "cache_read_input_token_cost": 5e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 5e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 3e-06, - "output_cost_per_token": 3e-06, - "source": "https://ai.google.dev/pricing/gemini-3", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true - }, - "gemini/gemini-2.5-pro-exp-03-25": { - "cache_read_input_token_cost": 0.0, - "input_cost_per_token": 0.0, - "input_cost_per_token_above_200k_tokens": 0.0, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 0.0, - "output_cost_per_token_above_200k_tokens": 0.0, - "rpm": 5, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_input": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 250000 - }, - "gemini/gemini-2.5-pro-preview-03-25": { - "deprecation_date": "2025-12-02", - "cache_read_input_token_cost": 3.125e-07, - "input_cost_per_audio_token": 7e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_200k_tokens": 2.5e-06, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_above_200k_tokens": 1.5e-05, - "rpm": 10000, - "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 10000000 - }, - "gemini/gemini-2.5-pro-preview-05-06": { - "deprecation_date": "2025-12-02", - "cache_read_input_token_cost": 3.125e-07, - "input_cost_per_audio_token": 7e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_200k_tokens": 2.5e-06, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_above_200k_tokens": 1.5e-05, - "rpm": 10000, - "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 10000000 - }, - "gemini/gemini-2.5-pro-preview-06-05": { - "cache_read_input_token_cost": 3.125e-07, - "input_cost_per_audio_token": 7e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_200k_tokens": 2.5e-06, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_above_200k_tokens": 1.5e-05, - "rpm": 10000, - "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview", - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 10000000 - }, - "gemini/gemini-2.5-pro-preview-tts": { - "cache_read_input_token_cost": 3.125e-07, - "input_cost_per_audio_token": 7e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_above_200k_tokens": 2.5e-06, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_above_200k_tokens": 1.5e-05, - "rpm": 10000, - "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "audio" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 10000000 - }, - "gemini/gemini-exp-1114": { - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "metadata": { - "notes": "Rate limits not documented for gemini-exp-1114. Assuming same as gemini-1.5-pro.", - "supports_tool_choice": true - }, - "mode": "chat", - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "rpm": 1000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-exp-1206": { - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "litellm_provider": "gemini", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 2097152, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "metadata": { - "notes": "Rate limits not documented for gemini-exp-1206. Assuming same as gemini-1.5-pro.", - "supports_tool_choice": true - }, - "mode": "chat", - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "rpm": 1000, - "source": "https://ai.google.dev/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 4000000 - }, - "gemini/gemini-gemma-2-27b-it": { - "input_cost_per_token": 3.5e-07, - "litellm_provider": "gemini", - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.05e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini/gemini-gemma-2-9b-it": { - "input_cost_per_token": 3.5e-07, - "litellm_provider": "gemini", - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.05e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini/gemini-pro": { - "input_cost_per_token": 3.5e-07, - "input_cost_per_token_above_128k_tokens": 7e-07, - "litellm_provider": "gemini", - "max_input_tokens": 32760, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.05e-06, - "output_cost_per_token_above_128k_tokens": 2.1e-06, - "rpd": 30000, - "rpm": 360, - "source": "https://ai.google.dev/gemini-api/docs/models/gemini", - "supports_function_calling": true, - "supports_tool_choice": true, - "tpm": 120000 - }, - "gemini/gemini-pro-vision": { - "input_cost_per_token": 3.5e-07, - "input_cost_per_token_above_128k_tokens": 7e-07, - "litellm_provider": "gemini", - "max_input_tokens": 30720, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 1.05e-06, - "output_cost_per_token_above_128k_tokens": 2.1e-06, - "rpd": 30000, - "rpm": 360, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true, - "tpm": 120000 - }, - "gemini/gemma-3-27b-it": { - "input_cost_per_audio_per_second": 0, - "input_cost_per_audio_per_second_above_128k_tokens": 0, - "input_cost_per_character": 0, - "input_cost_per_character_above_128k_tokens": 0, - "input_cost_per_image": 0, - "input_cost_per_image_above_128k_tokens": 0, - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "input_cost_per_video_per_second": 0, - "input_cost_per_video_per_second_above_128k_tokens": 0, - "litellm_provider": "gemini", - "max_input_tokens": 131072, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 0, - "output_cost_per_character_above_128k_tokens": 0, - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "source": "https://aistudio.google.com", - "supports_audio_output": false, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini/imagen-3.0-fast-generate-001": { - "litellm_provider": "gemini", - "mode": "image_generation", - "output_cost_per_image": 0.02, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "gemini/imagen-3.0-generate-001": { - "litellm_provider": "gemini", - "mode": "image_generation", - "output_cost_per_image": 0.04, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "gemini/imagen-3.0-generate-002": { - "deprecation_date": "2025-11-10", - "litellm_provider": "gemini", - "mode": "image_generation", - "output_cost_per_image": 0.04, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "gemini/imagen-4.0-fast-generate-001": { - "litellm_provider": "gemini", - "mode": "image_generation", - "output_cost_per_image": 0.02, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "gemini/imagen-4.0-generate-001": { - "litellm_provider": "gemini", - "mode": "image_generation", - "output_cost_per_image": 0.04, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "gemini/imagen-4.0-ultra-generate-001": { - "litellm_provider": "gemini", - "mode": "image_generation", - "output_cost_per_image": 0.06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "gemini/learnlm-1.5-pro-experimental": { - "input_cost_per_audio_per_second": 0, - "input_cost_per_audio_per_second_above_128k_tokens": 0, - "input_cost_per_character": 0, - "input_cost_per_character_above_128k_tokens": 0, - "input_cost_per_image": 0, - "input_cost_per_image_above_128k_tokens": 0, - "input_cost_per_token": 0, - "input_cost_per_token_above_128k_tokens": 0, - "input_cost_per_video_per_second": 0, - "input_cost_per_video_per_second_above_128k_tokens": 0, - "litellm_provider": "gemini", - "max_input_tokens": 32767, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 0, - "output_cost_per_character_above_128k_tokens": 0, - "output_cost_per_token": 0, - "output_cost_per_token_above_128k_tokens": 0, - "source": "https://aistudio.google.com", - "supports_audio_output": false, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gemini/veo-2.0-generate-001": { - "litellm_provider": "gemini", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.35, - "source": "https://ai.google.dev/gemini-api/docs/video", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "gemini/veo-3.0-fast-generate-preview": { - "deprecation_date": "2025-11-12", - "litellm_provider": "gemini", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.4, - "source": "https://ai.google.dev/gemini-api/docs/video", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "gemini/veo-3.0-generate-preview": { - "deprecation_date": "2025-11-12", - "litellm_provider": "gemini", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.75, - "source": "https://ai.google.dev/gemini-api/docs/video", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "gemini/veo-3.1-fast-generate-preview": { - "litellm_provider": "gemini", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.15, - "source": "https://ai.google.dev/gemini-api/docs/video", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "gemini/veo-3.1-generate-preview": { - "litellm_provider": "gemini", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.40, - "source": "https://ai.google.dev/gemini-api/docs/video", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "gemini/veo-3.1-fast-generate-001": { - "litellm_provider": "gemini", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.15, - "source": "https://ai.google.dev/gemini-api/docs/video", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "gemini/veo-3.1-generate-001": { - "litellm_provider": "gemini", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.40, - "source": "https://ai.google.dev/gemini-api/docs/video", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "github_copilot/claude-haiku-4.5": { - "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16000, - "max_tokens": 16000, - "mode": "chat", - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": true - }, - "github_copilot/claude-opus-4.5": { - "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16000, - "max_tokens": 16000, - "mode": "chat", - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": true - }, - "github_copilot/claude-opus-41": { - "litellm_provider": "github_copilot", - "max_input_tokens": 80000, - "max_output_tokens": 16000, - "max_tokens": 16000, - "mode": "chat", - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supports_vision": true - }, - "github_copilot/claude-sonnet-4": { - "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16000, - "max_tokens": 16000, - "mode": "chat", - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": true - }, - "github_copilot/claude-sonnet-4.5": { - "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16000, - "max_tokens": 16000, - "mode": "chat", - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": true - }, - "github_copilot/gemini-2.5-pro": { - "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": true - }, - "github_copilot/gemini-3-pro-preview": { - "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": true - }, - "github_copilot/gpt-3.5-turbo": { - "litellm_provider": "github_copilot", - "max_input_tokens": 16384, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "supports_function_calling": true - }, - "github_copilot/gpt-3.5-turbo-0613": { - "litellm_provider": "github_copilot", - "max_input_tokens": 16384, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "supports_function_calling": true - }, - "github_copilot/gpt-4": { - "litellm_provider": "github_copilot", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "supports_function_calling": true - }, - "github_copilot/gpt-4-0613": { - "litellm_provider": "github_copilot", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "supports_function_calling": true - }, - "github_copilot/gpt-4-o-preview": { - "litellm_provider": "github_copilot", - "max_input_tokens": 64000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true - }, - "github_copilot/gpt-4.1": { - "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_vision": true - }, - "github_copilot/gpt-4.1-2025-04-14": { - "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_vision": true - }, - "github_copilot/gpt-41-copilot": { - "litellm_provider": "github_copilot", - "mode": "completion" - }, - "github_copilot/gpt-4o": { - "litellm_provider": "github_copilot", - "max_input_tokens": 64000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": true - }, - "github_copilot/gpt-4o-2024-05-13": { - "litellm_provider": "github_copilot", - "max_input_tokens": 64000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": true - }, - "github_copilot/gpt-4o-2024-08-06": { - "litellm_provider": "github_copilot", - "max_input_tokens": 64000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true - }, - "github_copilot/gpt-4o-2024-11-20": { - "litellm_provider": "github_copilot", - "max_input_tokens": 64000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": true - }, - "github_copilot/gpt-4o-mini": { - "litellm_provider": "github_copilot", - "max_input_tokens": 64000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true - }, - "github_copilot/gpt-4o-mini-2024-07-18": { - "litellm_provider": "github_copilot", - "max_input_tokens": 64000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true - }, - "github_copilot/gpt-5": { - "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/responses" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_vision": true - }, - "github_copilot/gpt-5-mini": { - "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_vision": true - }, - "github_copilot/gpt-5.1": { - "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/responses" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_vision": true - }, - "github_copilot/gpt-5.1-codex-max": { - "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "supported_endpoints": [ - "/v1/responses" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_vision": true - }, - "github_copilot/gpt-5.2": { - "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/responses" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_vision": true - }, - "github_copilot/text-embedding-3-small": { - "litellm_provider": "github_copilot", - "max_input_tokens": 8191, - "max_tokens": 8191, - "mode": "embedding" - }, - "github_copilot/text-embedding-3-small-inference": { - "litellm_provider": "github_copilot", - "max_input_tokens": 8191, - "max_tokens": 8191, - "mode": "embedding" - }, - "github_copilot/text-embedding-ada-002": { - "litellm_provider": "github_copilot", - "max_input_tokens": 8191, - "max_tokens": 8191, - "mode": "embedding" - }, - "gigachat/GigaChat-2-Lite": { - "input_cost_per_token": 0.0, - "litellm_provider": "gigachat", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true, - "supports_system_messages": true - }, - "gigachat/GigaChat-2-Max": { - "input_cost_per_token": 0.0, - "litellm_provider": "gigachat", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true, - "supports_system_messages": true, - "supports_vision": true - }, - "gigachat/GigaChat-2-Pro": { - "input_cost_per_token": 0.0, - "litellm_provider": "gigachat", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true, - "supports_system_messages": true, - "supports_vision": true - }, - "gigachat/Embeddings": { - "input_cost_per_token": 0.0, - "litellm_provider": "gigachat", - "max_input_tokens": 512, - "max_tokens": 512, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1024 - }, - "gigachat/Embeddings-2": { - "input_cost_per_token": 0.0, - "litellm_provider": "gigachat", - "max_input_tokens": 512, - "max_tokens": 512, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1024 - }, - "gigachat/EmbeddingsGigaR": { - "input_cost_per_token": 0.0, - "litellm_provider": "gigachat", - "max_input_tokens": 4096, - "max_tokens": 4096, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 2560 - }, - "google.gemma-3-12b-it": { - "input_cost_per_token": 9e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.9e-07, - "supports_system_messages": true, - "supports_vision": true - }, - "google.gemma-3-27b-it": { - "input_cost_per_token": 2.3e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 3.8e-07, - "supports_system_messages": true, - "supports_vision": true - }, - "google.gemma-3-4b-it": { - "input_cost_per_token": 4e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 8e-08, - "supports_system_messages": true, - "supports_vision": true - }, - "google_pse/search": { - "input_cost_per_query": 0.005, - "litellm_provider": "google_pse", - "mode": "search" - }, - "global.anthropic.claude-sonnet-4-5-20250929-v1:0": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "global.anthropic.claude-sonnet-4-20250514-v1:0": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "global.anthropic.claude-haiku-4-5-20251001-v1:0": { - "cache_creation_input_token_cost": 1.25e-06, - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 1e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 5e-06, - "source": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock", - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "global.amazon.nova-2-lite-v1:0": { - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 2.5e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_video_input": true, - "supports_vision": true - }, - "gpt-3.5-turbo": { - "input_cost_per_token": 0.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 16385, - "max_output_tokens": 4096, - "max_tokens": 4097, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-3.5-turbo-0125": { - "input_cost_per_token": 5e-07, - "litellm_provider": "openai", - "max_input_tokens": 16385, - "max_output_tokens": 4096, - "max_tokens": 16385, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-3.5-turbo-0301": { - "input_cost_per_token": 1.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 4097, - "max_output_tokens": 4096, - "max_tokens": 4097, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-3.5-turbo-0613": { - "input_cost_per_token": 1.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 4097, - "max_output_tokens": 4096, - "max_tokens": 4097, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-3.5-turbo-1106": { - "deprecation_date": "2026-09-28", - "input_cost_per_token": 1e-06, - "litellm_provider": "openai", - "max_input_tokens": 16385, - "max_output_tokens": 4096, - "max_tokens": 16385, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-3.5-turbo-16k": { - "input_cost_per_token": 3e-06, - "litellm_provider": "openai", - "max_input_tokens": 16385, - "max_output_tokens": 4096, - "max_tokens": 16385, - "mode": "chat", - "output_cost_per_token": 4e-06, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-3.5-turbo-16k-0613": { - "input_cost_per_token": 3e-06, - "litellm_provider": "openai", - "max_input_tokens": 16385, - "max_output_tokens": 4096, - "max_tokens": 16385, - "mode": "chat", - "output_cost_per_token": 4e-06, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-3.5-turbo-instruct": { - "input_cost_per_token": 1.5e-06, - "litellm_provider": "text-completion-openai", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "completion", - "output_cost_per_token": 2e-06 - }, - "gpt-3.5-turbo-instruct-0914": { - "input_cost_per_token": 1.5e-06, - "litellm_provider": "text-completion-openai", - "max_input_tokens": 8192, - "max_output_tokens": 4097, - "max_tokens": 4097, - "mode": "completion", - "output_cost_per_token": 2e-06 - }, - "gpt-4": { - "input_cost_per_token": 3e-05, - "litellm_provider": "openai", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4-0125-preview": { - "deprecation_date": "2026-03-26", - "input_cost_per_token": 1e-05, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4-0314": { - "input_cost_per_token": 3e-05, - "litellm_provider": "openai", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4-0613": { - "deprecation_date": "2025-06-06", - "input_cost_per_token": 3e-05, - "litellm_provider": "openai", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4-1106-preview": { - "deprecation_date": "2026-03-26", - "input_cost_per_token": 1e-05, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4-1106-vision-preview": { - "deprecation_date": "2024-12-06", - "input_cost_per_token": 1e-05, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3e-05, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-4-32k": { - "input_cost_per_token": 6e-05, - "litellm_provider": "openai", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.00012, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4-32k-0314": { - "input_cost_per_token": 6e-05, - "litellm_provider": "openai", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.00012, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4-32k-0613": { - "input_cost_per_token": 6e-05, - "litellm_provider": "openai", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.00012, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4-turbo": { - "input_cost_per_token": 1e-05, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-4-turbo-2024-04-09": { - "input_cost_per_token": 1e-05, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-4-turbo-preview": { - "input_cost_per_token": 1e-05, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4-vision-preview": { - "deprecation_date": "2024-12-06", - "input_cost_per_token": 1e-05, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 3e-05, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-4.1": { - "cache_read_input_token_cost": 5e-07, - "cache_read_input_token_cost_priority": 8.75e-07, - "input_cost_per_token": 2e-06, - "input_cost_per_token_batches": 1e-06, - "input_cost_per_token_priority": 3.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 8e-06, - "output_cost_per_token_batches": 4e-06, - "output_cost_per_token_priority": 1.4e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-4.1-2025-04-14": { - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 2e-06, - "input_cost_per_token_batches": 1e-06, - "litellm_provider": "openai", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 8e-06, - "output_cost_per_token_batches": 4e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-4.1-mini": { - "cache_read_input_token_cost": 1e-07, - "cache_read_input_token_cost_priority": 1.75e-07, - "input_cost_per_token": 4e-07, - "input_cost_per_token_batches": 2e-07, - "input_cost_per_token_priority": 7e-07, - "litellm_provider": "openai", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1.6e-06, - "output_cost_per_token_batches": 8e-07, - "output_cost_per_token_priority": 2.8e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-4.1-mini-2025-04-14": { - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 4e-07, - "input_cost_per_token_batches": 2e-07, - "litellm_provider": "openai", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1.6e-06, - "output_cost_per_token_batches": 8e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-4.1-nano": { - "cache_read_input_token_cost": 2.5e-08, - "cache_read_input_token_cost_priority": 5e-08, - "input_cost_per_token": 1e-07, - "input_cost_per_token_batches": 5e-08, - "input_cost_per_token_priority": 2e-07, - "litellm_provider": "openai", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 4e-07, - "output_cost_per_token_batches": 2e-07, - "output_cost_per_token_priority": 8e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-4.1-nano-2025-04-14": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_token": 1e-07, - "input_cost_per_token_batches": 5e-08, - "litellm_provider": "openai", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 4e-07, - "output_cost_per_token_batches": 2e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-4.5-preview": { - "cache_read_input_token_cost": 3.75e-05, - "input_cost_per_token": 7.5e-05, - "input_cost_per_token_batches": 3.75e-05, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 0.00015, - "output_cost_per_token_batches": 7.5e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-4.5-preview-2025-02-27": { - "cache_read_input_token_cost": 3.75e-05, - "deprecation_date": "2025-07-14", - "input_cost_per_token": 7.5e-05, - "input_cost_per_token_batches": 3.75e-05, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 0.00015, - "output_cost_per_token_batches": 7.5e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-4o": { - "cache_read_input_token_cost": 1.25e-06, - "cache_read_input_token_cost_priority": 2.125e-06, - "input_cost_per_token": 2.5e-06, - "input_cost_per_token_batches": 1.25e-06, - "input_cost_per_token_priority": 4.25e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_batches": 5e-06, - "output_cost_per_token_priority": 1.7e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-4o-2024-05-13": { - "input_cost_per_token": 5e-06, - "input_cost_per_token_batches": 2.5e-06, - "input_cost_per_token_priority": 8.75e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "output_cost_per_token_batches": 7.5e-06, - "output_cost_per_token_priority": 2.625e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-4o-2024-08-06": { - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 2.5e-06, - "input_cost_per_token_batches": 1.25e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_batches": 5e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-4o-2024-11-20": { - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 2.5e-06, - "input_cost_per_token_batches": 1.25e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_batches": 5e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-4o-audio-preview": { - "input_cost_per_audio_token": 0.0001, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_audio_token": 0.0002, - "output_cost_per_token": 1e-05, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4o-audio-preview-2024-10-01": { - "input_cost_per_audio_token": 0.0001, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_audio_token": 0.0002, - "output_cost_per_token": 1e-05, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4o-audio-preview-2024-12-17": { - "input_cost_per_audio_token": 4e-05, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_audio_token": 8e-05, - "output_cost_per_token": 1e-05, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4o-audio-preview-2025-06-03": { - "input_cost_per_audio_token": 4e-05, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_audio_token": 8e-05, - "output_cost_per_token": 1e-05, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4o-mini": { - "cache_read_input_token_cost": 7.5e-08, - "cache_read_input_token_cost_priority": 1.25e-07, - "input_cost_per_token": 1.5e-07, - "input_cost_per_token_batches": 7.5e-08, - "input_cost_per_token_priority": 2.5e-07, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 6e-07, - "output_cost_per_token_batches": 3e-07, - "output_cost_per_token_priority": 1e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-4o-mini-2024-07-18": { - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_token": 1.5e-07, - "input_cost_per_token_batches": 7.5e-08, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 6e-07, - "output_cost_per_token_batches": 3e-07, - "search_context_cost_per_query": { - "search_context_size_high": 0.03, - "search_context_size_low": 0.025, - "search_context_size_medium": 0.0275 - }, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-4o-mini-audio-preview": { - "input_cost_per_audio_token": 1e-05, - "input_cost_per_token": 1.5e-07, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_audio_token": 2e-05, - "output_cost_per_token": 6e-07, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4o-mini-audio-preview-2024-12-17": { - "input_cost_per_audio_token": 1e-05, - "input_cost_per_token": 1.5e-07, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_audio_token": 2e-05, - "output_cost_per_token": 6e-07, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4o-mini-realtime-preview": { - "cache_creation_input_audio_token_cost": 3e-07, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_audio_token": 1e-05, - "input_cost_per_token": 6e-07, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 2e-05, - "output_cost_per_token": 2.4e-06, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4o-mini-realtime-preview-2024-12-17": { - "cache_creation_input_audio_token_cost": 3e-07, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_audio_token": 1e-05, - "input_cost_per_token": 6e-07, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 2e-05, - "output_cost_per_token": 2.4e-06, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4o-mini-search-preview": { - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_token": 1.5e-07, - "input_cost_per_token_batches": 7.5e-08, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 6e-07, - "output_cost_per_token_batches": 3e-07, - "search_context_cost_per_query": { - "search_context_size_high": 0.03, - "search_context_size_low": 0.025, - "search_context_size_medium": 0.0275 - }, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gpt-4o-mini-search-preview-2025-03-11": { - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_token": 1.5e-07, - "input_cost_per_token_batches": 7.5e-08, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 6e-07, - "output_cost_per_token_batches": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-4o-mini-transcribe": { - "input_cost_per_audio_token": 3e-06, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "openai", - "max_input_tokens": 16000, - "max_output_tokens": 2000, - "mode": "audio_transcription", - "output_cost_per_token": 5e-06, - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "gpt-4o-mini-tts": { - "input_cost_per_token": 2.5e-06, - "litellm_provider": "openai", - "mode": "audio_speech", - "output_cost_per_audio_token": 1.2e-05, - "output_cost_per_second": 0.00025, - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/audio/speech" - ], - "supported_modalities": [ - "text", - "audio" - ], - "supported_output_modalities": [ - "audio" - ] - }, - "gpt-4o-realtime-preview": { - "cache_read_input_token_cost": 2.5e-06, - "input_cost_per_audio_token": 4e-05, - "input_cost_per_token": 5e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 8e-05, - "output_cost_per_token": 2e-05, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4o-realtime-preview-2024-10-01": { - "cache_creation_input_audio_token_cost": 2e-05, - "cache_read_input_token_cost": 2.5e-06, - "input_cost_per_audio_token": 0.0001, - "input_cost_per_token": 5e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.0002, - "output_cost_per_token": 2e-05, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4o-realtime-preview-2024-12-17": { - "cache_read_input_token_cost": 2.5e-06, - "input_cost_per_audio_token": 4e-05, - "input_cost_per_token": 5e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 8e-05, - "output_cost_per_token": 2e-05, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4o-realtime-preview-2025-06-03": { - "cache_read_input_token_cost": 2.5e-06, - "input_cost_per_audio_token": 4e-05, - "input_cost_per_token": 5e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 8e-05, - "output_cost_per_token": 2e-05, - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-4o-search-preview": { - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 2.5e-06, - "input_cost_per_token_batches": 1.25e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_batches": 5e-06, - "search_context_cost_per_query": { - "search_context_size_high": 0.05, - "search_context_size_low": 0.03, - "search_context_size_medium": 0.035 - }, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gpt-4o-search-preview-2025-03-11": { - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 2.5e-06, - "input_cost_per_token_batches": 1.25e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_batches": 5e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-4o-transcribe": { - "input_cost_per_audio_token": 6e-06, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 16000, - "max_output_tokens": 2000, - "mode": "audio_transcription", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "gpt-image-1.5": { - "cache_read_input_image_token_cost": 2e-06, - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 5e-06, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_token": 1e-05, - "input_cost_per_image_token": 8e-06, - "output_cost_per_image_token": 3.2e-05, - "supported_endpoints": [ - "/v1/images/generations" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "gpt-image-1.5-2025-12-16": { - "cache_read_input_image_token_cost": 2e-06, - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 5e-06, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_token": 1e-05, - "input_cost_per_image_token": 8e-06, - "output_cost_per_image_token": 3.2e-05, - "supported_endpoints": [ - "/v1/images/generations" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "low/1024-x-1024/gpt-image-1.5": { - "input_cost_per_image": 0.009, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "low/1024-x-1536/gpt-image-1.5": { - "input_cost_per_image": 0.013, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "low/1536-x-1024/gpt-image-1.5": { - "input_cost_per_image": 0.013, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "medium/1024-x-1024/gpt-image-1.5": { - "input_cost_per_image": 0.034, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "medium/1024-x-1536/gpt-image-1.5": { - "input_cost_per_image": 0.05, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "medium/1536-x-1024/gpt-image-1.5": { - "input_cost_per_image": 0.05, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "high/1024-x-1024/gpt-image-1.5": { - "input_cost_per_image": 0.133, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "high/1024-x-1536/gpt-image-1.5": { - "input_cost_per_image": 0.20, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "high/1536-x-1024/gpt-image-1.5": { - "input_cost_per_image": 0.20, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "standard/1024-x-1024/gpt-image-1.5": { - "input_cost_per_image": 0.009, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "standard/1024-x-1536/gpt-image-1.5": { - "input_cost_per_image": 0.013, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "standard/1536-x-1024/gpt-image-1.5": { - "input_cost_per_image": 0.013, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "1024-x-1024/gpt-image-1.5": { - "input_cost_per_image": 0.009, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "1024-x-1536/gpt-image-1.5": { - "input_cost_per_image": 0.013, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "1536-x-1024/gpt-image-1.5": { - "input_cost_per_image": 0.013, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "low/1024-x-1024/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.009, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "low/1024-x-1536/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.013, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "low/1536-x-1024/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.013, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "medium/1024-x-1024/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.034, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "medium/1024-x-1536/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.05, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "medium/1536-x-1024/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.05, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "high/1024-x-1024/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.133, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "high/1024-x-1536/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.20, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "high/1536-x-1024/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.20, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "standard/1024-x-1024/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.009, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "standard/1024-x-1536/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.013, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "standard/1536-x-1024/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.013, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "1024-x-1024/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.009, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "1024-x-1536/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.013, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "1536-x-1024/gpt-image-1.5-2025-12-16": { - "input_cost_per_image": 0.013, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ], - "supports_vision": true, - "supports_pdf_input": true - }, - "gpt-5": { - "cache_read_input_token_cost": 1.25e-07, - "cache_read_input_token_cost_flex": 6.25e-08, - "cache_read_input_token_cost_priority": 2.5e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_flex": 6.25e-07, - "input_cost_per_token_priority": 2.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_flex": 5e-06, - "output_cost_per_token_priority": 2e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-5.1": { - "cache_read_input_token_cost": 1.25e-07, - "cache_read_input_token_cost_priority": 2.5e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_priority": 2.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_priority": 2e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-5.1-2025-11-13": { - "cache_read_input_token_cost": 1.25e-07, - "cache_read_input_token_cost_priority": 2.5e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_priority": 2.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_priority": 2e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-5.1-chat-latest": { - "cache_read_input_token_cost": 1.25e-07, - "cache_read_input_token_cost_priority": 2.5e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_priority": 2.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_priority": 2e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": false, - "supports_native_streaming": true, - "supports_parallel_function_calling": false, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "gpt-5.2": { - "cache_read_input_token_cost": 1.75e-07, - "cache_read_input_token_cost_priority": 3.5e-07, - "input_cost_per_token": 1.75e-06, - "input_cost_per_token_priority": 3.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.4e-05, - "output_cost_per_token_priority": 2.8e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-5.2-2025-12-11": { - "cache_read_input_token_cost": 1.75e-07, - "cache_read_input_token_cost_priority": 3.5e-07, - "input_cost_per_token": 1.75e-06, - "input_cost_per_token_priority": 3.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.4e-05, - "output_cost_per_token_priority": 2.8e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-5.2-chat-latest": { - "cache_read_input_token_cost": 1.75e-07, - "cache_read_input_token_cost_priority": 3.5e-07, - "input_cost_per_token": 1.75e-06, - "input_cost_per_token_priority": 3.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.4e-05, - "output_cost_per_token_priority": 2.8e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-5.2-pro": { - "input_cost_per_token": 2.1e-05, - "litellm_provider": "openai", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1.68e-04, - "supported_endpoints": [ - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gpt-5.2-pro-2025-12-11": { - "input_cost_per_token": 2.1e-05, - "litellm_provider": "openai", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1.68e-04, - "supported_endpoints": [ - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gpt-5-pro": { - "input_cost_per_token": 1.5e-05, - "input_cost_per_token_batches": 7.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 400000, - "max_output_tokens": 272000, - "max_tokens": 272000, - "mode": "responses", - "output_cost_per_token": 1.2e-04, - "output_cost_per_token_batches": 6e-05, - "supported_endpoints": [ - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": false, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gpt-5-pro-2025-10-06": { - "input_cost_per_token": 1.5e-05, - "input_cost_per_token_batches": 7.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 400000, - "max_output_tokens": 272000, - "max_tokens": 272000, - "mode": "responses", - "output_cost_per_token": 1.2e-04, - "output_cost_per_token_batches": 6e-05, - "supported_endpoints": [ - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": false, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "gpt-5-2025-08-07": { - "cache_read_input_token_cost": 1.25e-07, - "cache_read_input_token_cost_flex": 6.25e-08, - "cache_read_input_token_cost_priority": 2.5e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_flex": 6.25e-07, - "input_cost_per_token_priority": 2.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "output_cost_per_token_flex": 5e-06, - "output_cost_per_token_priority": 2e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-5-chat": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": false, - "supports_native_streaming": true, - "supports_parallel_function_calling": false, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "gpt-5-chat-latest": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": false, - "supports_native_streaming": true, - "supports_parallel_function_calling": false, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "gpt-5-codex": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-5.1-codex": { - "cache_read_input_token_cost": 1.25e-07, - "cache_read_input_token_cost_priority": 2.5e-07, - "input_cost_per_token": 1.25e-06, - "input_cost_per_token_priority": 2.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1e-05, - "output_cost_per_token_priority": 2e-05, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-5.1-codex-max": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "openai", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 1e-05, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-5.1-codex-mini": { - "cache_read_input_token_cost": 2.5e-08, - "cache_read_input_token_cost_priority": 4.5e-08, - "input_cost_per_token": 2.5e-07, - "input_cost_per_token_priority": 4.5e-07, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "responses", - "output_cost_per_token": 2e-06, - "output_cost_per_token_priority": 3.6e-06, - "supported_endpoints": [ - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-5-mini": { - "cache_read_input_token_cost": 2.5e-08, - "cache_read_input_token_cost_flex": 1.25e-08, - "cache_read_input_token_cost_priority": 4.5e-08, - "input_cost_per_token": 2.5e-07, - "input_cost_per_token_flex": 1.25e-07, - "input_cost_per_token_priority": 4.5e-07, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2e-06, - "output_cost_per_token_flex": 1e-06, - "output_cost_per_token_priority": 3.6e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-5-mini-2025-08-07": { - "cache_read_input_token_cost": 2.5e-08, - "cache_read_input_token_cost_flex": 1.25e-08, - "cache_read_input_token_cost_priority": 4.5e-08, - "input_cost_per_token": 2.5e-07, - "input_cost_per_token_flex": 1.25e-07, - "input_cost_per_token_priority": 4.5e-07, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2e-06, - "output_cost_per_token_flex": 1e-06, - "output_cost_per_token_priority": 3.6e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "gpt-5-nano": { - "cache_read_input_token_cost": 5e-09, - "cache_read_input_token_cost_flex": 2.5e-09, - "input_cost_per_token": 5e-08, - "input_cost_per_token_flex": 2.5e-08, - "input_cost_per_token_priority": 2.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "output_cost_per_token_flex": 2e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-5-nano-2025-08-07": { - "cache_read_input_token_cost": 5e-09, - "cache_read_input_token_cost_flex": 2.5e-09, - "input_cost_per_token": 5e-08, - "input_cost_per_token_flex": 2.5e-08, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "output_cost_per_token_flex": 2e-07, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-image-1": { - "cache_read_input_image_token_cost": 2.5e-06, - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_image_token": 1e-05, - "input_cost_per_token": 5e-06, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_image_token": 4e-05, - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ] - }, - "gpt-image-1-mini": { - "cache_read_input_image_token_cost": 2.5e-07, - "cache_read_input_token_cost": 2e-07, - "input_cost_per_image_token": 2.5e-06, - "input_cost_per_token": 2e-06, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_image_token": 8e-06, - "supported_endpoints": [ - "/v1/images/generations", - "/v1/images/edits" - ] - }, - "gpt-realtime": { - "cache_creation_input_audio_token_cost": 4e-07, - "cache_read_input_token_cost": 4e-07, - "input_cost_per_audio_token": 3.2e-05, - "input_cost_per_image": 5e-06, - "input_cost_per_token": 4e-06, - "litellm_provider": "openai", - "max_input_tokens": 32000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 6.4e-05, - "output_cost_per_token": 1.6e-05, - "supported_endpoints": [ - "/v1/realtime" - ], - "supported_modalities": [ - "text", - "image", - "audio" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-realtime-mini": { - "cache_creation_input_audio_token_cost": 3e-07, - "cache_read_input_audio_token_cost": 3e-07, - "input_cost_per_audio_token": 1e-05, - "input_cost_per_token": 6e-07, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 2e-05, - "output_cost_per_token": 2.4e-06, - "supported_endpoints": [ - "/v1/realtime" - ], - "supported_modalities": [ - "text", - "image", - "audio" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gpt-realtime-2025-08-28": { - "cache_creation_input_audio_token_cost": 4e-07, - "cache_read_input_token_cost": 4e-07, - "input_cost_per_audio_token": 3.2e-05, - "input_cost_per_image": 5e-06, - "input_cost_per_token": 4e-06, - "litellm_provider": "openai", - "max_input_tokens": 32000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 6.4e-05, - "output_cost_per_token": 1.6e-05, - "supported_endpoints": [ - "/v1/realtime" - ], - "supported_modalities": [ - "text", - "image", - "audio" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "gradient_ai/alibaba-qwen3-32b": { - "litellm_provider": "gradient_ai", - "max_tokens": 2048, - "mode": "chat", - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text" - ], - "supports_tool_choice": false - }, - "gradient_ai/anthropic-claude-3-opus": { - "input_cost_per_token": 1.5e-05, - "litellm_provider": "gradient_ai", - "max_tokens": 1024, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text" - ], - "supports_tool_choice": false - }, - "gradient_ai/anthropic-claude-3.5-haiku": { - "input_cost_per_token": 8e-07, - "litellm_provider": "gradient_ai", - "max_tokens": 1024, - "mode": "chat", - "output_cost_per_token": 4e-06, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text" - ], - "supports_tool_choice": false - }, - "gradient_ai/anthropic-claude-3.5-sonnet": { - "input_cost_per_token": 3e-06, - "litellm_provider": "gradient_ai", - "max_tokens": 1024, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text" - ], - "supports_tool_choice": false - }, - "gradient_ai/anthropic-claude-3.7-sonnet": { - "input_cost_per_token": 3e-06, - "litellm_provider": "gradient_ai", - "max_tokens": 1024, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text" - ], - "supports_tool_choice": false - }, - "gradient_ai/deepseek-r1-distill-llama-70b": { - "input_cost_per_token": 9.9e-07, - "litellm_provider": "gradient_ai", - "max_tokens": 8000, - "mode": "chat", - "output_cost_per_token": 9.9e-07, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text" - ], - "supports_tool_choice": false - }, - "gradient_ai/llama3-8b-instruct": { - "input_cost_per_token": 2e-07, - "litellm_provider": "gradient_ai", - "max_tokens": 512, - "mode": "chat", - "output_cost_per_token": 2e-07, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text" - ], - "supports_tool_choice": false - }, - "gradient_ai/llama3.3-70b-instruct": { - "input_cost_per_token": 6.5e-07, - "litellm_provider": "gradient_ai", - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 6.5e-07, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text" - ], - "supports_tool_choice": false - }, - "gradient_ai/mistral-nemo-instruct-2407": { - "input_cost_per_token": 3e-07, - "litellm_provider": "gradient_ai", - "max_tokens": 512, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text" - ], - "supports_tool_choice": false - }, - "gradient_ai/openai-gpt-4o": { - "litellm_provider": "gradient_ai", - "max_tokens": 16384, - "mode": "chat", - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text" - ], - "supports_tool_choice": false - }, - "gradient_ai/openai-gpt-4o-mini": { - "litellm_provider": "gradient_ai", - "max_tokens": 16384, - "mode": "chat", - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text" - ], - "supports_tool_choice": false - }, - "gradient_ai/openai-o3": { - "input_cost_per_token": 2e-06, - "litellm_provider": "gradient_ai", - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 8e-06, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text" - ], - "supports_tool_choice": false - }, - "gradient_ai/openai-o3-mini": { - "input_cost_per_token": 1.1e-06, - "litellm_provider": "gradient_ai", - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 4.4e-06, - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supported_modalities": [ - "text" - ], - "supports_tool_choice": false - }, - "lemonade/Qwen3-Coder-30B-A3B-Instruct-GGUF": { - "input_cost_per_token": 0, - "litellm_provider": "lemonade", - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "lemonade/gpt-oss-20b-mxfp4-GGUF": { - "input_cost_per_token": 0, - "litellm_provider": "lemonade", - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "lemonade/gpt-oss-120b-mxfp-GGUF": { - "input_cost_per_token": 0, - "litellm_provider": "lemonade", - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "lemonade/Gemma-3-4b-it-GGUF": { - "input_cost_per_token": 0, - "litellm_provider": "lemonade", - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "lemonade/Qwen3-4B-Instruct-2507-GGUF": { - "input_cost_per_token": 0, - "litellm_provider": "lemonade", - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "amazon-nova/nova-micro-v1": { - "input_cost_per_token": 3.5e-08, - "litellm_provider": "amazon_nova", - "max_input_tokens": 128000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 1.4e-07, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true - }, - "amazon-nova/nova-lite-v1": { - "input_cost_per_token": 6e-08, - "litellm_provider": "amazon_nova", - "max_input_tokens": 300000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 2.4e-07, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_vision": true - }, - "amazon-nova/nova-premier-v1": { - "input_cost_per_token": 2.5e-06, - "litellm_provider": "amazon_nova", - "max_input_tokens": 1000000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 1.25e-05, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": false, - "supports_response_schema": true, - "supports_vision": true - }, - "amazon-nova/nova-pro-v1": { - "input_cost_per_token": 8e-07, - "litellm_provider": "amazon_nova", - "max_input_tokens": 300000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 3.2e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_vision": true - }, - "groq/llama-3.1-8b-instant": { - "input_cost_per_token": 5e-08, - "litellm_provider": "groq", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 8e-08, - "supports_function_calling": true, - "supports_response_schema": false, - "supports_tool_choice": true - }, - "groq/llama-3.3-70b-versatile": { - "input_cost_per_token": 5.9e-07, - "litellm_provider": "groq", - "max_input_tokens": 128000, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 7.9e-07, - "supports_function_calling": true, - "supports_response_schema": false, - "supports_tool_choice": true - }, - "groq/gemma-7b-it": { - "input_cost_per_token": 5e-08, - "litellm_provider": "groq", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 8e-08, - "supports_function_calling": true, - "supports_response_schema": false, - "supports_tool_choice": true - }, - "groq/meta-llama/llama-guard-4-12b": { - "input_cost_per_token": 2e-07, - "litellm_provider": "groq", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2e-07 - }, - "groq/meta-llama/llama-4-maverick-17b-128e-instruct": { - "input_cost_per_token": 2e-07, - "litellm_provider": "groq", - "max_input_tokens": 131072, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "groq/meta-llama/llama-4-scout-17b-16e-instruct": { - "input_cost_per_token": 1.1e-07, - "litellm_provider": "groq", - "max_input_tokens": 131072, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 3.4e-07, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "groq/moonshotai/kimi-k2-instruct-0905": { - "input_cost_per_token": 1e-06, - "output_cost_per_token": 3e-06, - "cache_read_input_token_cost": 0.5e-06, - "litellm_provider": "groq", - "max_input_tokens": 262144, - "max_output_tokens": 16384, - "max_tokens": 278528, - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "groq/openai/gpt-oss-120b": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "groq", - "max_input_tokens": 131072, - "max_output_tokens": 32766, - "max_tokens": 32766, - "mode": "chat", - "output_cost_per_token": 7.5e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "groq/openai/gpt-oss-20b": { - "input_cost_per_token": 1e-07, - "litellm_provider": "groq", - "max_input_tokens": 131072, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 5e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "groq/playai-tts": { - "input_cost_per_character": 5e-05, - "litellm_provider": "groq", - "max_input_tokens": 10000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "audio_speech" - }, - "groq/qwen/qwen3-32b": { - "input_cost_per_token": 2.9e-07, - "litellm_provider": "groq", - "max_input_tokens": 131000, - "max_output_tokens": 131000, - "max_tokens": 131000, - "mode": "chat", - "output_cost_per_token": 5.9e-07, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": false, - "supports_tool_choice": true - }, - "groq/whisper-large-v3": { - "input_cost_per_second": 3.083e-05, - "litellm_provider": "groq", - "mode": "audio_transcription", - "output_cost_per_second": 0.0 - }, - "groq/whisper-large-v3-turbo": { - "input_cost_per_second": 1.111e-05, - "litellm_provider": "groq", - "mode": "audio_transcription", - "output_cost_per_second": 0.0 - }, - "hd/1024-x-1024/dall-e-3": { - "input_cost_per_pixel": 7.629e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0 - }, - "hd/1024-x-1792/dall-e-3": { - "input_cost_per_pixel": 6.539e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0 - }, - "hd/1792-x-1024/dall-e-3": { - "input_cost_per_pixel": 6.539e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0 - }, - "heroku/claude-3-5-haiku": { - "litellm_provider": "heroku", - "max_tokens": 4096, - "mode": "chat", - "supports_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "heroku/claude-3-5-sonnet-latest": { - "litellm_provider": "heroku", - "max_tokens": 8192, - "mode": "chat", - "supports_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "heroku/claude-3-7-sonnet": { - "litellm_provider": "heroku", - "max_tokens": 8192, - "mode": "chat", - "supports_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "heroku/claude-4-sonnet": { - "litellm_provider": "heroku", - "max_tokens": 8192, - "mode": "chat", - "supports_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "high/1024-x-1024/gpt-image-1": { - "input_cost_per_image": 0.167, - "input_cost_per_pixel": 1.59263611e-07, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "high/1024-x-1536/gpt-image-1": { - "input_cost_per_image": 0.25, - "input_cost_per_pixel": 1.58945719e-07, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "high/1536-x-1024/gpt-image-1": { - "input_cost_per_image": 0.25, - "input_cost_per_pixel": 1.58945719e-07, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "hyperbolic/NousResearch/Hermes-3-Llama-3.1-70B": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/Qwen/QwQ-32B": { - "input_cost_per_token": 2e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/Qwen/Qwen2.5-72B-Instruct": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/Qwen/Qwen2.5-Coder-32B-Instruct": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/Qwen/Qwen3-235B-A22B": { - "input_cost_per_token": 2e-06, - "litellm_provider": "hyperbolic", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/deepseek-ai/DeepSeek-R1": { - "input_cost_per_token": 4e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/deepseek-ai/DeepSeek-R1-0528": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.5e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/deepseek-ai/DeepSeek-V3": { - "input_cost_per_token": 2e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 2e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/deepseek-ai/DeepSeek-V3-0324": { - "input_cost_per_token": 4e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/meta-llama/Llama-3.2-3B-Instruct": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/meta-llama/Llama-3.3-70B-Instruct": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/meta-llama/Meta-Llama-3-70B-Instruct": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/meta-llama/Meta-Llama-3.1-405B-Instruct": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/meta-llama/Meta-Llama-3.1-70B-Instruct": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/meta-llama/Meta-Llama-3.1-8B-Instruct": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "hyperbolic", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "hyperbolic/moonshotai/Kimi-K2-Instruct": { - "input_cost_per_token": 2e-06, - "litellm_provider": "hyperbolic", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "j2-light": { - "input_cost_per_token": 3e-06, - "litellm_provider": "ai21", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "completion", - "output_cost_per_token": 3e-06 - }, - "j2-mid": { - "input_cost_per_token": 1e-05, - "litellm_provider": "ai21", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "completion", - "output_cost_per_token": 1e-05 - }, - "j2-ultra": { - "input_cost_per_token": 1.5e-05, - "litellm_provider": "ai21", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "completion", - "output_cost_per_token": 1.5e-05 - }, - "jamba-1.5": { - "input_cost_per_token": 2e-07, - "litellm_provider": "ai21", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_tool_choice": true - }, - "jamba-1.5-large": { - "input_cost_per_token": 2e-06, - "litellm_provider": "ai21", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 8e-06, - "supports_tool_choice": true - }, - "jamba-1.5-large@001": { - "input_cost_per_token": 2e-06, - "litellm_provider": "ai21", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 8e-06, - "supports_tool_choice": true - }, - "jamba-1.5-mini": { - "input_cost_per_token": 2e-07, - "litellm_provider": "ai21", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_tool_choice": true - }, - "jamba-1.5-mini@001": { - "input_cost_per_token": 2e-07, - "litellm_provider": "ai21", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_tool_choice": true - }, - "jamba-large-1.6": { - "input_cost_per_token": 2e-06, - "litellm_provider": "ai21", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 8e-06, - "supports_tool_choice": true - }, - "jamba-large-1.7": { - "input_cost_per_token": 2e-06, - "litellm_provider": "ai21", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 8e-06, - "supports_tool_choice": true - }, - "jamba-mini-1.6": { - "input_cost_per_token": 2e-07, - "litellm_provider": "ai21", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_tool_choice": true - }, - "jamba-mini-1.7": { - "input_cost_per_token": 2e-07, - "litellm_provider": "ai21", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_tool_choice": true - }, - "jina-reranker-v2-base-multilingual": { - "input_cost_per_token": 1.8e-08, - "litellm_provider": "jina_ai", - "max_document_chunks_per_query": 2048, - "max_input_tokens": 1024, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "rerank", - "output_cost_per_token": 1.8e-08 - }, - "jp.anthropic.claude-sonnet-4-5-20250929-v1:0": { - "cache_creation_input_token_cost": 4.125e-06, - "cache_read_input_token_cost": 3.3e-07, - "input_cost_per_token": 3.3e-06, - "input_cost_per_token_above_200k_tokens": 6.6e-06, - "output_cost_per_token_above_200k_tokens": 2.475e-05, - "cache_creation_input_token_cost_above_200k_tokens": 8.25e-06, - "cache_read_input_token_cost_above_200k_tokens": 6.6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.65e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "jp.anthropic.claude-haiku-4-5-20251001-v1:0": { - "cache_creation_input_token_cost": 1.375e-06, - "cache_read_input_token_cost": 1.1e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 5.5e-06, - "source": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock", - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "lambda_ai/deepseek-llama3.3-70b": { - "input_cost_per_token": 2e-07, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_reasoning": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/deepseek-r1-0528": { - "input_cost_per_token": 2e-07, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_reasoning": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/deepseek-r1-671b": { - "input_cost_per_token": 8e-07, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 8e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_reasoning": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/deepseek-v3-0324": { - "input_cost_per_token": 2e-07, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/hermes3-405b": { - "input_cost_per_token": 8e-07, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 8e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/hermes3-70b": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/hermes3-8b": { - "input_cost_per_token": 2.5e-08, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 4e-08, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/lfm-40b": { - "input_cost_per_token": 1e-07, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/lfm-7b": { - "input_cost_per_token": 2.5e-08, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 4e-08, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/llama-4-maverick-17b-128e-instruct-fp8": { - "input_cost_per_token": 5e-08, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 8192, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/llama-4-scout-17b-16e-instruct": { - "input_cost_per_token": 5e-08, - "litellm_provider": "lambda_ai", - "max_input_tokens": 16384, - "max_output_tokens": 8192, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/llama3.1-405b-instruct-fp8": { - "input_cost_per_token": 8e-07, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 8e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/llama3.1-70b-instruct-fp8": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/llama3.1-8b-instruct": { - "input_cost_per_token": 2.5e-08, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 4e-08, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/llama3.1-nemotron-70b-instruct-fp8": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/llama3.2-11b-vision-instruct": { - "input_cost_per_token": 1.5e-08, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.5e-08, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "lambda_ai/llama3.2-3b-instruct": { - "input_cost_per_token": 1.5e-08, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.5e-08, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/llama3.3-70b-instruct-fp8": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/qwen25-coder-32b-instruct": { - "input_cost_per_token": 5e-08, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "lambda_ai/qwen3-32b-fp8": { - "input_cost_per_token": 5e-08, - "litellm_provider": "lambda_ai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_reasoning": true, - "supports_system_messages": true, - "supports_tool_choice": true - }, - "low/1024-x-1024/gpt-image-1": { - "input_cost_per_image": 0.011, - "input_cost_per_pixel": 1.0490417e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "low/1024-x-1536/gpt-image-1": { - "input_cost_per_image": 0.016, - "input_cost_per_pixel": 1.0172526e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "low/1536-x-1024/gpt-image-1": { - "input_cost_per_image": 0.016, - "input_cost_per_pixel": 1.0172526e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "luminous-base": { - "input_cost_per_token": 3e-05, - "litellm_provider": "aleph_alpha", - "max_tokens": 2048, - "mode": "completion", - "output_cost_per_token": 3.3e-05 - }, - "luminous-base-control": { - "input_cost_per_token": 3.75e-05, - "litellm_provider": "aleph_alpha", - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 4.125e-05 - }, - "luminous-extended": { - "input_cost_per_token": 4.5e-05, - "litellm_provider": "aleph_alpha", - "max_tokens": 2048, - "mode": "completion", - "output_cost_per_token": 4.95e-05 - }, - "luminous-extended-control": { - "input_cost_per_token": 5.625e-05, - "litellm_provider": "aleph_alpha", - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 6.1875e-05 - }, - "luminous-supreme": { - "input_cost_per_token": 0.000175, - "litellm_provider": "aleph_alpha", - "max_tokens": 2048, - "mode": "completion", - "output_cost_per_token": 0.0001925 - }, - "luminous-supreme-control": { - "input_cost_per_token": 0.00021875, - "litellm_provider": "aleph_alpha", - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 0.000240625 - }, - "max-x-max/50-steps/stability.stable-diffusion-xl-v0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "image_generation", - "output_cost_per_image": 0.036 - }, - "max-x-max/max-steps/stability.stable-diffusion-xl-v0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "image_generation", - "output_cost_per_image": 0.072 - }, - "medium/1024-x-1024/gpt-image-1": { - "input_cost_per_image": 0.042, - "input_cost_per_pixel": 4.0054321e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "medium/1024-x-1536/gpt-image-1": { - "input_cost_per_image": 0.063, - "input_cost_per_pixel": 4.0054321e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "medium/1536-x-1024/gpt-image-1": { - "input_cost_per_image": 0.063, - "input_cost_per_pixel": 4.0054321e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "low/1024-x-1024/gpt-image-1-mini": { - "input_cost_per_image": 0.005, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "low/1024-x-1536/gpt-image-1-mini": { - "input_cost_per_image": 0.006, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "low/1536-x-1024/gpt-image-1-mini": { - "input_cost_per_image": 0.006, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "medium/1024-x-1024/gpt-image-1-mini": { - "input_cost_per_image": 0.011, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "medium/1024-x-1536/gpt-image-1-mini": { - "input_cost_per_image": 0.015, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "medium/1536-x-1024/gpt-image-1-mini": { - "input_cost_per_image": 0.015, - "litellm_provider": "openai", - "mode": "image_generation", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "medlm-large": { - "input_cost_per_character": 5e-06, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "chat", - "output_cost_per_character": 1.5e-05, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "medlm-medium": { - "input_cost_per_character": 5e-07, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 32768, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_character": 1e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", - "supports_tool_choice": true - }, - "meta.llama2-13b-chat-v1": { - "input_cost_per_token": 7.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1e-06 - }, - "meta.llama2-70b-chat-v1": { - "input_cost_per_token": 1.95e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.56e-06 - }, - "meta.llama3-1-405b-instruct-v1:0": { - "input_cost_per_token": 5.32e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.6e-05, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "meta.llama3-1-70b-instruct-v1:0": { - "input_cost_per_token": 9.9e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 9.9e-07, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "meta.llama3-1-8b-instruct-v1:0": { - "input_cost_per_token": 2.2e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2.2e-07, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "meta.llama3-2-11b-instruct-v1:0": { - "input_cost_per_token": 3.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 3.5e-07, - "supports_function_calling": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "meta.llama3-2-1b-instruct-v1:0": { - "input_cost_per_token": 1e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-07, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "meta.llama3-2-3b-instruct-v1:0": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "meta.llama3-2-90b-instruct-v1:0": { - "input_cost_per_token": 2e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_function_calling": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "meta.llama3-3-70b-instruct-v1:0": { - "input_cost_per_token": 7.2e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 7.2e-07, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "meta.llama3-70b-instruct-v1:0": { - "input_cost_per_token": 2.65e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 3.5e-06 - }, - "meta.llama3-8b-instruct-v1:0": { - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 6e-07 - }, - "meta.llama4-maverick-17b-instruct-v1:0": { - "input_cost_per_token": 2.4e-07, - "input_cost_per_token_batches": 1.2e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 9.7e-07, - "output_cost_per_token_batches": 4.85e-07, - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "code" - ], - "supports_function_calling": true, - "supports_tool_choice": false - }, - "meta.llama4-scout-17b-instruct-v1:0": { - "input_cost_per_token": 1.7e-07, - "input_cost_per_token_batches": 8.5e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6.6e-07, - "output_cost_per_token_batches": 3.3e-07, - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "code" - ], - "supports_function_calling": true, - "supports_tool_choice": false - }, - "meta_llama/Llama-3.3-70B-Instruct": { - "litellm_provider": "meta_llama", - "max_input_tokens": 128000, - "max_output_tokens": 4028, - "max_tokens": 128000, - "mode": "chat", - "source": "https://llama.developer.meta.com/docs/models", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_tool_choice": true - }, - "meta_llama/Llama-3.3-8B-Instruct": { - "litellm_provider": "meta_llama", - "max_input_tokens": 128000, - "max_output_tokens": 4028, - "max_tokens": 128000, - "mode": "chat", - "source": "https://llama.developer.meta.com/docs/models", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_tool_choice": true - }, - "meta_llama/Llama-4-Maverick-17B-128E-Instruct-FP8": { - "litellm_provider": "meta_llama", - "max_input_tokens": 1000000, - "max_output_tokens": 4028, - "max_tokens": 128000, - "mode": "chat", - "source": "https://llama.developer.meta.com/docs/models", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_tool_choice": true - }, - "meta_llama/Llama-4-Scout-17B-16E-Instruct-FP8": { - "litellm_provider": "meta_llama", - "max_input_tokens": 10000000, - "max_output_tokens": 4028, - "max_tokens": 128000, - "mode": "chat", - "source": "https://llama.developer.meta.com/docs/models", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_tool_choice": true - }, - "minimax.minimax-m2": { - "input_cost_per_token": 3e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "supports_system_messages": true - }, - "minimax/speech-02-hd": { - "input_cost_per_character": 0.0001, - "litellm_provider": "minimax", - "mode": "audio_speech", - "supported_endpoints": [ - "/v1/audio/speech" - ] - }, - "minimax/speech-02-turbo": { - "input_cost_per_character": 0.00006, - "litellm_provider": "minimax", - "mode": "audio_speech", - "supported_endpoints": [ - "/v1/audio/speech" - ] - }, - "minimax/speech-2.6-hd": { - "input_cost_per_character": 0.0001, - "litellm_provider": "minimax", - "mode": "audio_speech", - "supported_endpoints": [ - "/v1/audio/speech" - ] - }, - "minimax/speech-2.6-turbo": { - "input_cost_per_character": 0.00006, - "litellm_provider": "minimax", - "mode": "audio_speech", - "supported_endpoints": [ - "/v1/audio/speech" - ] - }, - "minimax/MiniMax-M2.1": { - "input_cost_per_token": 3e-07, - "output_cost_per_token": 1.2e-06, - "cache_read_input_token_cost": 3e-08, - "cache_creation_input_token_cost": 3.75e-07, - "litellm_provider": "minimax", - "mode": "chat", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "max_input_tokens": 1000000, - "max_output_tokens": 8192 - }, - "minimax/MiniMax-M2.1-lightning": { - "input_cost_per_token": 3e-07, - "output_cost_per_token": 2.4e-06, - "cache_read_input_token_cost": 3e-08, - "cache_creation_input_token_cost": 3.75e-07, - "litellm_provider": "minimax", - "mode": "chat", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "max_input_tokens": 1000000, - "max_output_tokens": 8192 - }, - "minimax/MiniMax-M2": { - "input_cost_per_token": 3e-07, - "output_cost_per_token": 1.2e-06, - "cache_read_input_token_cost": 3e-08, - "cache_creation_input_token_cost": 3.75e-07, - "litellm_provider": "minimax", - "mode": "chat", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_prompt_caching": true, - "supports_system_messages": true, - "max_input_tokens": 200000, - "max_output_tokens": 8192 - }, - "mistral.magistral-small-2509": { - "input_cost_per_token": 5e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_system_messages": true - }, - "mistral.ministral-3-14b-instruct": { - "input_cost_per_token": 2e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2e-07, - "supports_function_calling": true, - "supports_system_messages": true - }, - "mistral.ministral-3-3b-instruct": { - "input_cost_per_token": 1e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1e-07, - "supports_function_calling": true, - "supports_system_messages": true - }, - "mistral.ministral-3-8b-instruct": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "supports_function_calling": true, - "supports_system_messages": true - }, - "mistral.mistral-7b-instruct-v0:2": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2e-07, - "supports_tool_choice": true - }, - "mistral.mistral-large-2402-v1:0": { - "input_cost_per_token": 8e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_function_calling": true - }, - "mistral.mistral-large-2407-v1:0": { - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 9e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "mistral.mistral-large-3-675b-instruct": { - "input_cost_per_token": 5e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "supports_function_calling": true, - "supports_system_messages": true - }, - "mistral.mistral-small-2402-v1:0": { - "input_cost_per_token": 1e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 3e-06, - "supports_function_calling": true - }, - "mistral.mixtral-8x7b-instruct-v0:1": { - "input_cost_per_token": 4.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 7e-07, - "supports_tool_choice": true - }, - "mistral.voxtral-mini-3b-2507": { - "input_cost_per_token": 4e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 4e-08, - "supports_audio_input": true, - "supports_system_messages": true - }, - "mistral.voxtral-small-24b-2507": { - "input_cost_per_token": 1e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_audio_input": true, - "supports_system_messages": true - }, - "mistral/codestral-2405": { - "input_cost_per_token": 1e-06, - "litellm_provider": "mistral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 3e-06, - "supports_assistant_prefill": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/codestral-2508": { - "input_cost_per_token": 3e-07, - "litellm_provider": "mistral", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 9e-07, - "source": "https://mistral.ai/news/codestral-25-08", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/codestral-latest": { - "input_cost_per_token": 1e-06, - "litellm_provider": "mistral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 3e-06, - "supports_assistant_prefill": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/codestral-mamba-latest": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "mistral", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 2.5e-07, - "source": "https://mistral.ai/technology/", - "supports_assistant_prefill": true, - "supports_tool_choice": true - }, - "mistral/devstral-medium-2507": { - "input_cost_per_token": 4e-07, - "litellm_provider": "mistral", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2e-06, - "source": "https://mistral.ai/news/devstral", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/devstral-small-2505": { - "input_cost_per_token": 1e-07, - "litellm_provider": "mistral", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 3e-07, - "source": "https://mistral.ai/news/devstral", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/devstral-small-2507": { - "input_cost_per_token": 1e-07, - "litellm_provider": "mistral", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 3e-07, - "source": "https://mistral.ai/news/devstral", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/labs-devstral-small-2512": { - "input_cost_per_token": 1e-07, - "litellm_provider": "mistral", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 3e-07, - "source": "https://docs.mistral.ai/models/devstral-small-2-25-12", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/devstral-2512": { - "input_cost_per_token": 4e-07, - "litellm_provider": "mistral", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 2e-06, - "source": "https://mistral.ai/news/devstral-2-vibe-cli", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/magistral-medium-2506": { - "input_cost_per_token": 2e-06, - "litellm_provider": "mistral", - "max_input_tokens": 40000, - "max_output_tokens": 40000, - "max_tokens": 40000, - "mode": "chat", - "output_cost_per_token": 5e-06, - "source": "https://mistral.ai/news/magistral", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/magistral-medium-2509": { - "input_cost_per_token": 2e-06, - "litellm_provider": "mistral", - "max_input_tokens": 40000, - "max_output_tokens": 40000, - "max_tokens": 40000, - "mode": "chat", - "output_cost_per_token": 5e-06, - "source": "https://mistral.ai/news/magistral", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/mistral-ocr-latest": { - "litellm_provider": "mistral", - "ocr_cost_per_page": 1e-3, - "annotation_cost_per_page": 3e-3, - "mode": "ocr", - "supported_endpoints": [ - "/v1/ocr" - ], - "source": "https://mistral.ai/pricing#api-pricing" - }, - "mistral/mistral-ocr-2505-completion": { - "litellm_provider": "mistral", - "ocr_cost_per_page": 1e-3, - "annotation_cost_per_page": 3e-3, - "mode": "ocr", - "supported_endpoints": [ - "/v1/ocr" - ], - "source": "https://mistral.ai/pricing#api-pricing" - }, - "mistral/magistral-medium-latest": { - "input_cost_per_token": 2e-06, - "litellm_provider": "mistral", - "max_input_tokens": 40000, - "max_output_tokens": 40000, - "max_tokens": 40000, - "mode": "chat", - "output_cost_per_token": 5e-06, - "source": "https://mistral.ai/news/magistral", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/magistral-small-2506": { - "input_cost_per_token": 5e-07, - "litellm_provider": "mistral", - "max_input_tokens": 40000, - "max_output_tokens": 40000, - "max_tokens": 40000, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "source": "https://mistral.ai/pricing#api-pricing", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/magistral-small-latest": { - "input_cost_per_token": 5e-07, - "litellm_provider": "mistral", - "max_input_tokens": 40000, - "max_output_tokens": 40000, - "max_tokens": 40000, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "source": "https://mistral.ai/pricing#api-pricing", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/mistral-embed": { - "input_cost_per_token": 1e-07, - "litellm_provider": "mistral", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "embedding" - }, - "mistral/codestral-embed": { - "input_cost_per_token": 0.15e-06, - "litellm_provider": "mistral", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "embedding" - }, - "mistral/codestral-embed-2505": { - "input_cost_per_token": 0.15e-06, - "litellm_provider": "mistral", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "embedding" - }, - "mistral/mistral-large-2402": { - "input_cost_per_token": 4e-06, - "litellm_provider": "mistral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 1.2e-05, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/mistral-large-2407": { - "input_cost_per_token": 3e-06, - "litellm_provider": "mistral", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 9e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/mistral-large-2411": { - "input_cost_per_token": 2e-06, - "litellm_provider": "mistral", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/mistral-large-latest": { - "input_cost_per_token": 2e-06, - "litellm_provider": "mistral", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/mistral-large-3": { - "input_cost_per_token": 5e-07, - "litellm_provider": "mistral", - "max_input_tokens": 256000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "source": "https://docs.mistral.ai/models/mistral-large-3-25-12", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "mistral/mistral-medium": { - "input_cost_per_token": 2.7e-06, - "litellm_provider": "mistral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 8.1e-06, - "supports_assistant_prefill": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/mistral-medium-2312": { - "input_cost_per_token": 2.7e-06, - "litellm_provider": "mistral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 8.1e-06, - "supports_assistant_prefill": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/mistral-medium-2505": { - "input_cost_per_token": 4e-07, - "litellm_provider": "mistral", - "max_input_tokens": 131072, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/mistral-medium-latest": { - "input_cost_per_token": 4e-07, - "litellm_provider": "mistral", - "max_input_tokens": 131072, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/mistral-small": { - "input_cost_per_token": 1e-07, - "litellm_provider": "mistral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/mistral-small-latest": { - "input_cost_per_token": 1e-07, - "litellm_provider": "mistral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/mistral-tiny": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "mistral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.5e-07, - "supports_assistant_prefill": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/open-codestral-mamba": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "mistral", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 2.5e-07, - "source": "https://mistral.ai/technology/", - "supports_assistant_prefill": true, - "supports_tool_choice": true - }, - "mistral/open-mistral-7b": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "mistral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2.5e-07, - "supports_assistant_prefill": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/open-mistral-nemo": { - "input_cost_per_token": 3e-07, - "litellm_provider": "mistral", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 3e-07, - "source": "https://mistral.ai/technology/", - "supports_assistant_prefill": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/open-mistral-nemo-2407": { - "input_cost_per_token": 3e-07, - "litellm_provider": "mistral", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 3e-07, - "source": "https://mistral.ai/technology/", - "supports_assistant_prefill": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/open-mixtral-8x22b": { - "input_cost_per_token": 2e-06, - "litellm_provider": "mistral", - "max_input_tokens": 65336, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/open-mixtral-8x7b": { - "input_cost_per_token": 7e-07, - "litellm_provider": "mistral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 7e-07, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "mistral/pixtral-12b-2409": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "mistral", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "mistral/pixtral-large-2411": { - "input_cost_per_token": 2e-06, - "litellm_provider": "mistral", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "mistral/pixtral-large-latest": { - "input_cost_per_token": 2e-06, - "litellm_provider": "mistral", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "moonshot.kimi-k2-thinking": { - "input_cost_per_token": 6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.5e-06, - "supports_reasoning": true, - "supports_system_messages": true - }, - "moonshot/kimi-k2-0711-preview": { - "cache_read_input_token_cost": 1.5e-07, - "input_cost_per_token": 6e-07, - "litellm_provider": "moonshot", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.5e-06, - "source": "https://platform.moonshot.ai/docs/pricing/chat#generation-model-kimi-k2", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "moonshot/kimi-k2-0905-preview": { - "cache_read_input_token_cost": 1.5e-07, - "input_cost_per_token": 6e-07, - "litellm_provider": "moonshot", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 2.5e-06, - "source": "https://platform.moonshot.ai/docs/pricing/chat#generation-model-kimi-k2", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "moonshot/kimi-k2-turbo-preview": { - "cache_read_input_token_cost": 1.5e-07, - "input_cost_per_token": 1.15e-06, - "litellm_provider": "moonshot", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 8e-06, - "source": "https://platform.moonshot.ai/docs/pricing/chat#generation-model-kimi-k2", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "moonshot/kimi-latest": { - "cache_read_input_token_cost": 1.5e-07, - "input_cost_per_token": 2e-06, - "litellm_provider": "moonshot", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 5e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "moonshot/kimi-latest-128k": { - "cache_read_input_token_cost": 1.5e-07, - "input_cost_per_token": 2e-06, - "litellm_provider": "moonshot", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 5e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "moonshot/kimi-latest-32k": { - "cache_read_input_token_cost": 1.5e-07, - "input_cost_per_token": 1e-06, - "litellm_provider": "moonshot", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 3e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "moonshot/kimi-latest-8k": { - "cache_read_input_token_cost": 1.5e-07, - "input_cost_per_token": 2e-07, - "litellm_provider": "moonshot", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "moonshot/kimi-thinking-preview": { - "cache_read_input_token_cost": 1.5e-07, - "input_cost_per_token": 6e-07, - "litellm_provider": "moonshot", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.5e-06, - "source": "https://platform.moonshot.ai/docs/pricing/chat#generation-model-kimi-k2", - "supports_vision": true - }, - "moonshot/kimi-k2-thinking": { - "cache_read_input_token_cost": 1.5e-7, - "input_cost_per_token": 6e-7, - "litellm_provider": "moonshot", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 2.5e-6, - "source": "https://platform.moonshot.ai/docs/pricing/chat#generation-model-kimi-k2", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "moonshot/kimi-k2-thinking-turbo": { - "cache_read_input_token_cost": 1.5e-7, - "input_cost_per_token": 1.15e-6, - "litellm_provider": "moonshot", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 8e-6, - "source": "https://platform.moonshot.ai/docs/pricing/chat#generation-model-kimi-k2", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "moonshot/moonshot-v1-128k": { - "input_cost_per_token": 2e-06, - "litellm_provider": "moonshot", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 5e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "moonshot/moonshot-v1-128k-0430": { - "input_cost_per_token": 2e-06, - "litellm_provider": "moonshot", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 5e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "moonshot/moonshot-v1-128k-vision-preview": { - "input_cost_per_token": 2e-06, - "litellm_provider": "moonshot", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 5e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "moonshot/moonshot-v1-32k": { - "input_cost_per_token": 1e-06, - "litellm_provider": "moonshot", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 3e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "moonshot/moonshot-v1-32k-0430": { - "input_cost_per_token": 1e-06, - "litellm_provider": "moonshot", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 3e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "moonshot/moonshot-v1-32k-vision-preview": { - "input_cost_per_token": 1e-06, - "litellm_provider": "moonshot", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 3e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "moonshot/moonshot-v1-8k": { - "input_cost_per_token": 2e-07, - "litellm_provider": "moonshot", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "moonshot/moonshot-v1-8k-0430": { - "input_cost_per_token": 2e-07, - "litellm_provider": "moonshot", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "moonshot/moonshot-v1-8k-vision-preview": { - "input_cost_per_token": 2e-07, - "litellm_provider": "moonshot", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "moonshot/moonshot-v1-auto": { - "input_cost_per_token": 2e-06, - "litellm_provider": "moonshot", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 5e-06, - "source": "https://platform.moonshot.ai/docs/pricing", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "morph/morph-v3-fast": { - "input_cost_per_token": 8e-07, - "litellm_provider": "morph", - "max_input_tokens": 16000, - "max_output_tokens": 16000, - "max_tokens": 16000, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_system_messages": true, - "supports_tool_choice": false, - "supports_vision": false - }, - "morph/morph-v3-large": { - "input_cost_per_token": 9e-07, - "litellm_provider": "morph", - "max_input_tokens": 16000, - "max_output_tokens": 16000, - "max_tokens": 16000, - "mode": "chat", - "output_cost_per_token": 1.9e-06, - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_system_messages": true, - "supports_tool_choice": false, - "supports_vision": false - }, - "multimodalembedding": { - "input_cost_per_character": 2e-07, - "input_cost_per_image": 0.0001, - "input_cost_per_token": 8e-07, - "input_cost_per_video_per_second": 0.0005, - "input_cost_per_video_per_second_above_15s_interval": 0.002, - "input_cost_per_video_per_second_above_8s_interval": 0.001, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 2048, - "max_tokens": 2048, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 768, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models", - "supported_endpoints": [ - "/v1/embeddings" - ], - "supported_modalities": [ - "text", - "image", - "video" - ] - }, - "multimodalembedding@001": { - "input_cost_per_character": 2e-07, - "input_cost_per_image": 0.0001, - "input_cost_per_token": 8e-07, - "input_cost_per_video_per_second": 0.0005, - "input_cost_per_video_per_second_above_15s_interval": 0.002, - "input_cost_per_video_per_second_above_8s_interval": 0.001, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 2048, - "max_tokens": 2048, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 768, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models", - "supported_endpoints": [ - "/v1/embeddings" - ], - "supported_modalities": [ - "text", - "image", - "video" - ] - }, - "nscale/Qwen/QwQ-32B": { - "input_cost_per_token": 1.8e-07, - "litellm_provider": "nscale", - "mode": "chat", - "output_cost_per_token": 2e-07, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/Qwen/Qwen2.5-Coder-32B-Instruct": { - "input_cost_per_token": 6e-08, - "litellm_provider": "nscale", - "mode": "chat", - "output_cost_per_token": 2e-07, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/Qwen/Qwen2.5-Coder-3B-Instruct": { - "input_cost_per_token": 1e-08, - "litellm_provider": "nscale", - "mode": "chat", - "output_cost_per_token": 3e-08, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/Qwen/Qwen2.5-Coder-7B-Instruct": { - "input_cost_per_token": 1e-08, - "litellm_provider": "nscale", - "mode": "chat", - "output_cost_per_token": 3e-08, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/black-forest-labs/FLUX.1-schnell": { - "input_cost_per_pixel": 1.3e-09, - "litellm_provider": "nscale", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#image-models", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-70B": { - "input_cost_per_token": 3.75e-07, - "litellm_provider": "nscale", - "metadata": { - "notes": "Pricing listed as $0.75/1M tokens total. Assumed 50/50 split for input/output." - }, - "mode": "chat", - "output_cost_per_token": 3.75e-07, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/deepseek-ai/DeepSeek-R1-Distill-Llama-8B": { - "input_cost_per_token": 2.5e-08, - "litellm_provider": "nscale", - "metadata": { - "notes": "Pricing listed as $0.05/1M tokens total. Assumed 50/50 split for input/output." - }, - "mode": "chat", - "output_cost_per_token": 2.5e-08, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B": { - "input_cost_per_token": 9e-08, - "litellm_provider": "nscale", - "metadata": { - "notes": "Pricing listed as $0.18/1M tokens total. Assumed 50/50 split for input/output." - }, - "mode": "chat", - "output_cost_per_token": 9e-08, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B": { - "input_cost_per_token": 7e-08, - "litellm_provider": "nscale", - "metadata": { - "notes": "Pricing listed as $0.14/1M tokens total. Assumed 50/50 split for input/output." - }, - "mode": "chat", - "output_cost_per_token": 7e-08, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "nscale", - "metadata": { - "notes": "Pricing listed as $0.30/1M tokens total. Assumed 50/50 split for input/output." - }, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B": { - "input_cost_per_token": 2e-07, - "litellm_provider": "nscale", - "metadata": { - "notes": "Pricing listed as $0.40/1M tokens total. Assumed 50/50 split for input/output." - }, - "mode": "chat", - "output_cost_per_token": 2e-07, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/meta-llama/Llama-3.1-8B-Instruct": { - "input_cost_per_token": 3e-08, - "litellm_provider": "nscale", - "metadata": { - "notes": "Pricing listed as $0.06/1M tokens total. Assumed 50/50 split for input/output." - }, - "mode": "chat", - "output_cost_per_token": 3e-08, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/meta-llama/Llama-3.3-70B-Instruct": { - "input_cost_per_token": 2e-07, - "litellm_provider": "nscale", - "metadata": { - "notes": "Pricing listed as $0.40/1M tokens total. Assumed 50/50 split for input/output." - }, - "mode": "chat", - "output_cost_per_token": 2e-07, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/meta-llama/Llama-4-Scout-17B-16E-Instruct": { - "input_cost_per_token": 9e-08, - "litellm_provider": "nscale", - "mode": "chat", - "output_cost_per_token": 2.9e-07, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/mistralai/mixtral-8x22b-instruct-v0.1": { - "input_cost_per_token": 6e-07, - "litellm_provider": "nscale", - "metadata": { - "notes": "Pricing listed as $1.20/1M tokens total. Assumed 50/50 split for input/output." - }, - "mode": "chat", - "output_cost_per_token": 6e-07, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#chat-models" - }, - "nscale/stabilityai/stable-diffusion-xl-base-1.0": { - "input_cost_per_pixel": 3e-09, - "litellm_provider": "nscale", - "mode": "image_generation", - "output_cost_per_pixel": 0.0, - "source": "https://docs.nscale.com/docs/inference/serverless-models/current#image-models", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "nvidia.nemotron-nano-12b-v2": { - "input_cost_per_token": 2e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_system_messages": true, - "supports_vision": true - }, - "nvidia.nemotron-nano-9b-v2": { - "input_cost_per_token": 6e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.3e-07, - "supports_system_messages": true - }, - "o1": { - "cache_read_input_token_cost": 7.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "o1-2024-12-17": { - "cache_read_input_token_cost": 7.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "o1-mini": { - "cache_read_input_token_cost": 5.5e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 4.4e-06, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_vision": true - }, - "o1-mini-2024-09-12": { - "deprecation_date": "2025-10-27", - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 3e-06, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 1.2e-05, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_vision": true - }, - "o1-preview": { - "cache_read_input_token_cost": 7.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_vision": true - }, - "o1-preview-2024-09-12": { - "cache_read_input_token_cost": 7.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_vision": true - }, - "o1-pro": { - "input_cost_per_token": 0.00015, - "input_cost_per_token_batches": 7.5e-05, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "responses", - "output_cost_per_token": 0.0006, - "output_cost_per_token_batches": 0.0003, - "supported_endpoints": [ - "/v1/responses", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": false, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "o1-pro-2025-03-19": { - "input_cost_per_token": 0.00015, - "input_cost_per_token_batches": 7.5e-05, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "responses", - "output_cost_per_token": 0.0006, - "output_cost_per_token_batches": 0.0003, - "supported_endpoints": [ - "/v1/responses", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": false, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "o3": { - "cache_read_input_token_cost": 5e-07, - "cache_read_input_token_cost_flex": 2.5e-07, - "cache_read_input_token_cost_priority": 8.75e-07, - "input_cost_per_token": 2e-06, - "input_cost_per_token_flex": 1e-06, - "input_cost_per_token_priority": 3.5e-06, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 8e-06, - "output_cost_per_token_flex": 4e-06, - "output_cost_per_token_priority": 1.4e-05, - "supported_endpoints": [ - "/v1/responses", - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "o3-2025-04-16": { - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 2e-06, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 8e-06, - "supported_endpoints": [ - "/v1/responses", - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "o3-deep-research": { - "cache_read_input_token_cost": 2.5e-06, - "input_cost_per_token": 1e-05, - "input_cost_per_token_batches": 5e-06, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "responses", - "output_cost_per_token": 4e-05, - "output_cost_per_token_batches": 2e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "o3-deep-research-2025-06-26": { - "cache_read_input_token_cost": 2.5e-06, - "input_cost_per_token": 1e-05, - "input_cost_per_token_batches": 5e-06, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "responses", - "output_cost_per_token": 4e-05, - "output_cost_per_token_batches": 2e-05, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "o3-mini": { - "cache_read_input_token_cost": 5.5e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 4.4e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "o3-mini-2025-01-31": { - "cache_read_input_token_cost": 5.5e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 4.4e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "o3-pro": { - "input_cost_per_token": 2e-05, - "input_cost_per_token_batches": 1e-05, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "responses", - "output_cost_per_token": 8e-05, - "output_cost_per_token_batches": 4e-05, - "supported_endpoints": [ - "/v1/responses", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "o3-pro-2025-06-10": { - "input_cost_per_token": 2e-05, - "input_cost_per_token_batches": 1e-05, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "responses", - "output_cost_per_token": 8e-05, - "output_cost_per_token_batches": 4e-05, - "supported_endpoints": [ - "/v1/responses", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "o4-mini": { - "cache_read_input_token_cost": 2.75e-07, - "cache_read_input_token_cost_flex": 1.375e-07, - "cache_read_input_token_cost_priority": 5e-07, - "input_cost_per_token": 1.1e-06, - "input_cost_per_token_flex": 5.5e-07, - "input_cost_per_token_priority": 2e-06, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 4.4e-06, - "output_cost_per_token_flex": 2.2e-06, - "output_cost_per_token_priority": 8e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "o4-mini-2025-04-16": { - "cache_read_input_token_cost": 2.75e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 4.4e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_service_tier": true, - "supports_vision": true - }, - "o4-mini-deep-research": { - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 2e-06, - "input_cost_per_token_batches": 1e-06, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "responses", - "output_cost_per_token": 8e-06, - "output_cost_per_token_batches": 4e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "o4-mini-deep-research-2025-06-26": { - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 2e-06, - "input_cost_per_token_batches": 1e-06, - "litellm_provider": "openai", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "responses", - "output_cost_per_token": 8e-06, - "output_cost_per_token_batches": 4e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/batch", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "oci/meta.llama-3.1-405b-instruct": { - "input_cost_per_token": 1.068e-05, - "litellm_provider": "oci", - "max_input_tokens": 128000, - "max_output_tokens": 4000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.068e-05, - "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", - "supports_function_calling": true, - "supports_response_schema": false - }, - "oci/meta.llama-3.2-90b-vision-instruct": { - "input_cost_per_token": 2e-06, - "litellm_provider": "oci", - "max_input_tokens": 128000, - "max_output_tokens": 4000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2e-06, - "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", - "supports_function_calling": true, - "supports_response_schema": false - }, - "oci/meta.llama-3.3-70b-instruct": { - "input_cost_per_token": 7.2e-07, - "litellm_provider": "oci", - "max_input_tokens": 128000, - "max_output_tokens": 4000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 7.2e-07, - "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", - "supports_function_calling": true, - "supports_response_schema": false - }, - "oci/meta.llama-4-maverick-17b-128e-instruct-fp8": { - "input_cost_per_token": 7.2e-07, - "litellm_provider": "oci", - "max_input_tokens": 512000, - "max_output_tokens": 4000, - "max_tokens": 512000, - "mode": "chat", - "output_cost_per_token": 7.2e-07, - "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", - "supports_function_calling": true, - "supports_response_schema": false - }, - "oci/meta.llama-4-scout-17b-16e-instruct": { - "input_cost_per_token": 7.2e-07, - "litellm_provider": "oci", - "max_input_tokens": 192000, - "max_output_tokens": 4000, - "max_tokens": 192000, - "mode": "chat", - "output_cost_per_token": 7.2e-07, - "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", - "supports_function_calling": true, - "supports_response_schema": false - }, - "oci/xai.grok-3": { - "input_cost_per_token": 3e-06, - "litellm_provider": "oci", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", - "supports_function_calling": true, - "supports_response_schema": false - }, - "oci/xai.grok-3-fast": { - "input_cost_per_token": 5e-06, - "litellm_provider": "oci", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.5e-05, - "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", - "supports_function_calling": true, - "supports_response_schema": false - }, - "oci/xai.grok-3-mini": { - "input_cost_per_token": 3e-07, - "litellm_provider": "oci", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 5e-07, - "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", - "supports_function_calling": true, - "supports_response_schema": false - }, - "oci/xai.grok-3-mini-fast": { - "input_cost_per_token": 6e-07, - "litellm_provider": "oci", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 4e-06, - "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", - "supports_function_calling": true, - "supports_response_schema": false - }, - "oci/xai.grok-4": { - "input_cost_per_token": 3e-06, - "litellm_provider": "oci", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", - "supports_function_calling": true, - "supports_response_schema": false - }, - "oci/cohere.command-latest": { - "input_cost_per_token": 1.56e-06, - "litellm_provider": "oci", - "max_input_tokens": 128000, - "max_output_tokens": 4000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.56e-06, - "source": "https://www.oracle.com/cloud/ai/generative-ai/pricing/", - "supports_function_calling": true, - "supports_response_schema": false - }, - "oci/cohere.command-a-03-2025": { - "input_cost_per_token": 1.56e-06, - "litellm_provider": "oci", - "max_input_tokens": 256000, - "max_output_tokens": 4000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 1.56e-06, - "source": "https://www.oracle.com/cloud/ai/generative-ai/pricing/", - "supports_function_calling": true, - "supports_response_schema": false - }, - "oci/cohere.command-plus-latest": { - "input_cost_per_token": 1.56e-06, - "litellm_provider": "oci", - "max_input_tokens": 128000, - "max_output_tokens": 4000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.56e-06, - "source": "https://www.oracle.com/cloud/ai/generative-ai/pricing/", - "supports_function_calling": true, - "supports_response_schema": false - }, - "ollama/codegeex4": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 32768, - "max_output_tokens": 8192, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": false - }, - "ollama/codegemma": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "completion", - "output_cost_per_token": 0.0 - }, - "ollama/codellama": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "completion", - "output_cost_per_token": 0.0 - }, - "ollama/deepseek-coder-v2-base": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "completion", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/deepseek-coder-v2-instruct": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 32768, - "max_output_tokens": 8192, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/deepseek-coder-v2-lite-base": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "completion", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/deepseek-coder-v2-lite-instruct": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 32768, - "max_output_tokens": 8192, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/deepseek-v3.1:671b-cloud" : { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "max_tokens": 163840, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/gpt-oss:120b-cloud" : { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/gpt-oss:20b-cloud" : { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/internlm2_5-20b-chat": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 32768, - "max_output_tokens": 8192, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/llama2": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "ollama/llama2-uncensored": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "completion", - "output_cost_per_token": 0.0 - }, - "ollama/llama2:13b": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "ollama/llama2:70b": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "ollama/llama2:7b": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "ollama/llama3": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "ollama/llama3.1": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/llama3:70b": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "ollama/llama3:8b": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "ollama/mistral": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "completion", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/mistral-7B-Instruct-v0.1": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/mistral-7B-Instruct-v0.2": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/mistral-large-instruct-2407": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 65536, - "max_output_tokens": 8192, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/mixtral-8x22B-Instruct-v0.1": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 65536, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/mixtral-8x7B-Instruct-v0.1": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/orca-mini": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "completion", - "output_cost_per_token": 0.0 - }, - "ollama/qwen3-coder:480b-cloud": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_function_calling": true - }, - "ollama/vicuna": { - "input_cost_per_token": 0.0, - "litellm_provider": "ollama", - "max_input_tokens": 2048, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "completion", - "output_cost_per_token": 0.0 - }, - "omni-moderation-2024-09-26": { - "input_cost_per_token": 0.0, - "litellm_provider": "openai", - "max_input_tokens": 32768, - "max_output_tokens": 0, - "max_tokens": 32768, - "mode": "moderation", - "output_cost_per_token": 0.0 - }, - "omni-moderation-latest": { - "input_cost_per_token": 0.0, - "litellm_provider": "openai", - "max_input_tokens": 32768, - "max_output_tokens": 0, - "max_tokens": 32768, - "mode": "moderation", - "output_cost_per_token": 0.0 - }, - "omni-moderation-latest-intents": { - "input_cost_per_token": 0.0, - "litellm_provider": "openai", - "max_input_tokens": 32768, - "max_output_tokens": 0, - "max_tokens": 32768, - "mode": "moderation", - "output_cost_per_token": 0.0 - }, - "openai.gpt-oss-120b-1:0": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "openai.gpt-oss-20b-1:0": { - "input_cost_per_token": 7e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "openai.gpt-oss-safeguard-120b": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_system_messages": true - }, - "openai.gpt-oss-safeguard-20b": { - "input_cost_per_token": 7e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2e-07, - "supports_system_messages": true - }, - "openrouter/anthropic/claude-2": { - "input_cost_per_token": 1.102e-05, - "litellm_provider": "openrouter", - "max_output_tokens": 8191, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 3.268e-05, - "supports_tool_choice": true - }, - "openrouter/anthropic/claude-3-5-haiku": { - "input_cost_per_token": 1e-06, - "litellm_provider": "openrouter", - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 5e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "openrouter/anthropic/claude-3-5-haiku-20241022": { - "input_cost_per_token": 1e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 5e-06, - "supports_function_calling": true, - "supports_tool_choice": true, - "tool_use_system_prompt_tokens": 264 - }, - "openrouter/anthropic/claude-3-haiku": { - "input_cost_per_image": 0.0004, - "input_cost_per_token": 2.5e-07, - "litellm_provider": "openrouter", - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 1.25e-06, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/anthropic/claude-3-haiku-20240307": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.25e-06, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 264 - }, - "openrouter/anthropic/claude-3-opus": { - "input_cost_per_token": 1.5e-05, - "litellm_provider": "openrouter", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 395 - }, - "openrouter/anthropic/claude-3-sonnet": { - "input_cost_per_image": 0.0048, - "input_cost_per_token": 3e-06, - "litellm_provider": "openrouter", - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/anthropic/claude-3.5-sonnet": { - "input_cost_per_token": 3e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "openrouter/anthropic/claude-3.5-sonnet:beta": { - "input_cost_per_token": 3e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "openrouter/anthropic/claude-3.7-sonnet": { - "input_cost_per_image": 0.0048, - "input_cost_per_token": 3e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 200000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "openrouter/anthropic/claude-3.7-sonnet:beta": { - "input_cost_per_image": 0.0048, - "input_cost_per_token": 3e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 200000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "openrouter/anthropic/claude-instant-v1": { - "input_cost_per_token": 1.63e-06, - "litellm_provider": "openrouter", - "max_output_tokens": 8191, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 5.51e-06, - "supports_tool_choice": true - }, - "openrouter/anthropic/claude-opus-4": { - "input_cost_per_image": 0.0048, - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "openrouter", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "openrouter/anthropic/claude-opus-4.1": { - "input_cost_per_image": 0.0048, - "cache_creation_input_token_cost": 1.875e-05, - "cache_creation_input_token_cost_above_1hr": 3e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "openrouter", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "openrouter/anthropic/claude-sonnet-4": { - "input_cost_per_image": 0.0048, - "cache_creation_input_token_cost": 3.75e-06, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost": 3e-07, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "litellm_provider": "openrouter", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "openrouter/anthropic/claude-opus-4.5": { - "cache_creation_input_token_cost": 6.25e-06, - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 5e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 2.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "openrouter/anthropic/claude-sonnet-4.5": { - "input_cost_per_image": 0.0048, - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 1000000, - "max_output_tokens": 1000000, - "max_tokens": 1000000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "openrouter/anthropic/claude-haiku-4.5": { - "cache_creation_input_token_cost": 1.25e-06, - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 1e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 200000, - "max_output_tokens": 200000, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 5e-06, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "openrouter/bytedance/ui-tars-1.5-7b": { - "input_cost_per_token": 1e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 131072, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 2e-07, - "source": "https://openrouter.ai/api/v1/models/bytedance/ui-tars-1.5-7b", - "supports_tool_choice": true - }, - "openrouter/cognitivecomputations/dolphin-mixtral-8x7b": { - "input_cost_per_token": 5e-07, - "litellm_provider": "openrouter", - "max_tokens": 32769, - "mode": "chat", - "output_cost_per_token": 5e-07, - "supports_tool_choice": true - }, - "openrouter/cohere/command-r-plus": { - "input_cost_per_token": 3e-06, - "litellm_provider": "openrouter", - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_tool_choice": true - }, - "openrouter/databricks/dbrx-instruct": { - "input_cost_per_token": 6e-07, - "litellm_provider": "openrouter", - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_tool_choice": true - }, - "openrouter/deepseek/deepseek-chat": { - "input_cost_per_token": 1.4e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 65536, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.8e-07, - "supports_prompt_caching": true, - "supports_tool_choice": true - }, - "openrouter/deepseek/deepseek-chat-v3-0324": { - "input_cost_per_token": 1.4e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 65536, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.8e-07, - "supports_prompt_caching": true, - "supports_tool_choice": true - }, - "openrouter/deepseek/deepseek-chat-v3.1": { - "input_cost_per_token": 2e-07, - "input_cost_per_token_cache_hit": 2e-08, - "litellm_provider": "openrouter", - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 8e-07, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "openrouter/deepseek/deepseek-v3.2": { - "input_cost_per_token": 2.8e-07, - "input_cost_per_token_cache_hit": 2.8e-08, - "litellm_provider": "openrouter", - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "openrouter/deepseek/deepseek-v3.2-exp": { - "input_cost_per_token": 2e-07, - "input_cost_per_token_cache_hit": 2e-08, - "litellm_provider": "openrouter", - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": false, - "supports_tool_choice": true - }, - "openrouter/deepseek/deepseek-coder": { - "input_cost_per_token": 1.4e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 66000, - "max_output_tokens": 4096, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.8e-07, - "supports_prompt_caching": true, - "supports_tool_choice": true - }, - "openrouter/deepseek/deepseek-r1": { - "input_cost_per_token": 5.5e-07, - "input_cost_per_token_cache_hit": 1.4e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 65336, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.19e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "openrouter/deepseek/deepseek-r1-0528": { - "input_cost_per_token": 5e-07, - "input_cost_per_token_cache_hit": 1.4e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 65336, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.15e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "openrouter/fireworks/firellava-13b": { - "input_cost_per_token": 2e-07, - "litellm_provider": "openrouter", - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2e-07, - "supports_tool_choice": true - }, - "openrouter/google/gemini-2.0-flash-001": { - "input_cost_per_audio_token": 7e-07, - "input_cost_per_token": 1e-07, - "litellm_provider": "openrouter", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/google/gemini-2.5-flash": { - "input_cost_per_audio_token": 7e-07, - "input_cost_per_token": 3e-07, - "litellm_provider": "openrouter", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 2.5e-06, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/google/gemini-2.5-pro": { - "input_cost_per_audio_token": 7e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "openrouter", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_pdf_size_mb": 30, - "max_tokens": 8192, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_audio_output": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/google/gemini-3-pro-preview": { - "cache_read_input_token_cost": 2e-07, - "cache_read_input_token_cost_above_200k_tokens": 4e-07, - "cache_creation_input_token_cost_above_200k_tokens": 2.5e-07, - "input_cost_per_token": 2e-06, - "input_cost_per_token_above_200k_tokens": 4e-06, - "input_cost_per_token_batches": 1e-06, - "litellm_provider": "openrouter", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_token": 1.2e-05, - "output_cost_per_token_above_200k_tokens": 1.8e-05, - "output_cost_per_token_batches": 6e-06, - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_input": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true, - "supports_web_search": true - }, - "openrouter/google/gemini-3-flash-preview": { - "cache_read_input_token_cost": 5e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 5e-07, - "litellm_provider": "openrouter", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 1048576, - "max_output_tokens": 65535, - "max_pdf_size_mb": 30, - "max_tokens": 65535, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "chat", - "output_cost_per_reasoning_token": 3e-06, - "output_cost_per_token": 3e-06, - "rpm": 2000, - "source": "https://ai.google.dev/pricing/gemini-3", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": true, - "tpm": 800000 - }, - "openrouter/google/gemini-pro-1.5": { - "input_cost_per_image": 0.00265, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 1000000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 7.5e-06, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/google/gemini-pro-vision": { - "input_cost_per_image": 0.0025, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "openrouter", - "max_tokens": 45875, - "mode": "chat", - "output_cost_per_token": 3.75e-07, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/google/palm-2-chat-bison": { - "input_cost_per_token": 5e-07, - "litellm_provider": "openrouter", - "max_tokens": 25804, - "mode": "chat", - "output_cost_per_token": 5e-07, - "supports_tool_choice": true - }, - "openrouter/google/palm-2-codechat-bison": { - "input_cost_per_token": 5e-07, - "litellm_provider": "openrouter", - "max_tokens": 20070, - "mode": "chat", - "output_cost_per_token": 5e-07, - "supports_tool_choice": true - }, - "openrouter/gryphe/mythomax-l2-13b": { - "input_cost_per_token": 1.875e-06, - "litellm_provider": "openrouter", - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.875e-06, - "supports_tool_choice": true - }, - "openrouter/jondurbin/airoboros-l2-70b-2.1": { - "input_cost_per_token": 1.3875e-05, - "litellm_provider": "openrouter", - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.3875e-05, - "supports_tool_choice": true - }, - "openrouter/mancer/weaver": { - "input_cost_per_token": 5.625e-06, - "litellm_provider": "openrouter", - "max_tokens": 8000, - "mode": "chat", - "output_cost_per_token": 5.625e-06, - "supports_tool_choice": true - }, - "openrouter/meta-llama/codellama-34b-instruct": { - "input_cost_per_token": 5e-07, - "litellm_provider": "openrouter", - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 5e-07, - "supports_tool_choice": true - }, - "openrouter/meta-llama/llama-2-13b-chat": { - "input_cost_per_token": 2e-07, - "litellm_provider": "openrouter", - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2e-07, - "supports_tool_choice": true - }, - "openrouter/meta-llama/llama-2-70b-chat": { - "input_cost_per_token": 1.5e-06, - "litellm_provider": "openrouter", - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "supports_tool_choice": true - }, - "openrouter/meta-llama/llama-3-70b-instruct": { - "input_cost_per_token": 5.9e-07, - "litellm_provider": "openrouter", - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 7.9e-07, - "supports_tool_choice": true - }, - "openrouter/meta-llama/llama-3-70b-instruct:nitro": { - "input_cost_per_token": 9e-07, - "litellm_provider": "openrouter", - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 9e-07, - "supports_tool_choice": true - }, - "openrouter/meta-llama/llama-3-8b-instruct:extended": { - "input_cost_per_token": 2.25e-07, - "litellm_provider": "openrouter", - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 2.25e-06, - "supports_tool_choice": true - }, - "openrouter/meta-llama/llama-3-8b-instruct:free": { - "input_cost_per_token": 0.0, - "litellm_provider": "openrouter", - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_tool_choice": true - }, - "openrouter/microsoft/wizardlm-2-8x22b:nitro": { - "input_cost_per_token": 1e-06, - "litellm_provider": "openrouter", - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 1e-06, - "supports_tool_choice": true - }, - "openrouter/minimax/minimax-m2": { - "input_cost_per_token": 2.55e-7, - "litellm_provider": "openrouter", - "max_input_tokens": 204800, - "max_output_tokens": 204800, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1.02e-6, - "supports_function_calling": true, - "supports_prompt_caching": false, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "openrouter/mistralai/devstral-2512:free": { - "input_cost_per_image": 0, - "input_cost_per_token": 0, - "litellm_provider": "openrouter", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 0, - "supports_function_calling": true, - "supports_prompt_caching": false, - "supports_tool_choice": true, - "supports_vision": false - }, - "openrouter/mistralai/devstral-2512": { - "input_cost_per_image": 0, - "input_cost_per_token": 1.5e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 262144, - "max_output_tokens": 65536, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_prompt_caching": false, - "supports_tool_choice": true, - "supports_vision": false - }, - "openrouter/mistralai/ministral-3b-2512": { - "input_cost_per_image": 0, - "input_cost_per_token": 1e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1e-07, - "supports_function_calling": true, - "supports_prompt_caching": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/mistralai/ministral-8b-2512": { - "input_cost_per_image": 0, - "input_cost_per_token": 1.5e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "supports_function_calling": true, - "supports_prompt_caching": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/mistralai/ministral-14b-2512": { - "input_cost_per_image": 0, - "input_cost_per_token": 2e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 2e-07, - "supports_function_calling": true, - "supports_prompt_caching": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/mistralai/mistral-large-2512": { - "input_cost_per_image": 0, - "input_cost_per_token": 5e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "supports_function_calling": true, - "supports_prompt_caching": false, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/mistralai/mistral-7b-instruct": { - "input_cost_per_token": 1.3e-07, - "litellm_provider": "openrouter", - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.3e-07, - "supports_tool_choice": true - }, - "openrouter/mistralai/mistral-7b-instruct:free": { - "input_cost_per_token": 0.0, - "litellm_provider": "openrouter", - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.0, - "supports_tool_choice": true - }, - "openrouter/mistralai/mistral-large": { - "input_cost_per_token": 8e-06, - "litellm_provider": "openrouter", - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 2.4e-05, - "supports_tool_choice": true - }, - "openrouter/mistralai/mistral-small-3.1-24b-instruct": { - "input_cost_per_token": 1e-07, - "litellm_provider": "openrouter", - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_tool_choice": true - }, - "openrouter/mistralai/mistral-small-3.2-24b-instruct": { - "input_cost_per_token": 1e-07, - "litellm_provider": "openrouter", - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 3e-07, - "supports_tool_choice": true - }, - "openrouter/mistralai/mixtral-8x22b-instruct": { - "input_cost_per_token": 6.5e-07, - "litellm_provider": "openrouter", - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 6.5e-07, - "supports_tool_choice": true - }, - "openrouter/nousresearch/nous-hermes-llama2-13b": { - "input_cost_per_token": 2e-07, - "litellm_provider": "openrouter", - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2e-07, - "supports_tool_choice": true - }, - "openrouter/openai/gpt-3.5-turbo": { - "input_cost_per_token": 1.5e-06, - "litellm_provider": "openrouter", - "max_tokens": 4095, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_tool_choice": true - }, - "openrouter/openai/gpt-3.5-turbo-16k": { - "input_cost_per_token": 3e-06, - "litellm_provider": "openrouter", - "max_tokens": 16383, - "mode": "chat", - "output_cost_per_token": 4e-06, - "supports_tool_choice": true - }, - "openrouter/openai/gpt-4": { - "input_cost_per_token": 3e-05, - "litellm_provider": "openrouter", - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_tool_choice": true - }, - "openrouter/openai/gpt-4-vision-preview": { - "input_cost_per_image": 0.01445, - "input_cost_per_token": 1e-05, - "litellm_provider": "openrouter", - "max_tokens": 130000, - "mode": "chat", - "output_cost_per_token": 3e-05, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/openai/gpt-4.1": { - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 2e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 8e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/openai/gpt-4.1-2025-04-14": { - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 2e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 8e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/openai/gpt-4.1-mini": { - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 4e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1.6e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/openai/gpt-4.1-mini-2025-04-14": { - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 4e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1.6e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/openai/gpt-4.1-nano": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_token": 1e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/openai/gpt-4.1-nano-2025-04-14": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_token": 1e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/openai/gpt-4o": { - "input_cost_per_token": 2.5e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/openai/gpt-4o-2024-05-13": { - "input_cost_per_token": 5e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/openai/gpt-5-chat": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_reasoning": true, - "supports_tool_choice": true - }, - "openrouter/openai/gpt-5-codex": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_reasoning": true, - "supports_tool_choice": true - }, - "openrouter/openai/gpt-5": { - "cache_read_input_token_cost": 1.25e-07, - "input_cost_per_token": 1.25e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_reasoning": true, - "supports_tool_choice": true - }, - "openrouter/openai/gpt-5-mini": { - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_token": 2.5e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_reasoning": true, - "supports_tool_choice": true - }, - "openrouter/openai/gpt-5-nano": { - "cache_read_input_token_cost": 5e-09, - "input_cost_per_token": 5e-08, - "litellm_provider": "openrouter", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_reasoning": true, - "supports_tool_choice": true - }, - "openrouter/openai/gpt-5.2": { - "input_cost_per_image": 0, - "cache_read_input_token_cost": 1.75e-07, - "input_cost_per_token": 1.75e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 400000, - "mode": "chat", - "output_cost_per_token": 1.4e-05, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/openai/gpt-5.2-chat": { - "input_cost_per_image": 0, - "cache_read_input_token_cost": 1.75e-07, - "input_cost_per_token": 1.75e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.4e-05, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/openai/gpt-5.2-pro": { - "input_cost_per_image": 0, - "input_cost_per_token": 2.1e-05, - "litellm_provider": "openrouter", - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "max_tokens": 400000, - "mode": "chat", - "output_cost_per_token": 1.68e-04, - "supports_function_calling": true, - "supports_prompt_caching": false, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/openai/gpt-oss-120b": { - "input_cost_per_token": 1.8e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 131072, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 8e-07, - "source": "https://openrouter.ai/openai/gpt-oss-120b", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "openrouter/openai/gpt-oss-20b": { - "input_cost_per_token": 1.8e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 131072, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 8e-07, - "source": "https://openrouter.ai/openai/gpt-oss-20b", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "openrouter/openai/o1": { - "cache_read_input_token_cost": 7.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "openrouter", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 100000, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/openai/o1-mini": { - "input_cost_per_token": 3e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 128000, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 1.2e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "openrouter/openai/o1-mini-2024-09-12": { - "input_cost_per_token": 3e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 128000, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 1.2e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "openrouter/openai/o1-preview": { - "input_cost_per_token": 1.5e-05, - "litellm_provider": "openrouter", - "max_input_tokens": 128000, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "openrouter/openai/o1-preview-2024-09-12": { - "input_cost_per_token": 1.5e-05, - "litellm_provider": "openrouter", - "max_input_tokens": 128000, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 6e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "openrouter/openai/o3-mini": { - "input_cost_per_token": 1.1e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 128000, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 4.4e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "openrouter/openai/o3-mini-high": { - "input_cost_per_token": 1.1e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 128000, - "max_output_tokens": 65536, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 4.4e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "openrouter/pygmalionai/mythalion-13b": { - "input_cost_per_token": 1.875e-06, - "litellm_provider": "openrouter", - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.875e-06, - "supports_tool_choice": true - }, - "openrouter/qwen/qwen-2.5-coder-32b-instruct": { - "input_cost_per_token": 1.8e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 33792, - "max_output_tokens": 33792, - "max_tokens": 33792, - "mode": "chat", - "output_cost_per_token": 1.8e-07, - "supports_tool_choice": true - }, - "openrouter/qwen/qwen-vl-plus": { - "input_cost_per_token": 2.1e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 8192, - "max_output_tokens": 2048, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 6.3e-07, - "supports_tool_choice": true, - "supports_vision": true - }, - "openrouter/qwen/qwen3-coder": { - "input_cost_per_token": 2.2e-7, - "litellm_provider": "openrouter", - "max_input_tokens": 262100, - "max_output_tokens": 262100, - "max_tokens": 262100, - "mode": "chat", - "output_cost_per_token": 9.5e-7, - "source": "https://openrouter.ai/qwen/qwen3-coder", - "supports_tool_choice": true, - "supports_function_calling": true - }, - "openrouter/switchpoint/router": { - "input_cost_per_token": 8.5e-07, - "litellm_provider": "openrouter", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 3.4e-06, - "source": "https://openrouter.ai/switchpoint/router", - "supports_tool_choice": true - }, - "openrouter/undi95/remm-slerp-l2-13b": { - "input_cost_per_token": 1.875e-06, - "litellm_provider": "openrouter", - "max_tokens": 6144, - "mode": "chat", - "output_cost_per_token": 1.875e-06, - "supports_tool_choice": true - }, - "openrouter/x-ai/grok-4": { - "input_cost_per_token": 3e-06, - "litellm_provider": "openrouter", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "source": "https://openrouter.ai/x-ai/grok-4", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "openrouter/x-ai/grok-4-fast:free": { - "input_cost_per_token": 0, - "litellm_provider": "openrouter", - "max_input_tokens": 2000000, - "max_output_tokens": 30000, - "max_tokens": 2000000, - "mode": "chat", - "output_cost_per_token": 0, - "source": "https://openrouter.ai/x-ai/grok-4-fast:free", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "supports_web_search": false - }, - "openrouter/z-ai/glm-4.6": { - "input_cost_per_token": 4.0e-7, - "litellm_provider": "openrouter", - "max_input_tokens": 202800, - "max_output_tokens": 131000, - "max_tokens": 202800, - "mode": "chat", - "output_cost_per_token": 1.75e-6, - "source": "https://openrouter.ai/z-ai/glm-4.6", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "openrouter/z-ai/glm-4.6:exacto": { - "input_cost_per_token": 4.5e-7, - "litellm_provider": "openrouter", - "max_input_tokens": 202800, - "max_output_tokens": 131000, - "max_tokens": 202800, - "mode": "chat", - "output_cost_per_token": 1.9e-6, - "source": "https://openrouter.ai/z-ai/glm-4.6:exacto", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "ovhcloud/DeepSeek-R1-Distill-Llama-70B": { - "input_cost_per_token": 6.7e-07, - "litellm_provider": "ovhcloud", - "max_input_tokens": 131000, - "max_output_tokens": 131000, - "max_tokens": 131000, - "mode": "chat", - "output_cost_per_token": 6.7e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/deepseek-r1-distill-llama-70b", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "ovhcloud/Llama-3.1-8B-Instruct": { - "input_cost_per_token": 1e-07, - "litellm_provider": "ovhcloud", - "max_input_tokens": 131000, - "max_output_tokens": 131000, - "max_tokens": 131000, - "mode": "chat", - "output_cost_per_token": 1e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/llama-3-1-8b-instruct", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "ovhcloud/Meta-Llama-3_1-70B-Instruct": { - "input_cost_per_token": 6.7e-07, - "litellm_provider": "ovhcloud", - "max_input_tokens": 131000, - "max_output_tokens": 131000, - "max_tokens": 131000, - "mode": "chat", - "output_cost_per_token": 6.7e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/meta-llama-3-1-70b-instruct", - "supports_function_calling": false, - "supports_response_schema": false, - "supports_tool_choice": false - }, - "ovhcloud/Meta-Llama-3_3-70B-Instruct": { - "input_cost_per_token": 6.7e-07, - "litellm_provider": "ovhcloud", - "max_input_tokens": 131000, - "max_output_tokens": 131000, - "max_tokens": 131000, - "mode": "chat", - "output_cost_per_token": 6.7e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/meta-llama-3-3-70b-instruct", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "ovhcloud/Mistral-7B-Instruct-v0.3": { - "input_cost_per_token": 1e-07, - "litellm_provider": "ovhcloud", - "max_input_tokens": 127000, - "max_output_tokens": 127000, - "max_tokens": 127000, - "mode": "chat", - "output_cost_per_token": 1e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/mistral-7b-instruct-v0-3", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "ovhcloud/Mistral-Nemo-Instruct-2407": { - "input_cost_per_token": 1.3e-07, - "litellm_provider": "ovhcloud", - "max_input_tokens": 118000, - "max_output_tokens": 118000, - "max_tokens": 118000, - "mode": "chat", - "output_cost_per_token": 1.3e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/mistral-nemo-instruct-2407", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "ovhcloud/Mistral-Small-3.2-24B-Instruct-2506": { - "input_cost_per_token": 9e-08, - "litellm_provider": "ovhcloud", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2.8e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/mistral-small-3-2-24b-instruct-2506", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "ovhcloud/Mixtral-8x7B-Instruct-v0.1": { - "input_cost_per_token": 6.3e-07, - "litellm_provider": "ovhcloud", - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 6.3e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/mixtral-8x7b-instruct-v0-1", - "supports_function_calling": false, - "supports_response_schema": true, - "supports_tool_choice": false - }, - "ovhcloud/Qwen2.5-Coder-32B-Instruct": { - "input_cost_per_token": 8.7e-07, - "litellm_provider": "ovhcloud", - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 8.7e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/qwen2-5-coder-32b-instruct", - "supports_function_calling": false, - "supports_response_schema": true, - "supports_tool_choice": false - }, - "ovhcloud/Qwen2.5-VL-72B-Instruct": { - "input_cost_per_token": 9.1e-07, - "litellm_provider": "ovhcloud", - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 9.1e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/qwen2-5-vl-72b-instruct", - "supports_function_calling": false, - "supports_response_schema": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "ovhcloud/Qwen3-32B": { - "input_cost_per_token": 8e-08, - "litellm_provider": "ovhcloud", - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 2.3e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/qwen3-32b", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "ovhcloud/gpt-oss-120b": { - "input_cost_per_token": 8e-08, - "litellm_provider": "ovhcloud", - "max_input_tokens": 131000, - "max_output_tokens": 131000, - "max_tokens": 131000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/gpt-oss-120b", - "supports_function_calling": false, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": false - }, - "ovhcloud/gpt-oss-20b": { - "input_cost_per_token": 4e-08, - "litellm_provider": "ovhcloud", - "max_input_tokens": 131000, - "max_output_tokens": 131000, - "max_tokens": 131000, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/gpt-oss-20b", - "supports_function_calling": false, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": false - }, - "ovhcloud/llava-v1.6-mistral-7b-hf": { - "input_cost_per_token": 2.9e-07, - "litellm_provider": "ovhcloud", - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 2.9e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/llava-next-mistral-7b", - "supports_function_calling": false, - "supports_response_schema": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "ovhcloud/mamba-codestral-7B-v0.1": { - "input_cost_per_token": 1.9e-07, - "litellm_provider": "ovhcloud", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 1.9e-07, - "source": "https://endpoints.ai.cloud.ovh.net/models/mamba-codestral-7b-v0-1", - "supports_function_calling": false, - "supports_response_schema": true, - "supports_tool_choice": false - }, - "palm/chat-bison": { - "input_cost_per_token": 1.25e-07, - "litellm_provider": "palm", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "palm/chat-bison-001": { - "input_cost_per_token": 1.25e-07, - "litellm_provider": "palm", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "palm/text-bison": { - "input_cost_per_token": 1.25e-07, - "litellm_provider": "palm", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "palm/text-bison-001": { - "input_cost_per_token": 1.25e-07, - "litellm_provider": "palm", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "palm/text-bison-safety-off": { - "input_cost_per_token": 1.25e-07, - "litellm_provider": "palm", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "palm/text-bison-safety-recitation-off": { - "input_cost_per_token": 1.25e-07, - "litellm_provider": "palm", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "parallel_ai/search": { - "input_cost_per_query": 0.004, - "litellm_provider": "parallel_ai", - "mode": "search" - }, - "parallel_ai/search-pro": { - "input_cost_per_query": 0.009, - "litellm_provider": "parallel_ai", - "mode": "search" - }, - "perplexity/codellama-34b-instruct": { - "input_cost_per_token": 3.5e-07, - "litellm_provider": "perplexity", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.4e-06 - }, - "perplexity/codellama-70b-instruct": { - "input_cost_per_token": 7e-07, - "litellm_provider": "perplexity", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 2.8e-06 - }, - "perplexity/llama-2-70b-chat": { - "input_cost_per_token": 7e-07, - "litellm_provider": "perplexity", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.8e-06 - }, - "perplexity/llama-3.1-70b-instruct": { - "input_cost_per_token": 1e-06, - "litellm_provider": "perplexity", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1e-06 - }, - "perplexity/llama-3.1-8b-instruct": { - "input_cost_per_token": 2e-07, - "litellm_provider": "perplexity", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2e-07 - }, - "perplexity/llama-3.1-sonar-huge-128k-online": { - "deprecation_date": "2025-02-22", - "input_cost_per_token": 5e-06, - "litellm_provider": "perplexity", - "max_input_tokens": 127072, - "max_output_tokens": 127072, - "max_tokens": 127072, - "mode": "chat", - "output_cost_per_token": 5e-06 - }, - "perplexity/llama-3.1-sonar-large-128k-chat": { - "deprecation_date": "2025-02-22", - "input_cost_per_token": 1e-06, - "litellm_provider": "perplexity", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1e-06 - }, - "perplexity/llama-3.1-sonar-large-128k-online": { - "deprecation_date": "2025-02-22", - "input_cost_per_token": 1e-06, - "litellm_provider": "perplexity", - "max_input_tokens": 127072, - "max_output_tokens": 127072, - "max_tokens": 127072, - "mode": "chat", - "output_cost_per_token": 1e-06 - }, - "perplexity/llama-3.1-sonar-small-128k-chat": { - "deprecation_date": "2025-02-22", - "input_cost_per_token": 2e-07, - "litellm_provider": "perplexity", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2e-07 - }, - "perplexity/llama-3.1-sonar-small-128k-online": { - "deprecation_date": "2025-02-22", - "input_cost_per_token": 2e-07, - "litellm_provider": "perplexity", - "max_input_tokens": 127072, - "max_output_tokens": 127072, - "max_tokens": 127072, - "mode": "chat", - "output_cost_per_token": 2e-07 - }, - "perplexity/mistral-7b-instruct": { - "input_cost_per_token": 7e-08, - "litellm_provider": "perplexity", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.8e-07 - }, - "perplexity/mixtral-8x7b-instruct": { - "input_cost_per_token": 7e-08, - "litellm_provider": "perplexity", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.8e-07 - }, - "perplexity/pplx-70b-chat": { - "input_cost_per_token": 7e-07, - "litellm_provider": "perplexity", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.8e-06 - }, - "perplexity/pplx-70b-online": { - "input_cost_per_request": 0.005, - "input_cost_per_token": 0.0, - "litellm_provider": "perplexity", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.8e-06 - }, - "perplexity/pplx-7b-chat": { - "input_cost_per_token": 7e-08, - "litellm_provider": "perplexity", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.8e-07 - }, - "perplexity/pplx-7b-online": { - "input_cost_per_request": 0.005, - "input_cost_per_token": 0.0, - "litellm_provider": "perplexity", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.8e-07 - }, - "perplexity/sonar": { - "input_cost_per_token": 1e-06, - "litellm_provider": "perplexity", - "max_input_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-06, - "search_context_cost_per_query": { - "search_context_size_high": 0.012, - "search_context_size_low": 0.005, - "search_context_size_medium": 0.008 - }, - "supports_web_search": true - }, - "perplexity/sonar-deep-research": { - "citation_cost_per_token": 2e-06, - "input_cost_per_token": 2e-06, - "litellm_provider": "perplexity", - "max_input_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_reasoning_token": 3e-06, - "output_cost_per_token": 8e-06, - "search_context_cost_per_query": { - "search_context_size_high": 0.005, - "search_context_size_low": 0.005, - "search_context_size_medium": 0.005 - }, - "supports_reasoning": true, - "supports_web_search": true - }, - "perplexity/sonar-medium-chat": { - "input_cost_per_token": 6e-07, - "litellm_provider": "perplexity", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1.8e-06 - }, - "perplexity/sonar-medium-online": { - "input_cost_per_request": 0.005, - "input_cost_per_token": 0, - "litellm_provider": "perplexity", - "max_input_tokens": 12000, - "max_output_tokens": 12000, - "max_tokens": 12000, - "mode": "chat", - "output_cost_per_token": 1.8e-06 - }, - "perplexity/sonar-pro": { - "input_cost_per_token": 3e-06, - "litellm_provider": "perplexity", - "max_input_tokens": 200000, - "max_output_tokens": 8000, - "max_tokens": 8000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.014, - "search_context_size_low": 0.006, - "search_context_size_medium": 0.01 - }, - "supports_web_search": true - }, - "perplexity/sonar-reasoning": { - "input_cost_per_token": 1e-06, - "litellm_provider": "perplexity", - "max_input_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 5e-06, - "search_context_cost_per_query": { - "search_context_size_high": 0.014, - "search_context_size_low": 0.005, - "search_context_size_medium": 0.008 - }, - "supports_reasoning": true, - "supports_web_search": true - }, - "perplexity/sonar-reasoning-pro": { - "input_cost_per_token": 2e-06, - "litellm_provider": "perplexity", - "max_input_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 8e-06, - "search_context_cost_per_query": { - "search_context_size_high": 0.014, - "search_context_size_low": 0.006, - "search_context_size_medium": 0.01 - }, - "supports_reasoning": true, - "supports_web_search": true - }, - "perplexity/sonar-small-chat": { - "input_cost_per_token": 7e-08, - "litellm_provider": "perplexity", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 2.8e-07 - }, - "perplexity/sonar-small-online": { - "input_cost_per_request": 0.005, - "input_cost_per_token": 0, - "litellm_provider": "perplexity", - "max_input_tokens": 12000, - "max_output_tokens": 12000, - "max_tokens": 12000, - "mode": "chat", - "output_cost_per_token": 2.8e-07 - }, - "publicai/swiss-ai/apertus-8b-instruct": { - "input_cost_per_token": 0.0, - "litellm_provider": "publicai", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://platform.publicai.co/docs", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "publicai/swiss-ai/apertus-70b-instruct": { - "input_cost_per_token": 0.0, - "litellm_provider": "publicai", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://platform.publicai.co/docs", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "publicai/aisingapore/Gemma-SEA-LION-v4-27B-IT": { - "input_cost_per_token": 0.0, - "litellm_provider": "publicai", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://platform.publicai.co/docs", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "publicai/BSC-LT/salamandra-7b-instruct-tools-16k": { - "input_cost_per_token": 0.0, - "litellm_provider": "publicai", - "max_input_tokens": 16384, - "max_output_tokens": 4096, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://platform.publicai.co/docs", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "publicai/BSC-LT/ALIA-40b-instruct_Q8_0": { - "input_cost_per_token": 0.0, - "litellm_provider": "publicai", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://platform.publicai.co/docs", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "publicai/allenai/Olmo-3-7B-Instruct": { - "input_cost_per_token": 0.0, - "litellm_provider": "publicai", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://platform.publicai.co/docs", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "publicai/aisingapore/Qwen-SEA-LION-v4-32B-IT": { - "input_cost_per_token": 0.0, - "litellm_provider": "publicai", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://platform.publicai.co/docs", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "publicai/allenai/Olmo-3-7B-Think": { - "input_cost_per_token": 0.0, - "litellm_provider": "publicai", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://platform.publicai.co/docs", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_reasoning": true - }, - "publicai/allenai/Olmo-3-32B-Think": { - "input_cost_per_token": 0.0, - "litellm_provider": "publicai", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://platform.publicai.co/docs", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_reasoning": true - }, - "qwen.qwen3-coder-480b-a35b-v1:0": { - "input_cost_per_token": 2.2e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 262000, - "max_output_tokens": 65536, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 1.8e-06, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "qwen.qwen3-235b-a22b-2507-v1:0": { - "input_cost_per_token": 2.2e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 262144, - "max_output_tokens": 131072, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 8.8e-07, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "qwen.qwen3-coder-30b-a3b-v1:0": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 262144, - "max_output_tokens": 131072, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 6.0e-07, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "qwen.qwen3-32b-v1:0": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 131072, - "max_output_tokens": 16384, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 6.0e-07, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "qwen.qwen3-next-80b-a3b": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "supports_function_calling": true, - "supports_system_messages": true - }, - "qwen.qwen3-vl-235b-a22b": { - "input_cost_per_token": 5.3e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.66e-06, - "supports_function_calling": true, - "supports_system_messages": true, - "supports_vision": true - }, - "recraft/recraftv2": { - "litellm_provider": "recraft", - "mode": "image_generation", - "output_cost_per_image": 0.022, - "source": "https://www.recraft.ai/docs#pricing", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "recraft/recraftv3": { - "litellm_provider": "recraft", - "mode": "image_generation", - "output_cost_per_image": 0.04, - "source": "https://www.recraft.ai/docs#pricing", - "supported_endpoints": [ - "/v1/images/generations" - ] - }, - "replicate/meta/llama-2-13b": { - "input_cost_per_token": 1e-07, - "litellm_provider": "replicate", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 5e-07, - "supports_tool_choice": true - }, - "replicate/meta/llama-2-13b-chat": { - "input_cost_per_token": 1e-07, - "litellm_provider": "replicate", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 5e-07, - "supports_tool_choice": true - }, - "replicate/meta/llama-2-70b": { - "input_cost_per_token": 6.5e-07, - "litellm_provider": "replicate", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.75e-06, - "supports_tool_choice": true - }, - "replicate/meta/llama-2-70b-chat": { - "input_cost_per_token": 6.5e-07, - "litellm_provider": "replicate", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.75e-06, - "supports_tool_choice": true - }, - "replicate/meta/llama-2-7b": { - "input_cost_per_token": 5e-08, - "litellm_provider": "replicate", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.5e-07, - "supports_tool_choice": true - }, - "replicate/meta/llama-2-7b-chat": { - "input_cost_per_token": 5e-08, - "litellm_provider": "replicate", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.5e-07, - "supports_tool_choice": true - }, - "replicate/meta/llama-3-70b": { - "input_cost_per_token": 6.5e-07, - "litellm_provider": "replicate", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.75e-06, - "supports_tool_choice": true - }, - "replicate/meta/llama-3-70b-instruct": { - "input_cost_per_token": 6.5e-07, - "litellm_provider": "replicate", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2.75e-06, - "supports_tool_choice": true - }, - "replicate/meta/llama-3-8b": { - "input_cost_per_token": 5e-08, - "litellm_provider": "replicate", - "max_input_tokens": 8086, - "max_output_tokens": 8086, - "max_tokens": 8086, - "mode": "chat", - "output_cost_per_token": 2.5e-07, - "supports_tool_choice": true - }, - "replicate/meta/llama-3-8b-instruct": { - "input_cost_per_token": 5e-08, - "litellm_provider": "replicate", - "max_input_tokens": 8086, - "max_output_tokens": 8086, - "max_tokens": 8086, - "mode": "chat", - "output_cost_per_token": 2.5e-07, - "supports_tool_choice": true - }, - "replicate/mistralai/mistral-7b-instruct-v0.2": { - "input_cost_per_token": 5e-08, - "litellm_provider": "replicate", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.5e-07, - "supports_tool_choice": true - }, - "replicate/mistralai/mistral-7b-v0.1": { - "input_cost_per_token": 5e-08, - "litellm_provider": "replicate", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 2.5e-07, - "supports_tool_choice": true - }, - "replicate/mistralai/mixtral-8x7b-instruct-v0.1": { - "input_cost_per_token": 3e-07, - "litellm_provider": "replicate", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1e-06, - "supports_tool_choice": true - }, - "rerank-english-v2.0": { - "input_cost_per_query": 0.002, - "input_cost_per_token": 0.0, - "litellm_provider": "cohere", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_query_tokens": 2048, - "max_tokens": 4096, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "rerank-english-v3.0": { - "input_cost_per_query": 0.002, - "input_cost_per_token": 0.0, - "litellm_provider": "cohere", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_query_tokens": 2048, - "max_tokens": 4096, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "rerank-multilingual-v2.0": { - "input_cost_per_query": 0.002, - "input_cost_per_token": 0.0, - "litellm_provider": "cohere", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_query_tokens": 2048, - "max_tokens": 4096, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "rerank-multilingual-v3.0": { - "input_cost_per_query": 0.002, - "input_cost_per_token": 0.0, - "litellm_provider": "cohere", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_query_tokens": 2048, - "max_tokens": 4096, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "rerank-v3.5": { - "input_cost_per_query": 0.002, - "input_cost_per_token": 0.0, - "litellm_provider": "cohere", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_query_tokens": 2048, - "max_tokens": 4096, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "nvidia_nim/nvidia/nv-rerankqa-mistral-4b-v3": { - "input_cost_per_query": 0.0, - "input_cost_per_token": 0.0, - "litellm_provider": "nvidia_nim", - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "nvidia_nim/nvidia/llama-3_2-nv-rerankqa-1b-v2": { - "input_cost_per_query": 0.0, - "input_cost_per_token": 0.0, - "litellm_provider": "nvidia_nim", - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "nvidia_nim/ranking/nvidia/llama-3.2-nv-rerankqa-1b-v2": { - "input_cost_per_query": 0.0, - "input_cost_per_token": 0.0, - "litellm_provider": "nvidia_nim", - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "sagemaker/meta-textgeneration-llama-2-13b": { - "input_cost_per_token": 0.0, - "litellm_provider": "sagemaker", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "completion", - "output_cost_per_token": 0.0 - }, - "sagemaker/meta-textgeneration-llama-2-13b-f": { - "input_cost_per_token": 0.0, - "litellm_provider": "sagemaker", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "sagemaker/meta-textgeneration-llama-2-70b": { - "input_cost_per_token": 0.0, - "litellm_provider": "sagemaker", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "completion", - "output_cost_per_token": 0.0 - }, - "sagemaker/meta-textgeneration-llama-2-70b-b-f": { - "input_cost_per_token": 0.0, - "litellm_provider": "sagemaker", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "sagemaker/meta-textgeneration-llama-2-7b": { - "input_cost_per_token": 0.0, - "litellm_provider": "sagemaker", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "completion", - "output_cost_per_token": 0.0 - }, - "sagemaker/meta-textgeneration-llama-2-7b-f": { - "input_cost_per_token": 0.0, - "litellm_provider": "sagemaker", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "sambanova/DeepSeek-R1": { - "input_cost_per_token": 5e-06, - "litellm_provider": "sambanova", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 7e-06, - "source": "https://cloud.sambanova.ai/plans/pricing" - }, - "sambanova/DeepSeek-R1-Distill-Llama-70B": { - "input_cost_per_token": 7e-07, - "litellm_provider": "sambanova", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.4e-06, - "source": "https://cloud.sambanova.ai/plans/pricing" - }, - "sambanova/DeepSeek-V3-0324": { - "input_cost_per_token": 3e-06, - "litellm_provider": "sambanova", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 4.5e-06, - "source": "https://cloud.sambanova.ai/plans/pricing", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "sambanova/Llama-4-Maverick-17B-128E-Instruct": { - "input_cost_per_token": 6.3e-07, - "litellm_provider": "sambanova", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "metadata": { - "notes": "For vision models, images are converted to 6432 input tokens and are billed at that amount" - }, - "mode": "chat", - "output_cost_per_token": 1.8e-06, - "source": "https://cloud.sambanova.ai/plans/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "sambanova/Llama-4-Scout-17B-16E-Instruct": { - "input_cost_per_token": 4e-07, - "litellm_provider": "sambanova", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "metadata": { - "notes": "For vision models, images are converted to 6432 input tokens and are billed at that amount" - }, - "mode": "chat", - "output_cost_per_token": 7e-07, - "source": "https://cloud.sambanova.ai/plans/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "sambanova/Meta-Llama-3.1-405B-Instruct": { - "input_cost_per_token": 5e-06, - "litellm_provider": "sambanova", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-05, - "source": "https://cloud.sambanova.ai/plans/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "sambanova/Meta-Llama-3.1-8B-Instruct": { - "input_cost_per_token": 1e-07, - "litellm_provider": "sambanova", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 2e-07, - "source": "https://cloud.sambanova.ai/plans/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "sambanova/Meta-Llama-3.2-1B-Instruct": { - "input_cost_per_token": 4e-08, - "litellm_provider": "sambanova", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 8e-08, - "source": "https://cloud.sambanova.ai/plans/pricing" - }, - "sambanova/Meta-Llama-3.2-3B-Instruct": { - "input_cost_per_token": 8e-08, - "litellm_provider": "sambanova", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.6e-07, - "source": "https://cloud.sambanova.ai/plans/pricing" - }, - "sambanova/Meta-Llama-3.3-70B-Instruct": { - "input_cost_per_token": 6e-07, - "litellm_provider": "sambanova", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "source": "https://cloud.sambanova.ai/plans/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "sambanova/Meta-Llama-Guard-3-8B": { - "input_cost_per_token": 3e-07, - "litellm_provider": "sambanova", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 3e-07, - "source": "https://cloud.sambanova.ai/plans/pricing" - }, - "sambanova/QwQ-32B": { - "input_cost_per_token": 5e-07, - "litellm_provider": "sambanova", - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-06, - "source": "https://cloud.sambanova.ai/plans/pricing" - }, - "sambanova/Qwen2-Audio-7B-Instruct": { - "input_cost_per_token": 5e-07, - "litellm_provider": "sambanova", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.0001, - "source": "https://cloud.sambanova.ai/plans/pricing", - "supports_audio_input": true - }, - "sambanova/Qwen3-32B": { - "input_cost_per_token": 4e-07, - "litellm_provider": "sambanova", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 8e-07, - "source": "https://cloud.sambanova.ai/plans/pricing", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "sambanova/DeepSeek-V3.1": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 3e-06, - "output_cost_per_token": 4.5e-06, - "litellm_provider": "sambanova", - "mode": "chat", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_reasoning": true, - "source": "https://cloud.sambanova.ai/plans/pricing" - }, - "sambanova/gpt-oss-120b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 3e-06, - "output_cost_per_token": 4.5e-06, - "litellm_provider": "sambanova", - "mode": "chat", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_reasoning": true, - "source": "https://cloud.sambanova.ai/plans/pricing" - }, - - "snowflake/claude-3-5-sonnet": { - "litellm_provider": "snowflake", - "max_input_tokens": 18000, - "max_output_tokens": 8192, - "max_tokens": 18000, - "mode": "chat", - "supports_computer_use": true - }, - "snowflake/deepseek-r1": { - "litellm_provider": "snowflake", - "max_input_tokens": 32768, - "max_output_tokens": 8192, - "max_tokens": 32768, - "mode": "chat", - "supports_reasoning": true - }, - "snowflake/gemma-7b": { - "litellm_provider": "snowflake", - "max_input_tokens": 8000, - "max_output_tokens": 8192, - "max_tokens": 8000, - "mode": "chat" - }, - "snowflake/jamba-1.5-large": { - "litellm_provider": "snowflake", - "max_input_tokens": 256000, - "max_output_tokens": 8192, - "max_tokens": 256000, - "mode": "chat" - }, - "snowflake/jamba-1.5-mini": { - "litellm_provider": "snowflake", - "max_input_tokens": 256000, - "max_output_tokens": 8192, - "max_tokens": 256000, - "mode": "chat" - }, - "snowflake/jamba-instruct": { - "litellm_provider": "snowflake", - "max_input_tokens": 256000, - "max_output_tokens": 8192, - "max_tokens": 256000, - "mode": "chat" - }, - "snowflake/llama2-70b-chat": { - "litellm_provider": "snowflake", - "max_input_tokens": 4096, - "max_output_tokens": 8192, - "max_tokens": 4096, - "mode": "chat" - }, - "snowflake/llama3-70b": { - "litellm_provider": "snowflake", - "max_input_tokens": 8000, - "max_output_tokens": 8192, - "max_tokens": 8000, - "mode": "chat" - }, - "snowflake/llama3-8b": { - "litellm_provider": "snowflake", - "max_input_tokens": 8000, - "max_output_tokens": 8192, - "max_tokens": 8000, - "mode": "chat" - }, - "snowflake/llama3.1-405b": { - "litellm_provider": "snowflake", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat" - }, - "snowflake/llama3.1-70b": { - "litellm_provider": "snowflake", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat" - }, - "snowflake/llama3.1-8b": { - "litellm_provider": "snowflake", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat" - }, - "snowflake/llama3.2-1b": { - "litellm_provider": "snowflake", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat" - }, - "snowflake/llama3.2-3b": { - "litellm_provider": "snowflake", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat" - }, - "snowflake/llama3.3-70b": { - "litellm_provider": "snowflake", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat" - }, - "snowflake/mistral-7b": { - "litellm_provider": "snowflake", - "max_input_tokens": 32000, - "max_output_tokens": 8192, - "max_tokens": 32000, - "mode": "chat" - }, - "snowflake/mistral-large": { - "litellm_provider": "snowflake", - "max_input_tokens": 32000, - "max_output_tokens": 8192, - "max_tokens": 32000, - "mode": "chat" - }, - "snowflake/mistral-large2": { - "litellm_provider": "snowflake", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat" - }, - "snowflake/mixtral-8x7b": { - "litellm_provider": "snowflake", - "max_input_tokens": 32000, - "max_output_tokens": 8192, - "max_tokens": 32000, - "mode": "chat" - }, - "snowflake/reka-core": { - "litellm_provider": "snowflake", - "max_input_tokens": 32000, - "max_output_tokens": 8192, - "max_tokens": 32000, - "mode": "chat" - }, - "snowflake/reka-flash": { - "litellm_provider": "snowflake", - "max_input_tokens": 100000, - "max_output_tokens": 8192, - "max_tokens": 100000, - "mode": "chat" - }, - "snowflake/snowflake-arctic": { - "litellm_provider": "snowflake", - "max_input_tokens": 4096, - "max_output_tokens": 8192, - "max_tokens": 4096, - "mode": "chat" - }, - "snowflake/snowflake-llama-3.1-405b": { - "litellm_provider": "snowflake", - "max_input_tokens": 8000, - "max_output_tokens": 8192, - "max_tokens": 8000, - "mode": "chat" - }, - "snowflake/snowflake-llama-3.3-70b": { - "litellm_provider": "snowflake", - "max_input_tokens": 8000, - "max_output_tokens": 8192, - "max_tokens": 8000, - "mode": "chat" - }, - "stability/sd3": { - "litellm_provider": "stability", - "mode": "image_generation", - "output_cost_per_image": 0.065, - "supported_endpoints": ["/v1/images/generations"] - }, - "stability/sd3-large": { - "litellm_provider": "stability", - "mode": "image_generation", - "output_cost_per_image": 0.065, - "supported_endpoints": ["/v1/images/generations"] - }, - "stability/sd3-large-turbo": { - "litellm_provider": "stability", - "mode": "image_generation", - "output_cost_per_image": 0.04, - "supported_endpoints": ["/v1/images/generations"] - }, - "stability/sd3-medium": { - "litellm_provider": "stability", - "mode": "image_generation", - "output_cost_per_image": 0.035, - "supported_endpoints": ["/v1/images/generations"] - }, - "stability/sd3.5-large": { - "litellm_provider": "stability", - "mode": "image_generation", - "output_cost_per_image": 0.065, - "supported_endpoints": ["/v1/images/generations"] - }, - "stability/sd3.5-large-turbo": { - "litellm_provider": "stability", - "mode": "image_generation", - "output_cost_per_image": 0.04, - "supported_endpoints": ["/v1/images/generations"] - }, - "stability/sd3.5-medium": { - "litellm_provider": "stability", - "mode": "image_generation", - "output_cost_per_image": 0.035, - "supported_endpoints": ["/v1/images/generations"] - }, - "stability/stable-image-ultra": { - "litellm_provider": "stability", - "mode": "image_generation", - "output_cost_per_image": 0.08, - "supported_endpoints": ["/v1/images/generations"] - }, - "stability/inpaint": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.005, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/outpaint": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.004, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/erase": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.005, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/search-and-replace": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.005, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/search-and-recolor": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.005, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/remove-background": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.005, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/replace-background-and-relight": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.008, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/sketch": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.005, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/structure": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.005, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/style": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.005, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/style-transfer": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.008, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/fast": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.002, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/conservative": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.04, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/creative": { - "litellm_provider": "stability", - "mode": "image_edit", - "output_cost_per_image": 0.06, - "supported_endpoints": ["/v1/images/edits"] - }, - "stability/stable-image-core": { - "litellm_provider": "stability", - "mode": "image_generation", - "output_cost_per_image": 0.03, - "supported_endpoints": ["/v1/images/generations"] - }, - "stability.sd3-5-large-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "image_generation", - "output_cost_per_image": 0.08 - }, - "stability.sd3-large-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "image_generation", - "output_cost_per_image": 0.08 - }, - "stability.stable-image-core-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "image_generation", - "output_cost_per_image": 0.04 - }, - "stability.stable-conservative-upscale-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "mode": "image_edit", - "output_cost_per_image": 0.40 - }, - "stability.stable-creative-upscale-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "mode": "image_edit", - "output_cost_per_image": 0.60 - }, - "stability.stable-fast-upscale-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "mode": "image_edit", - "output_cost_per_image": 0.03 - }, - "stability.stable-outpaint-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "mode": "image_edit", - "output_cost_per_image": 0.06 - }, - "stability.stable-image-control-sketch-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "mode": "image_edit", - "output_cost_per_image": 0.07 - }, - "stability.stable-image-control-structure-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "mode": "image_edit", - "output_cost_per_image": 0.07 - }, - "stability.stable-image-erase-object-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "mode": "image_edit", - "output_cost_per_image": 0.07 - }, - "stability.stable-image-inpaint-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "mode": "image_edit", - "output_cost_per_image": 0.07 - }, - "stability.stable-image-remove-background-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "mode": "image_edit", - "output_cost_per_image": 0.07 - }, - "stability.stable-image-search-recolor-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "mode": "image_edit", - "output_cost_per_image": 0.07 - }, - "stability.stable-image-search-replace-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "mode": "image_edit", - "output_cost_per_image": 0.07 - }, - "stability.stable-image-style-guide-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "mode": "image_edit", - "output_cost_per_image": 0.07 - }, - "stability.stable-style-transfer-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "mode": "image_edit", - "output_cost_per_image": 0.08 - }, - "stability.stable-image-core-v1:1": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "image_generation", - "output_cost_per_image": 0.04 - }, - "stability.stable-image-ultra-v1:0": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "image_generation", - "output_cost_per_image": 0.14 - }, - "stability.stable-image-ultra-v1:1": { - "litellm_provider": "bedrock", - "max_input_tokens": 77, - "max_tokens": 77, - "mode": "image_generation", - "output_cost_per_image": 0.14 - }, - "standard/1024-x-1024/dall-e-3": { - "input_cost_per_pixel": 3.81469e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0 - }, - "standard/1024-x-1792/dall-e-3": { - "input_cost_per_pixel": 4.359e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0 - }, - "standard/1792-x-1024/dall-e-3": { - "input_cost_per_pixel": 4.359e-08, - "litellm_provider": "openai", - "mode": "image_generation", - "output_cost_per_pixel": 0.0 - }, - "linkup/search": { - "input_cost_per_query": 5.87e-03, - "litellm_provider": "linkup", - "mode": "search" - }, - "linkup/search-deep": { - "input_cost_per_query": 58.67e-03, - "litellm_provider": "linkup", - "mode": "search" - }, - "tavily/search": { - "input_cost_per_query": 0.008, - "litellm_provider": "tavily", - "mode": "search" - }, - "tavily/search-advanced": { - "input_cost_per_query": 0.016, - "litellm_provider": "tavily", - "mode": "search" - }, - "text-bison": { - "input_cost_per_character": 2.5e-07, - "litellm_provider": "vertex_ai-text-models", - "max_input_tokens": 8192, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "completion", - "output_cost_per_character": 5e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "text-bison32k": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-text-models", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "text-bison32k@002": { - "input_cost_per_character": 2.5e-07, - "input_cost_per_token": 1.25e-07, - "litellm_provider": "vertex_ai-text-models", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_character": 5e-07, - "output_cost_per_token": 1.25e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "text-bison@001": { - "input_cost_per_character": 2.5e-07, - "litellm_provider": "vertex_ai-text-models", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_character": 5e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "text-bison@002": { - "input_cost_per_character": 2.5e-07, - "litellm_provider": "vertex_ai-text-models", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_character": 5e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "text-completion-codestral/codestral-2405": { - "input_cost_per_token": 0.0, - "litellm_provider": "text-completion-codestral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "completion", - "output_cost_per_token": 0.0, - "source": "https://docs.mistral.ai/capabilities/code_generation/" - }, - "text-completion-codestral/codestral-latest": { - "input_cost_per_token": 0.0, - "litellm_provider": "text-completion-codestral", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "completion", - "output_cost_per_token": 0.0, - "source": "https://docs.mistral.ai/capabilities/code_generation/" - }, - "text-embedding-004": { - "deprecation_date": "2026-01-14", - "input_cost_per_character": 2.5e-08, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 2048, - "max_tokens": 2048, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 768, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models" - }, - "text-embedding-005": { - "input_cost_per_character": 2.5e-08, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 2048, - "max_tokens": 2048, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 768, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models" - }, - "text-embedding-3-large": { - "input_cost_per_token": 1.3e-07, - "input_cost_per_token_batches": 6.5e-08, - "litellm_provider": "openai", - "max_input_tokens": 8191, - "max_tokens": 8191, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_cost_per_token_batches": 0.0, - "output_vector_size": 3072 - }, - "text-embedding-3-small": { - "input_cost_per_token": 2e-08, - "input_cost_per_token_batches": 1e-08, - "litellm_provider": "openai", - "max_input_tokens": 8191, - "max_tokens": 8191, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_cost_per_token_batches": 0.0, - "output_vector_size": 1536 - }, - "text-embedding-ada-002": { - "input_cost_per_token": 1e-07, - "litellm_provider": "openai", - "max_input_tokens": 8191, - "max_tokens": 8191, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 1536 - }, - "text-embedding-ada-002-v2": { - "input_cost_per_token": 1e-07, - "input_cost_per_token_batches": 5e-08, - "litellm_provider": "openai", - "max_input_tokens": 8191, - "max_tokens": 8191, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_cost_per_token_batches": 0.0 - }, - "text-embedding-large-exp-03-07": { - "input_cost_per_character": 2.5e-08, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 3072, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models" - }, - "text-embedding-preview-0409": { - "input_cost_per_token": 6.25e-09, - "input_cost_per_token_batch_requests": 5e-09, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 3072, - "max_tokens": 3072, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 768, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "text-moderation-007": { - "input_cost_per_token": 0.0, - "litellm_provider": "openai", - "max_input_tokens": 32768, - "max_output_tokens": 0, - "max_tokens": 32768, - "mode": "moderation", - "output_cost_per_token": 0.0 - }, - "text-moderation-latest": { - "input_cost_per_token": 0.0, - "litellm_provider": "openai", - "max_input_tokens": 32768, - "max_output_tokens": 0, - "max_tokens": 32768, - "mode": "moderation", - "output_cost_per_token": 0.0 - }, - "text-moderation-stable": { - "input_cost_per_token": 0.0, - "litellm_provider": "openai", - "max_input_tokens": 32768, - "max_output_tokens": 0, - "max_tokens": 32768, - "mode": "moderation", - "output_cost_per_token": 0.0 - }, - "text-multilingual-embedding-002": { - "input_cost_per_character": 2.5e-08, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 2048, - "max_tokens": 2048, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 768, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models" - }, - "text-multilingual-embedding-preview-0409": { - "input_cost_per_token": 6.25e-09, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 3072, - "max_tokens": 3072, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 768, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "text-unicorn": { - "input_cost_per_token": 1e-05, - "litellm_provider": "vertex_ai-text-models", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_token": 2.8e-05, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "text-unicorn@001": { - "input_cost_per_token": 1e-05, - "litellm_provider": "vertex_ai-text-models", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 1024, - "mode": "completion", - "output_cost_per_token": 2.8e-05, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "textembedding-gecko": { - "input_cost_per_character": 2.5e-08, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 3072, - "max_tokens": 3072, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 768, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "textembedding-gecko-multilingual": { - "input_cost_per_character": 2.5e-08, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 3072, - "max_tokens": 3072, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 768, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "textembedding-gecko-multilingual@001": { - "input_cost_per_character": 2.5e-08, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 3072, - "max_tokens": 3072, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 768, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "textembedding-gecko@001": { - "input_cost_per_character": 2.5e-08, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 3072, - "max_tokens": 3072, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 768, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "textembedding-gecko@003": { - "input_cost_per_character": 2.5e-08, - "input_cost_per_token": 1e-07, - "litellm_provider": "vertex_ai-embedding-models", - "max_input_tokens": 3072, - "max_tokens": 3072, - "mode": "embedding", - "output_cost_per_token": 0, - "output_vector_size": 768, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models" - }, - "together-ai-21.1b-41b": { - "input_cost_per_token": 8e-07, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 8e-07 - }, - "together-ai-4.1b-8b": { - "input_cost_per_token": 2e-07, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 2e-07 - }, - "together-ai-41.1b-80b": { - "input_cost_per_token": 9e-07, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 9e-07 - }, - "together-ai-8.1b-21b": { - "input_cost_per_token": 3e-07, - "litellm_provider": "together_ai", - "max_tokens": 1000, - "mode": "chat", - "output_cost_per_token": 3e-07 - }, - "together-ai-81.1b-110b": { - "input_cost_per_token": 1.8e-06, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 1.8e-06 - }, - "together-ai-embedding-151m-to-350m": { - "input_cost_per_token": 1.6e-08, - "litellm_provider": "together_ai", - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "together-ai-embedding-up-to-150m": { - "input_cost_per_token": 8e-09, - "litellm_provider": "together_ai", - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "together_ai/baai/bge-base-en-v1.5": { - "input_cost_per_token": 8e-09, - "litellm_provider": "together_ai", - "max_input_tokens": 512, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 768 - }, - "together_ai/BAAI/bge-base-en-v1.5": { - "input_cost_per_token": 8e-09, - "litellm_provider": "together_ai", - "max_input_tokens": 512, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 768 - }, - "together-ai-up-to-4b": { - "input_cost_per_token": 1e-07, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 1e-07 - }, - "together_ai/Qwen/Qwen2.5-72B-Instruct-Turbo": { - "litellm_provider": "together_ai", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/Qwen/Qwen2.5-7B-Instruct-Turbo": { - "litellm_provider": "together_ai", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/Qwen/Qwen3-235B-A22B-Instruct-2507-tput": { - "input_cost_per_token": 2e-07, - "litellm_provider": "together_ai", - "max_input_tokens": 262000, - "mode": "chat", - "output_cost_per_token": 6e-06, - "source": "https://www.together.ai/models/qwen3-235b-a22b-instruct-2507-fp8", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/Qwen/Qwen3-235B-A22B-Thinking-2507": { - "input_cost_per_token": 6.5e-07, - "litellm_provider": "together_ai", - "max_input_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 3e-06, - "source": "https://www.together.ai/models/qwen3-235b-a22b-thinking-2507", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/Qwen/Qwen3-235B-A22B-fp8-tput": { - "input_cost_per_token": 2e-07, - "litellm_provider": "together_ai", - "max_input_tokens": 40000, - "mode": "chat", - "output_cost_per_token": 6e-07, - "source": "https://www.together.ai/models/qwen3-235b-a22b-fp8-tput", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_tool_choice": false - }, - "together_ai/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8": { - "input_cost_per_token": 2e-06, - "litellm_provider": "together_ai", - "max_input_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 2e-06, - "source": "https://www.together.ai/models/qwen3-coder-480b-a35b-instruct", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/deepseek-ai/DeepSeek-R1": { - "input_cost_per_token": 3e-06, - "litellm_provider": "together_ai", - "max_input_tokens": 128000, - "max_output_tokens": 20480, - "max_tokens": 20480, - "mode": "chat", - "output_cost_per_token": 7e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/deepseek-ai/DeepSeek-R1-0528-tput": { - "input_cost_per_token": 5.5e-07, - "litellm_provider": "together_ai", - "max_input_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2.19e-06, - "source": "https://www.together.ai/models/deepseek-r1-0528-throughput", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/deepseek-ai/DeepSeek-V3": { - "input_cost_per_token": 1.25e-06, - "litellm_provider": "together_ai", - "max_input_tokens": 65536, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.25e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/deepseek-ai/DeepSeek-V3.1": { - "input_cost_per_token": 6e-07, - "litellm_provider": "together_ai", - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.7e-06, - "source": "https://www.together.ai/models/deepseek-v3-1", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "together_ai/meta-llama/Llama-3.2-3B-Instruct-Turbo": { - "litellm_provider": "together_ai", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo": { - "input_cost_per_token": 8.8e-07, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 8.8e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free": { - "input_cost_per_token": 0, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 0, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8": { - "input_cost_per_token": 2.7e-07, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 8.5e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/meta-llama/Llama-4-Scout-17B-16E-Instruct": { - "input_cost_per_token": 1.8e-07, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 5.9e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo": { - "input_cost_per_token": 3.5e-06, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 3.5e-06, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo": { - "input_cost_per_token": 8.8e-07, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 8.8e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo": { - "input_cost_per_token": 1.8e-07, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 1.8e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/mistralai/Mistral-7B-Instruct-v0.1": { - "litellm_provider": "together_ai", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/mistralai/Mistral-Small-24B-Instruct-2501": { - "litellm_provider": "together_ai", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "together_ai/mistralai/Mixtral-8x7B-Instruct-v0.1": { - "input_cost_per_token": 6e-07, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/moonshotai/Kimi-K2-Instruct": { - "input_cost_per_token": 1e-06, - "litellm_provider": "together_ai", - "mode": "chat", - "output_cost_per_token": 3e-06, - "source": "https://www.together.ai/models/kimi-k2-instruct", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/openai/gpt-oss-120b": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "together_ai", - "max_input_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-07, - "source": "https://www.together.ai/models/gpt-oss-120b", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/openai/gpt-oss-20b": { - "input_cost_per_token": 5e-08, - "litellm_provider": "together_ai", - "max_input_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2e-07, - "source": "https://www.together.ai/models/gpt-oss-20b", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/togethercomputer/CodeLlama-34b-Instruct": { - "litellm_provider": "together_ai", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "together_ai/zai-org/GLM-4.5-Air-FP8": { - "input_cost_per_token": 2e-07, - "litellm_provider": "together_ai", - "max_input_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.1e-06, - "source": "https://www.together.ai/models/glm-4-5-air", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/zai-org/GLM-4.6": { - "input_cost_per_token": 0.6e-06, - "litellm_provider": "together_ai", - "max_input_tokens": 200000, - "max_output_tokens": 200000, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 2.2e-06, - "source": "https://www.together.ai/models/glm-4-6", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "together_ai/moonshotai/Kimi-K2-Instruct-0905": { - "input_cost_per_token": 1e-06, - "litellm_provider": "together_ai", - "max_input_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 3e-06, - "source": "https://www.together.ai/models/kimi-k2-0905", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "together_ai/Qwen/Qwen3-Next-80B-A3B-Instruct": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "together_ai", - "max_input_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "source": "https://www.together.ai/models/qwen3-next-80b-a3b-instruct", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "together_ai/Qwen/Qwen3-Next-80B-A3B-Thinking": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "together_ai", - "max_input_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "source": "https://www.together.ai/models/qwen3-next-80b-a3b-thinking", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "tts-1": { - "input_cost_per_character": 1.5e-05, - "litellm_provider": "openai", - "mode": "audio_speech", - "supported_endpoints": [ - "/v1/audio/speech" - ] - }, - "tts-1-hd": { - "input_cost_per_character": 3e-05, - "litellm_provider": "openai", - "mode": "audio_speech", - "supported_endpoints": [ - "/v1/audio/speech" - ] - }, - "aws_polly/standard": { - "input_cost_per_character": 4e-06, - "litellm_provider": "aws_polly", - "mode": "audio_speech", - "supported_endpoints": [ - "/v1/audio/speech" - ], - "source": "https://aws.amazon.com/polly/pricing/" - }, - "aws_polly/neural": { - "input_cost_per_character": 1.6e-05, - "litellm_provider": "aws_polly", - "mode": "audio_speech", - "supported_endpoints": [ - "/v1/audio/speech" - ], - "source": "https://aws.amazon.com/polly/pricing/" - }, - "aws_polly/long-form": { - "input_cost_per_character": 1e-04, - "litellm_provider": "aws_polly", - "mode": "audio_speech", - "supported_endpoints": [ - "/v1/audio/speech" - ], - "source": "https://aws.amazon.com/polly/pricing/" - }, - "aws_polly/generative": { - "input_cost_per_character": 3e-05, - "litellm_provider": "aws_polly", - "mode": "audio_speech", - "supported_endpoints": [ - "/v1/audio/speech" - ], - "source": "https://aws.amazon.com/polly/pricing/" - }, - "us.amazon.nova-lite-v1:0": { - "input_cost_per_token": 6e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 300000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 2.4e-07, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_vision": true - }, - "us.amazon.nova-micro-v1:0": { - "input_cost_per_token": 3.5e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 1.4e-07, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true - }, - "us.amazon.nova-premier-v1:0": { - "input_cost_per_token": 2.5e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 1.25e-05, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": false, - "supports_response_schema": true, - "supports_vision": true - }, - "us.amazon.nova-pro-v1:0": { - "input_cost_per_token": 8e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 300000, - "max_output_tokens": 10000, - "max_tokens": 10000, - "mode": "chat", - "output_cost_per_token": 3.2e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_vision": true - }, - "us.anthropic.claude-3-5-haiku-20241022-v1:0": { - "cache_creation_input_token_cost": 1e-06, - "cache_read_input_token_cost": 8e-08, - "input_cost_per_token": 8e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 4e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "us.anthropic.claude-haiku-4-5-20251001-v1:0": { - "cache_creation_input_token_cost": 1.375e-06, - "cache_read_input_token_cost": 1.1e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 5.5e-06, - "source": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock", - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "us.anthropic.claude-3-5-sonnet-20240620-v1:0": { - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "us.anthropic.claude-3-5-sonnet-20241022-v2:0": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "us.anthropic.claude-3-7-sonnet-20250219-v1:0": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "us.anthropic.claude-3-haiku-20240307-v1:0": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.25e-06, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "us.anthropic.claude-3-opus-20240229-v1:0": { - "input_cost_per_token": 1.5e-05, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "us.anthropic.claude-3-sonnet-20240229-v1:0": { - "input_cost_per_token": 3e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "us.anthropic.claude-opus-4-1-20250805-v1:0": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "us.anthropic.claude-sonnet-4-5-20250929-v1:0": { - "cache_creation_input_token_cost": 4.125e-06, - "cache_read_input_token_cost": 3.3e-07, - "input_cost_per_token": 3.3e-06, - "input_cost_per_token_above_200k_tokens": 6.6e-06, - "output_cost_per_token_above_200k_tokens": 2.475e-05, - "cache_creation_input_token_cost_above_200k_tokens": 8.25e-06, - "cache_read_input_token_cost_above_200k_tokens": 6.6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.65e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "au.anthropic.claude-haiku-4-5-20251001-v1:0": { - "cache_creation_input_token_cost": 1.375e-06, - "cache_read_input_token_cost": 1.1e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 5.5e-06, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 346 - }, - "us.anthropic.claude-opus-4-20250514-v1:0": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "us.anthropic.claude-opus-4-5-20251101-v1:0": { - "cache_creation_input_token_cost": 6.25e-06, - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 5e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 2.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "global.anthropic.claude-opus-4-5-20251101-v1:0": { - "cache_creation_input_token_cost": 6.25e-06, - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 5e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 2.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "eu.anthropic.claude-opus-4-5-20251101-v1:0": { - "cache_creation_input_token_cost": 6.25e-06, - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 5e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 2.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "us.anthropic.claude-sonnet-4-20250514-v1:0": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "us.deepseek.r1-v1:0": { - "input_cost_per_token": 1.35e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 5.4e-06, - "supports_function_calling": false, - "supports_reasoning": true, - "supports_tool_choice": false - }, - "us.meta.llama3-1-405b-instruct-v1:0": { - "input_cost_per_token": 5.32e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.6e-05, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "us.meta.llama3-1-70b-instruct-v1:0": { - "input_cost_per_token": 9.9e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 9.9e-07, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "us.meta.llama3-1-8b-instruct-v1:0": { - "input_cost_per_token": 2.2e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2.2e-07, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "us.meta.llama3-2-11b-instruct-v1:0": { - "input_cost_per_token": 3.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 3.5e-07, - "supports_function_calling": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "us.meta.llama3-2-1b-instruct-v1:0": { - "input_cost_per_token": 1e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-07, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "us.meta.llama3-2-3b-instruct-v1:0": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "us.meta.llama3-2-90b-instruct-v1:0": { - "input_cost_per_token": 2e-06, - "litellm_provider": "bedrock", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_function_calling": true, - "supports_tool_choice": false, - "supports_vision": true - }, - "us.meta.llama3-3-70b-instruct-v1:0": { - "input_cost_per_token": 7.2e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 7.2e-07, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "us.meta.llama4-maverick-17b-instruct-v1:0": { - "input_cost_per_token": 2.4e-07, - "input_cost_per_token_batches": 1.2e-07, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 9.7e-07, - "output_cost_per_token_batches": 4.85e-07, - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "code" - ], - "supports_function_calling": true, - "supports_tool_choice": false - }, - "us.meta.llama4-scout-17b-instruct-v1:0": { - "input_cost_per_token": 1.7e-07, - "input_cost_per_token_batches": 8.5e-08, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6.6e-07, - "output_cost_per_token_batches": 3.3e-07, - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "code" - ], - "supports_function_calling": true, - "supports_tool_choice": false - }, - "us.mistral.pixtral-large-2502-v1:0": { - "input_cost_per_token": 2e-06, - "litellm_provider": "bedrock_converse", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_function_calling": true, - "supports_tool_choice": false - }, - "v0/v0-1.0-md": { - "input_cost_per_token": 3e-06, - "litellm_provider": "v0", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "v0/v0-1.5-lg": { - "input_cost_per_token": 1.5e-05, - "litellm_provider": "v0", - "max_input_tokens": 512000, - "max_output_tokens": 512000, - "max_tokens": 512000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "v0/v0-1.5-md": { - "input_cost_per_token": 3e-06, - "litellm_provider": "v0", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vercel_ai_gateway/alibaba/qwen-3-14b": { - "input_cost_per_token": 8e-08, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 40960, - "max_output_tokens": 16384, - "max_tokens": 40960, - "mode": "chat", - "output_cost_per_token": 2.4e-07 - }, - "vercel_ai_gateway/alibaba/qwen-3-235b": { - "input_cost_per_token": 2e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 40960, - "max_output_tokens": 16384, - "max_tokens": 40960, - "mode": "chat", - "output_cost_per_token": 6e-07 - }, - "vercel_ai_gateway/alibaba/qwen-3-30b": { - "input_cost_per_token": 1e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 40960, - "max_output_tokens": 16384, - "max_tokens": 40960, - "mode": "chat", - "output_cost_per_token": 3e-07 - }, - "vercel_ai_gateway/alibaba/qwen-3-32b": { - "input_cost_per_token": 1e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 40960, - "max_output_tokens": 16384, - "max_tokens": 40960, - "mode": "chat", - "output_cost_per_token": 3e-07 - }, - "vercel_ai_gateway/alibaba/qwen3-coder": { - "input_cost_per_token": 4e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 262144, - "max_output_tokens": 66536, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 1.6e-06 - }, - "vercel_ai_gateway/amazon/nova-lite": { - "input_cost_per_token": 6e-08, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 300000, - "max_output_tokens": 8192, - "max_tokens": 300000, - "mode": "chat", - "output_cost_per_token": 2.4e-07 - }, - "vercel_ai_gateway/amazon/nova-micro": { - "input_cost_per_token": 3.5e-08, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.4e-07 - }, - "vercel_ai_gateway/amazon/nova-pro": { - "input_cost_per_token": 8e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 300000, - "max_output_tokens": 8192, - "max_tokens": 300000, - "mode": "chat", - "output_cost_per_token": 3.2e-06 - }, - "vercel_ai_gateway/amazon/titan-embed-text-v2": { - "input_cost_per_token": 2e-08, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 0, - "max_output_tokens": 0, - "max_tokens": 0, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "vercel_ai_gateway/anthropic/claude-3-haiku": { - "cache_creation_input_token_cost": 3e-07, - "cache_read_input_token_cost": 3e-08, - "input_cost_per_token": 2.5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 1.25e-06 - }, - "vercel_ai_gateway/anthropic/claude-3-opus": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 7.5e-05 - }, - "vercel_ai_gateway/anthropic/claude-3.5-haiku": { - "cache_creation_input_token_cost": 1e-06, - "cache_read_input_token_cost": 8e-08, - "input_cost_per_token": 8e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 4e-06 - }, - "vercel_ai_gateway/anthropic/claude-3.5-sonnet": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 1.5e-05 - }, - "vercel_ai_gateway/anthropic/claude-3.7-sonnet": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 1.5e-05 - }, - "vercel_ai_gateway/anthropic/claude-4-opus": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 7.5e-05 - }, - "vercel_ai_gateway/anthropic/claude-4-sonnet": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 1.5e-05 - }, - "vercel_ai_gateway/cohere/command-a": { - "input_cost_per_token": 2.5e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 256000, - "max_output_tokens": 8000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 1e-05 - }, - "vercel_ai_gateway/cohere/command-r": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-07 - }, - "vercel_ai_gateway/cohere/command-r-plus": { - "input_cost_per_token": 2.5e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05 - }, - "vercel_ai_gateway/cohere/embed-v4.0": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 0, - "max_output_tokens": 0, - "max_tokens": 0, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "vercel_ai_gateway/deepseek/deepseek-r1": { - "input_cost_per_token": 5.5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2.19e-06 - }, - "vercel_ai_gateway/deepseek/deepseek-r1-distill-llama-70b": { - "input_cost_per_token": 7.5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 9.9e-07 - }, - "vercel_ai_gateway/deepseek/deepseek-v3": { - "input_cost_per_token": 9e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 9e-07 - }, - "vercel_ai_gateway/google/gemini-2.0-flash": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_tokens": 1048576, - "mode": "chat", - "output_cost_per_token": 6e-07 - }, - "vercel_ai_gateway/google/gemini-2.0-flash-lite": { - "input_cost_per_token": 7.5e-08, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 1048576, - "max_output_tokens": 8192, - "max_tokens": 1048576, - "mode": "chat", - "output_cost_per_token": 3e-07 - }, - "vercel_ai_gateway/google/gemini-2.5-flash": { - "input_cost_per_token": 3e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 1000000, - "max_output_tokens": 65536, - "max_tokens": 1000000, - "mode": "chat", - "output_cost_per_token": 2.5e-06 - }, - "vercel_ai_gateway/google/gemini-2.5-pro": { - "input_cost_per_token": 2.5e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 1048576, - "max_output_tokens": 65536, - "max_tokens": 1048576, - "mode": "chat", - "output_cost_per_token": 1e-05 - }, - "vercel_ai_gateway/google/gemini-embedding-001": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 0, - "max_output_tokens": 0, - "max_tokens": 0, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "vercel_ai_gateway/google/gemma-2-9b": { - "input_cost_per_token": 2e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2e-07 - }, - "vercel_ai_gateway/google/text-embedding-005": { - "input_cost_per_token": 2.5e-08, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 0, - "max_output_tokens": 0, - "max_tokens": 0, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "vercel_ai_gateway/google/text-multilingual-embedding-002": { - "input_cost_per_token": 2.5e-08, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 0, - "max_output_tokens": 0, - "max_tokens": 0, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "vercel_ai_gateway/inception/mercury-coder-small": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 32000, - "max_output_tokens": 16384, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 1e-06 - }, - "vercel_ai_gateway/meta/llama-3-70b": { - "input_cost_per_token": 5.9e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 7.9e-07 - }, - "vercel_ai_gateway/meta/llama-3-8b": { - "input_cost_per_token": 5e-08, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 8e-08 - }, - "vercel_ai_gateway/meta/llama-3.1-70b": { - "input_cost_per_token": 7.2e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 7.2e-07 - }, - "vercel_ai_gateway/meta/llama-3.1-8b": { - "input_cost_per_token": 5e-08, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 131000, - "max_output_tokens": 131072, - "max_tokens": 131000, - "mode": "chat", - "output_cost_per_token": 8e-08 - }, - "vercel_ai_gateway/meta/llama-3.2-11b": { - "input_cost_per_token": 1.6e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.6e-07 - }, - "vercel_ai_gateway/meta/llama-3.2-1b": { - "input_cost_per_token": 1e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-07 - }, - "vercel_ai_gateway/meta/llama-3.2-3b": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-07 - }, - "vercel_ai_gateway/meta/llama-3.2-90b": { - "input_cost_per_token": 7.2e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 7.2e-07 - }, - "vercel_ai_gateway/meta/llama-3.3-70b": { - "input_cost_per_token": 7.2e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 7.2e-07 - }, - "vercel_ai_gateway/meta/llama-4-maverick": { - "input_cost_per_token": 2e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 131072, - "max_output_tokens": 8192, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 6e-07 - }, - "vercel_ai_gateway/meta/llama-4-scout": { - "input_cost_per_token": 1e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 131072, - "max_output_tokens": 8192, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 3e-07 - }, - "vercel_ai_gateway/mistral/codestral": { - "input_cost_per_token": 3e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 256000, - "max_output_tokens": 4000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 9e-07 - }, - "vercel_ai_gateway/mistral/codestral-embed": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 0, - "max_output_tokens": 0, - "max_tokens": 0, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "vercel_ai_gateway/mistral/devstral-small": { - "input_cost_per_token": 7e-08, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 2.8e-07 - }, - "vercel_ai_gateway/mistral/magistral-medium": { - "input_cost_per_token": 2e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 5e-06 - }, - "vercel_ai_gateway/mistral/magistral-small": { - "input_cost_per_token": 5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-06 - }, - "vercel_ai_gateway/mistral/ministral-3b": { - "input_cost_per_token": 4e-08, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 4000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 4e-08 - }, - "vercel_ai_gateway/mistral/ministral-8b": { - "input_cost_per_token": 1e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 4000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-07 - }, - "vercel_ai_gateway/mistral/mistral-embed": { - "input_cost_per_token": 1e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 0, - "max_output_tokens": 0, - "max_tokens": 0, - "mode": "chat", - "output_cost_per_token": 0.0 - }, - "vercel_ai_gateway/mistral/mistral-large": { - "input_cost_per_token": 2e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 32000, - "max_output_tokens": 4000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 6e-06 - }, - "vercel_ai_gateway/mistral/mistral-saba-24b": { - "input_cost_per_token": 7.9e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 7.9e-07 - }, - "vercel_ai_gateway/mistral/mistral-small": { - "input_cost_per_token": 1e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 32000, - "max_output_tokens": 4000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 3e-07 - }, - "vercel_ai_gateway/mistral/mixtral-8x22b-instruct": { - "input_cost_per_token": 1.2e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 65536, - "max_output_tokens": 2048, - "max_tokens": 65536, - "mode": "chat", - "output_cost_per_token": 1.2e-06 - }, - "vercel_ai_gateway/mistral/pixtral-12b": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 4000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-07 - }, - "vercel_ai_gateway/mistral/pixtral-large": { - "input_cost_per_token": 2e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 4000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-06 - }, - "vercel_ai_gateway/moonshotai/kimi-k2": { - "input_cost_per_token": 5.5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 131072, - "max_output_tokens": 16384, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.2e-06 - }, - "vercel_ai_gateway/morph/morph-v3-fast": { - "input_cost_per_token": 8e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 32768, - "max_output_tokens": 16384, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1.2e-06 - }, - "vercel_ai_gateway/morph/morph-v3-large": { - "input_cost_per_token": 9e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 32768, - "max_output_tokens": 16384, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1.9e-06 - }, - "vercel_ai_gateway/openai/gpt-3.5-turbo": { - "input_cost_per_token": 5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 16385, - "max_output_tokens": 4096, - "max_tokens": 16385, - "mode": "chat", - "output_cost_per_token": 1.5e-06 - }, - "vercel_ai_gateway/openai/gpt-3.5-turbo-instruct": { - "input_cost_per_token": 1.5e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2e-06 - }, - "vercel_ai_gateway/openai/gpt-4-turbo": { - "input_cost_per_token": 1e-05, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 3e-05 - }, - "vercel_ai_gateway/openai/gpt-4.1": { - "cache_creation_input_token_cost": 0.0, - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 2e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 1047576, - "mode": "chat", - "output_cost_per_token": 8e-06 - }, - "vercel_ai_gateway/openai/gpt-4.1-mini": { - "cache_creation_input_token_cost": 0.0, - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 4e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 1047576, - "mode": "chat", - "output_cost_per_token": 1.6e-06 - }, - "vercel_ai_gateway/openai/gpt-4.1-nano": { - "cache_creation_input_token_cost": 0.0, - "cache_read_input_token_cost": 2.5e-08, - "input_cost_per_token": 1e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 1047576, - "max_output_tokens": 32768, - "max_tokens": 1047576, - "mode": "chat", - "output_cost_per_token": 4e-07 - }, - "vercel_ai_gateway/openai/gpt-4o": { - "cache_creation_input_token_cost": 0.0, - "cache_read_input_token_cost": 1.25e-06, - "input_cost_per_token": 2.5e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1e-05 - }, - "vercel_ai_gateway/openai/gpt-4o-mini": { - "cache_creation_input_token_cost": 0.0, - "cache_read_input_token_cost": 7.5e-08, - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-07 - }, - "vercel_ai_gateway/openai/o1": { - "cache_creation_input_token_cost": 0.0, - "cache_read_input_token_cost": 7.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 6e-05 - }, - "vercel_ai_gateway/openai/o3": { - "cache_creation_input_token_cost": 0.0, - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 2e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 8e-06 - }, - "vercel_ai_gateway/openai/o3-mini": { - "cache_creation_input_token_cost": 0.0, - "cache_read_input_token_cost": 5.5e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 4.4e-06 - }, - "vercel_ai_gateway/openai/o4-mini": { - "cache_creation_input_token_cost": 0.0, - "cache_read_input_token_cost": 2.75e-07, - "input_cost_per_token": 1.1e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 200000, - "max_output_tokens": 100000, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 4.4e-06 - }, - "vercel_ai_gateway/openai/text-embedding-3-large": { - "input_cost_per_token": 1.3e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 0, - "max_output_tokens": 0, - "max_tokens": 0, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "vercel_ai_gateway/openai/text-embedding-3-small": { - "input_cost_per_token": 2e-08, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 0, - "max_output_tokens": 0, - "max_tokens": 0, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "vercel_ai_gateway/openai/text-embedding-ada-002": { - "input_cost_per_token": 1e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 0, - "max_output_tokens": 0, - "max_tokens": 0, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "vercel_ai_gateway/perplexity/sonar": { - "input_cost_per_token": 1e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 127000, - "max_output_tokens": 8000, - "max_tokens": 127000, - "mode": "chat", - "output_cost_per_token": 1e-06 - }, - "vercel_ai_gateway/perplexity/sonar-pro": { - "input_cost_per_token": 3e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 200000, - "max_output_tokens": 8000, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 1.5e-05 - }, - "vercel_ai_gateway/perplexity/sonar-reasoning": { - "input_cost_per_token": 1e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 127000, - "max_output_tokens": 8000, - "max_tokens": 127000, - "mode": "chat", - "output_cost_per_token": 5e-06 - }, - "vercel_ai_gateway/perplexity/sonar-reasoning-pro": { - "input_cost_per_token": 2e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 127000, - "max_output_tokens": 8000, - "max_tokens": 127000, - "mode": "chat", - "output_cost_per_token": 8e-06 - }, - "vercel_ai_gateway/vercel/v0-1.0-md": { - "input_cost_per_token": 3e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 32000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-05 - }, - "vercel_ai_gateway/vercel/v0-1.5-md": { - "input_cost_per_token": 3e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 32768, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-05 - }, - "vercel_ai_gateway/xai/grok-2": { - "input_cost_per_token": 2e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 131072, - "max_output_tokens": 4000, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1e-05 - }, - "vercel_ai_gateway/xai/grok-2-vision": { - "input_cost_per_token": 2e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1e-05 - }, - "vercel_ai_gateway/xai/grok-3": { - "input_cost_per_token": 3e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.5e-05 - }, - "vercel_ai_gateway/xai/grok-3-fast": { - "input_cost_per_token": 5e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.5e-05 - }, - "vercel_ai_gateway/xai/grok-3-mini": { - "input_cost_per_token": 3e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 5e-07 - }, - "vercel_ai_gateway/xai/grok-3-mini-fast": { - "input_cost_per_token": 6e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 4e-06 - }, - "vercel_ai_gateway/xai/grok-4": { - "input_cost_per_token": 3e-06, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 1.5e-05 - }, - "vercel_ai_gateway/zai/glm-4.5": { - "input_cost_per_token": 6e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.2e-06 - }, - "vercel_ai_gateway/zai/glm-4.5-air": { - "input_cost_per_token": 2e-07, - "litellm_provider": "vercel_ai_gateway", - "max_input_tokens": 128000, - "max_output_tokens": 96000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.1e-06 - }, - "vercel_ai_gateway/zai/glm-4.6": { - "litellm_provider": "vercel_ai_gateway", - "cache_read_input_token_cost": 1.1e-07, - "input_cost_per_token": 4.5e-07, - "max_input_tokens": 200000, - "max_output_tokens": 200000, - "max_tokens": 200000, - "mode": "chat", - "output_cost_per_token": 1.8e-06, - "source": "https://vercel.com/ai-gateway/models/glm-4.6", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/chirp": { - "input_cost_per_character": 30e-06, - "litellm_provider": "vertex_ai", - "mode": "audio_speech", - "source": "https://cloud.google.com/text-to-speech/pricing", - "supported_endpoints": [ - "/v1/audio/speech" - ] - }, - "vertex_ai/claude-3-5-haiku": { - "input_cost_per_token": 1e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 5e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_tool_choice": true - }, - "vertex_ai/claude-3-5-haiku@20241022": { - "input_cost_per_token": 1e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 5e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_tool_choice": true - }, - "vertex_ai/claude-haiku-4-5@20251001": { - "cache_creation_input_token_cost": 1.25e-06, - "cache_read_input_token_cost": 1e-07, - "input_cost_per_token": 1e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 5e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude/haiku-4-5", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true - }, - "vertex_ai/claude-3-5-sonnet": { - "input_cost_per_token": 3e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-3-5-sonnet-v2": { - "input_cost_per_token": 3e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-3-5-sonnet-v2@20241022": { - "input_cost_per_token": 3e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-3-5-sonnet@20240620": { - "input_cost_per_token": 3e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-3-7-sonnet@20250219": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "deprecation_date": "2025-06-01", - "input_cost_per_token": 3e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "vertex_ai/claude-3-haiku": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.25e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-3-haiku@20240307": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.25e-06, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-3-opus": { - "input_cost_per_token": 1.5e-05, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-3-opus@20240229": { - "input_cost_per_token": 1.5e-05, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-3-sonnet": { - "input_cost_per_token": 3e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-3-sonnet@20240229": { - "input_cost_per_token": 3e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-opus-4": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "vertex_ai/claude-opus-4-1": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "input_cost_per_token_batches": 7.5e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "output_cost_per_token_batches": 3.75e-05, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-opus-4-1@20250805": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "input_cost_per_token_batches": 7.5e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "output_cost_per_token_batches": 3.75e-05, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-opus-4-5": { - "cache_creation_input_token_cost": 6.25e-06, - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 5e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 2.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "vertex_ai/claude-opus-4-5@20251101": { - "cache_creation_input_token_cost": 6.25e-06, - "cache_read_input_token_cost": 5e-07, - "input_cost_per_token": 5e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 2.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "vertex_ai/claude-sonnet-4-5": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "input_cost_per_token_batches": 1.5e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "output_cost_per_token_batches": 7.5e-06, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-sonnet-4-5@20250929": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "input_cost_per_token_batches": 1.5e-06, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "output_cost_per_token_batches": 7.5e-06, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-opus-4@20250514": { - "cache_creation_input_token_cost": 1.875e-05, - "cache_read_input_token_cost": 1.5e-06, - "input_cost_per_token": 1.5e-05, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 7.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "vertex_ai/claude-sonnet-4": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "vertex_ai/claude-sonnet-4@20250514": { - "cache_creation_input_token_cost": 3.75e-06, - "cache_read_input_token_cost": 3e-07, - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 2.25e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, - "supports_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "tool_use_system_prompt_tokens": 159 - }, - "vertex_ai/mistralai/codestral-2@001": { - "input_cost_per_token": 3e-07, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 9e-07, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/codestral-2": { - "input_cost_per_token": 3e-07, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 9e-07, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/codestral-2@001": { - "input_cost_per_token": 3e-07, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 9e-07, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/mistralai/codestral-2": { - "input_cost_per_token": 3e-07, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 9e-07, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/codestral-2501": { - "input_cost_per_token": 2e-07, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/codestral@2405": { - "input_cost_per_token": 2e-07, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/codestral@latest": { - "input_cost_per_token": 2e-07, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/deepseek-ai/deepseek-v3.1-maas": { - "input_cost_per_token": 1.35e-06, - "litellm_provider": "vertex_ai-deepseek_models", - "max_input_tokens": 163840, - "max_output_tokens": 32768, - "max_tokens": 163840, - "mode": "chat", - "output_cost_per_token": 5.4e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", - "supported_regions": [ - "us-west2" - ], - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "vertex_ai/deepseek-ai/deepseek-v3.2-maas": { - "input_cost_per_token": 5.6e-07, - "input_cost_per_token_batches": 2.8e-07, - "litellm_provider": "vertex_ai-deepseek_models", - "max_input_tokens": 163840, - "max_output_tokens": 32768, - "max_tokens": 163840, - "mode": "chat", - "output_cost_per_token": 1.68e-06, - "output_cost_per_token_batches": 8.4e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", - "supported_regions": [ - "us-west2" - ], - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "vertex_ai/deepseek-ai/deepseek-r1-0528-maas": { - "input_cost_per_token": 1.35e-06, - "litellm_provider": "vertex_ai-deepseek_models", - "max_input_tokens": 65336, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 5.4e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "vertex_ai/gemini-2.5-flash-image": { - "cache_read_input_token_cost": 3e-08, - "input_cost_per_audio_token": 1e-06, - "input_cost_per_token": 3e-07, - "litellm_provider": "vertex_ai-language-models", - "max_audio_length_hours": 8.4, - "max_audio_per_prompt": 1, - "max_images_per_prompt": 3000, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "max_pdf_size_mb": 30, - "max_video_length": 1, - "max_videos_per_prompt": 10, - "mode": "image_generation", - "output_cost_per_image": 0.039, - "output_cost_per_image_token": 3e-05, - "output_cost_per_reasoning_token": 2.5e-06, - "output_cost_per_token": 2.5e-06, - "rpm": 100000, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/image-generation#edit-an-image", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/completions", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "image", - "audio", - "video" - ], - "supported_output_modalities": [ - "text", - "image" - ], - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_url_context": true, - "supports_vision": true, - "supports_web_search": false, - "tpm": 8000000 - }, - "vertex_ai/gemini-3-pro-image-preview": { - "input_cost_per_image": 0.0011, - "input_cost_per_token": 2e-06, - "input_cost_per_token_batches": 1e-06, - "litellm_provider": "vertex_ai-language-models", - "max_input_tokens": 65536, - "max_output_tokens": 32768, - "max_tokens": 65536, - "mode": "image_generation", - "output_cost_per_image": 0.134, - "output_cost_per_image_token": 1.2e-04, - "output_cost_per_token": 1.2e-05, - "output_cost_per_token_batches": 6e-06, - "source": "https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-pro-image" - }, - "vertex_ai/imagegeneration@006": { - "litellm_provider": "vertex_ai-image-models", - "mode": "image_generation", - "output_cost_per_image": 0.02, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "vertex_ai/imagen-3.0-fast-generate-001": { - "litellm_provider": "vertex_ai-image-models", - "mode": "image_generation", - "output_cost_per_image": 0.02, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "vertex_ai/imagen-3.0-generate-001": { - "litellm_provider": "vertex_ai-image-models", - "mode": "image_generation", - "output_cost_per_image": 0.04, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "vertex_ai/imagen-3.0-generate-002": { - "deprecation_date": "2025-11-10", - "litellm_provider": "vertex_ai-image-models", - "mode": "image_generation", - "output_cost_per_image": 0.04, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "vertex_ai/imagen-3.0-capability-001": { - "litellm_provider": "vertex_ai-image-models", - "mode": "image_generation", - "output_cost_per_image": 0.04, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/image/edit-insert-objects" - }, - "vertex_ai/imagen-4.0-fast-generate-001": { - "litellm_provider": "vertex_ai-image-models", - "mode": "image_generation", - "output_cost_per_image": 0.02, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "vertex_ai/imagen-4.0-generate-001": { - "litellm_provider": "vertex_ai-image-models", - "mode": "image_generation", - "output_cost_per_image": 0.04, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "vertex_ai/imagen-4.0-ultra-generate-001": { - "litellm_provider": "vertex_ai-image-models", - "mode": "image_generation", - "output_cost_per_image": 0.06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" - }, - "vertex_ai/jamba-1.5": { - "input_cost_per_token": 2e-07, - "litellm_provider": "vertex_ai-ai21_models", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_tool_choice": true - }, - "vertex_ai/jamba-1.5-large": { - "input_cost_per_token": 2e-06, - "litellm_provider": "vertex_ai-ai21_models", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 8e-06, - "supports_tool_choice": true - }, - "vertex_ai/jamba-1.5-large@001": { - "input_cost_per_token": 2e-06, - "litellm_provider": "vertex_ai-ai21_models", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 8e-06, - "supports_tool_choice": true - }, - "vertex_ai/jamba-1.5-mini": { - "input_cost_per_token": 2e-07, - "litellm_provider": "vertex_ai-ai21_models", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_tool_choice": true - }, - "vertex_ai/jamba-1.5-mini@001": { - "input_cost_per_token": 2e-07, - "litellm_provider": "vertex_ai-ai21_models", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 4e-07, - "supports_tool_choice": true - }, - "vertex_ai/meta/llama-3.1-405b-instruct-maas": { - "input_cost_per_token": 5e-06, - "litellm_provider": "vertex_ai-llama_models", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.6e-05, - "source": "https://console.cloud.google.com/vertex-ai/publishers/meta/model-garden/llama-3.2-90b-vision-instruct-maas", - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/meta/llama-3.1-70b-instruct-maas": { - "input_cost_per_token": 0.0, - "litellm_provider": "vertex_ai-llama_models", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://console.cloud.google.com/vertex-ai/publishers/meta/model-garden/llama-3.2-90b-vision-instruct-maas", - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/meta/llama-3.1-8b-instruct-maas": { - "input_cost_per_token": 0.0, - "litellm_provider": "vertex_ai-llama_models", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 128000, - "metadata": { - "notes": "VertexAI states that The Llama 3.1 API service for llama-3.1-70b-instruct-maas and llama-3.1-8b-instruct-maas are in public preview and at no cost." - }, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://console.cloud.google.com/vertex-ai/publishers/meta/model-garden/llama-3.2-90b-vision-instruct-maas", - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/meta/llama-3.2-90b-vision-instruct-maas": { - "input_cost_per_token": 0.0, - "litellm_provider": "vertex_ai-llama_models", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 128000, - "metadata": { - "notes": "VertexAI states that The Llama 3.2 API service is at no cost during public preview, and will be priced as per dollar-per-1M-tokens at GA." - }, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://console.cloud.google.com/vertex-ai/publishers/meta/model-garden/llama-3.2-90b-vision-instruct-maas", - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/meta/llama-4-maverick-17b-128e-instruct-maas": { - "input_cost_per_token": 3.5e-07, - "litellm_provider": "vertex_ai-llama_models", - "max_input_tokens": 1000000, - "max_output_tokens": 1000000, - "max_tokens": 1000000, - "mode": "chat", - "output_cost_per_token": 1.15e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "code" - ], - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/meta/llama-4-maverick-17b-16e-instruct-maas": { - "input_cost_per_token": 3.5e-07, - "litellm_provider": "vertex_ai-llama_models", - "max_input_tokens": 1000000, - "max_output_tokens": 1000000, - "max_tokens": 1000000, - "mode": "chat", - "output_cost_per_token": 1.15e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "code" - ], - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/meta/llama-4-scout-17b-128e-instruct-maas": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "vertex_ai-llama_models", - "max_input_tokens": 10000000, - "max_output_tokens": 10000000, - "max_tokens": 10000000, - "mode": "chat", - "output_cost_per_token": 7e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "code" - ], - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/meta/llama-4-scout-17b-16e-instruct-maas": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "vertex_ai-llama_models", - "max_input_tokens": 10000000, - "max_output_tokens": 10000000, - "max_tokens": 10000000, - "mode": "chat", - "output_cost_per_token": 7e-07, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text", - "code" - ], - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/meta/llama3-405b-instruct-maas": { - "input_cost_per_token": 0.0, - "litellm_provider": "vertex_ai-llama_models", - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", - "supports_tool_choice": true - }, - "vertex_ai/meta/llama3-70b-instruct-maas": { - "input_cost_per_token": 0.0, - "litellm_provider": "vertex_ai-llama_models", - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", - "supports_tool_choice": true - }, - "vertex_ai/meta/llama3-8b-instruct-maas": { - "input_cost_per_token": 0.0, - "litellm_provider": "vertex_ai-llama_models", - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 0.0, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", - "supports_tool_choice": true - }, - "vertex_ai/minimaxai/minimax-m2-maas": { - "input_cost_per_token": 3e-07, - "litellm_provider": "vertex_ai-minimax_models", - "max_input_tokens": 196608, - "max_output_tokens": 196608, - "max_tokens": 196608, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/moonshotai/kimi-k2-thinking-maas": { - "input_cost_per_token": 6e-07, - "litellm_provider": "vertex_ai-moonshot_models", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 2.5e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "vertex_ai/mistral-medium-3": { - "input_cost_per_token": 4e-07, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/mistral-medium-3@001": { - "input_cost_per_token": 4e-07, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/mistralai/mistral-medium-3": { - "input_cost_per_token": 4e-07, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/mistralai/mistral-medium-3@001": { - "input_cost_per_token": 4e-07, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 2e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/mistral-large-2411": { - "input_cost_per_token": 2e-06, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/mistral-large@2407": { - "input_cost_per_token": 2e-06, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/mistral-large@2411-001": { - "input_cost_per_token": 2e-06, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/mistral-large@latest": { - "input_cost_per_token": 2e-06, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 6e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/mistral-nemo@2407": { - "input_cost_per_token": 3e-06, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 3e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/mistral-nemo@latest": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 1.5e-07, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/mistral-small-2503": { - "input_cost_per_token": 1e-06, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 3e-06, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/mistral-small-2503@001": { - "input_cost_per_token": 1e-06, - "litellm_provider": "vertex_ai-mistral_models", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 3e-06, - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/mistral-ocr-2505": { - "litellm_provider": "vertex_ai", - "mode": "ocr", - "ocr_cost_per_page": 5e-4, - "supported_endpoints": [ - "/v1/ocr" - ], - "source": "https://cloud.google.com/generative-ai-app-builder/pricing" - }, - "vertex_ai/deepseek-ai/deepseek-ocr-maas": { - "litellm_provider": "vertex_ai", - "mode": "ocr", - "input_cost_per_token": 3e-07, - "output_cost_per_token": 1.2e-06, - "ocr_cost_per_page": 3e-04, - "source": "https://cloud.google.com/vertex-ai/pricing" - }, - "vertex_ai/openai/gpt-oss-120b-maas": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vertex_ai-openai_models", - "max_input_tokens": 131072, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 6e-07, - "source": "https://console.cloud.google.com/vertex-ai/publishers/openai/model-garden/gpt-oss-120b-maas", - "supports_reasoning": true - }, - "vertex_ai/openai/gpt-oss-20b-maas": { - "input_cost_per_token": 7.5e-08, - "litellm_provider": "vertex_ai-openai_models", - "max_input_tokens": 131072, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 3e-07, - "source": "https://console.cloud.google.com/vertex-ai/publishers/openai/model-garden/gpt-oss-120b-maas", - "supports_reasoning": true - }, - "vertex_ai/qwen/qwen3-235b-a22b-instruct-2507-maas": { - "input_cost_per_token": 2.5e-07, - "litellm_provider": "vertex_ai-qwen_models", - "max_input_tokens": 262144, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 1e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/qwen/qwen3-coder-480b-a35b-instruct-maas": { - "input_cost_per_token": 1e-06, - "litellm_provider": "vertex_ai-qwen_models", - "max_input_tokens": 262144, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 4e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/qwen/qwen3-next-80b-a3b-instruct-maas": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vertex_ai-qwen_models", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/qwen/qwen3-next-80b-a3b-thinking-maas": { - "input_cost_per_token": 1.5e-07, - "litellm_provider": "vertex_ai-qwen_models", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "vertex_ai/veo-2.0-generate-001": { - "litellm_provider": "vertex_ai-video-models", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.35, - "source": "https://ai.google.dev/gemini-api/docs/video", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "vertex_ai/veo-3.0-fast-generate-preview": { - "deprecation_date": "2025-11-12", - "litellm_provider": "vertex_ai-video-models", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.15, - "source": "https://ai.google.dev/gemini-api/docs/video", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "vertex_ai/veo-3.0-generate-preview": { - "deprecation_date": "2025-11-12", - "litellm_provider": "vertex_ai-video-models", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.4, - "source": "https://ai.google.dev/gemini-api/docs/video", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "vertex_ai/veo-3.0-fast-generate-001": { - "litellm_provider": "vertex_ai-video-models", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.15, - "source": "https://ai.google.dev/gemini-api/docs/video", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "vertex_ai/veo-3.0-generate-001": { - "litellm_provider": "vertex_ai-video-models", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.4, - "source": "https://ai.google.dev/gemini-api/docs/video", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "vertex_ai/veo-3.1-generate-preview": { - "litellm_provider": "vertex_ai-video-models", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.4, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/veo", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "vertex_ai/veo-3.1-fast-generate-preview": { - "litellm_provider": "vertex_ai-video-models", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.15, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/veo", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "vertex_ai/veo-3.1-generate-001": { - "litellm_provider": "vertex_ai-video-models", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.4, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/veo", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "vertex_ai/veo-3.1-fast-generate-001": { - "litellm_provider": "vertex_ai-video-models", - "max_input_tokens": 1024, - "max_tokens": 1024, - "mode": "video_generation", - "output_cost_per_second": 0.15, - "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/veo", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ] - }, - "voyage/rerank-2": { - "input_cost_per_token": 5e-08, - "litellm_provider": "voyage", - "max_input_tokens": 16000, - "max_output_tokens": 16000, - "max_query_tokens": 16000, - "max_tokens": 16000, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "voyage/rerank-2-lite": { - "input_cost_per_token": 2e-08, - "litellm_provider": "voyage", - "max_input_tokens": 8000, - "max_output_tokens": 8000, - "max_query_tokens": 8000, - "max_tokens": 8000, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "voyage/rerank-2.5": { - "input_cost_per_token": 5e-08, - "litellm_provider": "voyage", - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "max_query_tokens": 32000, - "max_tokens": 32000, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "voyage/rerank-2.5-lite": { - "input_cost_per_token": 2e-08, - "litellm_provider": "voyage", - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "max_query_tokens": 32000, - "max_tokens": 32000, - "mode": "rerank", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-2": { - "input_cost_per_token": 1e-07, - "litellm_provider": "voyage", - "max_input_tokens": 4000, - "max_tokens": 4000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-3": { - "input_cost_per_token": 6e-08, - "litellm_provider": "voyage", - "max_input_tokens": 32000, - "max_tokens": 32000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-3-large": { - "input_cost_per_token": 1.8e-07, - "litellm_provider": "voyage", - "max_input_tokens": 32000, - "max_tokens": 32000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-3-lite": { - "input_cost_per_token": 2e-08, - "litellm_provider": "voyage", - "max_input_tokens": 32000, - "max_tokens": 32000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-3.5": { - "input_cost_per_token": 6e-08, - "litellm_provider": "voyage", - "max_input_tokens": 32000, - "max_tokens": 32000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-3.5-lite": { - "input_cost_per_token": 2e-08, - "litellm_provider": "voyage", - "max_input_tokens": 32000, - "max_tokens": 32000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-code-2": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "voyage", - "max_input_tokens": 16000, - "max_tokens": 16000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-code-3": { - "input_cost_per_token": 1.8e-07, - "litellm_provider": "voyage", - "max_input_tokens": 32000, - "max_tokens": 32000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-context-3": { - "input_cost_per_token": 1.8e-07, - "litellm_provider": "voyage", - "max_input_tokens": 120000, - "max_tokens": 120000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-finance-2": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "voyage", - "max_input_tokens": 32000, - "max_tokens": 32000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-large-2": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "voyage", - "max_input_tokens": 16000, - "max_tokens": 16000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-law-2": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "voyage", - "max_input_tokens": 16000, - "max_tokens": 16000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-lite-01": { - "input_cost_per_token": 1e-07, - "litellm_provider": "voyage", - "max_input_tokens": 4096, - "max_tokens": 4096, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-lite-02-instruct": { - "input_cost_per_token": 1e-07, - "litellm_provider": "voyage", - "max_input_tokens": 4000, - "max_tokens": 4000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "voyage/voyage-multimodal-3": { - "input_cost_per_token": 1.2e-07, - "litellm_provider": "voyage", - "max_input_tokens": 32000, - "max_tokens": 32000, - "mode": "embedding", - "output_cost_per_token": 0.0 - }, - "wandb/openai/gpt-oss-120b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 0.015, - "output_cost_per_token": 0.06, - "litellm_provider": "wandb", - "mode": "chat" - }, - "wandb/openai/gpt-oss-20b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 0.005, - "output_cost_per_token": 0.02, - "litellm_provider": "wandb", - "mode": "chat" - }, - "wandb/zai-org/GLM-4.5": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 0.055, - "output_cost_per_token": 0.2, - "litellm_provider": "wandb", - "mode": "chat" - }, - "wandb/Qwen/Qwen3-235B-A22B-Instruct-2507": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 0.01, - "output_cost_per_token": 0.01, - "litellm_provider": "wandb", - "mode": "chat" - }, - "wandb/Qwen/Qwen3-Coder-480B-A35B-Instruct": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 0.1, - "output_cost_per_token": 0.15, - "litellm_provider": "wandb", - "mode": "chat" - }, - "wandb/Qwen/Qwen3-235B-A22B-Thinking-2507": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 0.01, - "output_cost_per_token": 0.01, - "litellm_provider": "wandb", - "mode": "chat" - }, - "wandb/moonshotai/Kimi-K2-Instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 6e-07, - "output_cost_per_token": 2.5e-06, - "litellm_provider": "wandb", - "mode": "chat" - }, - "wandb/meta-llama/Llama-3.1-8B-Instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.022, - "output_cost_per_token": 0.022, - "litellm_provider": "wandb", - "mode": "chat" - }, - "wandb/deepseek-ai/DeepSeek-V3.1": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.055, - "output_cost_per_token": 0.165, - "litellm_provider": "wandb", - "mode": "chat" - }, - "wandb/deepseek-ai/DeepSeek-R1-0528": { - "max_tokens": 161000, - "max_input_tokens": 161000, - "max_output_tokens": 161000, - "input_cost_per_token": 0.135, - "output_cost_per_token": 0.54, - "litellm_provider": "wandb", - "mode": "chat" - }, - "wandb/deepseek-ai/DeepSeek-V3-0324": { - "max_tokens": 161000, - "max_input_tokens": 161000, - "max_output_tokens": 161000, - "input_cost_per_token": 0.114, - "output_cost_per_token": 0.275, - "litellm_provider": "wandb", - "mode": "chat" - }, - "wandb/meta-llama/Llama-3.3-70B-Instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.071, - "output_cost_per_token": 0.071, - "litellm_provider": "wandb", - "mode": "chat" - }, - "wandb/meta-llama/Llama-4-Scout-17B-16E-Instruct": { - "max_tokens": 64000, - "max_input_tokens": 64000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.017, - "output_cost_per_token": 0.066, - "litellm_provider": "wandb", - "mode": "chat" - }, - "wandb/microsoft/Phi-4-mini-instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.008, - "output_cost_per_token": 0.035, - "litellm_provider": "wandb", - "mode": "chat" - }, - "watsonx/ibm/granite-3-8b-instruct": { - "input_cost_per_token": 0.2e-06, - "litellm_provider": "watsonx", - "max_input_tokens": 8192, - "max_output_tokens": 1024, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.2e-06, - "supports_audio_input": false, - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "watsonx/mistralai/mistral-large": { - "input_cost_per_token": 3e-06, - "litellm_provider": "watsonx", - "max_input_tokens": 131072, - "max_output_tokens": 16384, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 10e-06, - "supports_audio_input": false, - "supports_audio_output": false, - "supports_function_calling": true, - "supports_parallel_function_calling": false, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": false - }, - "watsonx/bigscience/mt0-xxl-13b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 0.0005, - "output_cost_per_token": 0.002, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": false - }, - "watsonx/core42/jais-13b-chat": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 0.0005, - "output_cost_per_token": 0.002, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": false - }, - "watsonx/google/flan-t5-xl-3b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 0.6e-06, - "output_cost_per_token": 0.6e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": false - }, - "watsonx/ibm/granite-13b-chat-v2": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 0.6e-06, - "output_cost_per_token": 0.6e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": false - }, - "watsonx/ibm/granite-13b-instruct-v2": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 0.6e-06, - "output_cost_per_token": 0.6e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": false - }, - "watsonx/ibm/granite-3-3-8b-instruct": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 0.2e-06, - "output_cost_per_token": 0.2e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": false - }, - "watsonx/ibm/granite-4-h-small": { - "max_tokens": 20480, - "max_input_tokens": 20480, - "max_output_tokens": 20480, - "input_cost_per_token": 0.06e-06, - "output_cost_per_token": 0.25e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": false - }, - "watsonx/ibm/granite-guardian-3-2-2b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 0.1e-06, - "output_cost_per_token": 0.1e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": false - }, - "watsonx/ibm/granite-guardian-3-3-8b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 0.2e-06, - "output_cost_per_token": 0.2e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": false - }, - "watsonx/ibm/granite-ttm-1024-96-r2": { - "max_tokens": 512, - "max_input_tokens": 512, - "max_output_tokens": 512, - "input_cost_per_token": 0.38e-06, - "output_cost_per_token": 0.38e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": false - }, - "watsonx/ibm/granite-ttm-1536-96-r2": { - "max_tokens": 512, - "max_input_tokens": 512, - "max_output_tokens": 512, - "input_cost_per_token": 0.38e-06, - "output_cost_per_token": 0.38e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": false - }, - "watsonx/ibm/granite-ttm-512-96-r2": { - "max_tokens": 512, - "max_input_tokens": 512, - "max_output_tokens": 512, - "input_cost_per_token": 0.38e-06, - "output_cost_per_token": 0.38e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": false - }, - "watsonx/ibm/granite-vision-3-2-2b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 0.1e-06, - "output_cost_per_token": 0.1e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": true - }, - "watsonx/meta-llama/llama-3-2-11b-vision-instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.35e-06, - "output_cost_per_token": 0.35e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": true - }, - "watsonx/meta-llama/llama-3-2-1b-instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.1e-06, - "output_cost_per_token": 0.1e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": false - }, - "watsonx/meta-llama/llama-3-2-3b-instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.15e-06, - "output_cost_per_token": 0.15e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": false - }, - "watsonx/meta-llama/llama-3-2-90b-vision-instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 2e-06, - "output_cost_per_token": 2e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": true - }, - "watsonx/meta-llama/llama-3-3-70b-instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.71e-06, - "output_cost_per_token": 0.71e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": false - }, - "watsonx/meta-llama/llama-4-maverick-17b": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.35e-06, - "output_cost_per_token": 1.4e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": false - }, - "watsonx/meta-llama/llama-guard-3-11b-vision": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.35e-06, - "output_cost_per_token": 0.35e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": true - }, - "watsonx/mistralai/mistral-medium-2505": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 3e-06, - "output_cost_per_token": 10e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": false - }, - "watsonx/mistralai/mistral-small-2503": { - "max_tokens": 32000, - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "input_cost_per_token": 0.1e-06, - "output_cost_per_token": 0.3e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": false - }, - "watsonx/mistralai/mistral-small-3-1-24b-instruct-2503": { - "max_tokens": 32000, - "max_input_tokens": 32000, - "max_output_tokens": 32000, - "input_cost_per_token": 0.1e-06, - "output_cost_per_token": 0.3e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_vision": false - }, - "watsonx/mistralai/pixtral-12b-2409": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.35e-06, - "output_cost_per_token": 0.35e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": true - }, - "watsonx/openai/gpt-oss-120b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 0.15e-06, - "output_cost_per_token": 0.6e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": false - }, - "watsonx/sdaia/allam-1-13b-instruct": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 1.8e-06, - "output_cost_per_token": 1.8e-06, - "litellm_provider": "watsonx", - "mode": "chat", - "supports_function_calling": false, - "supports_parallel_function_calling": false, - "supports_vision": false - }, - "watsonx/whisper-large-v3-turbo": { - "input_cost_per_second": 0.0001, - "output_cost_per_second": 0.0001, - "litellm_provider": "watsonx", - "mode": "audio_transcription", - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "whisper-1": { - "input_cost_per_second": 0.0001, - "litellm_provider": "openai", - "mode": "audio_transcription", - "output_cost_per_second": 0.0001, - "supported_endpoints": [ - "/v1/audio/transcriptions" - ] - }, - "xai/grok-2": { - "input_cost_per_token": 2e-06, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-2-1212": { - "input_cost_per_token": 2e-06, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-2-latest": { - "input_cost_per_token": 2e-06, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-2-vision": { - "input_cost_per_image": 2e-06, - "input_cost_per_token": 2e-06, - "litellm_provider": "xai", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "xai/grok-2-vision-1212": { - "input_cost_per_image": 2e-06, - "input_cost_per_token": 2e-06, - "litellm_provider": "xai", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "xai/grok-2-vision-latest": { - "input_cost_per_image": 2e-06, - "input_cost_per_token": 2e-06, - "litellm_provider": "xai", - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 1e-05, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "xai/grok-3": { - "input_cost_per_token": 3e-06, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "source": "https://x.ai/api#pricing", - "supports_function_calling": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-3-beta": { - "input_cost_per_token": 3e-06, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "source": "https://x.ai/api#pricing", - "supports_function_calling": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-3-fast-beta": { - "input_cost_per_token": 5e-06, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.5e-05, - "source": "https://x.ai/api#pricing", - "supports_function_calling": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-3-fast-latest": { - "input_cost_per_token": 5e-06, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 2.5e-05, - "source": "https://x.ai/api#pricing", - "supports_function_calling": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-3-latest": { - "input_cost_per_token": 3e-06, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "source": "https://x.ai/api#pricing", - "supports_function_calling": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-3-mini": { - "input_cost_per_token": 3e-07, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 5e-07, - "source": "https://x.ai/api#pricing", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-3-mini-beta": { - "input_cost_per_token": 3e-07, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 5e-07, - "source": "https://x.ai/api#pricing", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-3-mini-fast": { - "input_cost_per_token": 6e-07, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 4e-06, - "source": "https://x.ai/api#pricing", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-3-mini-fast-beta": { - "input_cost_per_token": 6e-07, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 4e-06, - "source": "https://x.ai/api#pricing", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-3-mini-fast-latest": { - "input_cost_per_token": 6e-07, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 4e-06, - "source": "https://x.ai/api#pricing", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-3-mini-latest": { - "input_cost_per_token": 3e-07, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 5e-07, - "source": "https://x.ai/api#pricing", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": false, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-4": { - "input_cost_per_token": 3e-06, - "litellm_provider": "xai", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "source": "https://docs.x.ai/docs/models", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-4-fast-reasoning": { - "litellm_provider": "xai", - "max_input_tokens": 2e6, - "max_output_tokens": 2e6, - "max_tokens": 2e6, - "mode": "chat", - "input_cost_per_token": 0.2e-06, - "input_cost_per_token_above_128k_tokens": 0.4e-06, - "output_cost_per_token": 0.5e-06, - "output_cost_per_token_above_128k_tokens": 1e-06, - "cache_read_input_token_cost": 0.05e-06, - "source": "https://docs.x.ai/docs/models", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-4-fast-non-reasoning": { - "litellm_provider": "xai", - "max_input_tokens": 2e6, - "max_output_tokens": 2e6, - "cache_read_input_token_cost": 0.05e-06, - "max_tokens": 2e6, - "mode": "chat", - "input_cost_per_token": 0.2e-06, - "input_cost_per_token_above_128k_tokens": 0.4e-06, - "output_cost_per_token": 0.5e-06, - "output_cost_per_token_above_128k_tokens": 1e-06, - "source": "https://docs.x.ai/docs/models", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-4-0709": { - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_128k_tokens": 6e-06, - "litellm_provider": "xai", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "output_cost_per_token_above_128k_tokens": 30e-06, - "source": "https://docs.x.ai/docs/models", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-4-latest": { - "input_cost_per_token": 3e-06, - "input_cost_per_token_above_128k_tokens": 6e-06, - "litellm_provider": "xai", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "output_cost_per_token_above_128k_tokens": 30e-06, - "source": "https://docs.x.ai/docs/models", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_web_search": true - }, - "xai/grok-4-1-fast": { - "cache_read_input_token_cost": 0.05e-06, - "input_cost_per_token": 0.2e-06, - "input_cost_per_token_above_128k_tokens": 0.4e-06, - "litellm_provider": "xai", - "max_input_tokens": 2e6, - "max_output_tokens": 2e6, - "max_tokens": 2e6, - "mode": "chat", - "output_cost_per_token": 0.5e-06, - "output_cost_per_token_above_128k_tokens": 1e-06, - "source": "https://docs.x.ai/docs/models/grok-4-1-fast-reasoning", - "supports_audio_input": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "xai/grok-4-1-fast-reasoning": { - "cache_read_input_token_cost": 0.05e-06, - "input_cost_per_token": 0.2e-06, - "input_cost_per_token_above_128k_tokens": 0.4e-06, - "litellm_provider": "xai", - "max_input_tokens": 2e6, - "max_output_tokens": 2e6, - "max_tokens": 2e6, - "mode": "chat", - "output_cost_per_token": 0.5e-06, - "output_cost_per_token_above_128k_tokens": 1e-06, - "source": "https://docs.x.ai/docs/models/grok-4-1-fast-reasoning", - "supports_audio_input": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "xai/grok-4-1-fast-reasoning-latest": { - "cache_read_input_token_cost": 0.05e-06, - "input_cost_per_token": 0.2e-06, - "input_cost_per_token_above_128k_tokens": 0.4e-06, - "litellm_provider": "xai", - "max_input_tokens": 2e6, - "max_output_tokens": 2e6, - "max_tokens": 2e6, - "mode": "chat", - "output_cost_per_token": 0.5e-06, - "output_cost_per_token_above_128k_tokens": 1e-06, - "source": "https://docs.x.ai/docs/models/grok-4-1-fast-reasoning", - "supports_audio_input": true, - "supports_function_calling": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "xai/grok-4-1-fast-non-reasoning": { - "cache_read_input_token_cost": 0.05e-06, - "input_cost_per_token": 0.2e-06, - "input_cost_per_token_above_128k_tokens": 0.4e-06, - "litellm_provider": "xai", - "max_input_tokens": 2e6, - "max_output_tokens": 2e6, - "max_tokens": 2e6, - "mode": "chat", - "output_cost_per_token": 0.5e-06, - "output_cost_per_token_above_128k_tokens": 1e-06, - "source": "https://docs.x.ai/docs/models/grok-4-1-fast-non-reasoning", - "supports_audio_input": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "xai/grok-4-1-fast-non-reasoning-latest": { - "cache_read_input_token_cost": 0.05e-06, - "input_cost_per_token": 0.2e-06, - "input_cost_per_token_above_128k_tokens": 0.4e-06, - "litellm_provider": "xai", - "max_input_tokens": 2e6, - "max_output_tokens": 2e6, - "max_tokens": 2e6, - "mode": "chat", - "output_cost_per_token": 0.5e-06, - "output_cost_per_token_above_128k_tokens": 1e-06, - "source": "https://docs.x.ai/docs/models/grok-4-1-fast-non-reasoning", - "supports_audio_input": true, - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "xai/grok-beta": { - "input_cost_per_token": 5e-06, - "litellm_provider": "xai", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "xai/grok-code-fast": { - "cache_read_input_token_cost": 2e-08, - "input_cost_per_token": 2e-07, - "litellm_provider": "xai", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "source": "https://docs.x.ai/docs/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "xai/grok-code-fast-1": { - "cache_read_input_token_cost": 2e-08, - "input_cost_per_token": 2e-07, - "litellm_provider": "xai", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "source": "https://docs.x.ai/docs/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "xai/grok-code-fast-1-0825": { - "cache_read_input_token_cost": 2e-08, - "input_cost_per_token": 2e-07, - "litellm_provider": "xai", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, - "mode": "chat", - "output_cost_per_token": 1.5e-06, - "source": "https://docs.x.ai/docs/models", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true - }, - "xai/grok-vision-beta": { - "input_cost_per_image": 5e-06, - "input_cost_per_token": 5e-06, - "litellm_provider": "xai", - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 1.5e-05, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_web_search": true - }, - "zai/glm-4.7": { - "cache_creation_input_token_cost": 0, - "cache_read_input_token_cost": 1.1e-07, - "input_cost_per_token": 6e-07, - "output_cost_per_token": 2.2e-06, - "litellm_provider": "zai", - "max_input_tokens": 200000, - "max_output_tokens": 128000, - "mode": "chat", - "supports_function_calling": true, - "supports_reasoning": true, - "supports_tool_choice": true, - "source": "https://docs.z.ai/guides/overview/pricing" - }, - "zai/glm-4.6": { - "input_cost_per_token": 6e-07, - "output_cost_per_token": 2.2e-06, - "litellm_provider": "zai", - "max_input_tokens": 200000, - "max_output_tokens": 128000, - "mode": "chat", - "supports_function_calling": true, - "supports_tool_choice": true, - "source": "https://docs.z.ai/guides/overview/pricing" - }, - "zai/glm-4.5": { - "input_cost_per_token": 6e-07, - "output_cost_per_token": 2.2e-06, - "litellm_provider": "zai", - "max_input_tokens": 128000, - "max_output_tokens": 32000, - "mode": "chat", - "supports_function_calling": true, - "supports_tool_choice": true, - "source": "https://docs.z.ai/guides/overview/pricing" - }, - "zai/glm-4.5v": { - "input_cost_per_token": 6e-07, - "output_cost_per_token": 1.8e-06, - "litellm_provider": "zai", - "max_input_tokens": 128000, - "max_output_tokens": 32000, - "mode": "chat", - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true, - "source": "https://docs.z.ai/guides/overview/pricing" - }, - "zai/glm-4.5-x": { - "input_cost_per_token": 2.2e-06, - "output_cost_per_token": 8.9e-06, - "litellm_provider": "zai", - "max_input_tokens": 128000, - "max_output_tokens": 32000, - "mode": "chat", - "supports_function_calling": true, - "supports_tool_choice": true, - "source": "https://docs.z.ai/guides/overview/pricing" - }, - "zai/glm-4.5-air": { - "input_cost_per_token": 2e-07, - "output_cost_per_token": 1.1e-06, - "litellm_provider": "zai", - "max_input_tokens": 128000, - "max_output_tokens": 32000, - "mode": "chat", - "supports_function_calling": true, - "supports_tool_choice": true, - "source": "https://docs.z.ai/guides/overview/pricing" - }, - "zai/glm-4.5-airx": { - "input_cost_per_token": 1.1e-06, - "output_cost_per_token": 4.5e-06, - "litellm_provider": "zai", - "max_input_tokens": 128000, - "max_output_tokens": 32000, - "mode": "chat", - "supports_function_calling": true, - "supports_tool_choice": true, - "source": "https://docs.z.ai/guides/overview/pricing" - }, - "zai/glm-4-32b-0414-128k": { - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "zai", - "max_input_tokens": 128000, - "max_output_tokens": 32000, - "mode": "chat", - "supports_function_calling": true, - "supports_tool_choice": true, - "source": "https://docs.z.ai/guides/overview/pricing" - }, - "zai/glm-4.5-flash": { - "input_cost_per_token": 0, - "output_cost_per_token": 0, - "litellm_provider": "zai", - "max_input_tokens": 128000, - "max_output_tokens": 32000, - "mode": "chat", - "supports_function_calling": true, - "supports_tool_choice": true, - "source": "https://docs.z.ai/guides/overview/pricing" - }, - "vertex_ai/search_api": { - "input_cost_per_query": 1.5e-03, - "litellm_provider": "vertex_ai", - "mode": "vector_store" - }, - "openai/container": { - "code_interpreter_cost_per_session": 0.03, - "litellm_provider": "openai", - "mode": "chat" - }, - "openai/sora-2": { - "litellm_provider": "openai", - "mode": "video_generation", - "output_cost_per_video_per_second": 0.10, - "source": "https://platform.openai.com/docs/api-reference/videos", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "video" - ], - "supported_resolutions": [ - "720x1280", - "1280x720" - ] - }, - "openai/sora-2-pro": { - "litellm_provider": "openai", - "mode": "video_generation", - "output_cost_per_video_per_second": 0.30, - "source": "https://platform.openai.com/docs/api-reference/videos", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "video" - ], - "supported_resolutions": [ - "720x1280", - "1280x720" - ] - }, - "azure/sora-2": { - "litellm_provider": "azure", - "mode": "video_generation", - "output_cost_per_video_per_second": 0.10, - "source": "https://azure.microsoft.com/en-us/products/ai-services/video-generation", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ], - "supported_resolutions": [ - "720x1280", - "1280x720" - ] - }, - "azure/sora-2-pro": { - "litellm_provider": "azure", - "mode": "video_generation", - "output_cost_per_video_per_second": 0.30, - "source": "https://azure.microsoft.com/en-us/products/ai-services/video-generation", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ], - "supported_resolutions": [ - "720x1280", - "1280x720" - ] - }, - "azure/sora-2-pro-high-res": { - "litellm_provider": "azure", - "mode": "video_generation", - "output_cost_per_video_per_second": 0.50, - "source": "https://azure.microsoft.com/en-us/products/ai-services/video-generation", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "video" - ], - "supported_resolutions": [ - "1024x1792", - "1792x1024" - ] - }, - "runwayml/gen4_turbo": { - "litellm_provider": "runwayml", - "mode": "video_generation", - "output_cost_per_video_per_second": 0.05, - "source": "https://docs.dev.runwayml.com/guides/pricing/", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "video" - ], - "supported_resolutions": [ - "1280x720", - "720x1280" - ], - "metadata": { - "comment": "5 credits per second @ $0.01 per credit = $0.05 per second" - } - }, - "runwayml/gen4_aleph": { - "litellm_provider": "runwayml", - "mode": "video_generation", - "output_cost_per_video_per_second": 0.15, - "source": "https://docs.dev.runwayml.com/guides/pricing/", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "video" - ], - "supported_resolutions": [ - "1280x720", - "720x1280" - ], - "metadata": { - "comment": "15 credits per second @ $0.01 per credit = $0.15 per second" - } - }, - "runwayml/gen3a_turbo": { - "litellm_provider": "runwayml", - "mode": "video_generation", - "output_cost_per_video_per_second": 0.05, - "source": "https://docs.dev.runwayml.com/guides/pricing/", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "video" - ], - "supported_resolutions": [ - "1280x720", - "720x1280" - ], - "metadata": { - "comment": "5 credits per second @ $0.01 per credit = $0.05 per second" - } - }, - "runwayml/gen4_image": { - "litellm_provider": "runwayml", - "mode": "image_generation", - "input_cost_per_image": 0.05, - "output_cost_per_image": 0.05, - "source": "https://docs.dev.runwayml.com/guides/pricing/", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "image" - ], - "supported_resolutions": [ - "1280x720", - "1920x1080" - ], - "metadata": { - "comment": "5 credits per 720p image or 8 credits per 1080p image @ $0.01 per credit. Using 5 credits ($0.05) as base cost" - } - }, - "runwayml/gen4_image_turbo": { - "litellm_provider": "runwayml", - "mode": "image_generation", - "input_cost_per_image": 0.02, - "output_cost_per_image": 0.02, - "source": "https://docs.dev.runwayml.com/guides/pricing/", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "image" - ], - "supported_resolutions": [ - "1280x720", - "1920x1080" - ], - "metadata": { - "comment": "2 credits per image (any resolution) @ $0.01 per credit = $0.02 per image" - } - }, - "runwayml/eleven_multilingual_v2": { - "litellm_provider": "runwayml", - "mode": "audio_speech", - "input_cost_per_character": 3e-07, - "source": "https://docs.dev.runwayml.com/guides/pricing/", - "metadata": { - "comment": "Estimated cost based on standard TTS pricing. RunwayML uses ElevenLabs models." - } - }, - "fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-a35b-instruct": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 4.5e-07, - "output_cost_per_token": 1.8e-06, - "litellm_provider": "fireworks_ai", - "mode": "chat", - "supports_reasoning": true - }, - "fireworks_ai/accounts/fireworks/models/flux-kontext-pro": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 4e-08, - "output_cost_per_token": 4e-08, - "litellm_provider": "fireworks_ai", - "mode": "image_generation" - }, - "fireworks_ai/accounts/fireworks/models/SSD-1B": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1.3e-10, - "output_cost_per_token": 1.3e-10, - "litellm_provider": "fireworks_ai", - "mode": "image_generation" - }, - "fireworks_ai/accounts/fireworks/models/chronos-hermes-13b-v2": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/code-llama-13b": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/code-llama-13b-instruct": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/code-llama-13b-python": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/code-llama-34b": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/code-llama-34b-instruct": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/code-llama-34b-python": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/code-llama-70b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/code-llama-70b-instruct": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/code-llama-70b-python": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/code-llama-7b": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/code-llama-7b-instruct": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/code-llama-7b-python": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/code-qwen-1p5-7b": { - "max_tokens": 65536, - "max_input_tokens": 65536, - "max_output_tokens": 65536, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/codegemma-2b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/codegemma-7b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/cogito-671b-v2-p1": { - "max_tokens": 163840, - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "input_cost_per_token": 1.2e-06, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-3b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-70b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-8b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-14b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-32b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/flux-kontext-max": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 8e-08, - "output_cost_per_token": 8e-08, - "litellm_provider": "fireworks_ai", - "mode": "image_generation" - }, - "fireworks_ai/accounts/fireworks/models/dbrx-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 1.2e-06, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-coder-1b-base": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-coder-33b-instruct": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base-v1p5": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-base": { - "max_tokens": 163840, - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 5e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-instruct": { - "max_tokens": 163840, - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 5e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-prover-v2": { - "max_tokens": 163840, - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "input_cost_per_token": 1.2e-06, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-70b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-8b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-14b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-32b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-7b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-v2-lite-chat": { - "max_tokens": 163840, - "max_input_tokens": 163840, - "max_output_tokens": 163840, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 5e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/deepseek-v2p5": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 1.2e-06, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/devstral-small-2505": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/dolphin-2-9-2-qwen2-72b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/dolphin-2p6-mixtral-8x7b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 5e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/ernie-4p5-21b-a3b-pt": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/ernie-4p5-300b-a47b-pt": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/fare-20b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/firefunction-v1": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 5e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/firellava-13b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/firesearch-ocr-v6": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/fireworks-asr-large": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 0.0, - "output_cost_per_token": 0.0, - "litellm_provider": "fireworks_ai", - "mode": "audio_transcription" - }, - "fireworks_ai/accounts/fireworks/models/fireworks-asr-v2": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 0.0, - "output_cost_per_token": 0.0, - "litellm_provider": "fireworks_ai", - "mode": "audio_transcription" - }, - "fireworks_ai/accounts/fireworks/models/flux-1-dev": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/flux-1-dev-controlnet-union": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1e-09, - "output_cost_per_token": 1e-09, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/flux-1-dev-fp8": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 5e-10, - "output_cost_per_token": 5e-10, - "litellm_provider": "fireworks_ai", - "mode": "image_generation" - }, - "fireworks_ai/accounts/fireworks/models/flux-1-schnell": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/flux-1-schnell-fp8": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 3.5e-10, - "output_cost_per_token": 3.5e-10, - "litellm_provider": "fireworks_ai", - "mode": "image_generation" - }, - "fireworks_ai/accounts/fireworks/models/gemma-2b-it": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/gemma-3-27b-it": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/gemma-7b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/gemma-7b-it": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/gemma2-9b-it": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/glm-4p5v": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1.2e-06, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "fireworks_ai", - "mode": "chat", - "supports_reasoning": true - }, - "fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-120b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1.2e-06, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-20b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 5e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/hermes-2-pro-mistral-7b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/internvl3-38b": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/internvl3-78b": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/internvl3-8b": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/japanese-stable-diffusion-xl": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1.3e-10, - "output_cost_per_token": 1.3e-10, - "litellm_provider": "fireworks_ai", - "mode": "image_generation" - }, - "fireworks_ai/accounts/fireworks/models/kat-coder": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/kat-dev-32b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/kat-dev-72b-exp": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-guard-2-8b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-guard-3-1b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-guard-3-8b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v2-13b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v2-13b-chat": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v2-70b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v2-70b-chat": { - "max_tokens": 2048, - "max_input_tokens": 2048, - "max_output_tokens": 2048, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v2-7b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v2-7b-chat": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct-hf": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v3-8b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v3-8b-instruct-hf": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct-long": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct-1b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v3p2-1b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v3p2-3b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llama-v3p3-70b-instruct": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llamaguard-7b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/llava-yi-34b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/minimax-m1-80k": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/minimax-m2": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 3e-07, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/ministral-3-14b-instruct-2512": { - "max_tokens": 256000, - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/ministral-3-3b-instruct-2512": { - "max_tokens": 256000, - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/ministral-3-8b-instruct-2512": { - "max_tokens": 256000, - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mistral-7b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-4k": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v0p2": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v3": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mistral-7b-v0p2": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mistral-large-3-fp8": { - "max_tokens": 256000, - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "input_cost_per_token": 1.2e-06, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mistral-nemo-base-2407": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mistral-nemo-instruct-2407": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mistral-small-24b-instruct-2501": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mixtral-8x22b": { - "max_tokens": 65536, - "max_input_tokens": 65536, - "max_output_tokens": 65536, - "input_cost_per_token": 1.2e-06, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct": { - "max_tokens": 65536, - "max_input_tokens": 65536, - "max_output_tokens": 65536, - "input_cost_per_token": 1.2e-06, - "output_cost_per_token": 1.2e-06, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mixtral-8x7b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 5e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 5e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct-hf": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 5e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/mythomax-l2-13b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/nemotron-nano-v2-12b-vl": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/nous-capybara-7b-v1p9": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 5e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/nous-hermes-2-yi-34b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-13b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-70b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-7b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-12b-v2": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-9b-v2": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/openchat-3p5-0106-7b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/openhermes-2-mistral-7b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/openhermes-2p5-mistral-7b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/openorca-7b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/phi-2-3b": { - "max_tokens": 2048, - "max_input_tokens": 2048, - "max_output_tokens": 2048, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/phi-3-mini-128k-instruct": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/phi-3-vision-128k-instruct": { - "max_tokens": 32064, - "max_input_tokens": 32064, - "max_output_tokens": 32064, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-python-v1": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v1": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v2": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/playground-v2-1024px-aesthetic": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1.3e-10, - "output_cost_per_token": 1.3e-10, - "litellm_provider": "fireworks_ai", - "mode": "image_generation" - }, - "fireworks_ai/accounts/fireworks/models/playground-v2-5-1024px-aesthetic": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1.3e-10, - "output_cost_per_token": 1.3e-10, - "litellm_provider": "fireworks_ai", - "mode": "image_generation" - }, - "fireworks_ai/accounts/fireworks/models/pythia-12b": { - "max_tokens": 2048, - "max_input_tokens": 2048, - "max_output_tokens": 2048, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen-qwq-32b-preview": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen-v2p5-14b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen-v2p5-7b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen1p5-72b-chat": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2-7b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2-vl-2b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2-vl-72b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2-vl-7b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-0p5b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-14b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-1p5b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-32b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-32b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-72b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-72b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-7b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k": { - "max_tokens": 65536, - "max_input_tokens": 65536, - "max_output_tokens": 65536, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b-instruct": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-math-72b-instruct": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-vl-32b-instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-vl-3b-instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-vl-72b-instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen2p5-vl-7b-instruct": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-0p6b": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-14b": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-1p7b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 2.2e-07, - "output_cost_per_token": 8.8e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-instruct-2507": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 2.2e-07, - "output_cost_per_token": 8.8e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-thinking-2507": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 2.2e-07, - "output_cost_per_token": 8.8e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 1.5e-07, - "output_cost_per_token": 6e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-instruct-2507": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 5e-07, - "output_cost_per_token": 5e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-thinking-2507": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-32b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat", - "supports_reasoning": true - }, - "fireworks_ai/accounts/fireworks/models/qwen3-4b": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-4b-instruct-2507": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-8b": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat", - "supports_reasoning": true - }, - "fireworks_ai/accounts/fireworks/models/qwen3-coder-30b-a3b-instruct": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 1.5e-07, - "output_cost_per_token": 6e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-instruct-bf16": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-embedding-0p6b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 0.0, - "output_cost_per_token": 0.0, - "litellm_provider": "fireworks_ai", - "mode": "embedding" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-embedding-4b": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 0.0, - "output_cost_per_token": 0.0, - "litellm_provider": "fireworks_ai", - "mode": "embedding" - }, - "fireworks_ai/accounts/fireworks/models/": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 0.0, - "litellm_provider": "fireworks_ai", - "mode": "embedding" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-instruct": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-thinking": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-reranker-0p6b": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 0.0, - "output_cost_per_token": 0.0, - "litellm_provider": "fireworks_ai", - "mode": "rerank" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-reranker-4b": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 0.0, - "output_cost_per_token": 0.0, - "litellm_provider": "fireworks_ai", - "mode": "rerank" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-reranker-8b": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "max_output_tokens": 40960, - "input_cost_per_token": 0.0, - "output_cost_per_token": 0.0, - "litellm_provider": "fireworks_ai", - "mode": "rerank" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-instruct": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 2.2e-07, - "output_cost_per_token": 8.8e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-thinking": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 2.2e-07, - "output_cost_per_token": 8.8e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-instruct": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 1.5e-07, - "output_cost_per_token": 6e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-thinking": { - "max_tokens": 262144, - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "input_cost_per_token": 1.5e-07, - "output_cost_per_token": 6e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-vl-32b-instruct": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwen3-vl-8b-instruct": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/qwq-32b": { - "max_tokens": 131072, - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/rolm-ocr": { - "max_tokens": 128000, - "max_input_tokens": 128000, - "max_output_tokens": 128000, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/stable-diffusion-xl-1024-v1-0": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1.3e-10, - "output_cost_per_token": 1.3e-10, - "litellm_provider": "fireworks_ai", - "mode": "image_generation" - }, - "fireworks_ai/accounts/fireworks/models/stablecode-3b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/starcoder-16b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/starcoder-7b": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "max_output_tokens": 8192, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/starcoder2-15b": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/starcoder2-3b": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/starcoder2-7b": { - "max_tokens": 16384, - "max_input_tokens": 16384, - "max_output_tokens": 16384, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/toppy-m-7b": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/whisper-v3": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 0.0, - "output_cost_per_token": 0.0, - "litellm_provider": "fireworks_ai", - "mode": "audio_transcription" - }, - "fireworks_ai/accounts/fireworks/models/whisper-v3-turbo": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 0.0, - "output_cost_per_token": 0.0, - "litellm_provider": "fireworks_ai", - "mode": "audio_transcription" - }, - "fireworks_ai/accounts/fireworks/models/yi-34b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/yi-34b-200k-capybara": { - "max_tokens": 200000, - "max_input_tokens": 200000, - "max_output_tokens": 200000, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/yi-34b-chat": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 9e-07, - "output_cost_per_token": 9e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/yi-6b": { - "max_tokens": 4096, - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "fireworks_ai/accounts/fireworks/models/zephyr-7b-beta": { - "max_tokens": 32768, - "max_input_tokens": 32768, - "max_output_tokens": 32768, - "input_cost_per_token": 2e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "fireworks_ai", - "mode": "chat" - }, - "llamagate/llama-3.1-8b": { - "max_tokens": 8192, - "max_input_tokens": 131072, - "max_output_tokens": 8192, - "input_cost_per_token": 3e-08, - "output_cost_per_token": 5e-08, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true - }, - "llamagate/llama-3.2-3b": { - "max_tokens": 8192, - "max_input_tokens": 131072, - "max_output_tokens": 8192, - "input_cost_per_token": 4e-08, - "output_cost_per_token": 8e-08, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true - }, - "llamagate/mistral-7b-v0.3": { - "max_tokens": 8192, - "max_input_tokens": 32768, - "max_output_tokens": 8192, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 1.5e-07, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true - }, - "llamagate/qwen3-8b": { - "max_tokens": 8192, - "max_input_tokens": 32768, - "max_output_tokens": 8192, - "input_cost_per_token": 4e-08, - "output_cost_per_token": 1.4e-07, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true - }, - "llamagate/dolphin3-8b": { - "max_tokens": 8192, - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "input_cost_per_token": 8e-08, - "output_cost_per_token": 1.5e-07, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true - }, - "llamagate/deepseek-r1-8b": { - "max_tokens": 16384, - "max_input_tokens": 65536, - "max_output_tokens": 16384, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_reasoning": true - }, - "llamagate/deepseek-r1-7b-qwen": { - "max_tokens": 16384, - "max_input_tokens": 131072, - "max_output_tokens": 16384, - "input_cost_per_token": 8e-08, - "output_cost_per_token": 1.5e-07, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_reasoning": true - }, - "llamagate/openthinker-7b": { - "max_tokens": 8192, - "max_input_tokens": 32768, - "max_output_tokens": 8192, - "input_cost_per_token": 8e-08, - "output_cost_per_token": 1.5e-07, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_reasoning": true - }, - "llamagate/qwen2.5-coder-7b": { - "max_tokens": 8192, - "max_input_tokens": 32768, - "max_output_tokens": 8192, - "input_cost_per_token": 6e-08, - "output_cost_per_token": 1.2e-07, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true - }, - "llamagate/deepseek-coder-6.7b": { - "max_tokens": 4096, - "max_input_tokens": 16384, - "max_output_tokens": 4096, - "input_cost_per_token": 6e-08, - "output_cost_per_token": 1.2e-07, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true - }, - "llamagate/codellama-7b": { - "max_tokens": 4096, - "max_input_tokens": 16384, - "max_output_tokens": 4096, - "input_cost_per_token": 6e-08, - "output_cost_per_token": 1.2e-07, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true - }, - "llamagate/qwen3-vl-8b": { - "max_tokens": 8192, - "max_input_tokens": 32768, - "max_output_tokens": 8192, - "input_cost_per_token": 1.5e-07, - "output_cost_per_token": 5.5e-07, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_vision": true - }, - "llamagate/llava-7b": { - "max_tokens": 2048, - "max_input_tokens": 4096, - "max_output_tokens": 2048, - "input_cost_per_token": 1e-07, - "output_cost_per_token": 2e-07, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_response_schema": true, - "supports_vision": true - }, - "llamagate/gemma3-4b": { - "max_tokens": 8192, - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "input_cost_per_token": 3e-08, - "output_cost_per_token": 8e-08, - "litellm_provider": "llamagate", - "mode": "chat", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_vision": true - }, - "llamagate/nomic-embed-text": { - "max_tokens": 8192, - "max_input_tokens": 8192, - "input_cost_per_token": 2e-08, - "output_cost_per_token": 0, - "litellm_provider": "llamagate", - "mode": "embedding" - }, - "llamagate/qwen3-embedding-8b": { - "max_tokens": 40960, - "max_input_tokens": 40960, - "input_cost_per_token": 2e-08, - "output_cost_per_token": 0, - "litellm_provider": "llamagate", - "mode": "embedding" - } -} - diff --git a/src/actions/active-sessions.ts b/src/actions/active-sessions.ts index ba1cf03ae..baeee2e32 100644 --- a/src/actions/active-sessions.ts +++ b/src/actions/active-sessions.ts @@ -9,6 +9,7 @@ import { } from "@/lib/cache/session-cache"; import { logger } from "@/lib/logger"; import { normalizeRequestSequence } from "@/lib/utils/request-sequence"; +import { buildUnifiedSpecialSettings } from "@/lib/utils/special-settings"; import type { ActiveSessionInfo } from "@/types/session"; import type { SpecialSetting } from "@/types/special-settings"; import { summarizeTerminateSessionsBatch } from "./active-sessions-utils"; @@ -588,7 +589,8 @@ export async function getSessionDetails( const normalizedSequence = normalizeRequestSequence(requestSequence); const effectiveSequence = normalizedSequence ?? (requestCount > 0 ? requestCount : undefined); - const { findAdjacentRequestSequences } = await import("@/repository/message"); + const { findAdjacentRequestSequences, findMessageRequestAuditBySessionIdAndSequence } = + await import("@/repository/message"); const adjacent = effectiveSequence == null ? { prevSequence: null, nextSequence: null } @@ -618,7 +620,8 @@ export async function getSessionDetails( clientReqMeta, upstreamReqMeta, upstreamResMeta, - specialSettings, + redisSpecialSettings, + requestAudit, ] = await Promise.all([ SessionManager.getSessionRequestBody(sessionId, effectiveSequence), SessionManager.getSessionMessages(sessionId, effectiveSequence), @@ -629,6 +632,9 @@ export async function getSessionDetails( SessionManager.getSessionUpstreamRequestMeta(sessionId, effectiveSequence), SessionManager.getSessionUpstreamResponseMeta(sessionId, effectiveSequence), SessionManager.getSessionSpecialSettings(sessionId, effectiveSequence), + effectiveSequence + ? findMessageRequestAuditBySessionIdAndSequence(sessionId, effectiveSequence) + : Promise.resolve(null), ]); // 兼容:历史/异常数据可能是 JSON 字符串(前端需要根级对象/数组) @@ -646,6 +652,23 @@ export async function getSessionDetails( statusCode: upstreamResMeta?.statusCode ?? null, }; + const mergedSpecialSettings: SpecialSetting[] = [ + ...(Array.isArray(redisSpecialSettings) ? (redisSpecialSettings as SpecialSetting[]) : []), + ...(Array.isArray(requestAudit?.specialSettings) + ? (requestAudit.specialSettings as SpecialSetting[]) + : []), + ]; + const existingSpecialSettings = mergedSpecialSettings.length > 0 ? mergedSpecialSettings : null; + + const unifiedSpecialSettings = buildUnifiedSpecialSettings({ + existing: existingSpecialSettings, + blockedBy: requestAudit?.blockedBy ?? null, + blockedReason: requestAudit?.blockedReason ?? null, + statusCode: requestAudit?.statusCode ?? null, + cacheTtlApplied: requestAudit?.cacheTtlApplied ?? null, + context1mApplied: requestAudit?.context1mApplied ?? null, + }); + return { ok: true, data: { @@ -656,7 +679,7 @@ export async function getSessionDetails( responseHeaders, requestMeta, responseMeta, - specialSettings, + specialSettings: unifiedSpecialSettings, sessionStats, currentSequence: effectiveSequence ?? null, prevSequence: adjacent.prevSequence, diff --git a/src/actions/model-prices.ts b/src/actions/model-prices.ts index c082ebfb7..5ba943946 100644 --- a/src/actions/model-prices.ts +++ b/src/actions/model-prices.ts @@ -3,21 +3,28 @@ import { revalidatePath } from "next/cache"; import { getSession } from "@/lib/auth"; import { logger } from "@/lib/logger"; -import { getPriceTableJson } from "@/lib/price-sync"; +import { + fetchCloudPriceTableToml, + parseCloudPriceTableToml, +} from "@/lib/price-sync/cloud-price-table"; import { createModelPrice, + deleteModelPriceByName, findAllLatestPrices, findAllLatestPricesPaginated, - findLatestPriceByModel, + findAllManualPrices, hasAnyPriceRecords, type PaginatedResult, type PaginationParams, + upsertModelPrice, } from "@/repository/model-price"; import type { ModelPrice, ModelPriceData, PriceTableJson, PriceUpdateResult, + SyncConflict, + SyncConflictCheckResult, } from "@/types/model-price"; import type { ActionResult } from "./types"; @@ -25,16 +32,49 @@ import type { ActionResult } from "./types"; * 检查价格数据是否相同 */ function isPriceDataEqual(data1: ModelPriceData, data2: ModelPriceData): boolean { - // 深度比较两个价格对象 - return JSON.stringify(data1) === JSON.stringify(data2); + const stableStringify = (value: unknown): string => { + const seen = new WeakSet(); + + const canonicalize = (node: unknown): unknown => { + if (node === null || node === undefined) return node; + if (typeof node !== "object") return node; + + if (seen.has(node as object)) { + return null; + } + seen.add(node as object); + + if (Array.isArray(node)) { + return node.map(canonicalize); + } + + const obj = node as Record; + const result: Record = Object.create(null); + for (const key of Object.keys(obj).sort()) { + // 防御:避免 __proto__/constructor/prototype 触发原型链污染 + if (key === "__proto__" || key === "constructor" || key === "prototype") { + continue; + } + result[key] = canonicalize(obj[key]); + } + return result; + }; + + return JSON.stringify(canonicalize(value)); + }; + + return stableStringify(data1) === stableStringify(data2); } /** * 价格表处理核心逻辑(内部函数,无权限检查) * 用于系统初始化和 Web UI 上传 + * @param jsonContent - 价格表 JSON 内容 + * @param overwriteManual - 可选,要覆盖的手动添加模型名称列表 */ export async function processPriceTableInternal( - jsonContent: string + jsonContent: string, + overwriteManual?: string[] ): Promise> { try { // 解析JSON内容 @@ -63,12 +103,26 @@ export async function processPriceTableInternal( return typeof modelName === "string" && modelName.trim().length > 0; }); + // 创建覆盖列表的 Set 用于快速查找 + const overwriteSet = new Set(overwriteManual ?? []); + + // 获取所有手动添加的模型(用于冲突检测) + const manualPrices = await findAllManualPrices(); + + // 批量获取数据库中“每个模型的最新价格”,避免 N+1 查询 + const existingLatestPrices = await findAllLatestPrices(); + const existingByModelName = new Map(); + for (const price of existingLatestPrices) { + existingByModelName.set(price.modelName, price); + } + const result: PriceUpdateResult = { added: [], updated: [], unchanged: [], failed: [], total: entries.length, + skippedConflicts: [], }; // 处理每个模型的价格 @@ -88,29 +142,49 @@ export async function processPriceTableInternal( continue; } - // 查找该模型的最新价格 - const existingPrice = await findLatestPriceByModel(modelName); + // 检查是否存在手动添加的价格且不在覆盖列表中 + const isManualPrice = manualPrices.has(modelName); + if (isManualPrice && !overwriteSet.has(modelName)) { + // 跳过手动添加的模型,记录到 skippedConflicts + result.skippedConflicts?.push(modelName); + result.unchanged.push(modelName); + logger.debug(`跳过手动添加的模型: ${modelName}`); + continue; + } + + const existingPrice = existingByModelName.get(modelName) ?? null; if (!existingPrice) { // 模型不存在,新增记录 - await createModelPrice(modelName, priceData); + await createModelPrice(modelName, priceData, "litellm"); result.added.push(modelName); } else if (!isPriceDataEqual(existingPrice.priceData, priceData)) { - // 模型存在但价格发生变化,新增记录 - await createModelPrice(modelName, priceData); + // 模型存在但价格发生变化 + // 如果是手动模型且在覆盖列表中,先删除旧记录 + if (isManualPrice && overwriteSet.has(modelName)) { + await deleteModelPriceByName(modelName); + } + await createModelPrice(modelName, priceData, "litellm"); result.updated.push(modelName); } else { // 价格未发生变化,不需要更新 result.unchanged.push(modelName); } } catch (error) { - logger.error("处理模型 ${modelName} 失败:", error); + logger.error(`处理模型 ${modelName} 失败:`, error); result.failed.push(modelName); } } // 刷新页面数据 - revalidatePath("/settings/prices"); + try { + revalidatePath("/settings/prices"); + } catch (error) { + // 在后台任务/启动阶段可能没有 Next.js 的请求上下文,此处允许降级 + logger.debug("[ModelPrices] revalidatePath skipped", { + error: error instanceof Error ? error.message : String(error), + }); + } return { ok: true, data: result }; } catch (error) { @@ -122,9 +196,15 @@ export async function processPriceTableInternal( /** * 上传并更新模型价格表(Web UI 入口,包含权限检查) + * + * 支持格式: + * - JSON:PriceTableJson(内部入库格式) + * - TOML:云端价格表格式(会提取 models 表后再入库) + * @param overwriteManual - 可选,要覆盖的手动添加模型名称列表 */ export async function uploadPriceTable( - jsonContent: string + content: string, + overwriteManual?: string[] ): Promise> { // 权限检查:只有管理员可以上传价格表 const session = await getSession(); @@ -132,8 +212,19 @@ export async function uploadPriceTable( return { ok: false, error: "无权限执行此操作" }; } - // 调用核心逻辑 - return processPriceTableInternal(jsonContent); + // 先尝试 JSON;失败则按 TOML 解析(用于云端价格表文件直接上传) + let jsonContent = content; + try { + JSON.parse(content); + } catch { + const parseResult = parseCloudPriceTableToml(content); + if (!parseResult.ok) { + return { ok: false, error: parseResult.error }; + } + jsonContent = JSON.stringify(parseResult.data.models); + } + + return processPriceTableInternal(jsonContent, overwriteManual); } /** @@ -241,11 +332,75 @@ export async function getAvailableModelsByProviderType(): Promise { * 获取指定模型的最新价格 */ +/** + * 检查 LiteLLM 同步是否会产生冲突 + * @returns 冲突检查结果,包含是否有冲突以及冲突列表 + */ +export async function checkLiteLLMSyncConflicts(): Promise> { + try { + // 权限检查:只有管理员可以检查冲突 + const session = await getSession(); + if (!session || session.user.role !== "admin") { + return { ok: false, error: "无权限执行此操作" }; + } + + // 拉取并解析云端 TOML 价格表 + const tomlResult = await fetchCloudPriceTableToml(); + if (!tomlResult.ok) { + return { + ok: false, + error: tomlResult.error, + }; + } + + const parseResult = parseCloudPriceTableToml(tomlResult.data); + if (!parseResult.ok) { + return { ok: false, error: parseResult.error }; + } + + const priceTable: PriceTableJson = parseResult.data.models; + + // 获取数据库中所有 manual 价格 + const manualPrices = await findAllManualPrices(); + logger.info(`[Conflict Check] Found ${manualPrices.size} manual prices in database`); + + // 构建冲突列表:检查哪些 manual 模型会被 LiteLLM 同步覆盖 + const conflicts: SyncConflict[] = []; + for (const [modelName, manualPrice] of manualPrices) { + const litellmPrice = priceTable[modelName]; + if (litellmPrice && typeof litellmPrice === "object" && "mode" in litellmPrice) { + conflicts.push({ + modelName, + manualPrice: manualPrice.priceData, + litellmPrice: litellmPrice as ModelPriceData, + }); + } + } + + logger.info(`[Conflict Check] Found ${conflicts.length} conflicts`); + + return { + ok: true, + data: { + hasConflicts: conflicts.length > 0, + conflicts, + }, + }; + } catch (error) { + logger.error("检查同步冲突失败:", error); + const message = error instanceof Error ? error.message : "检查失败,请稍后重试"; + return { ok: false, error: message }; + } +} + /** * 从 LiteLLM CDN 同步价格表到数据库 + * @param overwriteManual - 可选,要覆盖的手动添加模型名称列表 * @returns 同步结果 */ -export async function syncLiteLLMPrices(): Promise> { +export async function syncLiteLLMPrices( + overwriteManual?: string[] +): Promise> { try { // 权限检查:只有管理员可以同步价格表 const session = await getSession(); @@ -253,32 +408,195 @@ export async function syncLiteLLMPrices(): Promise> { + try { + // 权限检查:只有管理员可以操作 + const session = await getSession(); + if (!session || session.user.role !== "admin") { + return { ok: false, error: "无权限执行此操作" }; + } + + // 验证输入 + if (!input.modelName?.trim()) { + return { ok: false, error: "模型名称不能为空" }; + } + + // 验证价格非负 + if ( + input.inputCostPerToken !== undefined && + (input.inputCostPerToken < 0 || !Number.isFinite(input.inputCostPerToken)) + ) { + return { ok: false, error: "输入价格必须为非负数" }; + } + if ( + input.outputCostPerToken !== undefined && + (input.outputCostPerToken < 0 || !Number.isFinite(input.outputCostPerToken)) + ) { + return { ok: false, error: "输出价格必须为非负数" }; + } + if ( + input.outputCostPerImage !== undefined && + (input.outputCostPerImage < 0 || !Number.isFinite(input.outputCostPerImage)) + ) { + return { ok: false, error: "图片价格必须为非负数" }; + } + if ( + input.inputCostPerRequest !== undefined && + (input.inputCostPerRequest < 0 || !Number.isFinite(input.inputCostPerRequest)) + ) { + return { ok: false, error: "按次调用价格必须为非负数" }; + } + if ( + input.cacheReadInputTokenCost !== undefined && + (input.cacheReadInputTokenCost < 0 || !Number.isFinite(input.cacheReadInputTokenCost)) + ) { + return { ok: false, error: "缓存读取价格必须为非负数" }; + } + if ( + input.cacheCreationInputTokenCost !== undefined && + (input.cacheCreationInputTokenCost < 0 || !Number.isFinite(input.cacheCreationInputTokenCost)) + ) { + return { ok: false, error: "缓存创建价格必须为非负数" }; + } + if ( + input.cacheCreationInputTokenCostAbove1hr !== undefined && + (input.cacheCreationInputTokenCostAbove1hr < 0 || + !Number.isFinite(input.cacheCreationInputTokenCostAbove1hr)) + ) { + return { ok: false, error: "缓存创建(1h)价格必须为非负数" }; + } + + // 构建价格数据 + const priceData: ModelPriceData = { + mode: input.mode, + display_name: input.displayName?.trim() || undefined, + litellm_provider: input.litellmProvider || undefined, + supports_prompt_caching: input.supportsPromptCaching, + input_cost_per_token: input.inputCostPerToken, + output_cost_per_token: input.outputCostPerToken, + output_cost_per_image: input.outputCostPerImage, + input_cost_per_request: input.inputCostPerRequest, + cache_read_input_token_cost: input.cacheReadInputTokenCost, + cache_creation_input_token_cost: input.cacheCreationInputTokenCost, + cache_creation_input_token_cost_above_1hr: input.cacheCreationInputTokenCostAbove1hr, + }; + + // 执行更新 + const result = await upsertModelPrice(input.modelName.trim(), priceData); + + // 刷新页面数据 + try { + revalidatePath("/settings/prices"); + } catch (error) { + // 在后台任务/启动阶段可能没有 Next.js 的请求上下文,此处允许降级 + logger.debug("[ModelPrices] revalidatePath skipped", { + error: error instanceof Error ? error.message : String(error), + }); + } + + return { ok: true, data: result }; + } catch (error) { + logger.error("更新模型价格失败:", error); + const message = error instanceof Error ? error.message : "操作失败,请稍后重试"; + return { ok: false, error: message }; + } +} + +/** + * 删除单个模型价格(硬删除) + */ +export async function deleteSingleModelPrice(modelName: string): Promise> { + try { + // 权限检查:只有管理员可以操作 + const session = await getSession(); + if (!session || session.user.role !== "admin") { + return { ok: false, error: "无权限执行此操作" }; + } + + // 验证输入 + if (!modelName?.trim()) { + return { ok: false, error: "模型名称不能为空" }; + } + + // 执行删除 + await deleteModelPriceByName(modelName.trim()); + + // 刷新页面数据 + try { + revalidatePath("/settings/prices"); + } catch (error) { + // 在后台任务/启动阶段可能没有 Next.js 的请求上下文,此处允许降级 + logger.debug("[ModelPrices] revalidatePath skipped", { + error: error instanceof Error ? error.message : String(error), + }); + } + + return { ok: true, data: undefined }; + } catch (error) { + logger.error("删除模型价格失败:", error); + const message = error instanceof Error ? error.message : "删除失败,请稍后重试"; + return { ok: false, error: message }; + } +} diff --git a/src/actions/my-usage.ts b/src/actions/my-usage.ts index 17f12bf21..88b9741c7 100644 --- a/src/actions/my-usage.ts +++ b/src/actions/my-usage.ts @@ -12,11 +12,13 @@ import type { CurrencyCode } from "@/lib/utils"; import { EXCLUDE_WARMUP_CONDITION } from "@/repository/_shared/message-request-conditions"; import { getSystemSettings } from "@/repository/system-config"; import { + findUsageLogsStats, findUsageLogsWithDetails, getDistinctEndpointsForKey, getDistinctModelsForKey, getTotalUsageForKey, type UsageLogFilters, + type UsageLogSummary, } from "@/repository/usage-logs"; import type { BillingModelSource } from "@/types/system-config"; import type { ActionResult } from "./types"; @@ -54,6 +56,7 @@ export interface MyUsageQuota { userLimitMonthlyUsd: number | null; userLimitTotalUsd: number | null; userLimitConcurrentSessions: number | null; + userRpmLimit: number | null; userCurrent5hUsd: number; userCurrentDailyUsd: number; userCurrentWeeklyUsd: number; @@ -71,6 +74,9 @@ export interface MyUsageQuota { keyName: string; keyIsEnabled: boolean; + userAllowedModels: string[]; + userAllowedClients: string[]; + expiresAt: Date | null; dailyResetMode: "fixed" | "rolling"; dailyResetTime: string; @@ -246,6 +252,7 @@ export async function getMyQuota(): Promise> { userLimitMonthlyUsd: user.limitMonthlyUsd ?? null, userLimitTotalUsd: user.limitTotalUsd ?? null, userLimitConcurrentSessions: user.limitConcurrentSessions ?? null, + userRpmLimit: user.rpm ?? null, userCurrent5hUsd: userCost5h, userCurrentDailyUsd: userCostDaily, userCurrentWeeklyUsd: userCostWeekly, @@ -263,6 +270,9 @@ export async function getMyQuota(): Promise> { keyName: key.name, keyIsEnabled: key.isEnabled ?? true, + userAllowedModels: user.allowedModels ?? [], + userAllowedClients: user.allowedClients ?? [], + expiresAt: key.expiresAt ?? null, dailyResetMode: key.dailyResetMode ?? "fixed", dailyResetTime: key.dailyResetTime ?? "00:00", @@ -385,12 +395,21 @@ export async function getMyUsageLogs( const pageSize = Math.min(rawPageSize, 100); const page = filters.page && filters.page > 0 ? filters.page : 1; + const parsedStart = filters.startDate + ? new Date(`${filters.startDate}T00:00:00`).getTime() + : Number.NaN; + const parsedEnd = filters.endDate + ? new Date(`${filters.endDate}T00:00:00`).getTime() + : Number.NaN; + + const startTime = Number.isFinite(parsedStart) ? parsedStart : undefined; + // endTime 使用“次日零点”作为排他上界(created_at < endTime),避免 23:59:59.999 的边界问题 + const endTime = Number.isFinite(parsedEnd) ? parsedEnd + 24 * 60 * 60 * 1000 : undefined; + const usageFilters: UsageLogFilters = { keyId: session.key.id, - startTime: filters.startDate - ? new Date(`${filters.startDate}T00:00:00`).getTime() - : undefined, - endTime: filters.endDate ? new Date(`${filters.endDate}T23:59:59.999`).getTime() : undefined, + startTime, + endTime, model: filters.model, statusCode: filters.statusCode, excludeStatusCode200: filters.excludeStatusCode200, @@ -488,3 +507,124 @@ async function getUserConcurrentSessions(userId: number): Promise { return 0; } } + +export interface MyStatsSummaryFilters { + startDate?: string; // "YYYY-MM-DD" + endDate?: string; // "YYYY-MM-DD" +} + +export interface ModelBreakdownItem { + model: string | null; + requests: number; + cost: number; + inputTokens: number; + outputTokens: number; +} + +export interface MyStatsSummary extends UsageLogSummary { + keyModelBreakdown: ModelBreakdownItem[]; + userModelBreakdown: ModelBreakdownItem[]; + currencyCode: CurrencyCode; +} + +/** + * Get aggregated statistics for a date range + * Uses findUsageLogsStats for efficient aggregation + */ +export async function getMyStatsSummary( + filters: MyStatsSummaryFilters = {} +): Promise> { + try { + const session = await getSession({ allowReadOnlyAccess: true }); + if (!session) return { ok: false, error: "Unauthorized" }; + + const settings = await getSystemSettings(); + const currencyCode = settings.currencyDisplay; + + // 日期字符串来自前端的 YYYY-MM-DD(目前使用 toISOString().split("T")[0] 生成),因此按 UTC 解析更一致。 + // 注意:new Date("YYYY-MM-DDT00:00:00") 会按本地时区解析,可能导致跨时区边界偏移。 + const parsedStart = filters.startDate + ? Date.parse(`${filters.startDate}T00:00:00.000Z`) + : Number.NaN; + const parsedEnd = filters.endDate ? Date.parse(`${filters.endDate}T00:00:00.000Z`) : Number.NaN; + + const startTime = Number.isFinite(parsedStart) ? parsedStart : undefined; + // endTime 使用“次日零点”作为排他上界(created_at < endTime),避免 23:59:59.999 的边界问题 + const endTime = Number.isFinite(parsedEnd) ? parsedEnd + 24 * 60 * 60 * 1000 : undefined; + + // Get aggregated stats using existing repository function + const stats = await findUsageLogsStats({ + keyId: session.key.id, + startTime, + endTime, + }); + + // Get model breakdown for current key + const keyBreakdown = await db + .select({ + model: messageRequest.model, + requests: sql`count(*)::int`, + cost: sql`COALESCE(sum(${messageRequest.costUsd}), 0)`, + inputTokens: sql`COALESCE(sum(${messageRequest.inputTokens}), 0)::int`, + outputTokens: sql`COALESCE(sum(${messageRequest.outputTokens}), 0)::int`, + }) + .from(messageRequest) + .where( + and( + eq(messageRequest.key, session.key.key), + isNull(messageRequest.deletedAt), + EXCLUDE_WARMUP_CONDITION, + startTime ? gte(messageRequest.createdAt, new Date(startTime)) : undefined, + endTime ? lt(messageRequest.createdAt, new Date(endTime)) : undefined + ) + ) + .groupBy(messageRequest.model) + .orderBy(sql`sum(${messageRequest.costUsd}) DESC`); + + // Get model breakdown for user (all keys) + const userBreakdown = await db + .select({ + model: messageRequest.model, + requests: sql`count(*)::int`, + cost: sql`COALESCE(sum(${messageRequest.costUsd}), 0)`, + inputTokens: sql`COALESCE(sum(${messageRequest.inputTokens}), 0)::int`, + outputTokens: sql`COALESCE(sum(${messageRequest.outputTokens}), 0)::int`, + }) + .from(messageRequest) + .where( + and( + eq(messageRequest.userId, session.user.id), + isNull(messageRequest.deletedAt), + EXCLUDE_WARMUP_CONDITION, + startTime ? gte(messageRequest.createdAt, new Date(startTime)) : undefined, + endTime ? lt(messageRequest.createdAt, new Date(endTime)) : undefined + ) + ) + .groupBy(messageRequest.model) + .orderBy(sql`sum(${messageRequest.costUsd}) DESC`); + + const result: MyStatsSummary = { + ...stats, + keyModelBreakdown: keyBreakdown.map((row) => ({ + model: row.model, + requests: row.requests, + cost: Number(row.cost ?? 0), + inputTokens: row.inputTokens, + outputTokens: row.outputTokens, + })), + userModelBreakdown: userBreakdown.map((row) => ({ + model: row.model, + requests: row.requests, + cost: Number(row.cost ?? 0), + inputTokens: row.inputTokens, + outputTokens: row.outputTokens, + })), + currencyCode, + }; + + return { ok: true, data: result }; + } catch (error) { + logger.error("[my-usage] getMyStatsSummary failed", error); + return { ok: false, error: "Failed to get statistics summary" }; + } +} diff --git a/src/actions/providers.ts b/src/actions/providers.ts index 0a812aad7..3a9d73827 100644 --- a/src/actions/providers.ts +++ b/src/actions/providers.ts @@ -41,6 +41,7 @@ import { getProviderStatistics, resetProviderTotalCostResetAt, updateProvider, + updateProviderPrioritiesBatch, } from "@/repository/provider"; import type { CacheTtlPreference } from "@/types/cache"; import type { @@ -54,6 +55,27 @@ import type { } from "@/types/provider"; import type { ActionResult } from "./types"; +type AutoSortResult = { + groups: Array<{ + costMultiplier: number; + priority: number; + providers: Array<{ id: number; name: string }>; + }>; + changes: Array<{ + providerId: number; + name: string; + oldPriority: number; + newPriority: number; + costMultiplier: number; + }>; + summary: { + totalProviders: number; + changedCount: number; + groupCount: number; + }; + applied: boolean; +}; + const API_TEST_TIMEOUT_LIMITS = { DEFAULT: 15000, MIN: 5000, @@ -740,6 +762,132 @@ export async function removeProvider(providerId: number): Promise } } +export async function autoSortProviderPriority(args: { + confirm: boolean; +}): Promise> { + try { + const session = await getSession(); + if (!session || session.user.role !== "admin") { + return { ok: false, error: "无权限执行此操作" }; + } + + const providers = await findAllProvidersFresh(); + if (providers.length === 0) { + return { + ok: true, + data: { + groups: [], + changes: [], + summary: { + totalProviders: 0, + changedCount: 0, + groupCount: 0, + }, + applied: args.confirm, + }, + }; + } + + const groupsByCostMultiplier = new Map(); + for (const provider of providers) { + const rawCostMultiplier = Number(provider.costMultiplier); + const costMultiplier = Number.isFinite(rawCostMultiplier) ? rawCostMultiplier : 0; + + if (!Number.isFinite(rawCostMultiplier)) { + logger.warn("autoSortProviderPriority:invalid_cost_multiplier", { + providerId: provider.id, + providerName: provider.name, + costMultiplier: provider.costMultiplier, + fallback: costMultiplier, + }); + } + + const bucket = groupsByCostMultiplier.get(costMultiplier); + if (bucket) { + bucket.push(provider); + } else { + groupsByCostMultiplier.set(costMultiplier, [provider]); + } + } + + const sortedCostMultipliers = Array.from(groupsByCostMultiplier.keys()).sort((a, b) => a - b); + const groups: AutoSortResult["groups"] = []; + const changes: AutoSortResult["changes"] = []; + + for (const [priority, costMultiplier] of sortedCostMultipliers.entries()) { + const groupProviders = groupsByCostMultiplier.get(costMultiplier) ?? []; + groups.push({ + costMultiplier, + priority, + providers: groupProviders + .slice() + .sort((a, b) => a.id - b.id) + .map((provider) => ({ id: provider.id, name: provider.name })), + }); + + for (const provider of groupProviders) { + const oldPriority = provider.priority ?? 0; + const newPriority = priority; + if (oldPriority !== newPriority) { + changes.push({ + providerId: provider.id, + name: provider.name, + oldPriority, + newPriority, + costMultiplier, + }); + } + } + } + + const summary: AutoSortResult["summary"] = { + totalProviders: providers.length, + changedCount: changes.length, + groupCount: groups.length, + }; + + if (!args.confirm) { + return { + ok: true, + data: { + groups, + changes, + summary, + applied: false, + }, + }; + } + + if (changes.length > 0) { + await updateProviderPrioritiesBatch( + changes.map((change) => ({ id: change.providerId, priority: change.newPriority })) + ); + try { + await publishProviderCacheInvalidation(); + } catch (error) { + logger.warn("autoSortProviderPriority:cache_invalidation_failed", { + changedCount: changes.length, + error: error instanceof Error ? error.message : String(error), + }); + } + } + + return { + ok: true, + data: { + groups, + changes, + summary, + applied: true, + }, + }; + } catch (error) { + logger.error("autoSortProviderPriority:error", error); + const message = error instanceof Error ? error.message : "自动排序供应商优先级失败"; + return { ok: false, error: message }; + } +} + /** * 获取所有供应商的熔断器健康状态 * 返回格式:{ providerId: { circuitState, failureCount, circuitOpenUntil, ... } } diff --git a/src/actions/system-config.ts b/src/actions/system-config.ts index f79d636ab..eedf78985 100644 --- a/src/actions/system-config.ts +++ b/src/actions/system-config.ts @@ -6,7 +6,7 @@ import { invalidateSystemSettingsCache } from "@/lib/config"; import { logger } from "@/lib/logger"; import { UpdateSystemSettingsSchema } from "@/lib/validation/schemas"; import { getSystemSettings, updateSystemSettings } from "@/repository/system-config"; -import type { SystemSettings } from "@/types/system-config"; +import type { ResponseFixerConfig, SystemSettings } from "@/types/system-config"; import type { ActionResult } from "./types"; export async function fetchSystemSettings(): Promise> { @@ -38,6 +38,9 @@ export async function saveSystemSettings(formData: { verboseProviderError?: boolean; enableHttp2?: boolean; interceptAnthropicWarmupRequests?: boolean; + enableThinkingSignatureRectifier?: boolean; + enableResponseFixer?: boolean; + responseFixerConfig?: Partial; }): Promise> { try { const session = await getSession(); @@ -59,6 +62,9 @@ export async function saveSystemSettings(formData: { verboseProviderError: validated.verboseProviderError, enableHttp2: validated.enableHttp2, interceptAnthropicWarmupRequests: validated.interceptAnthropicWarmupRequests, + enableThinkingSignatureRectifier: validated.enableThinkingSignatureRectifier, + enableResponseFixer: validated.enableResponseFixer, + responseFixerConfig: validated.responseFixerConfig, }); // Invalidate the system settings cache so proxy requests get fresh settings diff --git a/src/app/[locale]/dashboard/_components/user/edit-user-dialog.tsx b/src/app/[locale]/dashboard/_components/user/edit-user-dialog.tsx index 5d6b3a97f..e808276f9 100644 --- a/src/app/[locale]/dashboard/_components/user/edit-user-dialog.tsx +++ b/src/app/[locale]/dashboard/_components/user/edit-user-dialog.tsx @@ -72,10 +72,8 @@ function EditUserDialogInner({ onOpenChange, user, onSuccess }: EditUserDialogPr const tCommon = useTranslations("common"); const [isPending, startTransition] = useTransition(); - // Use shared hooks - const modelSuggestions = useModelSuggestions(user.providerGroup); - const showUserProviderGroup = Boolean(user.providerGroup?.trim()); - const userEditTranslations = useUserTranslations({ showProviderGroup: showUserProviderGroup }); + // Always show providerGroup field in edit mode + const userEditTranslations = useUserTranslations({ showProviderGroup: true }); const defaultValues = useMemo(() => buildDefaultValues(user), [user]); @@ -125,6 +123,9 @@ function EditUserDialogInner({ onOpenChange, user, onSuccess }: EditUserDialogPr const currentUserDraft = form.values || defaultValues; + // Model suggestions based on current providerGroup value + const modelSuggestions = useModelSuggestions(currentUserDraft.providerGroup); + const handleUserChange = (field: string | Record, value?: any) => { const prev = form.values || defaultValues; const next = { ...prev } as EditUserValues; @@ -236,7 +237,7 @@ function EditUserDialogInner({ onOpenChange, user, onSuccess }: EditUserDialogPr await handleEnableUser(); } }} - showProviderGroup={showUserProviderGroup} + showProviderGroup onChange={handleUserChange} translations={userEditTranslations} modelSuggestions={modelSuggestions} diff --git a/src/app/[locale]/dashboard/_components/user/forms/add-key-form.tsx b/src/app/[locale]/dashboard/_components/user/forms/add-key-form.tsx index c63eea78c..218493c9e 100644 --- a/src/app/[locale]/dashboard/_components/user/forms/add-key-form.tsx +++ b/src/app/[locale]/dashboard/_components/user/forms/add-key-form.tsx @@ -1,7 +1,7 @@ "use client"; import { useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; -import { useEffect, useState, useTransition } from "react"; +import { useCallback, useEffect, useState, useTransition } from "react"; import { toast } from "sonner"; import { addKey } from "@/actions/keys"; import { getAvailableProviderGroups } from "@/actions/providers"; @@ -119,6 +119,23 @@ export function AddKeyForm({ userId, user, isAdmin = false, onSuccess }: AddKeyF }, }); + // 选择分组时,自动移除 default(当有多个分组时) + const handleProviderGroupChange = useCallback( + (newValue: string) => { + const groups = newValue + .split(",") + .map((g) => g.trim()) + .filter(Boolean); + if (groups.length > 1 && groups.includes(PROVIDER_GROUP.DEFAULT)) { + const withoutDefault = groups.filter((g) => g !== PROVIDER_GROUP.DEFAULT); + form.setValue("providerGroup", withoutDefault.join(",")); + } else { + form.setValue("providerGroup", newValue); + } + }, + [form] + ); + return ( diff --git a/src/app/[locale]/dashboard/_components/user/forms/edit-key-form.tsx b/src/app/[locale]/dashboard/_components/user/forms/edit-key-form.tsx index cabddee3e..a3a569601 100644 --- a/src/app/[locale]/dashboard/_components/user/forms/edit-key-form.tsx +++ b/src/app/[locale]/dashboard/_components/user/forms/edit-key-form.tsx @@ -1,7 +1,7 @@ "use client"; import { useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; -import { useEffect, useState, useTransition } from "react"; +import { useCallback, useEffect, useState, useTransition } from "react"; import { toast } from "sonner"; import { editKey } from "@/actions/keys"; import { getAvailableProviderGroups } from "@/actions/providers"; @@ -138,6 +138,23 @@ export function EditKeyForm({ keyData, user, isAdmin = false, onSuccess }: EditK }, }); + // 选择分组时,自动移除 default(当有多个分组时) + const handleProviderGroupChange = useCallback( + (newValue: string) => { + const groups = newValue + .split(",") + .map((g) => g.trim()) + .filter(Boolean); + if (groups.length > 1 && groups.includes(PROVIDER_GROUP.DEFAULT)) { + const withoutDefault = groups.filter((g) => g !== PROVIDER_GROUP.DEFAULT); + form.setValue("providerGroup", withoutDefault.join(",")); + } else { + form.setValue("providerGroup", newValue); + } + }, + [form] + ); + return ( {showProviderGroup && translations.fields.providerGroup && ( -
- -
- {(user.providerGroup || PROVIDER_GROUP.DEFAULT) - .split(",") - .map((g) => g.trim()) - .filter(Boolean) - .map((group) => ( - - {group} - - ))} -
-
+ emitChange("providerGroup", val)} + disabled={false} + translations={translations.fields.providerGroup} + /> )} diff --git a/src/app/[locale]/dashboard/_components/user/hooks/use-user-translations.ts b/src/app/[locale]/dashboard/_components/user/hooks/use-user-translations.ts index 1360c99f1..96cb4e8de 100644 --- a/src/app/[locale]/dashboard/_components/user/hooks/use-user-translations.ts +++ b/src/app/[locale]/dashboard/_components/user/hooks/use-user-translations.ts @@ -26,6 +26,17 @@ export interface UserEditTranslations { providerGroup?: { label: string; placeholder: string; + providersSuffix?: string; + tagInputErrors?: { + empty?: string; + duplicate?: string; + too_long?: string; + invalid_format?: string; + max_tags?: string; + }; + errors?: { + loadFailed?: string; + }; }; enableStatus: { label: string; @@ -98,6 +109,7 @@ export function useUserTranslations( ): UserEditTranslations { const { showProviderGroup = false } = options; const t = useTranslations("dashboard.userManagement"); + const tUi = useTranslations("ui.tagInput"); return useMemo(() => { return { @@ -124,6 +136,17 @@ export function useUserTranslations( ? { label: t("userEditSection.fields.providerGroup.label"), placeholder: t("userEditSection.fields.providerGroup.placeholder"), + providersSuffix: t("providerGroupSelect.providersSuffix"), + tagInputErrors: { + empty: tUi("emptyTag"), + duplicate: tUi("duplicateTag"), + too_long: tUi("tooLong", { max: 50 }), + invalid_format: tUi("invalidFormat"), + max_tags: tUi("maxTags"), + }, + errors: { + loadFailed: t("providerGroupSelect.loadFailed"), + }, } : undefined, enableStatus: { @@ -187,5 +210,5 @@ export function useUserTranslations( year: t("quickExpire.oneYear"), }, }; - }, [t, showProviderGroup]); + }, [t, tUi, showProviderGroup]); } diff --git a/src/app/[locale]/dashboard/logs/_components/error-details-dialog.test.tsx b/src/app/[locale]/dashboard/logs/_components/error-details-dialog.test.tsx index 7a7bf207b..1f876fff7 100644 --- a/src/app/[locale]/dashboard/logs/_components/error-details-dialog.test.tsx +++ b/src/app/[locale]/dashboard/logs/_components/error-details-dialog.test.tsx @@ -1,5 +1,7 @@ import type { ReactNode } from "react"; import { renderToStaticMarkup } from "react-dom/server"; +import { createRoot } from "react-dom/client"; +import { act } from "react"; import { NextIntlClientProvider } from "next-intl"; import { Window } from "happy-dom"; import { describe, expect, test, vi } from "vitest"; @@ -55,6 +57,10 @@ vi.mock("@/components/ui/dialog", () => { }; }); +vi.mock("@/lib/utils/provider-chain-formatter", () => ({ + formatProviderTimeline: () => ({ timeline: "timeline", totalDuration: 123 }), +})); + import { ErrorDetailsDialog } from "./error-details-dialog"; const messages = { @@ -70,6 +76,31 @@ const messages = { processing: "Processing", success: "Success", error: "Error", + skipped: { + title: "Skipped", + reason: "Reason", + warmup: "Warmup", + desc: "Warmup skipped", + }, + blocked: { + title: "Blocked", + type: "Type", + sensitiveWord: "Sensitive word", + word: "Word", + matchType: "Match type", + matchTypeContains: "Contains", + matchTypeExact: "Exact", + matchTypeRegex: "Regex", + matchedText: "Matched text", + }, + modelRedirect: { + title: "Model redirect", + billingOriginal: "Billing original", + billingRedirected: "Billing redirected", + }, + specialSettings: { + title: "Special settings", + }, billingDetails: { title: "Billing details", }, @@ -84,6 +115,16 @@ const messages = { success: "No error (success)", default: "No error", }, + errorMessage: "Error message", + filteredProviders: "Filtered providers", + providerChain: { + title: "Provider chain", + totalDuration: "Total duration: {duration}", + }, + reasons: { + rateLimited: "Rate limited", + circuitOpen: "Circuit open", + }, }, billingDetails: { input: "Input", @@ -121,6 +162,33 @@ function getBillingAndPerformanceGrid(document: ReturnType) { } describe("error-details-dialog layout", () => { + test("renders special settings section when specialSettings exists", () => { + const html = renderWithIntl( + + ); + + expect(html).toContain("Special settings"); + expect(html).toContain("provider_parameter_override"); + }); + test("renders billing + performance as two-column grid on md when both present", () => { const html = renderWithIntl( { "md:grid-cols-2" ); }); + + test("uses gray status class for unexpected statusCode (e.g., 100)", () => { + const html = renderWithIntl( + + ); + + expect(html).toContain("bg-gray-100"); + }); + + test("covers 3xx and 4xx status badge classes", () => { + const html3xx = renderWithIntl( + + ); + expect(html3xx).toContain("bg-blue-100"); + + const html4xx = renderWithIntl( + + ); + expect(html4xx).toContain("bg-yellow-100"); + }); + + test("covers in-progress state when statusCode is null", () => { + const html = renderWithIntl( + + ); + + expect(html).toContain("In progress"); + expect(html).toContain("Processing"); + }); + + test("renders filtered providers and provider chain timeline when present", () => { + const html = renderWithIntl( + + ); + + expect(html).toContain("Filtered providers"); + expect(html).toContain("filtered-provider"); + expect(html).toContain("Provider chain"); + expect(html).toContain("timeline"); + expect(html).toContain("Total duration"); + }); + + test("formats JSON rate limit error message and filtered providers", () => { + const html = renderWithIntl( + + ); + + expect(html).toContain("Error message"); + expect(html).toContain("Rate limited"); + expect(html).toContain("p"); + expect(html).toContain("$1"); + }); + + test("formats non-rate-limit JSON error as pretty JSON", () => { + const html = renderWithIntl( + + ); + + expect(html).toContain("Error message"); + expect(html).toContain(""error""); + }); + + test("falls back to raw error message when it is not JSON", () => { + const html = renderWithIntl( + + ); + + expect(html).toContain("Error message"); + expect(html).toContain("not-json"); + }); + + test("renders warmup skipped and blocked sections when applicable", () => { + const html = renderWithIntl( + + ); + expect(html).toContain("Skipped"); + expect(html).toContain("Warmup"); + + const htmlBlocked = renderWithIntl( + + ); + expect(htmlBlocked).toContain("Blocked"); + expect(htmlBlocked).toContain("Sensitive word"); + expect(htmlBlocked).toContain("bad"); + expect(htmlBlocked).toContain("Contains"); + }); + + test("renders model redirect section when originalModel != currentModel", () => { + const html = renderWithIntl( + + ); + + expect(html).toContain("Model redirect"); + expect(html).toContain("m1"); + expect(html).toContain("m2"); + expect(html).toContain("Billing original"); + }); + + test("scrolls to model redirect section when scrollToRedirect is true", async () => { + vi.useFakeTimers(); + const container = document.createElement("div"); + document.body.appendChild(container); + + const scrollIntoViewMock = vi.fn(); + const originalScrollIntoView = Element.prototype.scrollIntoView; + Object.defineProperty(Element.prototype, "scrollIntoView", { + value: scrollIntoViewMock, + configurable: true, + }); + + const root = createRoot(container); + await act(async () => { + root.render( + + + + ); + }); + + await act(async () => { + vi.advanceTimersByTime(150); + }); + + expect(scrollIntoViewMock).toHaveBeenCalled(); + + await act(async () => { + root.unmount(); + }); + + Object.defineProperty(Element.prototype, "scrollIntoView", { + value: originalScrollIntoView, + configurable: true, + }); + vi.useRealTimers(); + container.remove(); + }); +}); + +describe("error-details-dialog multiplier", () => { + test("does not render multiplier row when costMultiplier is empty string", () => { + const html = renderWithIntl( + + ); + + expect(html).not.toContain("Multiplier"); + }); + + test("does not render multiplier row when costMultiplier is undefined", () => { + const html = renderWithIntl( + + ); + + expect(html).not.toContain("Multiplier"); + }); + + test("does not render multiplier row when costMultiplier is NaN", () => { + const html = renderWithIntl( + + ); + + expect(html).not.toContain("Multiplier"); + expect(html).not.toContain("NaN"); + }); + + test("does not render multiplier row when costMultiplier is Infinity", () => { + const html = renderWithIntl( + + ); + + expect(html).not.toContain("Multiplier"); + expect(html).not.toContain("Infinity"); + }); + + test("renders multiplier row when costMultiplier is finite and != 1", () => { + const html = renderWithIntl( + + ); + + expect(html).toContain("Multiplier"); + expect(html).toContain("0.20x"); + }); }); diff --git a/src/app/[locale]/dashboard/logs/_components/error-details-dialog.tsx b/src/app/[locale]/dashboard/logs/_components/error-details-dialog.tsx index fa113cf57..a2438256b 100644 --- a/src/app/[locale]/dashboard/logs/_components/error-details-dialog.tsx +++ b/src/app/[locale]/dashboard/logs/_components/error-details-dialog.tsx @@ -536,16 +536,20 @@ export function ErrorDetailsDialog({ )} - {costMultiplier && parseFloat(String(costMultiplier)) !== 1.0 && ( -
- - {t("logs.billingDetails.multiplier")}: - - - {parseFloat(String(costMultiplier)).toFixed(2)}x - -
- )} + {(() => { + if (costMultiplier === "" || costMultiplier == null) return null; + const multiplier = Number(costMultiplier); + if (!Number.isFinite(multiplier) || multiplier === 1) return null; + + return ( +
+ + {t("logs.billingDetails.multiplier")}: + + {multiplier.toFixed(2)}x +
+ ); + })()}
{t("logs.billingDetails.totalCost")}: diff --git a/src/app/[locale]/dashboard/logs/_components/provider-chain-popover.test.tsx b/src/app/[locale]/dashboard/logs/_components/provider-chain-popover.test.tsx new file mode 100644 index 000000000..dd1ad20e2 --- /dev/null +++ b/src/app/[locale]/dashboard/logs/_components/provider-chain-popover.test.tsx @@ -0,0 +1,149 @@ +import type { ReactNode } from "react"; +import { renderToStaticMarkup } from "react-dom/server"; +import { NextIntlClientProvider } from "next-intl"; +import { Window } from "happy-dom"; +import { describe, expect, test, vi } from "vitest"; + +vi.mock("@/lib/utils/provider-chain-formatter", () => ({ + formatProviderDescription: () => "provider description", +})); + +vi.mock("@/components/ui/tooltip", () => { + type PropsWithChildren = { children?: ReactNode }; + + function TooltipProvider({ children }: PropsWithChildren) { + return
{children}
; + } + + function Tooltip({ children }: PropsWithChildren) { + return
{children}
; + } + + function TooltipTrigger({ children }: PropsWithChildren) { + return
{children}
; + } + + function TooltipContent({ children }: PropsWithChildren) { + return
{children}
; + } + + return { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent }; +}); + +vi.mock("@/components/ui/popover", () => { + type PropsWithChildren = { children?: ReactNode }; + + function Popover({ children }: PropsWithChildren) { + return
{children}
; + } + + function PopoverTrigger({ children }: PropsWithChildren) { + return
{children}
; + } + + function PopoverContent({ children }: PropsWithChildren) { + return
{children}
; + } + + return { Popover, PopoverTrigger, PopoverContent }; +}); + +vi.mock("@/components/ui/button", () => ({ + Button: ({ + children, + className, + ...props + }: React.ComponentProps<"button"> & { variant?: string }) => ( + + ), +})); + +vi.mock("@/components/ui/badge", () => ({ + Badge: ({ children, className }: React.ComponentProps<"span"> & { variant?: string }) => ( + + {children} + + ), +})); + +import { ProviderChainPopover } from "./provider-chain-popover"; + +const messages = { + dashboard: { + logs: { + table: { + times: "times", + }, + providerChain: { + decisionChain: "Decision chain", + }, + details: { + clickStatusCode: "Click status code", + }, + }, + }, + "provider-chain": {}, +}; + +function renderWithIntl(node: ReactNode) { + return renderToStaticMarkup( + +
{node}
+
+ ); +} + +function parseHtml(html: string) { + const window = new Window(); + window.document.body.innerHTML = html; + return window.document; +} + +describe("provider-chain-popover layout", () => { + test("requestCount<=1 branch keeps truncation container shrinkable", () => { + const html = renderWithIntl( + + ); + const document = parseHtml(html); + + const container = document.querySelector("#root > div"); + const containerClass = container?.getAttribute("class") ?? ""; + expect(containerClass).toContain("min-w-0"); + expect(containerClass).toContain("w-full"); + + const truncateNode = document.querySelector("#root span.truncate"); + expect(truncateNode).not.toBeNull(); + }); + + test("requestCount>1 branch uses w-full/min-w-0 button and flex-1 name container", () => { + const html = renderWithIntl( + + ); + const document = parseHtml(html); + + const button = document.querySelector("#root button"); + expect(button).not.toBeNull(); + const buttonClass = button?.getAttribute("class") ?? ""; + expect(buttonClass).toContain("w-full"); + expect(buttonClass).toContain("min-w-0"); + + const nameContainer = document.querySelector("#root button .flex-1.min-w-0"); + expect(nameContainer).not.toBeNull(); + + const countBadge = Array.from(document.querySelectorAll('#root [data-slot="badge"]')).find( + (node) => (node.getAttribute("class") ?? "").includes("ml-1") + ); + expect(countBadge).not.toBeUndefined(); + }); +}); diff --git a/src/app/[locale]/dashboard/logs/_components/provider-chain-popover.tsx b/src/app/[locale]/dashboard/logs/_components/provider-chain-popover.tsx index cf8a2fa1e..f3b0e20a6 100644 --- a/src/app/[locale]/dashboard/logs/_components/provider-chain-popover.tsx +++ b/src/app/[locale]/dashboard/logs/_components/provider-chain-popover.tsx @@ -55,7 +55,7 @@ export function ProviderChainPopover({ // 如果只有一次请求,不显示 popover,只显示带 Tooltip 的名称 if (requestCount <= 1) { return ( -
+
@@ -78,11 +78,11 @@ export function ProviderChainPopover({ + ), +})); + +vi.mock("./error-details-dialog", () => ({ + ErrorDetailsDialog: () =>
, +})); + +import { UsageLogsTable } from "./usage-logs-table"; + +function makeLog(overrides: Partial): UsageLogRow { + return { + id: 1, + createdAt: new Date(), + sessionId: null, + requestSequence: null, + userName: "u", + keyName: "k", + providerName: "p", + model: "m", + originalModel: null, + endpoint: "/v1/messages", + statusCode: 200, + inputTokens: 1, + outputTokens: 1, + cacheCreationInputTokens: 0, + cacheReadInputTokens: 0, + cacheCreation5mInputTokens: 0, + cacheCreation1hInputTokens: 0, + cacheTtlApplied: null, + totalTokens: 2, + costUsd: "0.01", + costMultiplier: null, + durationMs: 100, + ttfbMs: 50, + errorMessage: null, + providerChain: null, + blockedBy: null, + blockedReason: null, + userAgent: null, + messagesCount: null, + context1mApplied: null, + specialSettings: null, + ...overrides, + }; +} + +describe("usage-logs-table multiplier badge", () => { + test("does not render multiplier badge for null/undefined/empty/NaN/Infinity", () => { + for (const costMultiplier of [null, undefined, "", "NaN", "Infinity"] as const) { + const html = renderToStaticMarkup( + {}} + isPending={false} + /> + ); + + expect(html).not.toContain("×0.00"); + expect(html).not.toContain("×NaN"); + expect(html).not.toContain("×Infinity"); + } + }); + + test("renders multiplier badge when finite and != 1", () => { + const html = renderToStaticMarkup( + {}} + isPending={false} + /> + ); + + expect(html).toContain("×0.20"); + expect(html).toContain("0.20x"); + }); + + test("renders warmup skipped and blocked labels", () => { + const htmlWarmup = renderToStaticMarkup( + {}} + isPending={false} + /> + ); + expect(htmlWarmup).toContain("logs.table.skipped"); + + const htmlBlocked = renderToStaticMarkup( + {}} + isPending={false} + /> + ); + expect(htmlBlocked).toContain("logs.table.blocked"); + }); + + test("invokes model redirect and pagination callbacks", async () => { + const onPageChange = vi.fn(); + const container = document.createElement("div"); + document.body.appendChild(container); + + const root = createRoot(container); + await act(async () => { + root.render( + + ); + }); + + // Trigger model redirect click (covers onRedirectClick handler) + const redirectButton = container.querySelector('button[data-slot="model-redirect"]'); + expect(redirectButton).not.toBeNull(); + await act(async () => { + redirectButton?.dispatchEvent(new MouseEvent("click", { bubbles: true })); + }); + + // Trigger pagination (covers onClick handlers) + const nextButton = Array.from(container.querySelectorAll("button")).find((b) => + (b.textContent ?? "").includes("logs.table.nextPage") + ); + expect(nextButton).not.toBeUndefined(); + await act(async () => { + nextButton?.dispatchEvent(new MouseEvent("click", { bubbles: true })); + }); + expect(onPageChange).toHaveBeenCalledWith(2); + + await act(async () => { + root.unmount(); + }); + container.remove(); + }); +}); diff --git a/src/app/[locale]/dashboard/logs/_components/usage-logs-table.tsx b/src/app/[locale]/dashboard/logs/_components/usage-logs-table.tsx index 55fc1cf86..b620cfa3d 100644 --- a/src/app/[locale]/dashboard/logs/_components/usage-logs-table.tsx +++ b/src/app/[locale]/dashboard/logs/_components/usage-logs-table.tsx @@ -93,6 +93,26 @@ export function UsageLogsTable({ const isWarmupSkipped = log.blockedBy === "warmup"; const isMutedRow = isNonBilling || isWarmupSkipped; + // 计算倍率(用于 Provider 列 Badge 和成本明细) + const successfulProvider = + log.providerChain && log.providerChain.length > 0 + ? [...log.providerChain] + .reverse() + .find( + (item) => + item.reason === "request_success" || item.reason === "retry_success" + ) + : null; + + const actualCostMultiplier = + successfulProvider?.costMultiplier ?? log.costMultiplier; + const multiplier = + actualCostMultiplier === "" || actualCostMultiplier == null + ? null + : Number(actualCostMultiplier); + const hasCostBadge = + multiplier != null && Number.isFinite(multiplier) && multiplier !== 1; + return (
- {(() => { - // 计算倍率,用于判断是否显示 Badge - const successfulProvider = - log.providerChain && log.providerChain.length > 0 - ? [...log.providerChain] - .reverse() - .find( - (item) => - item.reason === "request_success" || - item.reason === "retry_success" - ) - : null; - const actualCostMultiplier = - successfulProvider?.costMultiplier ?? log.costMultiplier; - const hasCostBadge = - !!actualCostMultiplier && - parseFloat(String(actualCostMultiplier)) !== 1.0; - - return ( - <> -
- 0 - ? log.providerChain[log.providerChain.length - 1].name - : null) || - log.providerName || - tChain("circuit.unknown") - } - hasCostBadge={hasCostBadge} - /> -
- {/* 摘要文字(第二行显示,左对齐) */} - {log.providerChain && - log.providerChain.length > 0 && - formatProviderSummary(log.providerChain, tChain) && ( -
- - - - - {formatProviderSummary(log.providerChain, tChain)} - - - -

- {formatProviderSummary(log.providerChain, tChain)} -

-
-
-
-
- )} - - ); - })()} +
+ 0 + ? log.providerChain[log.providerChain.length - 1].name + : null) || + log.providerName || + tChain("circuit.unknown") + } + hasCostBadge={hasCostBadge} + /> +
+ {/* 摘要文字(第二行显示,左对齐) */} + {log.providerChain && + log.providerChain.length > 0 && + formatProviderSummary(log.providerChain, tChain) && ( +
+ + + + + {formatProviderSummary(log.providerChain, tChain)} + + + +

+ {formatProviderSummary(log.providerChain, tChain)} +

+
+
+
+
+ )}
{/* 显示供应商倍率 Badge(不为 1.0 时) */} - {(() => { - // 从决策链中找到最后一个成功的供应商,使用它的倍率 - const successfulProvider = - log.providerChain && log.providerChain.length > 0 - ? [...log.providerChain] - .reverse() - .find( - (item) => - item.reason === "request_success" || - item.reason === "retry_success" - ) - : null; - - const actualCostMultiplier = - successfulProvider?.costMultiplier ?? log.costMultiplier; - - return actualCostMultiplier && - parseFloat(String(actualCostMultiplier)) !== 1.0 ? ( - 1.0 - ? "text-xs bg-orange-50 text-orange-700 border-orange-200 dark:bg-orange-950/30 dark:text-orange-300 dark:border-orange-800 shrink-0" - : "text-xs bg-green-50 text-green-700 border-green-200 dark:bg-green-950/30 dark:text-green-300 dark:border-green-800 shrink-0" - } - > - ×{parseFloat(String(actualCostMultiplier)).toFixed(2)} - - ) : null; - })()} + {hasCostBadge && multiplier != null ? ( + 1 + ? "text-xs bg-orange-50 text-orange-700 border-orange-200 dark:bg-orange-950/30 dark:text-orange-300 dark:border-orange-800 shrink-0" + : "text-xs bg-green-50 text-green-700 border-green-200 dark:bg-green-950/30 dark:text-green-300 dark:border-green-800 shrink-0" + } + > + ×{multiplier.toFixed(2)} + + ) : null}
)} @@ -234,14 +213,6 @@ export function UsageLogsTable({ setDialogState({ logId: log.id, scrollToRedirect: true }) } /> - {log.specialSettings && log.specialSettings.length > 0 ? ( - - {t("logs.table.specialSettings")} - - ) : null}
@@ -399,27 +370,11 @@ export function UsageLogsTable({ {formatTokenAmount(log.cacheReadInputTokens)} tokens (0.1x)
)} - {(() => { - const successfulProvider = - log.providerChain && log.providerChain.length > 0 - ? [...log.providerChain] - .reverse() - .find( - (item) => - item.reason === "request_success" || - item.reason === "retry_success" - ) - : null; - const actualCostMultiplier = - successfulProvider?.costMultiplier ?? log.costMultiplier; - return actualCostMultiplier && - parseFloat(String(actualCostMultiplier)) !== 1.0 ? ( -
- {t("logs.billingDetails.multiplier")}:{" "} - {parseFloat(String(actualCostMultiplier)).toFixed(2)}x -
- ) : null; - })()} + {hasCostBadge && multiplier != null ? ( +
+ {t("logs.billingDetails.multiplier")}: {multiplier.toFixed(2)}x +
+ ) : null} diff --git a/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.test.tsx b/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.test.tsx new file mode 100644 index 000000000..342b3d971 --- /dev/null +++ b/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.test.tsx @@ -0,0 +1,280 @@ +import { renderToStaticMarkup } from "react-dom/server"; +import type { ReactNode } from "react"; +import { createRoot } from "react-dom/client"; +import { act } from "react"; +import { describe, expect, test, vi } from "vitest"; + +import type { UsageLogRow } from "@/repository/usage-logs"; + +let mockLogs: UsageLogRow[] = []; +let mockIsLoading = false; +let mockIsError = false; +let mockError: unknown = null; +let mockHasNextPage = false; +let mockIsFetchingNextPage = false; + +vi.mock("next-intl", () => ({ + useTranslations: () => (key: string) => key, +})); + +vi.mock("@tanstack/react-query", () => ({ + useInfiniteQuery: () => ({ + data: { pages: [{ logs: mockLogs, nextCursor: null, hasMore: false }] }, + fetchNextPage: vi.fn(), + hasNextPage: mockHasNextPage, + isFetchingNextPage: mockIsFetchingNextPage, + isLoading: mockIsLoading, + isError: mockIsError, + error: mockError, + }), +})); + +vi.mock("@/hooks/use-virtualizer", () => ({ + useVirtualizer: () => ({ + getTotalSize: () => mockLogs.length * 52, + getVirtualItems: () => [ + ...mockLogs.map((_, index) => ({ + index, + start: index * 52, + size: 52, + })), + ...(mockHasNextPage + ? [ + { + index: mockLogs.length, + start: mockLogs.length * 52, + size: 52, + }, + ] + : []), + ], + }), +})); + +vi.mock("@/lib/utils/provider-chain-formatter", () => ({ + formatProviderSummary: () => "provider summary", +})); + +vi.mock("@/actions/usage-logs", () => ({ + getUsageLogsBatch: vi.fn(), +})); + +vi.mock("@/components/ui/tooltip", () => ({ + TooltipProvider: ({ children }: { children?: ReactNode }) =>
{children}
, + Tooltip: ({ children }: { children?: ReactNode }) =>
{children}
, + TooltipTrigger: ({ children }: { children?: ReactNode }) =>
{children}
, + TooltipContent: ({ children }: { children?: ReactNode }) =>
{children}
, +})); + +vi.mock("@/components/ui/button", () => ({ + Button: ({ children, className, ...props }: React.ComponentProps<"button">) => ( + + ), +})); + +vi.mock("@/components/ui/badge", () => ({ + Badge: ({ children, className }: React.ComponentProps<"span">) => ( + {children} + ), +})); + +vi.mock("@/components/ui/relative-time", () => ({ + RelativeTime: ({ fallback }: { fallback: string }) => {fallback}, +})); + +vi.mock("./model-display-with-redirect", () => ({ + ModelDisplayWithRedirect: ({ currentModel }: { currentModel: string | null }) => ( + {currentModel ?? "-"} + ), +})); + +vi.mock("./error-details-dialog", () => ({ + ErrorDetailsDialog: () =>
, +})); + +import { VirtualizedLogsTable } from "./virtualized-logs-table"; + +function makeLog(overrides: Partial): UsageLogRow { + return { + id: 1, + createdAt: new Date(), + sessionId: null, + requestSequence: null, + userName: "u", + keyName: "k", + providerName: "p", + model: "m", + originalModel: null, + endpoint: "/v1/messages", + statusCode: 200, + inputTokens: 1, + outputTokens: 1, + cacheCreationInputTokens: 0, + cacheReadInputTokens: 0, + cacheCreation5mInputTokens: 0, + cacheCreation1hInputTokens: 0, + cacheTtlApplied: null, + totalTokens: 2, + costUsd: "0.01", + costMultiplier: null, + durationMs: 100, + ttfbMs: 50, + errorMessage: null, + providerChain: null, + blockedBy: null, + blockedReason: null, + userAgent: null, + messagesCount: null, + context1mApplied: null, + specialSettings: null, + ...overrides, + }; +} + +describe("virtualized-logs-table multiplier badge", () => { + test("renders loading/error/empty states", () => { + mockIsError = false; + mockError = null; + mockHasNextPage = false; + mockIsFetchingNextPage = false; + + mockIsLoading = true; + mockLogs = []; + expect( + renderToStaticMarkup() + ).toContain("logs.stats.loading"); + + mockIsLoading = false; + mockIsError = true; + mockError = new Error("boom"); + expect( + renderToStaticMarkup() + ).toContain("boom"); + + mockIsError = false; + mockError = null; + mockLogs = []; + expect( + renderToStaticMarkup() + ).toContain("logs.table.noData"); + }); + + test("does not render cost multiplier badge for null/undefined/empty/NaN/Infinity", () => { + mockIsLoading = false; + mockIsError = false; + mockError = null; + mockHasNextPage = false; + mockIsFetchingNextPage = false; + + for (const costMultiplier of [null, undefined, "", "NaN", "Infinity"] as const) { + mockLogs = [makeLog({ id: 1, costMultiplier })]; + const html = renderToStaticMarkup( + + ); + expect(html).not.toContain("xNaN"); + expect(html).not.toContain("xInfinity"); + expect(html).not.toContain("x0.00"); + } + }); + + test("renders cost multiplier badge when finite and != 1", () => { + mockIsLoading = false; + mockIsError = false; + mockError = null; + mockHasNextPage = false; + mockIsFetchingNextPage = false; + + mockLogs = [makeLog({ id: 1, costMultiplier: "0.2" })]; + const html = renderToStaticMarkup( + + ); + expect(html).toContain("x0.20"); + }); + + test("shows scroll-to-top button after scroll and triggers scrollTo", async () => { + mockIsLoading = false; + mockIsError = false; + mockError = null; + mockHasNextPage = false; + mockIsFetchingNextPage = false; + mockLogs = [makeLog({ id: 1, costMultiplier: null })]; + + const container = document.createElement("div"); + document.body.appendChild(container); + + const root = createRoot(container); + await act(async () => { + root.render(); + }); + + const scroller = container.querySelector( + "div.h-\\[600px\\].overflow-auto" + ) as HTMLDivElement | null; + expect(scroller).not.toBeNull(); + + if (scroller) { + // happy-dom may not implement scrollTo; stub for assertion + const scrollToMock = vi.fn(); + (scroller as unknown as { scrollTo: typeof scrollToMock }).scrollTo = scrollToMock; + await act(async () => { + scroller.scrollTop = 600; + scroller.dispatchEvent(new Event("scroll")); + }); + + expect(container.innerHTML).toContain("logs.table.scrollToTop"); + + const button = container.querySelector("button.fixed") as HTMLButtonElement | null; + expect(button).not.toBeNull(); + await act(async () => { + button?.dispatchEvent(new MouseEvent("click", { bubbles: true })); + }); + expect(scrollToMock).toHaveBeenCalled(); + } + + await act(async () => { + root.unmount(); + }); + container.remove(); + }); + + test("renders blocked badge and loader row when applicable", () => { + mockIsLoading = false; + mockIsError = false; + mockError = null; + mockHasNextPage = true; + mockIsFetchingNextPage = false; + + mockLogs = [makeLog({ id: 1, blockedBy: "sensitive_word" })]; + const html = renderToStaticMarkup( + + ); + expect(html).toContain("logs.table.blocked"); + + // Loader row should render when hasNextPage=true + expect(html).toContain("animate-spin"); + }); + + test("renders provider summary and fetching state when enabled", () => { + mockIsLoading = false; + mockIsError = false; + mockError = null; + mockHasNextPage = true; + mockIsFetchingNextPage = true; + + mockLogs = [ + makeLog({ + id: 1, + costMultiplier: null, + providerChain: [{ id: 1, name: "p1", reason: "request_success", statusCode: 200 }], + }), + ]; + + const html = renderToStaticMarkup( + + ); + expect(html).toContain("provider summary"); + expect(html).toContain("logs.table.loadingMore"); + }); +}); diff --git a/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.tsx b/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.tsx index 0f27deffe..52f07e023 100644 --- a/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.tsx +++ b/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.tsx @@ -295,7 +295,7 @@ export function VirtualizedLogsTable({ ) : (
-
+
{(() => { // 计算倍率,用于判断是否显示 Badge const successfulProvider = @@ -310,34 +310,39 @@ export function VirtualizedLogsTable({ : null; const actualCostMultiplier = successfulProvider?.costMultiplier ?? log.costMultiplier; + const multiplier = Number(actualCostMultiplier); const hasCostBadge = - !!actualCostMultiplier && - parseFloat(String(actualCostMultiplier)) !== 1.0; + actualCostMultiplier !== "" && + actualCostMultiplier != null && + Number.isFinite(multiplier) && + multiplier !== 1; return ( <> - 0 - ? log.providerChain[log.providerChain.length - 1].name - : null) || - log.providerName || - tChain("circuit.unknown") - } - hasCostBadge={hasCostBadge} - /> +
+ 0 + ? log.providerChain[log.providerChain.length - 1].name + : null) || + log.providerName || + tChain("circuit.unknown") + } + hasCostBadge={hasCostBadge} + /> +
{/* Cost multiplier badge */} {hasCostBadge && ( 1.0 + multiplier > 1 ? "text-xs bg-orange-50 text-orange-700 border-orange-200 dark:bg-orange-950/30 dark:text-orange-300 dark:border-orange-800 shrink-0" : "text-xs bg-green-50 text-green-700 border-green-200 dark:bg-green-950/30 dark:text-green-300 dark:border-green-800 shrink-0" } > - x{parseFloat(String(actualCostMultiplier)).toFixed(2)} + x{multiplier.toFixed(2)} )} @@ -578,6 +583,7 @@ export function VirtualizedLogsTable({ messagesCount={log.messagesCount} endpoint={log.endpoint} billingModelSource={billingModelSource} + specialSettings={log.specialSettings} inputTokens={log.inputTokens} outputTokens={log.outputTokens} cacheCreationInputTokens={log.cacheCreationInputTokens} diff --git a/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-messages-client-actions.test.tsx b/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-messages-client-actions.test.tsx index 9611f1456..bb5993295 100644 --- a/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-messages-client-actions.test.tsx +++ b/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-messages-client-actions.test.tsx @@ -75,7 +75,21 @@ vi.mock("./request-list-sidebar", () => { vi.mock("./session-details-tabs", () => { return { - SessionMessagesDetailsTabs: () =>
, + SessionMessagesDetailsTabs: (props: { + response: string | null; + onCopyResponse?: () => void; + isResponseCopied?: boolean; + }) => { + return ( +
+ {props.response && props.onCopyResponse ? ( + + ) : null} +
+ ); + }, }; }); @@ -180,9 +194,8 @@ describe("SessionMessagesClient (request export actions)", () => { const { container, unmount } = renderClient(); await flushEffects(); - const buttons = Array.from(container.querySelectorAll("button")); - const downloadBtn = buttons.find((b) => b.textContent?.includes("actions.downloadMessages")); - expect(downloadBtn).not.toBeUndefined(); + const downloadBtn = container.querySelector('button[aria-label="actions.downloadMessages"]'); + expect(downloadBtn).not.toBeNull(); click(downloadBtn as HTMLButtonElement); expect(createObjectURLSpy).toHaveBeenCalledTimes(1); @@ -268,9 +281,8 @@ describe("SessionMessagesClient (request export actions)", () => { 2 ); - const buttons = Array.from(container.querySelectorAll("button")); - const copyBtn = buttons.find((b) => b.textContent?.includes("actions.copyMessages")); - expect(copyBtn).not.toBeUndefined(); + const copyBtn = container.querySelector('button[aria-label="actions.copyMessages"]'); + expect(copyBtn).not.toBeNull(); await clickAsync(copyBtn as HTMLButtonElement); expect(clipboardWriteText).toHaveBeenCalledWith(expectedJson); act(() => { @@ -278,8 +290,8 @@ describe("SessionMessagesClient (request export actions)", () => { }); vi.useRealTimers(); - const downloadBtn = buttons.find((b) => b.textContent?.includes("actions.downloadMessages")); - expect(downloadBtn).not.toBeUndefined(); + const downloadBtn = container.querySelector('button[aria-label="actions.downloadMessages"]'); + expect(downloadBtn).not.toBeNull(); click(downloadBtn as HTMLButtonElement); expect(createObjectURLSpy).toHaveBeenCalledTimes(1); @@ -321,8 +333,8 @@ describe("SessionMessagesClient (request export actions)", () => { const { container, unmount } = renderClient(); await flushEffects(); - expect(container.textContent).not.toContain("actions.copyMessages"); - expect(container.textContent).not.toContain("actions.downloadMessages"); + expect(container.querySelector('button[aria-label="actions.copyMessages"]')).toBeNull(); + expect(container.querySelector('button[aria-label="actions.downloadMessages"]')).toBeNull(); unmount(); }); @@ -352,8 +364,8 @@ describe("SessionMessagesClient (request export actions)", () => { const { container, unmount } = renderClient(); await flushEffects(); - expect(container.textContent).not.toContain("actions.copyMessages"); - expect(container.textContent).not.toContain("actions.downloadMessages"); + expect(container.querySelector('button[aria-label="actions.copyMessages"]')).toBeNull(); + expect(container.querySelector('button[aria-label="actions.downloadMessages"]')).toBeNull(); unmount(); }); diff --git a/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-messages-client.test.tsx b/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-messages-client.test.tsx index d5f257b2e..f2c92da01 100644 --- a/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-messages-client.test.tsx +++ b/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-messages-client.test.tsx @@ -7,48 +7,12 @@ import { act } from "react"; import { createRoot } from "react-dom/client"; import { NextIntlClientProvider } from "next-intl"; import { describe, expect, test, vi } from "vitest"; +import dashboardMessages from "@messages/en/dashboard.json"; import { SessionMessagesDetailsTabs } from "./session-details-tabs"; +// Use real locale messages to ensure test stays in sync with actual translations const messages = { - dashboard: { - sessions: { - details: { - requestHeaders: "Request Headers", - requestBody: "Request Body", - requestMessages: "Request Messages", - specialSettings: "Special", - responseHeaders: "Response Headers", - responseBody: "Response Body", - noHeaders: "No data", - noData: "No Data", - }, - codeDisplay: { - raw: "Raw", - pretty: "Pretty", - searchPlaceholder: "Search", - expand: "Expand", - collapse: "Collapse", - themeAuto: "Auto", - themeLight: "Light", - themeDark: "Dark", - noMatches: "No matches", - onlyMatches: "Only matches", - showAll: "Show all", - prevPage: "Prev", - nextPage: "Next", - pageInfo: "Page {page} / {total}", - sseEvent: "Event", - sseData: "Data", - hardLimit: { - title: "Content too large", - size: "Size: {sizeMB} MB ({sizeBytes} bytes)", - maximum: "Maximum allowed: {maxSizeMB} MB or {maxLines} lines", - hint: "Please download the file to view the full content.", - download: "Download", - }, - }, - }, - }, + dashboard: dashboardMessages, } as const; function renderWithIntl(node: ReactNode) { @@ -107,39 +71,61 @@ describe("SessionMessagesDetailsTabs", () => { container.querySelector("[data-testid='session-tab-trigger-request-messages']") ).not.toBeNull(); - const requestBody = container.querySelector( - "[data-testid='session-tab-request-body'] [data-testid='code-display']" + // Check request body tab content within its scope + const requestBodyTab = container.querySelector( + "[data-testid='session-tab-request-body']" ) as HTMLElement; - expect(requestBody.getAttribute("data-language")).toBe("json"); - expect(container.textContent).toContain('"model": "gpt-5.2"'); + const requestBodyCodeDisplay = requestBodyTab.querySelector( + "[data-testid='code-display']" + ) as HTMLElement; + expect(requestBodyCodeDisplay.getAttribute("data-language")).toBe("json"); + expect(requestBodyTab.textContent).toContain('"model": "gpt-5.2"'); + // Switch to request headers tab and check within its scope const requestHeadersTrigger = container.querySelector( "[data-testid='session-tab-trigger-request-headers']" ) as HTMLElement; click(requestHeadersTrigger); - expect(container.textContent).toContain("CLIENT: POST https://example.com/v1/responses"); + const requestHeadersTab = container.querySelector( + "[data-testid='session-tab-request-headers']" + ) as HTMLElement; + expect(requestHeadersTab.textContent).toContain( + "CLIENT: POST https://example.com/v1/responses" + ); + // Switch to request messages tab and check within its scope const requestMessagesTrigger = container.querySelector( "[data-testid='session-tab-trigger-request-messages']" ) as HTMLElement; click(requestMessagesTrigger); - expect(container.textContent).toContain('"content": "hi"'); + const requestMessagesTab = container.querySelector( + "[data-testid='session-tab-request-messages']" + ) as HTMLElement; + expect(requestMessagesTab.textContent).toContain('"content": "hi"'); + // Switch to response body tab and check SSE detection const responseBodyTrigger = container.querySelector( "[data-testid='session-tab-trigger-response-body']" ) as HTMLElement; click(responseBodyTrigger); - const responseBody = container.querySelector( - "[data-testid='session-tab-response-body'] [data-testid='code-display']" + const responseBodyTab = container.querySelector( + "[data-testid='session-tab-response-body']" ) as HTMLElement; - expect(responseBody.getAttribute("data-language")).toBe("sse"); + const responseBodyCodeDisplay = responseBodyTab.querySelector( + "[data-testid='code-display']" + ) as HTMLElement; + expect(responseBodyCodeDisplay.getAttribute("data-language")).toBe("sse"); + // Switch to response headers tab and check within its scope const responseHeadersTrigger = container.querySelector( "[data-testid='session-tab-trigger-response-headers']" ) as HTMLElement; click(responseHeadersTrigger); - expect(container.textContent).toContain( + const responseHeadersTab = container.querySelector( + "[data-testid='session-tab-response-headers']" + ) as HTMLElement; + expect(responseHeadersTab.textContent).toContain( "UPSTREAM: HTTP 200 https://api.example.com/v1/responses" ); @@ -165,10 +151,13 @@ describe("SessionMessagesDetailsTabs", () => { ) as HTMLElement; click(responseBodyTrigger); - const responseBody = container.querySelector( - "[data-testid='session-tab-response-body'] [data-testid='code-display']" + const responseBodyTab = container.querySelector( + "[data-testid='session-tab-response-body']" ) as HTMLElement; - expect(responseBody.getAttribute("data-language")).toBe("json"); + const responseBodyCodeDisplay = responseBodyTab.querySelector( + "[data-testid='code-display']" + ) as HTMLElement; + expect(responseBodyCodeDisplay.getAttribute("data-language")).toBe("json"); unmount(); }); @@ -187,19 +176,31 @@ describe("SessionMessagesDetailsTabs", () => { /> ); - expect(container.textContent).toContain("No Data"); + // Check default tab (request body) shows storageTip when null - scoped to tab + const requestBodyTab = container.querySelector( + "[data-testid='session-tab-request-body']" + ) as HTMLElement; + expect(requestBodyTab.textContent).toContain(dashboardMessages.sessions.details.storageTip); + // Switch to request headers tab and check storageTip - scoped to tab const requestHeadersTrigger = container.querySelector( "[data-testid='session-tab-trigger-request-headers']" ) as HTMLElement; click(requestHeadersTrigger); - expect(container.textContent).toContain("No data"); + const requestHeadersTab = container.querySelector( + "[data-testid='session-tab-request-headers']" + ) as HTMLElement; + expect(requestHeadersTab.textContent).toContain(dashboardMessages.sessions.details.storageTip); + // Switch to special settings tab and check noData - scoped to tab const specialSettingsTrigger = container.querySelector( "[data-testid='session-tab-trigger-special-settings']" ) as HTMLElement; click(specialSettingsTrigger); - expect(container.textContent).toContain("No Data"); + const specialSettingsTab = container.querySelector( + "[data-testid='session-tab-special-settings']" + ) as HTMLElement; + expect(specialSettingsTab.textContent).toContain(dashboardMessages.sessions.details.noData); unmount(); }); @@ -230,7 +231,9 @@ describe("SessionMessagesDetailsTabs", () => { const requestHeadersTab = container.querySelector( "[data-testid='session-tab-request-headers']" ) as HTMLElement; - expect(requestHeadersTab.textContent).not.toContain("Content too large"); + expect(requestHeadersTab.textContent).not.toContain( + dashboardMessages.sessions.codeDisplay.hardLimit.title + ); const search = requestHeadersTab.querySelector( "[data-testid='code-display-search']" @@ -277,8 +280,9 @@ describe("SessionMessagesDetailsTabs", () => { const requestBodyTab = container.querySelector( "[data-testid='session-tab-request-body']" ) as HTMLElement; - expect(requestBodyTab.textContent).toContain("Content too large"); - expect(requestBodyTab.textContent).toContain("30,000 lines"); + expect(requestBodyTab.textContent).toContain( + dashboardMessages.sessions.codeDisplay.hardLimit.title + ); const downloadBtn = requestBodyTab.querySelector( "[data-testid='code-display-hard-limit-download']" diff --git a/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-messages-client.tsx b/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-messages-client.tsx index 780420c6b..032ae1f3d 100644 --- a/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-messages-client.tsx +++ b/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-messages-client.tsx @@ -372,6 +372,7 @@ export function SessionMessagesClient() { variant="outline" size="icon" className="h-8 w-8" + aria-label={t("actions.copyMessages")} onClick={handleCopyRequest} > {copiedRequest ? ( @@ -379,6 +380,7 @@ export function SessionMessagesClient() { ) : ( )} + {t("actions.copyMessages")} {t("actions.copyMessages")} @@ -392,9 +394,11 @@ export function SessionMessagesClient() { variant="outline" size="icon" className="h-8 w-8" + aria-label={t("actions.downloadMessages")} onClick={handleDownloadRequest} > + {t("actions.downloadMessages")} {t("actions.downloadMessages")} @@ -558,10 +562,12 @@ export function SessionMessagesClient() { {t("actions.terminateSessionTitle")} - - {t("actions.terminateSessionDescription")} -
- {sessionId} + +
+ {t("actions.terminateSessionDescription")} +
+ {sessionId} +
diff --git a/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-stats.tsx b/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-stats.tsx index ec599a957..5d94a720f 100644 --- a/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-stats.tsx +++ b/src/app/[locale]/dashboard/sessions/[sessionId]/messages/_components/session-stats.tsx @@ -14,7 +14,6 @@ import { import { useTranslations } from "next-intl"; import { Badge } from "@/components/ui/badge"; import { Separator } from "@/components/ui/separator"; -import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; import { cn } from "@/lib/utils"; import { type CurrencyCode, formatCurrency } from "@/lib/utils/currency"; diff --git a/src/app/[locale]/my-usage/_components/collapsible-quota-card.tsx b/src/app/[locale]/my-usage/_components/collapsible-quota-card.tsx new file mode 100644 index 000000000..a8cce1838 --- /dev/null +++ b/src/app/[locale]/my-usage/_components/collapsible-quota-card.tsx @@ -0,0 +1,179 @@ +"use client"; + +import { AlertTriangle, ChevronDown, Infinity, PieChart } from "lucide-react"; +import { useTranslations } from "next-intl"; +import { useState } from "react"; +import type { MyUsageQuota } from "@/actions/my-usage"; +import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible"; +import type { CurrencyCode } from "@/lib/utils"; +import { cn } from "@/lib/utils"; +import { calculateUsagePercent } from "@/lib/utils/limit-helpers"; +import { QuotaCards } from "./quota-cards"; + +interface CollapsibleQuotaCardProps { + quota: MyUsageQuota | null; + loading?: boolean; + currencyCode?: CurrencyCode; + keyExpiresAt?: Date | null; + userExpiresAt?: Date | null; + defaultOpen?: boolean; +} + +export function CollapsibleQuotaCard({ + quota, + loading = false, + currencyCode = "USD", + keyExpiresAt, + userExpiresAt, + defaultOpen = false, +}: CollapsibleQuotaCardProps) { + const [isOpen, setIsOpen] = useState(defaultOpen); + const t = useTranslations("myUsage.quotaCollapsible"); + + // Calculate summary metrics + const userDailyPct = calculateUsagePercent( + quota?.userCurrentDailyUsd ?? 0, + quota?.userLimitDailyUsd ?? null + ); + const userMonthlyPct = calculateUsagePercent( + quota?.userCurrentMonthlyUsd ?? 0, + quota?.userLimitMonthlyUsd ?? null + ); + const userTotalPct = calculateUsagePercent( + quota?.userCurrentTotalUsd ?? 0, + quota?.userLimitTotalUsd ?? null + ); + + // Use user-level percentages for summary display (null = unlimited) + const dailyPct = userDailyPct; + const monthlyPct = userMonthlyPct; + const totalPct = userTotalPct; + + const hasWarning = + (dailyPct !== null && dailyPct >= 80) || + (monthlyPct !== null && monthlyPct >= 80) || + (totalPct !== null && totalPct >= 80); + const hasDanger = + (dailyPct !== null && dailyPct >= 95) || + (monthlyPct !== null && monthlyPct >= 95) || + (totalPct !== null && totalPct >= 95); + + const getPercentColor = (pct: number | null) => { + if (pct === null) return "text-muted-foreground"; + if (pct >= 95) return "text-destructive"; + if (pct >= 80) return "text-amber-600 dark:text-amber-400"; + return "text-foreground"; + }; + + return ( + +
+ + + + + +
+ +
+
+
+
+ ); +} diff --git a/src/app/[locale]/my-usage/_components/expiration-info.tsx b/src/app/[locale]/my-usage/_components/expiration-info.tsx index 6eaa31dc7..5f75f7837 100644 --- a/src/app/[locale]/my-usage/_components/expiration-info.tsx +++ b/src/app/[locale]/my-usage/_components/expiration-info.tsx @@ -9,6 +9,7 @@ import { formatDate, getLocaleDateFormat } from "@/lib/utils/date-format"; interface ExpirationInfoProps { keyExpiresAt: Date | null; userExpiresAt: Date | null; + userRpmLimit?: number | null; className?: string; } @@ -17,7 +18,12 @@ const ONE_DAY_IN_SECONDS = 24 * 60 * 60; type ExpireStatus = "none" | "normal" | "warning" | "danger" | "expired"; -export function ExpirationInfo({ keyExpiresAt, userExpiresAt, className }: ExpirationInfoProps) { +export function ExpirationInfo({ + keyExpiresAt, + userExpiresAt, + userRpmLimit, + className, +}: ExpirationInfoProps) { const t = useTranslations("myUsage.expiration"); const locale = useLocale(); @@ -67,7 +73,9 @@ export function ExpirationInfo({ keyExpiresAt, userExpiresAt, className }: Expir

{label}

- {status === "expired" ? t("expired") : formatExpiry(value)} + {status === "expired" + ? `${t("expired")} (${formatExpiry(value)})` + : formatExpiry(value)}
{showCountdown ? ( @@ -81,9 +89,17 @@ export function ExpirationInfo({ keyExpiresAt, userExpiresAt, className }: Expir }; return ( -
+
{renderItem(t("keyExpires"), keyExpiresAt, keyCountdown)} {renderItem(t("userExpires"), userExpiresAt, userCountdown)} +
+

{t("rpmLimit")}

+
+ + {userRpmLimit != null ? userRpmLimit.toLocaleString() : "∞"} + +
+
); } diff --git a/src/app/[locale]/my-usage/_components/loading-states.test.tsx b/src/app/[locale]/my-usage/_components/loading-states.test.tsx index 62a458af6..a7f170da8 100644 --- a/src/app/[locale]/my-usage/_components/loading-states.test.tsx +++ b/src/app/[locale]/my-usage/_components/loading-states.test.tsx @@ -3,18 +3,11 @@ import { renderToStaticMarkup } from "react-dom/server"; import { NextIntlClientProvider } from "next-intl"; import { describe, expect, test } from "vitest"; import { QuotaCards } from "./quota-cards"; -import { TodayUsageCard } from "./today-usage-card"; const messages = { myUsage: { quota: {}, expiration: {}, - today: { - title: "Today", - autoRefresh: "Auto refresh {seconds}s", - refresh: "Refresh", - modelBreakdown: "Model breakdown", - }, }, common: { loading: "Loading...", @@ -35,10 +28,4 @@ describe("my-usage loading states", () => { expect(html).toContain("Loading..."); expect(html).toContain('data-slot="skeleton"'); }); - - test("TodayUsageCard renders skeletons and loading label when loading", () => { - const html = renderWithIntl(); - expect(html).toContain("Loading..."); - expect(html).toContain('data-slot="skeleton"'); - }); }); diff --git a/src/app/[locale]/my-usage/_components/my-usage-header.tsx b/src/app/[locale]/my-usage/_components/my-usage-header.tsx index 5131a032e..b3258e2c1 100644 --- a/src/app/[locale]/my-usage/_components/my-usage-header.tsx +++ b/src/app/[locale]/my-usage/_components/my-usage-header.tsx @@ -71,7 +71,9 @@ export function MyUsageHeader({
-

{t("title")}

+

+ {userName ? t("welcome", { name: userName }) : t("title")} +

{renderCountdownChip(tExpiration("keyExpires"), keyExpiresAt, keyCountdown)} {renderCountdownChip(tExpiration("userExpires"), userExpiresAt, userCountdown)}
@@ -85,7 +87,6 @@ export function MyUsageHeader({ {userName ?? "—"}
-

{t("subtitle")}

+
+ + + {loading ? ( +
+ {Array.from({ length: 4 }).map((_, index) => ( +
+ + +
+ ))} +
+ ) : stats ? ( + <> + {/* Main metrics */} +
+ {/* Total Requests */} +
+
{t("totalRequests")}
+
+ {stats.totalRequests.toLocaleString()} +
+
+ + {/* Total Cost */} +
+
{t("totalCost")}
+
+ {formatCurrency(stats.totalCost, currencyCode)} +
+
+ + {/* Total Tokens */} +
+
{t("totalTokens")}
+
+ {formatTokenAmount(stats.totalTokens)} +
+
+
+ {t("input")}: + {formatTokenAmount(stats.totalInputTokens)} +
+
+ {t("output")}: + {formatTokenAmount(stats.totalOutputTokens)} +
+
+
+ + {/* Cache Tokens */} +
+
{t("cacheTokens")}
+
+ {formatTokenAmount(stats.totalCacheCreationTokens + stats.totalCacheReadTokens)} +
+
+
+ {t("write")}: + + {formatTokenAmount(stats.totalCacheCreationTokens)} + +
+
+ {t("read")}: + + {formatTokenAmount(stats.totalCacheReadTokens)} + +
+
+
+
+ + + + {/* Model Breakdown - 2 columns: Key | User */} +
+

{t("modelBreakdown")}

+
+ {/* Key Stats */} +
+

+ {t("keyStats")} +

+ {stats.keyModelBreakdown.length > 0 ? ( +
+ {stats.keyModelBreakdown.map((item, index) => ( + + ))} +
+ ) : ( +

{t("noData")}

+ )} +
+ + {/* User Stats */} +
+

+ {t("userStats")} +

+ {stats.userModelBreakdown.length > 0 ? ( +
+ {stats.userModelBreakdown.map((item, index) => ( + + ))} +
+ ) : ( +

{t("noData")}

+ )} +
+
+
+ + ) : ( +

{t("noData")}

+ )} +
+ + ); +} + +interface ModelBreakdownRowProps { + model: string | null; + requests: number; + cost: number; + inputTokens: number; + outputTokens: number; + currencyCode: CurrencyCode; +} + +function ModelBreakdownRow({ + model, + requests, + cost, + inputTokens, + outputTokens, + currencyCode, +}: ModelBreakdownRowProps) { + const t = useTranslations("myUsage.stats"); + + return ( +
+
+ {model || t("unknownModel")} + + {requests.toLocaleString()} req · {formatTokenAmount(inputTokens + outputTokens)} tok + +
+
+ {formatCurrency(cost, currencyCode)} +
+
+ ); +} diff --git a/src/app/[locale]/my-usage/_components/today-usage-card.tsx b/src/app/[locale]/my-usage/_components/today-usage-card.tsx deleted file mode 100644 index ce6c2726c..000000000 --- a/src/app/[locale]/my-usage/_components/today-usage-card.tsx +++ /dev/null @@ -1,131 +0,0 @@ -"use client"; - -import { Loader2, RefreshCw } from "lucide-react"; -import { useTranslations } from "next-intl"; -import type { MyTodayStats } from "@/actions/my-usage"; -import { Button } from "@/components/ui/button"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; -import { Separator } from "@/components/ui/separator"; -import { Skeleton } from "@/components/ui/skeleton"; - -interface TodayUsageCardProps { - stats: MyTodayStats | null; - loading?: boolean; - refreshing?: boolean; - onRefresh?: () => void; - autoRefreshSeconds?: number; -} - -export function TodayUsageCard({ - stats, - loading = false, - refreshing = false, - onRefresh, - autoRefreshSeconds = 30, -}: TodayUsageCardProps) { - const t = useTranslations("myUsage.today"); - const tCommon = useTranslations("common"); - const isInitialLoading = loading && !stats; - const isButtonLoading = loading || refreshing; - - return ( - - - {t("title")} -
- {t("autoRefresh", { seconds: autoRefreshSeconds })} - -
-
- - {isInitialLoading ? ( -
- {Array.from({ length: 4 }).map((_, index) => ( -
- - -
- ))} -
- ) : ( -
- - - - -
- )} - - - -
-

{t("modelBreakdown")}

- {isInitialLoading ? ( -
- {Array.from({ length: 3 }).map((_, index) => ( -
- - -
- ))} -
- - {tCommon("loading")} -
-
- ) : stats && stats.modelBreakdown.length > 0 ? ( -
- {stats.modelBreakdown.map((item) => ( -
-
- - {item.model || t("unknownModel")} - - {item.billingModel && item.billingModel !== item.model ? ( - - {t("billingModel", { model: item.billingModel })} - - ) : null} -
-
-
{t("callsShort", { count: item.calls })}
-
{t("tokensShort", { in: item.inputTokens, out: item.outputTokens })}
-
- {`${stats.currencyCode || "USD"} ${Number(item.costUsd ?? 0).toFixed(4)}`} -
-
-
- ))} -
- ) : ( -

{t("noData")}

- )} -
-
-
- ); -} - -function Metric({ label, value }: { label: string; value: number | string }) { - return ( -
-

{label}

-

{value}

-
- ); -} diff --git a/src/app/[locale]/my-usage/_components/usage-logs-section.tsx b/src/app/[locale]/my-usage/_components/usage-logs-section.tsx index a07a13e4f..63e518718 100644 --- a/src/app/[locale]/my-usage/_components/usage-logs-section.tsx +++ b/src/app/[locale]/my-usage/_components/usage-logs-section.tsx @@ -1,8 +1,8 @@ "use client"; -import { Loader2 } from "lucide-react"; +import { Check, ChevronDown, Filter, Loader2, RefreshCw, ScrollText, X } from "lucide-react"; import { useTranslations } from "next-intl"; -import { useCallback, useEffect, useRef, useState, useTransition } from "react"; +import { useCallback, useEffect, useMemo, useRef, useState, useTransition } from "react"; import { getMyAvailableEndpoints, getMyAvailableModels, @@ -10,8 +10,9 @@ import { type MyUsageLogsResult, } from "@/actions/my-usage"; import { LogsDateRangePicker } from "@/app/[locale]/dashboard/logs/_components/logs-date-range-picker"; +import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { @@ -21,12 +22,14 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { cn } from "@/lib/utils"; import { UsageLogsTable } from "./usage-logs-table"; interface UsageLogsSectionProps { initialData?: MyUsageLogsResult | null; loading?: boolean; autoRefreshSeconds?: number; + defaultOpen?: boolean; } interface Filters { @@ -44,10 +47,13 @@ export function UsageLogsSection({ initialData = null, loading = false, autoRefreshSeconds, + defaultOpen = false, }: UsageLogsSectionProps) { const t = useTranslations("myUsage.logs"); + const tCollapsible = useTranslations("myUsage.logsCollapsible"); const tDashboard = useTranslations("dashboard"); const tCommon = useTranslations("common"); + const [isOpen, setIsOpen] = useState(defaultOpen); const [models, setModels] = useState([]); const [endpoints, setEndpoints] = useState([]); const [isModelsLoading, setIsModelsLoading] = useState(true); @@ -58,6 +64,51 @@ export function UsageLogsSection({ const [isPending, startTransition] = useTransition(); const [error, setError] = useState(null); + // Compute metrics for header summary + const logs = data?.logs ?? []; + + const activeFiltersCount = useMemo(() => { + let count = 0; + if (appliedFilters.startDate || appliedFilters.endDate) count++; + if (appliedFilters.model) count++; + if (appliedFilters.endpoint) count++; + if (appliedFilters.statusCode || appliedFilters.excludeStatusCode200) count++; + if (appliedFilters.minRetryCount) count++; + return count; + }, [appliedFilters]); + + const lastLog = useMemo(() => { + if (!logs || logs.length === 0) return null; + return logs[0]; // First log is the most recent (sorted by createdAt DESC) + }, [logs]); + + const lastStatusText = useMemo(() => { + if (!lastLog?.createdAt) return null; + const now = new Date(); + const logTime = new Date(lastLog.createdAt); + const diffMs = now.getTime() - logTime.getTime(); + const diffMins = Math.floor(diffMs / 60000); + + if (diffMins < 1) return "now"; + if (diffMins < 60) return `${diffMins}m ago`; + const diffHours = Math.floor(diffMins / 60); + if (diffHours < 24) return `${diffHours}h ago`; + return `${Math.floor(diffHours / 24)}d ago`; + }, [lastLog]); + + const successRate = useMemo(() => { + if (!logs || logs.length === 0) return null; + const successCount = logs.filter((log) => log.statusCode && log.statusCode < 400).length; + return Math.round((successCount / logs.length) * 100); + }, [logs]); + + const lastStatusColor = useMemo(() => { + if (!lastLog?.statusCode) return ""; + if (lastLog.statusCode === 200) return "text-green-600 dark:text-green-400"; + if (lastLog.statusCode >= 400) return "text-red-600 dark:text-red-400"; + return ""; + }, [lastLog]); + // Sync initialData from parent when it becomes available // (useState only uses initialData on first mount, not on subsequent updates) useEffect(() => { @@ -187,159 +238,286 @@ export function UsageLogsSection({ const isRefreshing = isPending && Boolean(data); return ( - - - {t("title")} - {autoRefreshSeconds ? ( - - {t("autoRefresh", { seconds: autoRefreshSeconds })} - - ) : null} - - -
-
- - -
-
- - -
-
- - + handleFilterChange({ + model: value === "__all__" ? undefined : value, + }) + } + disabled={isModelsLoading} + > + + + + + {t("filters.allModels")} + {models.map((model) => ( + + {model} + + ))} + + +
+
+ + +
+
+ + +
+
+ + + handleFilterChange({ + minRetryCount: e.target.value ? parseInt(e.target.value, 10) : undefined, + }) } /> - - - {tDashboard("logs.filters.allEndpoints")} - {endpoints.map((endpoint) => ( - - {endpoint} - - ))} - - -
-
- - -
-
- - - handleFilterChange({ - minRetryCount: e.target.value ? parseInt(e.target.value, 10) : undefined, - }) - } +
+
+ +
+ + +
+ + {error ?

{error}

: null} + + {isRefreshing ? ( +
+ + {tCommon("loading")} +
+ ) : null} + +
-
- -
- - -
- - {error ?

{error}

: null} - - {isRefreshing ? ( -
- - {tCommon("loading")} -
- ) : null} - - - - + +
+ ); } diff --git a/src/app/[locale]/my-usage/_components/usage-logs-table.tsx b/src/app/[locale]/my-usage/_components/usage-logs-table.tsx index 09b1494ca..e9a7434b7 100644 --- a/src/app/[locale]/my-usage/_components/usage-logs-table.tsx +++ b/src/app/[locale]/my-usage/_components/usage-logs-table.tsx @@ -13,7 +13,7 @@ import { TableRow, } from "@/components/ui/table"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; -import type { CurrencyCode } from "@/lib/utils"; +import { CURRENCY_CONFIG, type CurrencyCode } from "@/lib/utils"; interface UsageLogsTableProps { logs: MyUsageLogEntry[]; @@ -55,9 +55,7 @@ export function UsageLogsTable({ {t("table.tokens")} {t("table.cacheWrite")} {t("table.cacheRead")} - - {t("table.cost", { currency: currencyCode })} - + {t("table.cost")} {t("table.status")} @@ -129,11 +127,17 @@ export function UsageLogsTable({ {formatTokenAmount(log.cacheReadInputTokens)} - {currencyCode} {Number(log.cost ?? 0).toFixed(4)} + {CURRENCY_CONFIG[currencyCode]?.symbol ?? currencyCode} + {Number(log.cost ?? 0).toFixed(4)} = 400 ? "destructive" : "outline"} + className={ + log.statusCode === 200 + ? "border-green-500 text-green-600 dark:text-green-400" + : undefined + } > {log.statusCode ?? "-"} diff --git a/src/app/[locale]/my-usage/page.tsx b/src/app/[locale]/my-usage/page.tsx index 6e0dc0bdb..6d7e6c4b0 100644 --- a/src/app/[locale]/my-usage/page.tsx +++ b/src/app/[locale]/my-usage/page.tsx @@ -1,38 +1,30 @@ "use client"; -import { useCallback, useEffect, useRef, useState } from "react"; +import { useCallback, useEffect, useState } from "react"; import { getMyQuota, - getMyTodayStats, getMyUsageLogs, - type MyTodayStats, type MyUsageLogsResult, type MyUsageQuota, } from "@/actions/my-usage"; import { useRouter } from "@/i18n/routing"; +import { CollapsibleQuotaCard } from "./_components/collapsible-quota-card"; import { ExpirationInfo } from "./_components/expiration-info"; import { MyUsageHeader } from "./_components/my-usage-header"; import { ProviderGroupInfo } from "./_components/provider-group-info"; -import { QuotaCards } from "./_components/quota-cards"; -import { TodayUsageCard } from "./_components/today-usage-card"; +import { StatisticsSummaryCard } from "./_components/statistics-summary-card"; import { UsageLogsSection } from "./_components/usage-logs-section"; export default function MyUsagePage() { const router = useRouter(); const [quota, setQuota] = useState(null); - const [todayStats, setTodayStats] = useState(null); const [logsData, setLogsData] = useState(null); const [isQuotaLoading, setIsQuotaLoading] = useState(true); - const [isStatsLoading, setIsStatsLoading] = useState(true); const [isLogsLoading, setIsLogsLoading] = useState(true); - const [isStatsRefreshing, setIsStatsRefreshing] = useState(false); - - const intervalRef = useRef(null); const loadInitial = useCallback(() => { setIsQuotaLoading(true); - setIsStatsLoading(true); setIsLogsLoading(true); void getMyQuota() @@ -41,12 +33,6 @@ export default function MyUsagePage() { }) .finally(() => setIsQuotaLoading(false)); - void getMyTodayStats() - .then((statsResult) => { - if (statsResult.ok) setTodayStats(statsResult.data); - }) - .finally(() => setIsStatsLoading(false)); - void getMyUsageLogs({ page: 1 }) .then((logsResult) => { if (logsResult.ok) setLogsData(logsResult.data ?? null); @@ -54,57 +40,10 @@ export default function MyUsagePage() { .finally(() => setIsLogsLoading(false)); }, []); - const refreshToday = useCallback(async () => { - setIsStatsRefreshing(true); - const stats = await getMyTodayStats(); - if (stats.ok) setTodayStats(stats.data); - setIsStatsRefreshing(false); - }, []); - useEffect(() => { loadInitial(); }, [loadInitial]); - useEffect(() => { - const POLL_INTERVAL = 30000; - - const startPolling = () => { - if (intervalRef.current) { - clearInterval(intervalRef.current); - } - - intervalRef.current = setInterval(() => { - refreshToday(); - // Note: logs polling is handled internally by UsageLogsSection - // to preserve pagination state - }, POLL_INTERVAL); - }; - - const stopPolling = () => { - if (intervalRef.current) { - clearInterval(intervalRef.current); - intervalRef.current = null; - } - }; - - const handleVisibilityChange = () => { - if (document.hidden) { - stopPolling(); - } else { - refreshToday(); - startPolling(); - } - }; - - startPolling(); - document.addEventListener("visibilitychange", handleVisibilityChange); - - return () => { - stopPolling(); - document.removeEventListener("visibilitychange", handleVisibilityChange); - }; - }, [refreshToday]); - const handleLogout = async () => { await fetch("/api/auth/logout", { method: "POST" }); router.push("/login"); @@ -113,7 +52,6 @@ export default function MyUsagePage() { const keyExpiresAt = quota?.expiresAt ?? null; const userExpiresAt = quota?.userExpiresAt ?? null; - const currencyCode = todayStats?.currencyCode ?? "USD"; return (
@@ -125,32 +63,32 @@ export default function MyUsagePage() { userExpiresAt={userExpiresAt} /> - - + {/* Provider Group and Expiration info */} {quota ? (
- +
) : null} - + +
); diff --git a/src/app/[locale]/settings/config/_components/system-settings-form.tsx b/src/app/[locale]/settings/config/_components/system-settings-form.tsx index 8210c2b80..ad21c2327 100644 --- a/src/app/[locale]/settings/config/_components/system-settings-form.tsx +++ b/src/app/[locale]/settings/config/_components/system-settings-form.tsx @@ -30,6 +30,9 @@ interface SystemSettingsFormProps { | "verboseProviderError" | "enableHttp2" | "interceptAnthropicWarmupRequests" + | "enableThinkingSignatureRectifier" + | "enableResponseFixer" + | "responseFixerConfig" >; } @@ -54,6 +57,15 @@ export function SystemSettingsForm({ initialSettings }: SystemSettingsFormProps) const [interceptAnthropicWarmupRequests, setInterceptAnthropicWarmupRequests] = useState( initialSettings.interceptAnthropicWarmupRequests ); + const [enableThinkingSignatureRectifier, setEnableThinkingSignatureRectifier] = useState( + initialSettings.enableThinkingSignatureRectifier + ); + const [enableResponseFixer, setEnableResponseFixer] = useState( + initialSettings.enableResponseFixer + ); + const [responseFixerConfig, setResponseFixerConfig] = useState( + initialSettings.responseFixerConfig + ); const [isPending, startTransition] = useTransition(); const handleSubmit = (event: React.FormEvent) => { @@ -73,6 +85,9 @@ export function SystemSettingsForm({ initialSettings }: SystemSettingsFormProps) verboseProviderError, enableHttp2, interceptAnthropicWarmupRequests, + enableThinkingSignatureRectifier, + enableResponseFixer, + responseFixerConfig, }); if (!result.ok) { @@ -88,6 +103,9 @@ export function SystemSettingsForm({ initialSettings }: SystemSettingsFormProps) setVerboseProviderError(result.data.verboseProviderError); setEnableHttp2(result.data.enableHttp2); setInterceptAnthropicWarmupRequests(result.data.interceptAnthropicWarmupRequests); + setEnableThinkingSignatureRectifier(result.data.enableThinkingSignatureRectifier); + setEnableResponseFixer(result.data.enableResponseFixer); + setResponseFixerConfig(result.data.responseFixerConfig); } toast.success(t("configUpdated")); @@ -215,6 +233,101 @@ export function SystemSettingsForm({ initialSettings }: SystemSettingsFormProps) />
+
+
+ +

+ {t("enableThinkingSignatureRectifierDesc")} +

+
+ setEnableThinkingSignatureRectifier(checked)} + disabled={isPending} + /> +
+ +
+
+
+ +

{t("enableResponseFixerDesc")}

+
+ setEnableResponseFixer(checked)} + disabled={isPending} + /> +
+ + {enableResponseFixer && ( +
+
+
+ +

+ {t("responseFixerFixEncodingDesc")} +

+
+ + setResponseFixerConfig((prev) => ({ ...prev, fixEncoding: checked })) + } + disabled={isPending} + /> +
+ +
+
+ +

+ {t("responseFixerFixSseFormatDesc")} +

+
+ + setResponseFixerConfig((prev) => ({ ...prev, fixSseFormat: checked })) + } + disabled={isPending} + /> +
+ +
+
+ +

+ {t("responseFixerFixTruncatedJsonDesc")} +

+
+ + setResponseFixerConfig((prev) => ({ ...prev, fixTruncatedJson: checked })) + } + disabled={isPending} + /> +
+
+ )} +
+
+ ); + + return ( + + {trigger || defaultTrigger} + + + {t("deleteModel")} + {t("deleteConfirm", { name: modelName })} + + + {tCommon("cancel")} + { + e.preventDefault(); + handleDelete(); + }} + disabled={loading} + className="bg-destructive text-destructive-foreground hover:bg-destructive/90" + > + {loading && } + {tCommon("delete")} + + + + + ); +} diff --git a/src/app/[locale]/settings/prices/_components/model-price-dialog.tsx b/src/app/[locale]/settings/prices/_components/model-price-dialog.tsx new file mode 100644 index 000000000..dba1c1c34 --- /dev/null +++ b/src/app/[locale]/settings/prices/_components/model-price-dialog.tsx @@ -0,0 +1,272 @@ +"use client"; + +import { Loader2, Pencil, Plus } from "lucide-react"; +import { useTranslations } from "next-intl"; +import { useEffect, useState } from "react"; +import { toast } from "sonner"; +import { upsertSingleModelPrice } from "@/actions/model-prices"; +import { Button } from "@/components/ui/button"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import type { ModelPrice } from "@/types/model-price"; + +interface ModelPriceDialogProps { + mode: "create" | "edit"; + initialData?: ModelPrice; + trigger?: React.ReactNode; + onSuccess?: () => void; +} + +type ModelMode = "chat" | "image_generation" | "completion"; + +/** + * 模型价格添加/编辑对话框 + */ +export function ModelPriceDialog({ mode, initialData, trigger, onSuccess }: ModelPriceDialogProps) { + const t = useTranslations("settings.prices"); + const tCommon = useTranslations("settings.common"); + + const [open, setOpen] = useState(false); + const [loading, setLoading] = useState(false); + + // 表单状态 + const [modelName, setModelName] = useState(""); + const [modelMode, setModelMode] = useState("chat"); + const [provider, setProvider] = useState(""); + const [inputPrice, setInputPrice] = useState(""); + const [outputPrice, setOutputPrice] = useState(""); + + // 当对话框打开或初始数据变化时,重置表单 + useEffect(() => { + if (open) { + if (mode === "edit" && initialData) { + setModelName(initialData.modelName); + setModelMode((initialData.priceData.mode as ModelMode) || "chat"); + setProvider(initialData.priceData.litellm_provider || ""); + // 将每 token 价格转换为每百万 token 价格显示 + setInputPrice( + initialData.priceData.input_cost_per_token + ? (initialData.priceData.input_cost_per_token * 1000000).toString() + : "" + ); + if (initialData.priceData.mode === "image_generation") { + setOutputPrice( + initialData.priceData.output_cost_per_image + ? initialData.priceData.output_cost_per_image.toString() + : "" + ); + } else { + setOutputPrice( + initialData.priceData.output_cost_per_token + ? (initialData.priceData.output_cost_per_token * 1000000).toString() + : "" + ); + } + } else { + // 创建模式,清空表单 + setModelName(""); + setModelMode("chat"); + setProvider(""); + setInputPrice(""); + setOutputPrice(""); + } + } + }, [open, mode, initialData]); + + const handleSubmit = async () => { + // 验证 + if (!modelName.trim()) { + toast.error(t("form.modelNameRequired")); + return; + } + + setLoading(true); + + try { + // 将每百万 token 价格转换回每 token 价格 + const inputCostPerToken = inputPrice ? parseFloat(inputPrice) / 1000000 : undefined; + const outputCostPerToken = + modelMode !== "image_generation" && outputPrice + ? parseFloat(outputPrice) / 1000000 + : undefined; + const outputCostPerImage = + modelMode === "image_generation" && outputPrice ? parseFloat(outputPrice) : undefined; + + const result = await upsertSingleModelPrice({ + modelName: modelName.trim(), + mode: modelMode, + litellmProvider: provider.trim() || undefined, + inputCostPerToken, + outputCostPerToken, + outputCostPerImage, + }); + + if (!result.ok) { + toast.error(result.error); + return; + } + + toast.success(mode === "create" ? t("toast.createSuccess") : t("toast.updateSuccess")); + setOpen(false); + onSuccess?.(); + window.dispatchEvent(new Event("price-data-updated")); + } catch (error) { + console.error("保存失败:", error); + toast.error(t("toast.saveFailed")); + } finally { + setLoading(false); + } + }; + + const defaultTrigger = + mode === "create" ? ( + + ) : ( + + ); + + return ( + + {trigger || defaultTrigger} + + + {mode === "create" ? t("addModel") : t("editModel")} + + {mode === "create" ? t("addModelDescription") : t("editModelDescription")} + + + +
+ {/* 模型名称 */} +
+ + setModelName(e.target.value)} + placeholder={t("form.modelNamePlaceholder")} + disabled={mode === "edit" || loading} + /> +
+ + {/* 类型 */} +
+ + +
+ + {/* 供应商 */} +
+ + setProvider(e.target.value)} + placeholder={t("form.providerPlaceholder")} + disabled={loading} + /> +
+ + {/* 输入价格 */} + {modelMode !== "image_generation" && ( +
+ +
+ + $ + + setInputPrice(e.target.value)} + placeholder="0.00" + className="pl-7 pr-12" + disabled={loading} + /> + + /M + +
+
+ )} + + {/* 输出价格 */} +
+ +
+ + $ + + setOutputPrice(e.target.value)} + placeholder="0.00" + className="pl-7 pr-16" + disabled={loading} + /> + + {modelMode === "image_generation" ? "/img" : "/M"} + +
+
+
+ + + + + +
+
+ ); +} diff --git a/src/app/[locale]/settings/prices/_components/model-price-drawer.tsx b/src/app/[locale]/settings/prices/_components/model-price-drawer.tsx new file mode 100644 index 000000000..67129ef8d --- /dev/null +++ b/src/app/[locale]/settings/prices/_components/model-price-drawer.tsx @@ -0,0 +1,620 @@ +"use client"; + +import { Loader2, Pencil, Plus, Search } from "lucide-react"; +import { useTranslations } from "next-intl"; +import { useCallback, useEffect, useState } from "react"; +import { toast } from "sonner"; +import { upsertSingleModelPrice } from "@/actions/model-prices"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { + Command, + CommandEmpty, + CommandGroup, + CommandItem, + CommandList, +} from "@/components/ui/command"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { + Sheet, + SheetContent, + SheetDescription, + SheetFooter, + SheetHeader, + SheetTitle, + SheetTrigger, +} from "@/components/ui/sheet"; +import { Switch } from "@/components/ui/switch"; +import { useDebounce } from "@/lib/hooks/use-debounce"; +import type { ModelPrice } from "@/types/model-price"; + +interface ModelPriceDrawerProps { + mode: "create" | "edit"; + initialData?: ModelPrice; + trigger?: React.ReactNode; + onSuccess?: () => void; + defaultOpen?: boolean; +} + +type ModelMode = "chat" | "image_generation" | "completion"; + +type PrefillStatus = "idle" | "loading" | "loaded" | "error"; + +function parsePricePerMillionToPerToken(value: string): number | undefined { + const trimmed = value.trim(); + if (!trimmed) return undefined; + const parsed = Number.parseFloat(trimmed); + if (!Number.isFinite(parsed) || parsed < 0) return undefined; + return parsed / 1000000; +} + +function parsePrice(value: string): number | undefined { + const trimmed = value.trim(); + if (!trimmed) return undefined; + const parsed = Number.parseFloat(trimmed); + if (!Number.isFinite(parsed) || parsed < 0) return undefined; + return parsed; +} + +function formatPerTokenPriceToPerMillion(value?: number): string { + if (typeof value !== "number" || !Number.isFinite(value) || value < 0) { + return ""; + } + return (value * 1000000).toString(); +} + +/** + * 模型价格添加/编辑抽屉(右侧) + */ +export function ModelPriceDrawer({ + mode, + initialData, + trigger, + onSuccess, + defaultOpen = false, +}: ModelPriceDrawerProps) { + const t = useTranslations("settings.prices"); + const tCommon = useTranslations("settings.common"); + + const [open, setOpen] = useState(defaultOpen); + const [loading, setLoading] = useState(false); + + // 表单状态 + const [modelName, setModelName] = useState(""); + const [displayName, setDisplayName] = useState(""); + const [modelMode, setModelMode] = useState("chat"); + const [provider, setProvider] = useState(""); + const [supportsPromptCaching, setSupportsPromptCaching] = useState(false); + const [inputPrice, setInputPrice] = useState(""); + const [outputPrice, setOutputPrice] = useState(""); + const [inputPricePerRequest, setInputPricePerRequest] = useState(""); + const [cacheReadPrice, setCacheReadPrice] = useState(""); + const [cacheCreation5mPrice, setCacheCreation5mPrice] = useState(""); + const [cacheCreation1hPrice, setCacheCreation1hPrice] = useState(""); + + // 预填充搜索(仅 create 模式显示) + const [prefillQuery, setPrefillQuery] = useState(""); + const [prefillStatus, setPrefillStatus] = useState("idle"); + const [prefillResults, setPrefillResults] = useState([]); + const debouncedPrefillQuery = useDebounce(prefillQuery, 300); + + const resetForm = useCallback(() => { + setModelName(""); + setDisplayName(""); + setModelMode("chat"); + setProvider(""); + setSupportsPromptCaching(false); + setInputPrice(""); + setOutputPrice(""); + setInputPricePerRequest(""); + setCacheReadPrice(""); + setCacheCreation5mPrice(""); + setCacheCreation1hPrice(""); + setPrefillQuery(""); + setPrefillStatus("idle"); + setPrefillResults([]); + }, []); + + const applyPrefill = useCallback((selected: ModelPrice) => { + setModelName(selected.modelName); + setDisplayName(selected.priceData.display_name?.trim() || ""); + setModelMode((selected.priceData.mode as ModelMode) || "chat"); + setProvider(selected.priceData.litellm_provider?.trim() || ""); + setSupportsPromptCaching(selected.priceData.supports_prompt_caching === true); + + if (selected.priceData.mode === "image_generation") { + setInputPrice(""); + setOutputPrice( + typeof selected.priceData.output_cost_per_image === "number" + ? selected.priceData.output_cost_per_image.toString() + : "" + ); + } else { + setInputPrice(formatPerTokenPriceToPerMillion(selected.priceData.input_cost_per_token)); + setOutputPrice(formatPerTokenPriceToPerMillion(selected.priceData.output_cost_per_token)); + } + + setInputPricePerRequest( + typeof selected.priceData.input_cost_per_request === "number" + ? selected.priceData.input_cost_per_request.toString() + : "" + ); + setCacheReadPrice( + formatPerTokenPriceToPerMillion(selected.priceData.cache_read_input_token_cost) + ); + setCacheCreation5mPrice( + formatPerTokenPriceToPerMillion(selected.priceData.cache_creation_input_token_cost) + ); + setCacheCreation1hPrice( + formatPerTokenPriceToPerMillion(selected.priceData.cache_creation_input_token_cost_above_1hr) + ); + }, []); + + // 当抽屉打开或初始数据变化时,重置表单 + useEffect(() => { + if (!open) { + return; + } + + if (mode === "edit" && initialData) { + applyPrefill(initialData); + return; + } + + resetForm(); + }, [open, mode, initialData, applyPrefill, resetForm]); + + useEffect(() => { + if (!open || mode !== "create") { + return; + } + + if (!prefillQuery.trim()) { + setPrefillResults([]); + setPrefillStatus("idle"); + } + }, [mode, open, prefillQuery]); + + useEffect(() => { + if (!open || mode !== "create") { + return; + } + + const query = debouncedPrefillQuery.trim(); + if (!query) { + return; + } + + let cancelled = false; + const fetchPrefillResults = async () => { + setPrefillStatus("loading"); + setPrefillResults([]); + try { + const params = new URLSearchParams(); + params.set("page", "1"); + params.set("pageSize", "10"); + params.set("search", query); + const response = await fetch(`/api/prices?${params.toString()}`, { cache: "no-store" }); + const payload = await response.json(); + if (!payload?.ok) { + throw new Error(payload?.error || "unknown error"); + } + + const data: ModelPrice[] = payload.data?.data ?? []; + if (!cancelled) { + setPrefillResults(data); + setPrefillStatus("loaded"); + } + } catch (error) { + console.error("搜索模型失败:", error); + if (!cancelled) { + setPrefillResults([]); + setPrefillStatus("error"); + } + } + }; + + fetchPrefillResults(); + + return () => { + cancelled = true; + }; + }, [mode, open, debouncedPrefillQuery]); + + const handleSubmit = async () => { + if (!modelName.trim()) { + toast.error(t("form.modelNameRequired")); + return; + } + + setLoading(true); + + try { + const inputCostPerToken = + modelMode !== "image_generation" ? parsePricePerMillionToPerToken(inputPrice) : undefined; + const outputCostPerToken = + modelMode !== "image_generation" ? parsePricePerMillionToPerToken(outputPrice) : undefined; + const outputCostPerImage = + modelMode === "image_generation" ? parsePrice(outputPrice) : undefined; + + const inputCostPerRequest = parsePrice(inputPricePerRequest); + + const cacheReadCostPerToken = supportsPromptCaching + ? parsePricePerMillionToPerToken(cacheReadPrice) + : undefined; + const cacheCreation5mCostPerToken = supportsPromptCaching + ? parsePricePerMillionToPerToken(cacheCreation5mPrice) + : undefined; + const cacheCreation1hCostPerToken = supportsPromptCaching + ? parsePricePerMillionToPerToken(cacheCreation1hPrice) + : undefined; + + const result = await upsertSingleModelPrice({ + modelName: modelName.trim(), + displayName: displayName.trim() || undefined, + mode: modelMode, + litellmProvider: provider.trim() || undefined, + supportsPromptCaching, + inputCostPerToken, + outputCostPerToken, + outputCostPerImage, + inputCostPerRequest, + cacheReadInputTokenCost: cacheReadCostPerToken, + cacheCreationInputTokenCost: cacheCreation5mCostPerToken, + cacheCreationInputTokenCostAbove1hr: cacheCreation1hCostPerToken, + }); + + if (!result.ok) { + toast.error(result.error); + return; + } + + toast.success(mode === "create" ? t("toast.createSuccess") : t("toast.updateSuccess")); + setOpen(false); + onSuccess?.(); + window.dispatchEvent(new Event("price-data-updated")); + } catch (error) { + console.error("保存失败:", error); + toast.error(t("toast.saveFailed")); + } finally { + setLoading(false); + } + }; + + const defaultTrigger = + mode === "create" ? ( + + ) : ( + + ); + + const isPrefillVisible = mode === "create"; + + return ( + + {trigger || defaultTrigger} + + + {mode === "create" ? t("addModel") : t("editModel")} + + {mode === "create" ? t("addModelDescription") : t("editModelDescription")} + + + +
+ {isPrefillVisible && ( +
+ +
+ + setPrefillQuery(event.target.value)} + placeholder={t("searchPlaceholder")} + className="pl-9" + disabled={loading} + /> +
+ + {prefillStatus !== "idle" && ( + + + + {prefillStatus === "loading" ? ( +
+ + {tCommon("loading")} +
+ ) : ( + + {prefillStatus === "error" + ? t("drawer.prefillFailed") + : t("drawer.prefillEmpty")} + + )} +
+ + {prefillResults.map((item) => { + const name = item.priceData.display_name?.trim() || item.modelName; + const providerName = item.priceData.litellm_provider?.trim() || ""; + return ( + applyPrefill(item)} + disabled={loading} + className="cursor-pointer" + > +
+
+
{name}
+
+ {item.modelName} +
+
+
+ {providerName ? ( + + {providerName} + + ) : null} + {item.source === "manual" ? ( + {t("badges.local")} + ) : null} +
+
+
+ ); + })} +
+
+
+ )} +
+ )} + +
+
+ + setModelName(e.target.value)} + placeholder={t("form.modelNamePlaceholder")} + disabled={mode === "edit" || loading} + /> +
+ +
+ + setDisplayName(e.target.value)} + placeholder={t("form.displayNamePlaceholder")} + disabled={loading} + /> +
+ +
+ + +
+ +
+ + setProvider(e.target.value)} + placeholder={t("form.providerPlaceholder")} + disabled={loading} + /> +
+ +
+ +
+ + $ + + setInputPricePerRequest(e.target.value)} + placeholder="0.00" + className="pl-7 pr-12" + disabled={loading} + /> + + /req + +
+
+ + {modelMode !== "image_generation" && ( +
+ +
+ + $ + + setInputPrice(e.target.value)} + placeholder="0.00" + className="pl-7 pr-12" + disabled={loading} + /> + + /M + +
+
+ )} + +
+ +
+ + $ + + setOutputPrice(e.target.value)} + placeholder="0.00" + className="pl-7 pr-16" + disabled={loading} + /> + + {modelMode === "image_generation" ? "/img" : "/M"} + +
+
+ +
+
+
{t("capabilities.promptCaching")}
+
{t("drawer.promptCachingHint")}
+
+ +
+ +
+
{t("drawer.cachePricingTitle")}
+ +
+ +
+ + $ + + setCacheReadPrice(e.target.value)} + placeholder="0.00" + className="pl-7 pr-12" + disabled={loading || !supportsPromptCaching} + /> + + /M + +
+
+ +
+ +
+ + $ + + setCacheCreation5mPrice(e.target.value)} + placeholder="0.00" + className="pl-7 pr-12" + disabled={loading || !supportsPromptCaching} + /> + + /M + +
+
+ +
+ +
+ + $ + + setCacheCreation1hPrice(e.target.value)} + placeholder="0.00" + className="pl-7 pr-12" + disabled={loading || !supportsPromptCaching} + /> + + /M + +
+
+
+
+
+ + +
+ + +
+
+
+
+ ); +} diff --git a/src/app/[locale]/settings/prices/_components/price-list.tsx b/src/app/[locale]/settings/prices/_components/price-list.tsx index 17bb114d6..d3c081360 100644 --- a/src/app/[locale]/settings/prices/_components/price-list.tsx +++ b/src/app/[locale]/settings/prices/_components/price-list.tsx @@ -1,10 +1,35 @@ "use client"; -import { ChevronLeft, ChevronRight, DollarSign, Package, Search } from "lucide-react"; -import { useTranslations } from "next-intl"; -import { useCallback, useEffect, useState } from "react"; +import { Claude, Gemini, OpenAI } from "@lobehub/icons"; +import { + Braces, + ChevronLeft, + ChevronRight, + Code2, + Database, + DollarSign, + Eye, + FileText, + Monitor, + MoreHorizontal, + Package, + Pencil, + Search, + Sparkles, + Terminal, + Trash2, +} from "lucide-react"; +import { useLocale, useTranslations } from "next-intl"; +import { useCallback, useEffect, useRef, useState } from "react"; +import { toast } from "sonner"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; import { Input } from "@/components/ui/input"; import { Select, @@ -21,14 +46,21 @@ import { TableHeader, TableRow, } from "@/components/ui/table"; +import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import { useDebounce } from "@/lib/hooks/use-debounce"; -import type { ModelPrice } from "@/types/model-price"; +import { copyToClipboard } from "@/lib/utils/clipboard"; +import type { ModelPrice, ModelPriceSource } from "@/types/model-price"; +import { DeleteModelDialog } from "./delete-model-dialog"; +import { ModelPriceDrawer } from "./model-price-drawer"; interface PriceListProps { initialPrices: ModelPrice[]; initialTotal: number; initialPage: number; initialPageSize: number; + initialSearchTerm: string; + initialSourceFilter: ModelPriceSource | ""; + initialLitellmProviderFilter: string; } /** @@ -39,9 +71,16 @@ export function PriceList({ initialTotal, initialPage, initialPageSize, + initialSearchTerm, + initialSourceFilter, + initialLitellmProviderFilter, }: PriceListProps) { const t = useTranslations("settings.prices"); - const [searchTerm, setSearchTerm] = useState(""); + const tCommon = useTranslations("common"); + const locale = useLocale(); + const [searchTerm, setSearchTerm] = useState(initialSearchTerm); + const [sourceFilter, setSourceFilter] = useState(initialSourceFilter); + const [litellmProviderFilter, setLitellmProviderFilter] = useState(initialLitellmProviderFilter); const [prices, setPrices] = useState(initialPrices); const [total, setTotal] = useState(initialTotal); const [page, setPage] = useState(initialPage); @@ -50,51 +89,80 @@ export function PriceList({ // 使用防抖,避免频繁请求 const debouncedSearchTerm = useDebounce(searchTerm, 500); + const lastDebouncedSearchTerm = useRef(debouncedSearchTerm); + const pendingRefreshPage = useRef(null); // 计算总页数 const totalPages = Math.ceil(total / pageSize); - // 从 URL 搜索参数中读取初始状态(仅在挂载时执行一次) - useEffect(() => { - const urlParams = new URLSearchParams(window.location.search); - const searchParam = urlParams.get("search"); - const pageParam = urlParams.get("page"); - const sizeParam = urlParams.get("size"); + // 更新 URL 搜索参数 + const updateURL = useCallback( + ( + newSearchTerm: string, + newPage: number, + newPageSize: number, + newSourceFilter: ModelPriceSource | "", + newLitellmProviderFilter: string + ) => { + const url = new URL(window.location.href); + if (newSearchTerm) { + url.searchParams.set("search", newSearchTerm); + } else { + url.searchParams.delete("search"); + } + if (newPage > 1) { + url.searchParams.set("page", newPage.toString()); + } else { + url.searchParams.delete("page"); + } + if (newPageSize !== 50) { + url.searchParams.set("pageSize", newPageSize.toString()); + url.searchParams.delete("size"); + } else { + url.searchParams.delete("pageSize"); + url.searchParams.delete("size"); + } - if (searchParam) setSearchTerm(searchParam); - if (pageParam) setPage(parseInt(pageParam, 10)); - if (sizeParam) setPageSize(parseInt(sizeParam, 10)); - }, []); // 空依赖数组,仅在挂载时执行一次 + if (newSourceFilter) { + url.searchParams.set("source", newSourceFilter); + } else { + url.searchParams.delete("source"); + } - // 更新 URL 搜索参数 - const updateURL = useCallback((newSearchTerm: string, newPage: number, newPageSize: number) => { - const url = new URL(window.location.href); - if (newSearchTerm) { - url.searchParams.set("search", newSearchTerm); - } else { - url.searchParams.delete("search"); - } - if (newPage > 1) { - url.searchParams.set("page", newPage.toString()); - } else { - url.searchParams.delete("page"); - } - if (newPageSize !== 50) { - url.searchParams.set("size", newPageSize.toString()); - } else { - url.searchParams.delete("size"); - } - window.history.replaceState({}, "", url.toString()); - }, []); + if (newLitellmProviderFilter) { + url.searchParams.set("litellmProvider", newLitellmProviderFilter); + } else { + url.searchParams.delete("litellmProvider"); + } + window.history.replaceState({}, "", url.toString()); + }, + [] + ); // 获取价格数据 const fetchPrices = useCallback( - async (newPage: number, newPageSize: number, newSearchTerm: string) => { + async ( + newPage: number, + newPageSize: number, + newSearchTerm: string, + newSourceFilter: ModelPriceSource | "", + newLitellmProviderFilter: string + ) => { setIsLoading(true); try { - const response = await fetch( - `/api/prices?page=${newPage}&pageSize=${newPageSize}&search=${encodeURIComponent(newSearchTerm)}` - ); + const url = new URL("/api/prices", window.location.origin); + url.searchParams.set("page", newPage.toString()); + url.searchParams.set("pageSize", newPageSize.toString()); + url.searchParams.set("search", newSearchTerm); + + if (newSourceFilter) { + url.searchParams.set("source", newSourceFilter); + } + if (newLitellmProviderFilter) { + url.searchParams.set("litellmProvider", newLitellmProviderFilter); + } + + const response = await fetch(url.toString()); const result = await response.json(); if (result.ok) { @@ -112,17 +180,35 @@ export function PriceList({ [] ); + // 监听价格数据变化事件(由其他组件触发) + useEffect(() => { + const handlePriceUpdate = () => { + const forcedPage = pendingRefreshPage.current; + if (typeof forcedPage === "number") { + pendingRefreshPage.current = null; + fetchPrices(forcedPage, pageSize, debouncedSearchTerm, sourceFilter, litellmProviderFilter); + return; + } + + fetchPrices(page, pageSize, debouncedSearchTerm, sourceFilter, litellmProviderFilter); + }; + + window.addEventListener("price-data-updated", handlePriceUpdate); + return () => window.removeEventListener("price-data-updated", handlePriceUpdate); + }, [page, pageSize, debouncedSearchTerm, fetchPrices, sourceFilter, litellmProviderFilter]); + // 当防抖后的搜索词变化时,触发搜索(重置到第一页) useEffect(() => { - // 跳过初始渲染(当 debouncedSearchTerm 等于初始 searchTerm 时) - if (debouncedSearchTerm !== searchTerm) return; + if (debouncedSearchTerm === lastDebouncedSearchTerm.current) { + return; + } + lastDebouncedSearchTerm.current = debouncedSearchTerm; const newPage = 1; // 搜索时重置到第一页 setPage(newPage); - updateURL(debouncedSearchTerm, newPage, pageSize); - fetchPrices(newPage, pageSize, debouncedSearchTerm); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [debouncedSearchTerm, fetchPrices, pageSize, searchTerm, updateURL]); // 仅依赖 debouncedSearchTerm + updateURL(debouncedSearchTerm, newPage, pageSize, sourceFilter, litellmProviderFilter); + fetchPrices(newPage, pageSize, debouncedSearchTerm, sourceFilter, litellmProviderFilter); + }, [debouncedSearchTerm, fetchPrices, litellmProviderFilter, pageSize, sourceFilter, updateURL]); // 搜索输入处理(只更新状态,不触发请求) const handleSearchChange = (value: string) => { @@ -134,16 +220,16 @@ export function PriceList({ const newPage = Math.max(1, Math.min(page, Math.ceil(total / newPageSize))); setPageSize(newPageSize); setPage(newPage); - updateURL(debouncedSearchTerm, newPage, newPageSize); - fetchPrices(newPage, newPageSize, debouncedSearchTerm); + updateURL(debouncedSearchTerm, newPage, newPageSize, sourceFilter, litellmProviderFilter); + fetchPrices(newPage, newPageSize, debouncedSearchTerm, sourceFilter, litellmProviderFilter); }; // 页面跳转处理 const handlePageChange = (newPage: number) => { if (newPage < 1 || newPage > totalPages) return; setPage(newPage); - updateURL(debouncedSearchTerm, newPage, pageSize); - fetchPrices(newPage, pageSize, debouncedSearchTerm); + updateURL(debouncedSearchTerm, newPage, pageSize, sourceFilter, litellmProviderFilter); + fetchPrices(newPage, pageSize, debouncedSearchTerm, sourceFilter, litellmProviderFilter); }; // 移除客户端过滤逻辑(现在由后端处理) @@ -153,7 +239,7 @@ export function PriceList({ * 格式化价格显示为每百万token的价格 */ const formatPrice = (value?: number): string => { - if (!value) return "-"; + if (value === undefined || value === null) return "-"; // 将每token的价格转换为每百万token的价格 const pricePerMillion = value * 1000000; // 格式化为合适的小数位数 @@ -169,23 +255,163 @@ export function PriceList({ }; /** - * 获取模型类型标签 + * 格式化标量价格(用于 /img、/req 等) */ - const getModeLabel = (mode?: string) => { - switch (mode) { - case "chat": - return {t("table.typeChat")}; - case "image_generation": - return {t("table.typeImage")}; - case "completion": - return {t("table.typeCompletion")}; - default: - return {t("table.typeUnknown")}; + const formatScalarPrice = (value?: number): string => { + if (typeof value !== "number" || !Number.isFinite(value) || value < 0) { + return "-"; } + if (value < 0.01) return value.toFixed(4); + if (value < 1) return value.toFixed(3); + if (value < 100) return value.toFixed(2); + return value.toFixed(0); + }; + + const formatPerMillionTokenPriceLabel = (value?: number): string => { + const formatted = formatPrice(value); + if (formatted === "-") return "-"; + return `$${formatted}/M`; }; + const formatPerImagePriceLabel = (value?: number): string => { + const formatted = formatScalarPrice(value); + if (formatted === "-") return "-"; + return `$${formatted}/img`; + }; + + const formatPerRequestPriceLabel = (value?: number): string => { + const formatted = formatScalarPrice(value); + if (formatted === "-") return "-"; + return `$${formatted}/req`; + }; + + const handleCopyModelId = useCallback( + async (modelId: string) => { + const ok = await copyToClipboard(modelId); + if (ok) { + toast.success(tCommon("copySuccess")); + return; + } + toast.error(tCommon("copyFailed")); + }, + [tCommon] + ); + + const capabilityItems: Array<{ + key: + | "supports_assistant_prefill" + | "supports_computer_use" + | "supports_function_calling" + | "supports_pdf_input" + | "supports_prompt_caching" + | "supports_reasoning" + | "supports_response_schema" + | "supports_tool_choice" + | "supports_vision"; + icon: React.ComponentType<{ className?: string }>; + label: string; + }> = [ + { key: "supports_function_calling", icon: Code2, label: t("capabilities.functionCalling") }, + { key: "supports_tool_choice", icon: Terminal, label: t("capabilities.toolChoice") }, + { key: "supports_response_schema", icon: Braces, label: t("capabilities.responseSchema") }, + { key: "supports_prompt_caching", icon: Database, label: t("capabilities.promptCaching") }, + { key: "supports_vision", icon: Eye, label: t("capabilities.vision") }, + { key: "supports_pdf_input", icon: FileText, label: t("capabilities.pdfInput") }, + { key: "supports_reasoning", icon: Sparkles, label: t("capabilities.reasoning") }, + { key: "supports_computer_use", icon: Monitor, label: t("capabilities.computerUse") }, + { key: "supports_assistant_prefill", icon: Pencil, label: t("capabilities.assistantPrefill") }, + ]; + + const applyFilters = useCallback( + (next: { source: ModelPriceSource | ""; litellmProvider: string }) => { + setSourceFilter(next.source); + setLitellmProviderFilter(next.litellmProvider); + + const newPage = 1; + setPage(newPage); + updateURL(debouncedSearchTerm, newPage, pageSize, next.source, next.litellmProvider); + fetchPrices(newPage, pageSize, debouncedSearchTerm, next.source, next.litellmProvider); + }, + [debouncedSearchTerm, fetchPrices, pageSize, updateURL] + ); + return (
+ {/* 快捷筛选 */} +
+ + + + + + + + + +
+ {/* 搜索和页面大小控制 */}
@@ -198,9 +424,7 @@ export function PriceList({ />
- - {t("pagination.perPage", { size: "" }).replace(/\d+/, "")} - + {t("pagination.perPageLabel")} handleSearchChange(e.target.value)} + className="pl-9" + /> +
+ + {/* 冲突列表 */} +
+ + + + + { + if (el) { + (el as HTMLButtonElement & { indeterminate?: boolean }).indeterminate = + someCurrentPageSelected; + } + }} + onCheckedChange={handleSelectAll} + /> + + {t("table.modelName")} + {t("table.manualPrice")} + {t("table.litellmPrice")} + {t("table.action")} + + + + {paginatedConflicts.length > 0 ? ( + paginatedConflicts.map((conflict) => ( + + + + handleSelectModel(conflict.modelName, !!checked) + } + /> + + {conflict.modelName} + + + {formatPrice(conflict.manualPrice.input_cost_per_token)} + + + + + {formatPrice(conflict.litellmPrice.input_cost_per_token)} + + + + + + + )) + ) : ( + + + {searchTerm ? t("noMatch") : t("noConflicts")} + + + )} + +
+
+ + {/* 分页 */} + {totalPages > 1 && ( +
+ + {t("pagination.showing", { + from: (page - 1) * PAGE_SIZE + 1, + to: Math.min(page * PAGE_SIZE, filteredConflicts.length), + total: filteredConflicts.length, + })} + +
+ + + {page} / {totalPages} + + +
+
+ )} + + {/* 选中统计 */} +
+ {t("selectedCount", { count: selectedModels.size, total: conflicts.length })} +
+
+ + + + + + + + ); +} diff --git a/src/app/[locale]/settings/prices/_components/sync-litellm-button.tsx b/src/app/[locale]/settings/prices/_components/sync-litellm-button.tsx index 78edbeeee..d99efef7d 100644 --- a/src/app/[locale]/settings/prices/_components/sync-litellm-button.tsx +++ b/src/app/[locale]/settings/prices/_components/sync-litellm-button.tsx @@ -5,25 +5,36 @@ import { useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; import { useState } from "react"; import { toast } from "sonner"; -import { syncLiteLLMPrices } from "@/actions/model-prices"; +import { checkLiteLLMSyncConflicts, syncLiteLLMPrices } from "@/actions/model-prices"; import { Button } from "@/components/ui/button"; +import type { SyncConflict } from "@/types/model-price"; +import { SyncConflictDialog } from "./sync-conflict-dialog"; /** - * LiteLLM 价格同步按钮组件 + * 云端价格表同步按钮组件 */ export function SyncLiteLLMButton() { const t = useTranslations("settings"); const router = useRouter(); const [syncing, setSyncing] = useState(false); + const [checking, setChecking] = useState(false); - const handleSync = async () => { + // 冲突弹窗状态 + const [conflictDialogOpen, setConflictDialogOpen] = useState(false); + const [conflicts, setConflicts] = useState([]); + + /** + * 执行同步(可选覆盖列表) + */ + const doSync = async (overwriteManual?: string[]) => { setSyncing(true); try { - const response = await syncLiteLLMPrices(); + const response = await syncLiteLLMPrices(overwriteManual); if (!response.ok) { - toast.error(response.error || t("prices.sync.failed")); + console.error("云端价格表同步失败:", response.error); + toast.error(t("prices.sync.failed")); return; } @@ -32,13 +43,15 @@ export function SyncLiteLLMButton() { return; } - const { added, updated, unchanged, failed } = response.data; + const { added, updated, unchanged, failed, skippedConflicts } = response.data; // 优先显示失败信息(更明显) if (failed.length > 0) { toast.error( t("prices.sync.partialFailure", { failed: failed.length }) + - (failed.length <= 5 ? `\n失败模型: ${failed.join(", ")}` : ""), + (failed.length <= 5 + ? `\n${t("prices.sync.failedModels", { models: failed.join(", ") })}` + : ""), { duration: 5000, // 失败消息显示更长时间 } @@ -47,13 +60,16 @@ export function SyncLiteLLMButton() { // 显示成功信息 if (added.length > 0 || updated.length > 0) { - toast.success( - t("prices.sync.successWithChanges", { - added: added.length, - updated: updated.length, - unchanged: unchanged.length, - }) - ); + let message = t("prices.sync.successWithChanges", { + added: added.length, + updated: updated.length, + unchanged: unchanged.length, + }); + // 如果有跳过的冲突,追加提示 + if (skippedConflicts && skippedConflicts.length > 0) { + message += ` (${t("prices.sync.skippedConflicts", { count: skippedConflicts.length })})`; + } + toast.success(message); } else if (unchanged.length > 0) { toast.info(t("prices.sync.successNoChanges", { unchanged: unchanged.length })); } else if (failed.length === 0) { @@ -62,18 +78,76 @@ export function SyncLiteLLMButton() { // 刷新页面数据 router.refresh(); + window.dispatchEvent(new Event("price-data-updated")); } catch (error) { - console.error("同步失败:", error); - toast.error(t("prices.sync.failedError")); + console.error("云端价格表同步失败:", error); + toast.error(t("prices.sync.failed")); } finally { setSyncing(false); } }; + /** + * 处理同步按钮点击 - 先检查冲突 + */ + const handleSync = async () => { + setChecking(true); + + try { + // 先检查是否有冲突 + const checkResult = await checkLiteLLMSyncConflicts(); + + if (!checkResult.ok) { + console.error("云端价格表冲突检查失败:", checkResult.error); + toast.error(t("prices.sync.failed")); + return; + } + + if (checkResult.data?.hasConflicts && checkResult.data.conflicts.length > 0) { + // 有冲突,显示弹窗 + setConflicts(checkResult.data.conflicts); + setConflictDialogOpen(true); + } else { + // 无冲突,直接同步 + await doSync(); + } + } catch (error) { + console.error("云端价格表冲突检查失败:", error); + toast.error(t("prices.sync.failed")); + } finally { + setChecking(false); + } + }; + + /** + * 处理冲突弹窗确认 + */ + const handleConflictConfirm = async (selectedModels: string[]) => { + setConflictDialogOpen(false); + // 执行同步,传入要覆盖的模型列表 + await doSync(selectedModels); + }; + + const isLoading = syncing || checking; + return ( - + <> + + + + ); } diff --git a/src/app/[locale]/settings/prices/_components/upload-price-dialog.tsx b/src/app/[locale]/settings/prices/_components/upload-price-dialog.tsx index cf92d9ba5..ce29f2e42 100644 --- a/src/app/[locale]/settings/prices/_components/upload-price-dialog.tsx +++ b/src/app/[locale]/settings/prices/_components/upload-price-dialog.tsx @@ -63,6 +63,10 @@ export function UploadPriceDialog({ const [open, setOpen] = useState(defaultOpen); const [uploading, setUploading] = useState(false); const [result, setResult] = useState(null); + const [cloudModelCount, setCloudModelCount] = useState(null); + const [cloudModelCountStatus, setCloudModelCountStatus] = useState< + "idle" | "loading" | "loaded" | "error" + >("idle"); const handleOpenChange = (nextOpen: boolean) => { if (!nextOpen && uploading) { @@ -76,6 +80,41 @@ export function UploadPriceDialog({ setOpen(nextOpen); }; + useEffect(() => { + if (!open) { + return; + } + + let cancelled = false; + const fetchCloudModelCount = async () => { + setCloudModelCountStatus("loading"); + try { + const response = await fetch("/api/prices/cloud-model-count", { cache: "no-store" }); + const payload = await response.json(); + if (!payload?.ok) { + throw new Error(payload?.error || "unknown error"); + } + + if (!cancelled) { + setCloudModelCount(Number(payload.data?.count) || 0); + setCloudModelCountStatus("loaded"); + } + } catch (error) { + console.error("获取云端模型数量失败:", error); + if (!cancelled) { + setCloudModelCount(null); + setCloudModelCountStatus("error"); + } + } + }; + + fetchCloudModelCount(); + + return () => { + cancelled = true; + }; + }, [open]); + /** * 处理文件选择 */ @@ -84,7 +123,8 @@ export function UploadPriceDialog({ if (!file) return; // 验证文件类型 - if (!file.name.endsWith(".json")) { + const lowerName = file.name.toLowerCase(); + if (!lowerName.endsWith(".json") && !lowerName.endsWith(".toml")) { toast.error(t("dialog.invalidFileType")); return; } @@ -106,7 +146,8 @@ export function UploadPriceDialog({ const response = await uploadPriceTable(text); if (!response.ok) { - toast.error(response.error); + console.error("价格表上传失败:", response.error); + toast.error(t("dialog.updateFailed")); return; } @@ -118,6 +159,7 @@ export function UploadPriceDialog({ setResult(response.data); const totalUpdates = response.data.added.length + response.data.updated.length; toast.success(t("dialog.updateSuccess", { count: totalUpdates })); + window.dispatchEvent(new Event("price-data-updated")); } catch (error) { console.error("更新失败:", error); toast.error(t("dialog.updateFailed")); @@ -193,7 +235,7 @@ export function UploadPriceDialog({ @@ -215,7 +257,16 @@ export function UploadPriceDialog({ {" "} {t("dialog.andUploadViaButton")}

-

• {t("dialog.supportedModels", { count: "Claude + OpenAI" })}

+

+ •{" "} + {cloudModelCountStatus === "loading" + ? t("dialog.cloudModelCountLoading") + : cloudModelCountStatus === "loaded" + ? t("dialog.supportedModels", { count: cloudModelCount ?? 0 }) + : cloudModelCountStatus === "error" + ? t("dialog.cloudModelCountFailed") + : t("dialog.supportedModels", { count: "-" })} +

) : ( @@ -236,7 +287,8 @@ export function UploadPriceDialog({
{result.added.slice(0, 3).join(", ")} - {result.added.length > 3 && ` (+${result.added.length - 3})`} + {result.added.length > 3 && + t("dialog.results.more", { count: result.added.length - 3 })}
)} @@ -251,7 +303,8 @@ export function UploadPriceDialog({
{result.updated.slice(0, 3).join(", ")} - {result.updated.length > 3 && ` (+${result.updated.length - 3})`} + {result.updated.length > 3 && + t("dialog.results.more", { count: result.updated.length - 3 })}
)} @@ -276,7 +329,8 @@ export function UploadPriceDialog({
{result.failed.slice(0, 3).join(", ")} - {result.failed.length > 3 && ` (+${result.failed.length - 3})`} + {result.failed.length > 3 && + t("dialog.results.more", { count: result.failed.length - 3 })}
)} diff --git a/src/app/[locale]/settings/prices/page.tsx b/src/app/[locale]/settings/prices/page.tsx index 3f4238bf8..9e82beee6 100644 --- a/src/app/[locale]/settings/prices/page.tsx +++ b/src/app/[locale]/settings/prices/page.tsx @@ -3,6 +3,7 @@ import { Suspense } from "react"; import { getModelPrices, getModelPricesPaginated } from "@/actions/model-prices"; import { Section } from "@/components/section"; import { SettingsPageHeader } from "../_components/settings-page-header"; +import { ModelPriceDrawer } from "./_components/model-price-drawer"; import { PriceList } from "./_components/price-list"; import { PricesSkeleton } from "./_components/prices-skeleton"; import { SyncLiteLLMButton } from "./_components/sync-litellm-button"; @@ -17,6 +18,8 @@ interface SettingsPricesPageProps { pageSize?: string; size?: string; search?: string; + source?: string; + litellmProvider?: string; }>; } @@ -40,9 +43,19 @@ async function SettingsPricesContent({ searchParams }: SettingsPricesPageProps) // 解析分页参数 const page = parseInt(params.page || "1", 10); const pageSize = parseInt(params.pageSize || params.size || "50", 10); + const search = params.search?.trim() || undefined; + const source = + params.source === "manual" || params.source === "litellm" ? params.source : undefined; + const litellmProvider = params.litellmProvider?.trim() || undefined; - // 获取分页数据(搜索在客户端处理) - const pricesResult = await getModelPricesPaginated({ page, pageSize }); + // 获取分页数据(搜索与过滤在 SQL 层面执行) + const pricesResult = await getModelPricesPaginated({ + page, + pageSize, + search, + source, + litellmProvider, + }); const isRequired = params.required === "true"; // 如果获取分页数据失败,降级到获取所有数据 @@ -73,6 +86,7 @@ async function SettingsPricesContent({ searchParams }: SettingsPricesPageProps) description={t("prices.section.description")} actions={
+
@@ -83,6 +97,9 @@ async function SettingsPricesContent({ searchParams }: SettingsPricesPageProps) initialTotal={initialTotal} initialPage={initialPage} initialPageSize={initialPageSize} + initialSearchTerm={search ?? ""} + initialSourceFilter={source ?? ""} + initialLitellmProviderFilter={litellmProvider ?? ""} /> ); diff --git a/src/app/[locale]/settings/providers/_components/auto-sort-priority-dialog.tsx b/src/app/[locale]/settings/providers/_components/auto-sort-priority-dialog.tsx new file mode 100644 index 000000000..eaebd4992 --- /dev/null +++ b/src/app/[locale]/settings/providers/_components/auto-sort-priority-dialog.tsx @@ -0,0 +1,250 @@ +"use client"; + +import { useQueryClient } from "@tanstack/react-query"; +import { ArrowRight, ListOrdered, Loader2 } from "lucide-react"; +import { useTranslations } from "next-intl"; +import { useState, useTransition } from "react"; +import { toast } from "sonner"; +import { autoSortProviderPriority } from "@/actions/providers"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; + +type AutoSortResult = { + groups: Array<{ + costMultiplier: number; + priority: number; + providers: Array<{ id: number; name: string }>; + }>; + changes: Array<{ + providerId: number; + name: string; + oldPriority: number; + newPriority: number; + costMultiplier: number; + }>; + summary: { + totalProviders: number; + changedCount: number; + groupCount: number; + }; + applied: boolean; +}; + +export function AutoSortPriorityDialog() { + const queryClient = useQueryClient(); + const t = useTranslations("settings.providers.autoSort"); + const tCommon = useTranslations("settings.common"); + const tErrors = useTranslations("errors"); + + const [open, setOpen] = useState(false); + const [previewData, setPreviewData] = useState(null); + const [isPending, startTransition] = useTransition(); + const [isApplying, setIsApplying] = useState(false); + + const getActionErrorMessage = (result: { + errorCode?: string; + errorParams?: Record; + error?: string | null; + }): string => { + if (result.errorCode) { + try { + return tErrors(result.errorCode, result.errorParams); + } catch { + return t("error"); + } + } + + if (result.error) { + try { + return tErrors(result.error); + } catch { + return t("error"); + } + } + + return t("error"); + }; + + const handleOpenChange = (isOpen: boolean) => { + setOpen(isOpen); + if (isOpen) { + // Load preview when dialog opens + startTransition(async () => { + try { + const result = await autoSortProviderPriority({ confirm: false }); + if (result.ok) { + setPreviewData(result.data); + } else { + toast.error(getActionErrorMessage(result)); + setOpen(false); + } + } catch (error) { + console.error("autoSortProviderPriority preview failed", error); + toast.error(t("error")); + setOpen(false); + } + }); + } else { + // Clear preview when dialog closes + setPreviewData(null); + } + }; + + const handleApply = async () => { + setIsApplying(true); + try { + const result = await autoSortProviderPriority({ confirm: true }); + if (result.ok) { + toast.success(t("success", { count: result.data.summary.changedCount })); + queryClient.invalidateQueries({ queryKey: ["providers"] }); + setOpen(false); + } else { + toast.error(getActionErrorMessage(result)); + } + } catch (error) { + console.error("autoSortProviderPriority apply failed", error); + toast.error(t("error")); + } finally { + setIsApplying(false); + } + }; + + const hasChanges = previewData && previewData.summary.changedCount > 0; + + return ( + + + + + + + {t("dialogTitle")} + {t("dialogDescription")} + + +
+ {isPending ? ( +
+ +
+ ) : previewData ? ( + <> + {/* Summary */} +
+ {hasChanges + ? t("changeCount", { count: previewData.summary.changedCount }) + : t("noChanges")} +
+ + {/* Groups Preview Table */} + {previewData.groups.length > 0 && ( +
+ + + + {t("costMultiplierHeader")} + {t("priorityHeader")} + {t("providersHeader")} + + + + {previewData.groups.map((group) => ( + + {group.costMultiplier}x + + {group.priority} + + +
+ {group.providers.map((provider) => ( + + {provider.name} + + ))} +
+
+
+ ))} +
+
+
+ )} + + {/* Changes Detail */} + {hasChanges && ( +
+

{t("changesTitle")}

+
+ + + + {t("providerHeader")} + + {t("priorityChangeHeader")} + + + + + {previewData.changes.map((change) => ( + + + {change.name} + + ({change.costMultiplier}x) + + + +
+ + {change.oldPriority} + + + + {change.newPriority} + +
+
+
+ ))} +
+
+
+
+ )} + + ) : null} +
+ + + + + +
+
+ ); +} diff --git a/src/app/[locale]/settings/providers/_components/provider-manager-loader.tsx b/src/app/[locale]/settings/providers/_components/provider-manager-loader.tsx index f857e0fa5..b07fb3e0b 100644 --- a/src/app/[locale]/settings/providers/_components/provider-manager-loader.tsx +++ b/src/app/[locale]/settings/providers/_components/provider-manager-loader.tsx @@ -1,6 +1,6 @@ "use client"; -import { QueryClient, QueryClientProvider, useQuery } from "@tanstack/react-query"; +import { useQuery } from "@tanstack/react-query"; import { getProviderStatisticsAsync, getProviders, @@ -23,15 +23,6 @@ type ProviderHealthStatus = Record< } >; -const queryClient = new QueryClient({ - defaultOptions: { - queries: { - refetchOnWindowFocus: false, - staleTime: 30000, - }, - }, -}); - async function fetchSystemSettings(): Promise<{ currencyDisplay: CurrencyCode }> { const response = await fetch("/api/system-settings"); if (!response.ok) { @@ -56,6 +47,8 @@ function ProviderManagerLoaderContent({ } = useQuery({ queryKey: ["providers"], queryFn: getProviders, + refetchOnWindowFocus: false, + staleTime: 30_000, }); const { @@ -65,6 +58,8 @@ function ProviderManagerLoaderContent({ } = useQuery({ queryKey: ["providers-health"], queryFn: getProvidersHealthStatus, + refetchOnWindowFocus: false, + staleTime: 30_000, }); // Statistics loaded independently with longer cache @@ -72,6 +67,7 @@ function ProviderManagerLoaderContent({ useQuery({ queryKey: ["providers-statistics"], queryFn: getProviderStatisticsAsync, + refetchOnWindowFocus: false, staleTime: 30_000, refetchInterval: 60_000, }); @@ -83,6 +79,8 @@ function ProviderManagerLoaderContent({ } = useQuery<{ currencyDisplay: CurrencyCode }>({ queryKey: ["system-settings"], queryFn: fetchSystemSettings, + refetchOnWindowFocus: false, + staleTime: 30_000, }); const loading = isProvidersLoading || isHealthLoading || isSettingsLoading; @@ -106,9 +104,5 @@ function ProviderManagerLoaderContent({ } export function ProviderManagerLoader(props: ProviderManagerLoaderProps) { - return ( - - - - ); + return ; } diff --git a/src/app/[locale]/settings/providers/page.tsx b/src/app/[locale]/settings/providers/page.tsx index f8a7dd1ae..9f06333ae 100644 --- a/src/app/[locale]/settings/providers/page.tsx +++ b/src/app/[locale]/settings/providers/page.tsx @@ -6,6 +6,7 @@ import { Link } from "@/i18n/routing"; import { getSession } from "@/lib/auth"; import { getEnvConfig } from "@/lib/config/env.schema"; import { SettingsPageHeader } from "../_components/settings-page-header"; +import { AutoSortPriorityDialog } from "./_components/auto-sort-priority-dialog"; import { ProviderManagerLoader } from "./_components/provider-manager-loader"; import { SchedulingRulesDialog } from "./_components/scheduling-rules-dialog"; @@ -33,6 +34,7 @@ export default async function SettingsProvidersPage() { {t("providers.section.leaderboard")} + } diff --git a/src/app/[locale]/usage-doc/_components/quick-links.tsx b/src/app/[locale]/usage-doc/_components/quick-links.tsx index d51698723..45fdc2ade 100644 --- a/src/app/[locale]/usage-doc/_components/quick-links.tsx +++ b/src/app/[locale]/usage-doc/_components/quick-links.tsx @@ -1,5 +1,6 @@ "use client"; +import { useTranslations } from "next-intl"; import { Link } from "@/i18n/routing"; interface QuickLinksProps { @@ -12,6 +13,8 @@ interface QuickLinksProps { * 支持桌面端和移动端复用 */ export function QuickLinks({ isLoggedIn, onBackToTop }: QuickLinksProps) { + const t = useTranslations("usage"); + const handleBackToTop = () => { window.scrollTo({ top: 0, behavior: "smooth" }); onBackToTop?.(); @@ -24,14 +27,14 @@ export function QuickLinks({ isLoggedIn, onBackToTop }: QuickLinksProps) { href="/dashboard" className="block text-sm text-muted-foreground hover:text-primary transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 rounded px-2 py-1" > - 返回仪表盘 + {t("navigation.backToDashboard")} )} ); diff --git a/src/app/[locale]/usage-doc/_components/toc-nav.tsx b/src/app/[locale]/usage-doc/_components/toc-nav.tsx index c70b8beda..f7df3a331 100644 --- a/src/app/[locale]/usage-doc/_components/toc-nav.tsx +++ b/src/app/[locale]/usage-doc/_components/toc-nav.tsx @@ -1,5 +1,6 @@ "use client"; +import { useTranslations } from "next-intl"; import { Skeleton } from "@/components/ui/skeleton"; import { cn } from "@/lib/utils"; @@ -24,8 +25,10 @@ interface TocNavProps { * 支持桌面端和移动端复用 */ export function TocNav({ tocItems, activeId, tocReady, onItemClick }: TocNavProps) { + const t = useTranslations("usage"); + return ( -