diff --git a/cecli/__init__.py b/cecli/__init__.py index 32e83040c50..45c3b410f3d 100644 --- a/cecli/__init__.py +++ b/cecli/__init__.py @@ -1,6 +1,6 @@ from packaging import version -__version__ = "1.0.1.dev" +__version__ = "1.0.2.dev" safe_version = __version__ try: diff --git a/cecli/coders/base_coder.py b/cecli/coders/base_coder.py index c16cf63cb92..8ec70e7c8c7 100755 --- a/cecli/coders/base_coder.py +++ b/cecli/coders/base_coder.py @@ -34,6 +34,7 @@ import cecli.prompts.utils.system as prompts from cecli import __version__, models, urls, utils from cecli.commands import Commands, SwitchCoderSignal +from cecli.decoding import safe_open from cecli.exceptions import LiteLLMExceptions from cecli.helpers import command_parser, coroutines, nested, responses from cecli.helpers.conversation import ConversationService, MessageTag @@ -245,6 +246,7 @@ def total_cached_tokens(self, value): model_kwargs = {} cost_multiplier = 1 stop_on_empty = True + error_code = None # Task coordination state variables input_running = False @@ -1429,7 +1431,7 @@ def get_images_message(self, fnames): if not mime_type: continue - with open(fname, "rb") as image_file: + with safe_open(fname, "rb") as image_file: encoded_string = base64.b64encode(image_file.read()).decode("utf-8") image_url = f"data:{mime_type};base64,{encoded_string}" rel_fname = self.get_rel_fname(fname) @@ -1873,7 +1875,7 @@ async def run_one(self, user_message, preproc): if not self.commands.is_command(user_message): ConversationService.get_chunks(self).flush_removals() self.last_user_message = user_message - + self.error_code = None # Fire memorizer after each user request # if self.auto_memory and self.edit_format not in ["subagent"]: # from cecli.helpers.memory.utils import invoke_memorizer @@ -3648,6 +3650,7 @@ async def send(self, messages, model=None, functions=None, tools=None): self.calculate_and_show_tokens_and_cost(messages, completion) except litellm_ex.exceptions_tuple() as err: + self.error_code = 1 ex_info = litellm_ex.get_ex_info(err) if ex_info.name == "ContextWindowExceededError": # Still calculate costs for context window errors @@ -3655,6 +3658,7 @@ async def send(self, messages, model=None, functions=None, tools=None): self.calculate_and_show_tokens_and_cost(messages, completion) raise except (KeyboardInterrupt, asyncio.CancelledError) as kbi: + self.error_code = 130 # apparently standard? self.keyboard_interrupt() raise kbi finally: @@ -3755,7 +3759,7 @@ async def show_send_output_stream(self, completion): completion, self.interrupt_event ): if self.args.debug: - with open(".cecli/logs/chunks.log", "a") as f: + with safe_open(".cecli/logs/chunks.log", "a") as f: print(chunk, file=f) # Check if confirmation is in progress and wait if needed diff --git a/cecli/commands/history_search.py b/cecli/commands/history_search.py index ce6643ffe93..f264b6af9c7 100644 --- a/cecli/commands/history_search.py +++ b/cecli/commands/history_search.py @@ -3,6 +3,7 @@ from cecli.commands.utils.base_command import BaseCommand from cecli.commands.utils.helpers import format_command_result +from cecli.decoding import safe_open from cecli.utils import run_fzf @@ -68,7 +69,7 @@ def parse_input_history_file(cls, file_path: str) -> List[str]: return [] try: - with open(file_path, "r") as f: + with safe_open(file_path, "r") as f: content = f.read() except (OSError, IOError): return [] diff --git a/cecli/commands/terminal_setup.py b/cecli/commands/terminal_setup.py index 5f605852f52..bfd6a94a767 100644 --- a/cecli/commands/terminal_setup.py +++ b/cecli/commands/terminal_setup.py @@ -12,6 +12,7 @@ from cecli.commands.utils.base_command import BaseCommand from cecli.commands.utils.helpers import format_command_result +from cecli.decoding import safe_open class TerminalSetupCommand(BaseCommand): @@ -177,7 +178,7 @@ def _update_alacritty(cls, path, io, dry_run=False): data = { "keyboard": {"bindings": [{"key": "Return", "mods": "Shift", "chars": "\n"}]} } - with open(path, "w", encoding="utf-8") as f: + with safe_open(path, "w") as f: tomlkit.dump(data, f) io.tool_output("Created Alacritty config with shift+enter binding.") return True @@ -189,7 +190,7 @@ def _update_alacritty(cls, path, io, dry_run=False): io.tool_output(f"DRY-RUN: Would check Alacritty config at {path}") io.tool_output(f"DRY-RUN: Would add binding: {new_binding}") try: - with open(path, "r", encoding="utf-8") as f: + with safe_open(path, "r") as f: data = tomlkit.load(f) # Check if binding already exists @@ -222,7 +223,7 @@ def _update_alacritty(cls, path, io, dry_run=False): cls._backup_file(path, io) try: - with open(path, "r", encoding="utf-8") as f: + with safe_open(path, "r") as f: data = tomlkit.load(f) # Ensure keyboard section exists @@ -253,7 +254,7 @@ def _update_alacritty(cls, path, io, dry_run=False): data["keyboard"]["bindings"].append(new_binding) # Write back to file - with open(path, "w", encoding="utf-8") as f: + with safe_open(path, "w") as f: tomlkit.dump(data, f) io.tool_output("Updated Alacritty config.") @@ -280,7 +281,7 @@ def _update_kitty(cls, path, io, dry_run=False): else: io.tool_output(f"Creating Kitty config at {path}") # Create Kitty config with shift+enter binding - with open(path, "w", encoding="utf-8") as f: + with safe_open(path, "w") as f: f.write(cls.KITTY_BINDING) io.tool_output("Created Kitty config with shift+enter binding.") return True @@ -290,7 +291,7 @@ def _update_kitty(cls, path, io, dry_run=False): io.tool_output(f"DRY-RUN: Would append binding:\n{cls.KITTY_BINDING.strip()}") # Simulate checking for duplicates try: - with open(path, "r", encoding="utf-8") as f: + with safe_open(path, "r") as f: content = f.read() if "map shift+enter send_text all \\n" in content: io.tool_output("DRY-RUN: Kitty already configured.") @@ -304,14 +305,14 @@ def _update_kitty(cls, path, io, dry_run=False): cls._backup_file(path, io) - with open(path, "r", encoding="utf-8") as f: + with safe_open(path, "r") as f: content = f.read() if "map shift+enter send_text all \\n" in content: io.tool_output("Kitty already configured.") return False - with open(path, "a", encoding="utf-8") as f: + with safe_open(path, "a") as f: f.write(cls.KITTY_BINDING) io.tool_output("Updated Kitty config.") return True @@ -336,7 +337,7 @@ def _update_konsole(cls, path, io, dry_run=False): return False try: - with open(path, "r", encoding="utf-8") as f: + with safe_open(path, "r") as f: content = f.read() import re @@ -359,7 +360,7 @@ def _update_konsole(cls, path, io, dry_run=False): cls._backup_file(path, io) new_content = re.sub(pattern, new_rule, content, flags=re.MULTILINE) - with open(path, "w", encoding="utf-8") as f: + with safe_open(path, "w") as f: f.write(new_content) io.tool_output("Updated Konsole keytab rule.") return True @@ -369,7 +370,7 @@ def _update_konsole(cls, path, io, dry_run=False): return True cls._backup_file(path, io) - with open(path, "a", encoding="utf-8") as f: + with safe_open(path, "a") as f: f.write(f"\n{new_rule}\n") io.tool_output("Added Konsole Return+Shift rule.") return True @@ -399,7 +400,7 @@ def _update_windows_terminal(cls, path, io, dry_run=False): io.tool_output(f"Creating Windows Terminal config at {path}") # Create minimal Windows Terminal config with shift+enter binding data = {"actions": [cls.WT_ACTION], "keybindings": [cls.WT_KEYBINDING]} - with open(path, "w", encoding="utf-8") as f: + with safe_open(path, "w") as f: json.dump(data, f, indent=4) io.tool_output("Created Windows Terminal config with shift+enter binding.") return True @@ -412,7 +413,7 @@ def _update_windows_terminal(cls, path, io, dry_run=False): ) # Simulate checking for duplicates try: - with open(path, "r", encoding="utf-8") as f: + with safe_open(path, "r") as f: data = json.load(f) # Check if already configured @@ -451,7 +452,7 @@ def _update_windows_terminal(cls, path, io, dry_run=False): return False try: - with open(path, "r", encoding="utf-8") as f: + with safe_open(path, "r") as f: data = json.load(f) # Check if already configured @@ -493,7 +494,7 @@ def _update_windows_terminal(cls, path, io, dry_run=False): cls._backup_file(path, io) - with open(path, "w", encoding="utf-8") as f: + with safe_open(path, "w") as f: json.dump(data, f, indent=4) io.tool_output("Updated Windows Terminal config.") return True @@ -522,7 +523,7 @@ def _update_vscode(cls, path, io, dry_run=False): io.tool_output(f"Creating VS Code keybindings.json at {path}") # Create file with our binding data = [cls.VSCODE_SHIFT_ENTER_BINDING] - with open(path, "w", encoding="utf-8") as f: + with safe_open(path, "w") as f: json.dump(data, f, indent=4) io.tool_output("Created VS Code config with shift+enter binding.") return True @@ -536,7 +537,7 @@ def _update_vscode(cls, path, io, dry_run=False): # Simulate checking for duplicates try: content = "" - with open(path, "r", encoding="utf-8") as f: + with safe_open(path, "r") as f: content = f.read() # Strip comments before parsing @@ -580,7 +581,7 @@ def _update_vscode(cls, path, io, dry_run=False): try: content = "" - with open(path, "r", encoding="utf-8") as f: + with safe_open(path, "r") as f: content = f.read() # Strip comments before parsing @@ -618,7 +619,7 @@ def _update_vscode(cls, path, io, dry_run=False): data.append(cls.VSCODE_SHIFT_ENTER_BINDING) # Write back to file - with open(path, "w", encoding="utf-8") as f: + with safe_open(path, "w") as f: json.dump(data, f, indent=4) io.tool_output("Updated VS Code config.") @@ -647,7 +648,7 @@ def _update_vscode_settings(cls, keybindings_path, io, dry_run=False): try: if settings_path.exists(): content = "" - with open(settings_path, "r", encoding="utf-8") as f: + with safe_open(settings_path, "r") as f: content = f.read() content_no_comments = cls._strip_json_comments(content) @@ -703,7 +704,7 @@ def _update_vscode_settings(cls, keybindings_path, io, dry_run=False): if settings_path.exists(): cls._backup_file(settings_path, io) content = "" - with open(settings_path, "r", encoding="utf-8") as f: + with safe_open(settings_path, "r") as f: content = f.read() # Strip comments before parsing @@ -770,7 +771,7 @@ def _update_vscode_settings(cls, keybindings_path, io, dry_run=False): ] # Write back to file - with open(settings_path, "w", encoding="utf-8") as f: + with safe_open(settings_path, "w") as f: json.dump(data, f, indent=4) io.tool_output("Updated VS Code settings.") diff --git a/cecli/commands/utils/save_load_manager.py b/cecli/commands/utils/save_load_manager.py index 82012f707a4..bf2ca101959 100644 --- a/cecli/commands/utils/save_load_manager.py +++ b/cecli/commands/utils/save_load_manager.py @@ -2,6 +2,8 @@ from pathlib import Path from typing import List +from cecli.decoding import safe_open + class SaveLoadManager: """Manager for saving and loading command files.""" @@ -35,7 +37,7 @@ def save_commands(self, filename: str) -> Path: # Ensure parent directory exists os.makedirs(filepath.parent, exist_ok=True) - with open(filepath, "w", encoding=self.io.encoding) as f: + with safe_open(filepath, "w") as f: f.write("/drop\n") # Write commands to add editable files for fname in sorted(self.coder.abs_fnames): @@ -68,7 +70,7 @@ def load_commands(self, filename: str) -> List[str]: filepath = self.resolve_filepath(filename) try: - with open(filepath, "r", encoding=self.io.encoding, errors="replace") as f: + with safe_open(filepath, "r", errors="replace") as f: commands = f.readlines() return [ cmd.strip() for cmd in commands if cmd.strip() and not cmd.strip().startswith("#") diff --git a/cecli/commands/workspace.py b/cecli/commands/workspace.py index f0fa3dda209..ba53f260fe5 100644 --- a/cecli/commands/workspace.py +++ b/cecli/commands/workspace.py @@ -1,6 +1,7 @@ import subprocess from cecli.commands.utils.base_command import BaseCommand +from cecli.decoding import safe_open class WorkspaceCommand(BaseCommand): @@ -26,7 +27,7 @@ async def execute(cls, io, coder, args, **kwargs): config = {} if metadata_path.exists(): try: - with open(metadata_path, "r") as f: + with safe_open(metadata_path, "r") as f: config = json.load(f) except Exception: pass diff --git a/cecli/decoding.py b/cecli/decoding.py new file mode 100644 index 00000000000..7f4e8c4c1d8 --- /dev/null +++ b/cecli/decoding.py @@ -0,0 +1,115 @@ +""" +Encoding-aware file operations with automatic encoding detection for reading +and configurable encoding for writing. + +Provides safe_open() as a drop-in replacement for built-in open() that handles +encoding intelligently on reads, smart_read() for direct file reading with +fallback encoding detection via charset_normalizer, and safe_write() for +writing files with a configurable default encoding. + +The module-level DEFAULT_ENCODING variable can be overridden at runtime +(e.g., from main.py) to set the preferred encoding for write operations. +""" + +import charset_normalizer + +# Global encoding setting used by safe_open() and safe_write() for write +# operations. Can be overridden at runtime from main.py or elsewhere. +DEFAULT_ENCODING = "utf-8" + + +def smart_read(filepath): + """ + Read a text file, automatically detecting the encoding if not UTF-8. + + Attempts a fast UTF-8 decode first using Python's optimized native + decoder. Falls back to charset_normalizer for legacy encodings (e.g. + GBK, Latin-1, Shift-JIS) when a UnicodeDecodeError is raised. + + Args: + filepath: Path to the file to read. + + Returns: + The file contents as a string. + + Raises: + ValueError: If the encoding cannot be determined. + FileNotFoundError: If the file does not exist. + """ + try: + # FAST PATH: Try standard UTF-8 first using Python's optimized + # native decoder — this handles the vast majority of modern files. + with open(filepath, "r", encoding="utf-8") as f: + return f.read() + + except UnicodeDecodeError: + # SLOW PATH: A decode error means this is likely a legacy encoding. + # Let the library read the raw bytes and guess the correct encoding. + results = charset_normalizer.from_path(filepath) + match = results.best() + + if match is None: + raise ValueError(f"Could not determine text encoding for {filepath}") + + return str(match) + + +def safe_write(filepath, content, encoding=None): + """ + Write string content to a file using the specified or default encoding. + + Args: + filepath: Path to the file to write. + content: The string content to write. + encoding: Encoding to use. Defaults to the module-level + DEFAULT_ENCODING if not provided. + + Returns: + The content that was written (for convenience / chaining). + """ + if encoding is None: + encoding = DEFAULT_ENCODING + + with open(filepath, "w", encoding=encoding) as f: + f.write(content) + + return content + + +def safe_open(filepath, mode="r", encoding=None, **kwargs): + """ + Open a file with intelligent encoding handling. + """ + # Binary modes — pass through to built-in open() unchanged. + if "b" in mode: + return open(filepath, mode, **kwargs) + + # If the user explicitly provided an encoding, respect it unconditionally. + if encoding is not None: + return open(filepath, mode, encoding=encoding, **kwargs) + + # Write / append modes (with no explicit encoding) — use DEFAULT_ENCODING. + # Note: We don't check for "r+" here because if a file is being read, + # we must detect its existing encoding first so we don't corrupt it. + if "w" in mode or "a" in mode or "x" in mode: + return open(filepath, mode, encoding=DEFAULT_ENCODING, **kwargs) + + # Read modes (and read/write "r+" modes) — Auto-detect the encoding. + try: + # FAST PATH: Try UTF-8 first by opening and reading a tiny chunk + with open(filepath, mode, encoding="utf-8", **kwargs) as f: + f.read(1) # Test if it raises a DecodeError + + # If we got here, UTF-8 is valid. Return a fresh file object. + return open(filepath, mode, encoding="utf-8", **kwargs) + + except UnicodeDecodeError: + # SLOW PATH: Detect encoding using charset_normalizer + results = charset_normalizer.from_path(filepath) + match = results.best() + + if match is None: + raise ValueError(f"Could not determine text encoding for {filepath}") + + # Return a real file object using the detected encoding + return open(filepath, mode, encoding=match.encoding, **kwargs) diff --git a/cecli/diffs.py b/cecli/diffs.py index 709810452a0..19be646e5f9 100644 --- a/cecli/diffs.py +++ b/cecli/diffs.py @@ -1,6 +1,8 @@ import difflib import sys +from cecli.decoding import safe_open + from .dump import dump # noqa: F401 @@ -11,10 +13,10 @@ def main(): file_orig, file_updated = sys.argv[1], sys.argv[2] - with open(file_orig, "r", encoding="utf-8") as f: + with safe_open(file_orig, "r") as f: lines_orig = f.readlines() - with open(file_updated, "r", encoding="utf-8") as f: + with safe_open(file_updated, "r") as f: lines_updated = f.readlines() for i in range(len(file_updated)): diff --git a/cecli/editor.py b/cecli/editor.py index 711254099d4..cc990fd8a7e 100644 --- a/cecli/editor.py +++ b/cecli/editor.py @@ -15,6 +15,7 @@ from rich.console import Console +from cecli.decoding import safe_open from cecli.dump import dump # noqa DEFAULT_EDITOR_NIX = "vi" @@ -132,7 +133,7 @@ def pipe_editor(input_data="", suffix=None, editor=None): command_str += " " + filepath subprocess.call(command_str, shell=True) - with open(filepath, "r") as f: + with safe_open(filepath, "r") as f: output_data = f.read() try: os.remove(filepath) diff --git a/cecli/helpers/agents/config.py b/cecli/helpers/agents/config.py index 16cbff4dc0f..2a07f7812cb 100644 --- a/cecli/helpers/agents/config.py +++ b/cecli/helpers/agents/config.py @@ -10,6 +10,8 @@ import yaml +from cecli.decoding import safe_open + @dataclass class SubAgentConfig: @@ -49,7 +51,7 @@ def parse_subagent_file(file_path: str) -> Optional[SubAgentConfig]: """ try: - with open(file_path, "r", encoding="utf-8") as f: + with safe_open(file_path, "r") as f: content = f.read() except (FileNotFoundError, IOError, OSError) as e: raise ValueError(f"Cannot read file '{file_path}': {e}") diff --git a/cecli/helpers/background_commands.py b/cecli/helpers/background_commands.py index 83fe53968cd..7e21687d194 100644 --- a/cecli/helpers/background_commands.py +++ b/cecli/helpers/background_commands.py @@ -12,6 +12,8 @@ from collections import deque from typing import Dict, List, Optional, Tuple +from cecli.decoding import safe_open + try: import pty import termios @@ -783,7 +785,7 @@ def save_paginated_output( filename = f"{page_num}.txt" abs_path = os.path.join(abs_folder, filename) page_content = output[i * page_size : (i + 1) * page_size] - with open(abs_path, "w") as f: + with safe_open(abs_path, "w") as f: f.write(page_content) file_paths = [f"{folder_path}/{page_num}.txt" for page_num in range(1, num_pages + 1)] diff --git a/cecli/helpers/config_utils.py b/cecli/helpers/config_utils.py index d6342fd1f12..14f375e50e8 100644 --- a/cecli/helpers/config_utils.py +++ b/cecli/helpers/config_utils.py @@ -6,6 +6,8 @@ import yaml +from cecli.decoding import safe_open + def load_and_apply_cecli_conf_files( cecli_conf_yml_files: List[str], args: Any, parser: Any @@ -23,7 +25,7 @@ def load_and_apply_cecli_conf_files( for config_file in existing_cecli_conf: try: - with open(config_file, "r") as f: + with safe_open(config_file, "r") as f: config_data = yaml.safe_load(f) if isinstance(config_data, dict): @@ -199,7 +201,7 @@ def read_and_merge_all_configs( for path in all_config_paths: if os.path.exists(path): try: - with open(path, "r") as f: + with safe_open(path, "r") as f: data = yaml.safe_load(f) if isinstance(data, dict): diff --git a/cecli/helpers/conversation/manager.py b/cecli/helpers/conversation/manager.py index 3337d0b8949..ed7e644cda6 100644 --- a/cecli/helpers/conversation/manager.py +++ b/cecli/helpers/conversation/manager.py @@ -4,6 +4,7 @@ import weakref from typing import Any, Dict, List, Optional, Tuple, Union +from cecli.decoding import safe_open from cecli.helpers import nested from .base_message import BaseMessage @@ -354,7 +355,7 @@ def get_messages_dict( import os os.makedirs(".cecli/logs", exist_ok=True) - with open(".cecli/logs/conversation.log", "w") as f: + with safe_open(".cecli/logs/conversation.log", "w") as f: json.dump(messages_dict, f, indent=4, default=lambda o: "") # Add cache control headers when getting all messages (for LLM consumption) diff --git a/cecli/helpers/file_system/builders.py b/cecli/helpers/file_system/builders.py index ee057d00b79..5389ea50ef8 100644 --- a/cecli/helpers/file_system/builders.py +++ b/cecli/helpers/file_system/builders.py @@ -110,41 +110,77 @@ class ScandirBuilder: @staticmethod def collect( root: str, - ignore_filter: FileIgnoreFilter | None = None, + ignore_filter: "FileIgnoreFilter | None" = None, + max_files: int = 65536, # 2^14 hard limit + max_depth: int = 5, # 5 levels deep limit ) -> list[str]: """ - Walk filesystem collecting files relative to root. - - Prunes ignored directories during walk (never descends into them), - avoiding wasted I/O on subtrees like ``node_modules/``. - - Args: - root: Root directory to scan - ignore_filter: Optional ignore rules for filtering - - Returns: - Sorted list of root-relative paths (POSIX-style) + Walk filesystem collecting files relative to root using Breadth-First Search. + Highly optimized: lazy iteration, single-pass evaluation, and raw string paths. """ paths = [] - root_path = Path(root).resolve() - - for dirpath, dirnames, filenames in os.walk(root_path): - rel_dir = os.path.relpath(dirpath, root) - - # Prune ignored directories in-place (os.walk obeys this) - if ignore_filter: - dirnames[:] = [ - d - for d in dirnames - if not ignore_filter.is_dir_ignored(os.path.join(rel_dir, d)) - ] - - for filename in filenames: - rel_path = os.path.join(rel_dir, filename) if rel_dir != "." else filename - if ignore_filter and ignore_filter.is_file_ignored(rel_path): - continue - # Normalize to POSIX-style paths - paths.append(rel_path.replace(os.sep, "/")) + + # Only use pathlib for initial resolution, then stick to raw strings for speed + root_path_obj = Path(root).resolve() + root_path_str = str(root_path_obj) + + path_parts = [part.lower() for part in root_path_obj.parts] + is_subfolder_of_user = "home" in path_parts[:-1] or "users" in path_parts[:-1] + + # Queue: (absolute_path_string, relative_posix_path, current_depth) + dirs_to_scan = [(root_path_str, ".", 0)] + path_count = 0 + + while dirs_to_scan: + next_dirs = [] + + for current_path, rel_dir, depth in dirs_to_scan: + try: + # Keep it as an iterator; do NOT cast to list() + with os.scandir(current_path) as it: + file_count = 0 + + # Single pass through the directory contents + for entry in it: + # --- Handle Directories --- + if entry.is_dir(follow_symlinks=False): + if depth < max_depth: + child_rel_path = ( + entry.name if rel_dir == "." else f"{rel_dir}/{entry.name}" + ) + + if ignore_filter and ignore_filter.is_dir_ignored( + child_rel_path + ): + continue + + # Append the raw string path, avoiding slow pathlib instantiations + next_dirs.append((entry.path, child_rel_path, depth + 1)) + + # --- Handle Files --- + elif entry.is_file(follow_symlinks=False): + # Short-circuit if we hit the 64 file cap (saves ignore_filter overhead) + if not is_subfolder_of_user and file_count >= 256: + continue + + child_rel_path = ( + entry.name if rel_dir == "." else f"{rel_dir}/{entry.name}" + ) + + if ignore_filter and ignore_filter.is_file_ignored(child_rel_path): + continue + + paths.append(child_rel_path) + file_count += 1 + path_count += 1 + + # Global safety hard-stop + if not is_subfolder_of_user and path_count >= max_files: + return sorted(paths) + except PermissionError: + continue # Skip folders we don't have read access to + + dirs_to_scan = next_dirs return sorted(paths) diff --git a/cecli/helpers/file_system/ignore.py b/cecli/helpers/file_system/ignore.py index 4d9afa40973..fb6f1209d8d 100644 --- a/cecli/helpers/file_system/ignore.py +++ b/cecli/helpers/file_system/ignore.py @@ -9,6 +9,8 @@ import pathspec +from cecli.decoding import safe_open + # Directories to always ignore (common noise sources) DEFAULT_IGNORE_DIRS = frozenset( { @@ -59,7 +61,7 @@ class FileIgnoreFilter: def __init__(self, cecli_ignore_path: str | None = None): self.cecli_ignore_spec = None if cecli_ignore_path and Path(cecli_ignore_path).is_file(): - with open(cecli_ignore_path) as f: + with safe_open(cecli_ignore_path) as f: self.cecli_ignore_spec = pathspec.PathSpec.from_lines( pathspec.patterns.GitWildMatchPattern, f ) diff --git a/cecli/helpers/file_system/service.py b/cecli/helpers/file_system/service.py index 478f683ad47..2965490859e 100644 --- a/cecli/helpers/file_system/service.py +++ b/cecli/helpers/file_system/service.py @@ -12,6 +12,8 @@ import os +from cecli.decoding import safe_open + from .builders import GitBuilder, ScandirBuilder from .ignore import FileIgnoreFilter from .ngram_index import TrigramIndex @@ -266,7 +268,7 @@ def save(self, path: str) -> None: if self.trie_index: self.trie_index.save(trie_path) if self.trigram_index: - with open(ngram_path, "wb") as f: + with safe_open(ngram_path, "wb") as f: pickle.dump(self.trigram_index, f) # Store metadata for cache validation @@ -276,7 +278,7 @@ def save(self, path: str) -> None: "build_hash": self._build_hash, "file_count": self.count(), } - with open(meta_path, "w") as f: + with safe_open(meta_path, "w") as f: json.dump(meta, f) def load(self, path: str) -> bool: @@ -294,7 +296,7 @@ def load(self, path: str) -> bool: try: # Load metadata - with open(meta_path) as f: + with safe_open(meta_path) as f: meta = json.load(f) self.root = meta["root"] @@ -308,7 +310,7 @@ def load(self, path: str) -> bool: return False # Load ngram index - with open(ngram_path, "rb") as f: + with safe_open(ngram_path, "rb") as f: self.trigram_index = pickle.load(f) # Check if cache is stale diff --git a/cecli/helpers/grep_ast/main.py b/cecli/helpers/grep_ast/main.py index bcf187304d5..59bb887f7c7 100644 --- a/cecli/helpers/grep_ast/main.py +++ b/cecli/helpers/grep_ast/main.py @@ -7,6 +7,8 @@ import pathspec +from cecli.decoding import safe_open + from .dump import dump # noqa: F401 from .grep_ast import TreeContext from .parsers import PARSERS @@ -79,7 +81,7 @@ def enumerate_files(fnames, spec, use_spec=False): def process_filename(filename, args): try: - with open(filename, "r", encoding=args.encoding) as file: + with safe_open(filename, "r") as file: code = file.read() except UnicodeDecodeError: return diff --git a/cecli/helpers/io_proxy.py b/cecli/helpers/io_proxy.py index 3f79ec6e8a4..bc6ce8aa475 100644 --- a/cecli/helpers/io_proxy.py +++ b/cecli/helpers/io_proxy.py @@ -10,6 +10,9 @@ import weakref from typing import TYPE_CHECKING, Any, Generic, TypeVar +from cecli.report import update_error_prefix +from cecli.signals import ReloadProgramSignal, SwitchCoderSignal + T = TypeVar("T") @@ -218,7 +221,24 @@ async def stop_output_task(self): try: task.cancel() await task - except (asyncio.CancelledError, Exception): + except ( + asyncio.CancelledError, + EOFError, + ReloadProgramSignal, + SystemExit, + SwitchCoderSignal, + ): + pass + except ( + Exception, + IndexError, + RuntimeError, + ): + import traceback + + traceback_str = traceback.format_exc() + update_error_prefix(traceback_str) + update_error_prefix(str(task)) pass state["output_task"] = None diff --git a/cecli/helpers/lock_detect.py b/cecli/helpers/lock_detect.py index 6eecd852c44..7e719a1090d 100644 --- a/cecli/helpers/lock_detect.py +++ b/cecli/helpers/lock_detect.py @@ -4,6 +4,8 @@ import time import traceback +from cecli.decoding import safe_open + # Set up logging to catch asyncio framework logs logging.basicConfig(level=logging.INFO) logging.getLogger("asyncio").setLevel(logging.DEBUG) @@ -19,7 +21,7 @@ def dump_stacks_to_file(filename="hang_dump.log", interval=5, max_prints=10): # Determine mode: "w" to overwrite/clear on the 11th print, "a" to append mode = "w" if print_count >= max_prints else "a" - with open(filename, mode, encoding="utf-8") as f: + with safe_open(filename, mode) as f: if mode == "w": f.write(f"--- Log reset automatically after {max_prints} prints ---\n") print_count = 0 # Reset the counter diff --git a/cecli/helpers/monorepo/config.py b/cecli/helpers/monorepo/config.py index 281fe33c1b8..6fb4fdb29c2 100644 --- a/cecli/helpers/monorepo/config.py +++ b/cecli/helpers/monorepo/config.py @@ -4,6 +4,8 @@ import yaml +from cecli.decoding import safe_open + def resolve_workspace_config(config_arg: Optional[str] = None) -> Optional[Any]: """ @@ -39,7 +41,7 @@ def resolve_workspace_config(config_arg: Optional[str] = None) -> Optional[Any]: local_path = Path(local_name) if local_path.exists(): try: - with open(local_path, "r") as f: + with safe_open(local_path, "r") as f: loaded = yaml.safe_load(f) if loaded: workspace_conf = ( @@ -56,7 +58,7 @@ def resolve_workspace_config(config_arg: Optional[str] = None) -> Optional[Any]: global_path = Path.home() / ".cecli" / global_name if global_path.exists(): try: - with open(global_path, "r") as f: + with safe_open(global_path, "r") as f: loaded = yaml.safe_load(f) if loaded: workspace_conf = ( diff --git a/cecli/helpers/monorepo/workspace.py b/cecli/helpers/monorepo/workspace.py index 0482ff0d220..8011057c74b 100644 --- a/cecli/helpers/monorepo/workspace.py +++ b/cecli/helpers/monorepo/workspace.py @@ -2,6 +2,7 @@ from pathlib import Path from typing import Any, Dict +from cecli.decoding import safe_open from cecli.helpers.monorepo.project import Project @@ -39,7 +40,7 @@ def initialize(self) -> None: import json metadata_path = self.path / ".cecli-workspace.json" - with open(metadata_path, "w") as f: + with safe_open(metadata_path, "w") as f: json.dump(self.config, f, indent=2) def get_working_directory(self) -> Path: diff --git a/cecli/history.py b/cecli/history.py index df38797f331..abf2b1eb103 100644 --- a/cecli/history.py +++ b/cecli/history.py @@ -2,6 +2,7 @@ import cecli.prompts.utils.system as prompts from cecli import models +from cecli.decoding import safe_open from cecli.dump import dump # noqa: F401 @@ -160,7 +161,7 @@ def main(): model_list = [models.Model(name) for name in model_names] summarizer = ChatSummary(model_list) - with open(args.filename, "r") as f: + with safe_open(args.filename, "r") as f: text = f.read() summary = summarizer.summarize_chat_history_markdown(text) diff --git a/cecli/hooks/registry.py b/cecli/hooks/registry.py index cff8dfab3da..af547d1091a 100644 --- a/cecli/hooks/registry.py +++ b/cecli/hooks/registry.py @@ -5,6 +5,7 @@ import yaml +from cecli.decoding import safe_open from cecli.helpers.plugin_manager import load_module from .base import BaseHook, CommandHook @@ -112,7 +113,7 @@ def load_hooks_from_config(self, config_file: Path) -> List[str]: return [] try: - with open(config_file, "r") as f: + with safe_open(config_file, "r") as f: config = yaml.safe_load(f) except (yaml.YAMLError, IOError) as e: print(f"Warning: Could not load hook config from {config_file}: {e}") diff --git a/cecli/io.py b/cecli/io.py index 89e02462773..3659580adfc 100644 --- a/cecli/io.py +++ b/cecli/io.py @@ -40,10 +40,11 @@ from rich.style import Style as RichStyle from rich.text import Text -from cecli.commands import SwitchCoderSignal +from cecli.decoding import safe_open from cecli.helpers import coroutines from cecli.helpers.threading import ThreadSafeEvent from cecli.report import update_error_prefix +from cecli.signals import ReloadProgramSignal, SwitchCoderSignal from .dump import dump # noqa: F401 from .editor import pipe_editor @@ -199,7 +200,7 @@ def tokenize(self): for fname in process_fnames: try: - with open(fname, "r", encoding=self.encoding) as f: + with safe_open(fname, "r") as f: content = f.read() except (FileNotFoundError, UnicodeDecodeError, IsADirectoryError): continue @@ -688,7 +689,7 @@ def _get_style(self): def read_image(self, filename): try: - with open(str(filename), "rb") as image_file: + with safe_open(str(filename), "rb") as image_file: encoded_string = base64.b64encode(image_file.read()) return encoded_string.decode("utf-8") except OSError as err: @@ -709,7 +710,7 @@ def read_text(self, filename, silent=False): return self.read_image(filename) try: - with open(str(filename), "r", encoding=self.encoding) as f: + with safe_open(str(filename), "r") as f: return f.read() except FileNotFoundError: if not silent: @@ -731,7 +732,7 @@ def read_text(self, filename, silent=False): def _detect_newline(self, filename): try: - with open(filename, "rb") as f: + with safe_open(filename, "rb") as f: chunk = f.read(1024) if b"\r\n" in chunk: return "\r\n" @@ -760,7 +761,7 @@ def write_text(self, filename, content, max_retries=5, initial_delay=0.1): delay = initial_delay for attempt in range(max_retries): try: - with open(str(filename), "w", encoding=self.encoding, newline=newline) as f: + with safe_open(str(filename), "w", newline=newline) as f: f.write(content) return # Successfully wrote the file except PermissionError as err: @@ -1135,6 +1136,7 @@ async def stop_output_task(self): except ( asyncio.CancelledError, EOFError, + ReloadProgramSignal, SystemExit, SwitchCoderSignal, ): @@ -1224,7 +1226,7 @@ def edit_in_editor(self, content): editor = os.environ.get("EDITOR", "vi") subprocess.call([editor, tmpfile.name]) - with open(tmpfile.name, "r", encoding=self.encoding) as f: + with safe_open(tmpfile.name, "r") as f: edited = f.read() os.unlink(tmpfile.name) diff --git a/cecli/main.py b/cecli/main.py index ed58802ff72..8e76c2ea411 100644 --- a/cecli/main.py +++ b/cecli/main.py @@ -3,9 +3,28 @@ try: if sys.platform == "win32": - sys.stdout.reconfigure(encoding="utf-8") - sys.stderr.reconfigure(encoding="utf-8") -except Exception: + if sys.stdout is not None: + try: + sys.stdout.reconfigure(encoding="utf-8") + except AttributeError: + pass + + if sys.stderr is not None: + try: + sys.stderr.reconfigure(encoding="utf-8") + except AttributeError: + pass + + if sys.stdin is not None: + try: + sys.stdin.reconfigure(encoding="utf-8") + except AttributeError: + pass +except AttributeError: + # Happens if streams were overridden by a test framework or GUI (e.g., pythonw.exe) + pass +except sys.UnsupportedOperation: + # Happens in certain edge-case piping scenarios pass try: @@ -87,11 +106,13 @@ def convert_yaml_to_json_string(value): def check_config_files_for_yes(config_files): + from cecli.decoding import safe_open + found = False for config_file in config_files: if Path(config_file).exists(): try: - with open(config_file, "r") as f: + with safe_open(config_file, "r") as f: for line in f: if line.strip().startswith("yes:"): print("Configuration error detected.") @@ -546,6 +567,7 @@ async def main_async( from cecli.coders import Coder from cecli.coders.base_coder import UnknownEditFormat from cecli.commands import Commands, ReloadProgramSignal, SwitchCoderSignal + from cecli.decoding import DEFAULT_ENCODING, safe_open # noqa from cecli.deprecated_args import handle_deprecated_model_args from cecli.format_settings import format_settings, scrub_sensitive_info from cecli.helpers import config_utils @@ -608,7 +630,7 @@ async def main_async( _tmp_fd, _tmp_cfg = tempfile.mkstemp(suffix=".yml", prefix="cecli_merged_") os.close(_tmp_fd) - with open(_tmp_cfg, "w") as f: + with safe_open(_tmp_cfg, "w") as f: yaml.dump(merged_config, f) parser = get_parser([_tmp_cfg], git_root) @@ -661,7 +683,7 @@ async def main_async( _tmp_fd, _tmp_cfg = tempfile.mkstemp(suffix=".yml", prefix="cecli_merged_") os.close(_tmp_fd) - with open(_tmp_cfg, "w") as f: + with safe_open(_tmp_cfg, "w") as f: yaml.dump(merged_config, f) parser = get_parser([_tmp_cfg], git_root) @@ -674,6 +696,9 @@ async def main_async( set_args_error_data(args) + # Override the module-level default encoding with the resolved config value + DEFAULT_ENCODING = args.encoding # noqa + # ── Normalize array fields ───────────────────────────────────────── # (previously done inside load_and_apply_cecli_conf_files) for key in DEEP_MERGE_LIST_FIELDS: @@ -1537,6 +1562,7 @@ def get_io(pretty): def is_first_run_of_new_version(io, verbose=False): """Check if this is the first run of a new version/executable combination""" from cecli import __version__ + from cecli.decoding import safe_open from cecli.helpers.file_searcher import handle_core_files installs_file = handle_core_files(Path.home() / ".cecli" / "installs.json") @@ -1550,7 +1576,7 @@ def is_first_run_of_new_version(io, verbose=False): io.tool_output(f"Installs file: {installs_file}") try: if installs_file.exists(): - with open(installs_file, "r") as f: + with safe_open(installs_file, "r") as f: installs = json.load(f) if verbose: io.tool_output("Installs file exists and loaded") @@ -1562,7 +1588,7 @@ def is_first_run_of_new_version(io, verbose=False): if is_first_run: installs[str(key)] = True installs_file.parent.mkdir(parents=True, exist_ok=True) - with open(installs_file, "w") as f: + with safe_open(installs_file, "w") as f: json.dump(installs, f, indent=4) return is_first_run except Exception as e: @@ -1688,6 +1714,10 @@ async def task(message, setting=None, env=None, force_git_root=None, return_code async def graceful_exit(coder=None, exit_code=0): sys.settrace(None) + + if getattr(coder, "error_code", None) is not None: + exit_code = coder.error_code + if coder: if hasattr(coder, "_autosave_future"): await coder._autosave_future diff --git a/cecli/mcp/oauth.py b/cecli/mcp/oauth.py index 82611c61462..ec5390f77b5 100644 --- a/cecli/mcp/oauth.py +++ b/cecli/mcp/oauth.py @@ -12,6 +12,8 @@ from mcp.client.auth import TokenStorage from mcp.shared.auth import OAuthClientInformationFull, OAuthToken +from cecli.decoding import safe_open + def create_oauth_callback_server( port, path="/callback" @@ -137,7 +139,7 @@ def load_mcp_oauth_tokens(): return {} try: - with open(token_file, "r", encoding="utf-8") as f: + with safe_open(token_file, "r") as f: # File might be empty return json.load(f) or {} except Exception: @@ -151,7 +153,7 @@ def save_mcp_oauth_token(server_name, token_data): token_file = get_token_file_path() try: - with open(token_file, "w", encoding="utf-8") as f: + with safe_open(token_file, "w") as f: json.dump(tokens, f, indent=2) # Set restrictive permissions (owner read/write only) os.chmod(token_file, 0o600) @@ -163,7 +165,7 @@ def save_mcp_oauth_tokens(tokens_dict): """Save all OAuth tokens to file.""" token_file = get_token_file_path() try: - with open(token_file, "w", encoding="utf-8") as f: + with safe_open(token_file, "w") as f: json.dump(tokens_dict, f, indent=2) # Set restrictive permissions (owner read/write only) os.chmod(token_file, 0o600) diff --git a/cecli/mcp/server.py b/cecli/mcp/server.py index da3a4f40bfb..79eda91176f 100644 --- a/cecli/mcp/server.py +++ b/cecli/mcp/server.py @@ -15,6 +15,8 @@ from mcp.client.streamable_http import streamable_http_client from mcp.shared.auth import OAuthClientMetadata +from cecli.decoding import safe_open + from .oauth import ( FileBasedTokenStorage, create_oauth_callback_server, @@ -103,7 +105,7 @@ async def connect(self): try: os.makedirs(".cecli/logs/", exist_ok=True) - with open(".cecli/logs/mcp-errors.log", "w") as err_file: + with safe_open(".cecli/logs/mcp-errors.log", "w") as err_file: stdio_transport = await self.exit_stack.enter_async_context( stdio_client(server_params, errlog=err_file) ) diff --git a/cecli/mcp/utils.py b/cecli/mcp/utils.py index fe150a98cbe..977f67c3d7b 100644 --- a/cecli/mcp/utils.py +++ b/cecli/mcp/utils.py @@ -5,6 +5,8 @@ import socketserver from pathlib import Path +from cecli.decoding import safe_open + from .server import McpServer @@ -132,7 +134,7 @@ def _parse_mcp_servers_from_file(file_path, io, verbose=False, mcp_transport="st resolved_file_path = _resolve_mcp_config_path(file_path, io, verbose) try: - with open(resolved_file_path, "r") as f: + with safe_open(resolved_file_path, "r") as f: json_string = f.read() if verbose: diff --git a/cecli/mdstream.py b/cecli/mdstream.py index 679ab2c2254..2bc0cbc4a63 100755 --- a/cecli/mdstream.py +++ b/cecli/mdstream.py @@ -11,6 +11,7 @@ from rich.syntax import Syntax from rich.text import Text +from cecli.decoding import safe_open from cecli.dump import dump # noqa: F401 _text_prefix = """ @@ -229,7 +230,7 @@ def find_minimal_suffix(self, text, match_lines=50): if __name__ == "__main__": - with open("cecli/io.py", "r") as f: + with safe_open("cecli/io.py", "r") as f: code = f.read() _text = _text_prefix + code + _text_suffix _text = _text * 10 diff --git a/cecli/models.py b/cecli/models.py index 77f52c88827..4c66c838dc4 100644 --- a/cecli/models.py +++ b/cecli/models.py @@ -13,6 +13,7 @@ from PIL import Image from cecli import __version__ +from cecli.decoding import safe_open from cecli.dump import dump from cecli.exceptions import LiteLLMExceptions from cecli.helpers import coroutines, nested @@ -383,7 +384,7 @@ def load_from_file(cls, git_root, model_overrides_fname, io, verbose=False): for fname in model_overrides_files: try: if Path(fname).exists(): - with open(fname, "r") as f: + with safe_open(fname, "r") as f: content = yaml.safe_load(f) if content: for model_name, tags in content.items(): @@ -1530,7 +1531,7 @@ def _log_messages(self, messages, name="message"): Log conversation messages to a JSON file. """ os.makedirs(".cecli/logs/messages", exist_ok=True) - with open(f".cecli/logs/messages/{name}-{time.time()}.log", "w") as f: + with safe_open(f".cecli/logs/messages/{name}-{time.time()}.log", "w") as f: json.dump( messages, f, indent=4, ensure_ascii=False, default=lambda o: "" ) @@ -1542,7 +1543,7 @@ def _log_request(self, model_call_dict): os.makedirs(".cecli/logs/litellm", exist_ok=True) log_file_path = f".cecli/logs/litellm/request-{time.time()}.log" - with open(log_file_path, "a", encoding="utf-8") as f: + with safe_open(log_file_path, "a") as f: json.dump( model_call_dict, f, @@ -1561,7 +1562,7 @@ def register_models(model_settings_fnames): if not Path(model_settings_fname).read_text().strip(): continue try: - with open(model_settings_fname, "r") as model_settings_file: + with safe_open(model_settings_fname, "r") as model_settings_file: model_settings_list = yaml.safe_load(model_settings_file) for model_settings_dict in model_settings_list: model_settings = ModelSettings(**model_settings_dict) diff --git a/cecli/onboarding.py b/cecli/onboarding.py index dbe0ae48e0c..0e55b0d8879 100644 --- a/cecli/onboarding.py +++ b/cecli/onboarding.py @@ -9,6 +9,7 @@ import requests from cecli import urls +from cecli.decoding import safe_open from cecli.io import InputOutput from cecli.mcp import find_available_port, generate_pkce_codes @@ -261,7 +262,7 @@ def run_server(): config_dir = os.path.expanduser("~/.cecli") os.makedirs(config_dir, exist_ok=True) key_file = os.path.join(config_dir, "oauth-keys.env") - with open(key_file, "a", encoding="utf-8") as f: + with safe_open(key_file, "a") as f: f.write(f'OPENROUTER_API_KEY="{api_key}"\n') io.tool_warning("cecli will load the OpenRouter key automatically in future sessions.") io.tool_output() diff --git a/cecli/prompts/utils/registry.py b/cecli/prompts/utils/registry.py index e44a8a71fcc..bd307ef4cda 100644 --- a/cecli/prompts/utils/registry.py +++ b/cecli/prompts/utils/registry.py @@ -15,6 +15,8 @@ import importlib_resources import yaml +from cecli.decoding import safe_open + class PromptObject: def __init__(self, prompts_dict): @@ -48,7 +50,7 @@ def _load_yaml_file(file_name: str) -> Dict[str, Any]: file_path = os.path.abspath(file_name) if os.path.exists(file_path): - with open(file_path, "r", encoding="utf-8") as f: + with safe_open(file_path, "r") as f: file_content = f.read() return yaml.safe_load(file_content) or {} else: diff --git a/cecli/repo.py b/cecli/repo.py index d0170d762a9..7d052f58cc1 100644 --- a/cecli/repo.py +++ b/cecli/repo.py @@ -24,6 +24,7 @@ import cecli.prompts.utils.system as prompts from cecli import utils +from cecli.decoding import safe_open from .dump import dump # noqa: F401 @@ -778,7 +779,7 @@ def get_workspace_files(self): return self.get_tracked_files() try: - with open(metadata_path, "r") as f: + with safe_open(metadata_path, "r") as f: config = json.load(f) except Exception: return self.get_tracked_files() @@ -903,7 +904,7 @@ def _get_gitignore_spec(self, dir_path): gitignore_path = dir_path / ".gitignore" if gitignore_path.is_file(): try: - with open(gitignore_path, "r") as f: + with safe_open(gitignore_path, "r") as f: patterns = [ line.rstrip("\n") for line in f if line.strip() and not line.startswith("#") ] diff --git a/cecli/resources/model-metadata.json b/cecli/resources/model-metadata.json index 4af6e04ffc7..6e1d71f5e43 100644 --- a/cecli/resources/model-metadata.json +++ b/cecli/resources/model-metadata.json @@ -217,7 +217,8 @@ "supports_pdf_input": true, "supports_prompt_caching": true, "supports_response_schema": true, - "supports_tool_choice": true + "supports_tool_choice": true, + "prompt_cache_min_tokens": 2048 }, "anthropic.claude-3-5-sonnet-20240620-v1:0": { "input_cost_per_token": 0.000003, @@ -236,8 +237,6 @@ "output_cost_per_token_above_200k_tokens": 0.00003, "cache_creation_input_token_cost_above_200k_tokens": 0.0000075, "cache_read_input_token_cost_above_200k_tokens": 6e-7, - "cache_creation_input_token_cost_above_1hr": 0.0000075, - "cache_creation_input_token_cost_above_1hr_above_200k_tokens": 0.000015, "cache_creation_input_token_cost": 0.00000375, "cache_read_input_token_cost": 3e-7 }, @@ -262,9 +261,7 @@ "input_cost_per_token_above_200k_tokens": 0.000006, "output_cost_per_token_above_200k_tokens": 0.00003, "cache_creation_input_token_cost_above_200k_tokens": 0.0000075, - "cache_read_input_token_cost_above_200k_tokens": 6e-7, - "cache_creation_input_token_cost_above_1hr": 0.0000075, - "cache_creation_input_token_cost_above_1hr_above_200k_tokens": 0.000015 + "cache_read_input_token_cost_above_200k_tokens": 6e-7 }, "anthropic.claude-3-7-sonnet-20240620-v1:0": { "cache_creation_input_token_cost": 0.0000045, @@ -370,6 +367,7 @@ "search_context_size_medium": 0.01 }, "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, "supports_assistant_prefill": false, "supports_computer_use": true, "supports_function_calling": true, @@ -384,7 +382,9 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "anthropic.claude-haiku-4-5-20251001-v1:0": { "cache_creation_input_token_cost": 0.00000125, @@ -407,7 +407,9 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "anthropic.claude-haiku-4-5@20251001": { "cache_creation_input_token_cost": 0.00000125, @@ -431,7 +433,9 @@ "supports_tool_choice": true, "supports_vision": true, "supports_native_streaming": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "anthropic.claude-instant-v1": { "input_cost_per_token": 8e-7, @@ -481,7 +485,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "anthropic.claude-opus-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00001875, @@ -506,7 +511,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "anthropic.claude-opus-4-5-20251101-v1:0": { "cache_creation_input_token_cost": 0.00000625, @@ -535,9 +541,12 @@ "supports_vision": true, "supports_native_structured_output": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "high" + "bedrock_output_config_effort_ceiling": "high", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "anthropic.claude-opus-4-6-v1": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_read_input_token_cost": 5e-7, @@ -565,9 +574,13 @@ "supports_native_structured_output": true, "supports_output_config": true, "supports_max_reasoning_effort": true, - "bedrock_output_config_effort_ceiling": "max" + "bedrock_output_config_effort_ceiling": "max", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "anthropic.claude-opus-4-7": { + "bedrock_converse_supports_strict_tools": false, + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_read_input_token_cost": 5e-7, @@ -597,9 +610,14 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 2048 }, "anthropic.claude-opus-4-8": { + "bedrock_converse_supports_strict_tools": false, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_read_input_token_cost": 5e-7, @@ -615,7 +633,43 @@ "search_context_size_low": 0.01, "search_context_size_medium": 0.01 }, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": true, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 + }, + "anthropic.claude-opus-5": { + "bedrock_converse_supports_strict_tools": false, "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_1hr": 0.00001, + "cache_read_input_token_cost": 5e-7, + "input_cost_per_token": 0.000005, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000025, + "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": false, "supports_computer_use": true, "supports_function_calling": true, @@ -630,7 +684,8 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512 }, "anthropic.claude-sonnet-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00000375, @@ -659,7 +714,9 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "bedrock_converse_supports_strict_tools": false, + "prompt_cache_min_tokens": 1024 }, "anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.00000375, @@ -691,9 +748,12 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "anthropic.claude-sonnet-4-6": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000375, "cache_creation_input_token_cost_above_1hr": 0.000006, "cache_read_input_token_cost": 3e-7, @@ -720,7 +780,45 @@ "supports_tool_choice": true, "supports_vision": true, "supports_native_structured_output": true, - "supports_output_config": true + "supports_output_config": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 + }, + "anthropic.claude-sonnet-5": { + "cache_creation_input_token_cost": 0.0000025, + "cache_creation_input_token_cost_above_1hr": 0.000004, + "cache_read_input_token_cost": 2e-7, + "input_cost_per_token": 0.000002, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.00001, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": true, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "anthropic.claude-v1": { "input_cost_per_token": 0.000008, @@ -1022,7 +1120,9 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "apac.anthropic.claude-sonnet-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00000375, @@ -1051,7 +1151,9 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "bedrock_converse_supports_strict_tools": false, + "prompt_cache_min_tokens": 1024 }, "au.anthropic.claude-haiku-4-5-20251001-v1:0": { "cache_creation_input_token_cost": 0.000001375, @@ -1073,9 +1175,12 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "au.anthropic.claude-opus-4-6-v1": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.000006875, "cache_creation_input_token_cost_above_1hr": 0.000011, "cache_read_input_token_cost": 5.5e-7, @@ -1103,9 +1208,13 @@ "supports_native_structured_output": true, "supports_output_config": true, "supports_max_reasoning_effort": true, - "bedrock_output_config_effort_ceiling": "max" + "bedrock_output_config_effort_ceiling": "max", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "au.anthropic.claude-opus-4-7": { + "bedrock_converse_supports_strict_tools": false, + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.000006875, "cache_creation_input_token_cost_above_1hr": 0.000011, "cache_read_input_token_cost": 5.5e-7, @@ -1135,9 +1244,14 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 2048 }, "au.anthropic.claude-opus-4-8": { + "bedrock_converse_supports_strict_tools": false, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, "cache_creation_input_token_cost": 0.000006875, "cache_creation_input_token_cost_above_1hr": 0.000011, "cache_read_input_token_cost": 5.5e-7, @@ -1153,7 +1267,43 @@ "search_context_size_low": 0.01, "search_context_size_medium": 0.01 }, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": true, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 + }, + "au.anthropic.claude-opus-5": { + "bedrock_converse_supports_strict_tools": false, "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "cache_creation_input_token_cost": 0.000006875, + "cache_creation_input_token_cost_above_1hr": 0.000011, + "cache_read_input_token_cost": 5.5e-7, + "input_cost_per_token": 0.0000055, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000275, + "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": false, "supports_computer_use": true, "supports_function_calling": true, @@ -1168,7 +1318,8 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512 }, "au.anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.000004125, @@ -1200,9 +1351,12 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "au.anthropic.claude-sonnet-4-6": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.000004125, "cache_creation_input_token_cost_above_1hr": 0.0000066, "cache_read_input_token_cost": 3.3e-7, @@ -1229,7 +1383,45 @@ "supports_tool_choice": true, "supports_vision": true, "supports_native_structured_output": true, - "supports_output_config": true + "supports_output_config": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 + }, + "au.anthropic.claude-sonnet-5": { + "cache_creation_input_token_cost": 0.00000275, + "cache_creation_input_token_cost_above_1hr": 0.0000044, + "cache_read_input_token_cost": 2.2e-7, + "input_cost_per_token": 0.0000022, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000011, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": true, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "azure/command-r-plus": { "input_cost_per_token": 0.000003, @@ -1322,74 +1514,105 @@ "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-7, - "cache_read_input_token_cost": 3.3e-7, - "input_cost_per_audio_token": 0.000011, - "input_cost_per_token": 6.6e-7, + "azure/eu/gpt-5-2025-08-07": { + "cache_read_input_token_cost": 1.375e-7, + "input_cost_per_token": 0.000001375, "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", - "output_cost_per_audio_token": 0.000022, - "output_cost_per_token": 0.00000264, - "supports_audio_input": true, - "supports_audio_output": true, + "output_cost_per_token": 0.000011, + "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_tool_choice": true, + "supports_vision": true }, - "azure/eu/gpt-4o-realtime-preview-2024-10-01": { - "cache_creation_input_audio_token_cost": 0.000022, - "cache_read_input_token_cost": 0.00000275, - "input_cost_per_audio_token": 0.00011, - "input_cost_per_token": 0.0000055, + "azure/eu/gpt-5-mini-2025-08-07": { + "cache_read_input_token_cost": 2.75e-8, + "input_cost_per_token": 2.75e-7, "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", - "output_cost_per_audio_token": 0.00022, - "output_cost_per_token": 0.000022, - "supports_audio_input": true, - "supports_audio_output": true, + "output_cost_per_token": 0.0000022, + "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_tool_choice": true, + "supports_vision": true }, - "azure/eu/gpt-4o-realtime-preview-2024-12-17": { - "cache_read_input_audio_token_cost": 0.0000025, - "cache_read_input_token_cost": 0.00000275, - "input_cost_per_audio_token": 0.000044, - "input_cost_per_token": 0.0000055, + "azure/eu/gpt-5-nano-2025-08-07": { + "cache_read_input_token_cost": 5.5e-9, + "input_cost_per_token": 5.5e-8, "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", - "output_cost_per_audio_token": 0.00008, - "output_cost_per_token": 0.000022, + "output_cost_per_token": 4.4e-7, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/batch", + "/v1/responses" + ], "supported_modalities": [ "text", - "audio" + "image" ], "supported_output_modalities": [ - "text", - "audio" + "text" ], - "supports_audio_input": true, - "supports_audio_output": true, "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_tool_choice": true, + "supports_vision": true }, - "azure/eu/gpt-5-2025-08-07": { - "cache_read_input_token_cost": 1.375e-7, - "input_cost_per_token": 0.000001375, + "azure/eu/gpt-5.1": { + "cache_read_input_token_cost": 1.4e-7, + "input_cost_per_token": 0.00000138, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, @@ -1406,7 +1629,8 @@ "image" ], "supported_output_modalities": [ - "text" + "text", + "image" ], "supports_function_calling": true, "supports_native_streaming": true, @@ -1417,17 +1641,18 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "supports_none_reasoning_effort": true }, - "azure/eu/gpt-5-mini-2025-08-07": { - "cache_read_input_token_cost": 2.75e-8, - "input_cost_per_token": 2.75e-7, + "azure/eu/gpt-5.1-chat": { + "cache_read_input_token_cost": 1.4e-7, + "input_cost_per_token": 0.00000138, "litellm_provider": "azure", - "max_input_tokens": 272000, + "max_input_tokens": 128000, "max_output_tokens": 128000, "max_tokens": 128000, "mode": "chat", - "output_cost_per_token": 0.0000022, + "output_cost_per_token": 0.000011, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -1438,7 +1663,8 @@ "image" ], "supported_output_modalities": [ - "text" + "text", + "image" ], "supports_function_calling": true, "supports_native_streaming": true, @@ -1449,17 +1675,21 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "supports_none_reasoning_effort": true }, - "azure/eu/gpt-5-nano-2025-08-07": { - "cache_read_input_token_cost": 5.5e-9, - "input_cost_per_token": 5.5e-8, + "azure/eu/gpt-5.4": { + "cache_read_input_token_cost": 2.8e-7, + "cache_read_input_token_cost_priority": 5.5e-7, + "input_cost_per_token": 0.00000275, + "input_cost_per_token_priority": 0.0000055, + "output_cost_per_token": 0.0000165, + "output_cost_per_token_priority": 0.000033, "litellm_provider": "azure", - "max_input_tokens": 272000, + "max_input_tokens": 1050000, "max_output_tokens": 128000, "max_tokens": 128000, "mode": "chat", - "output_cost_per_token": 4.4e-7, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -1483,15 +1713,18 @@ "supports_tool_choice": true, "supports_vision": true }, - "azure/eu/gpt-5.1": { - "cache_read_input_token_cost": 1.4e-7, - "input_cost_per_token": 0.00000138, + "azure/eu/gpt-5.4-2026-03-05": { + "cache_read_input_token_cost": 2.8e-7, + "cache_read_input_token_cost_priority": 5.5e-7, + "input_cost_per_token": 0.00000275, + "input_cost_per_token_priority": 0.0000055, + "output_cost_per_token": 0.0000165, + "output_cost_per_token_priority": 0.000033, "litellm_provider": "azure", - "max_input_tokens": 272000, + "max_input_tokens": 1050000, "max_output_tokens": 128000, "max_tokens": 128000, "mode": "chat", - "output_cost_per_token": 0.000011, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -1502,9 +1735,46 @@ "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.5": { + "cache_read_input_token_cost": 5.5e-7, + "cache_read_input_token_cost_above_272k_tokens": 0.0000011, + "cache_read_input_token_cost_priority": 0.00000138, + "input_cost_per_token": 0.0000055, + "input_cost_per_token_above_272k_tokens": 0.000011, + "input_cost_per_token_priority": 0.00001375, + "output_cost_per_token": 0.000033, + "output_cost_per_token_above_272k_tokens": 0.0000495, + "output_cost_per_token_priority": 0.0000825, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "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, @@ -1515,17 +1785,26 @@ "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, - "supports_none_reasoning_effort": true + "supports_web_search": true, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false }, - "azure/eu/gpt-5.1-chat": { - "cache_read_input_token_cost": 1.4e-7, - "input_cost_per_token": 0.00000138, + "azure/eu/gpt-5.5-2026-04-23": { + "cache_read_input_token_cost": 5.5e-7, + "cache_read_input_token_cost_above_272k_tokens": 0.0000011, + "cache_read_input_token_cost_priority": 0.00000138, + "input_cost_per_token": 0.0000055, + "input_cost_per_token_above_272k_tokens": 0.000011, + "input_cost_per_token_priority": 0.00001375, + "output_cost_per_token": 0.000033, + "output_cost_per_token_above_272k_tokens": 0.0000495, + "output_cost_per_token_priority": 0.0000825, "litellm_provider": "azure", - "max_input_tokens": 128000, + "max_input_tokens": 1050000, "max_output_tokens": 128000, "max_tokens": 128000, "mode": "chat", - "output_cost_per_token": 0.000011, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -1536,9 +1815,89 @@ "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/eu/gpt-5.6": { + "cache_read_input_token_cost": 5.5e-7, + "cache_read_input_token_cost_above_272k_tokens": 0.0000011, + "cache_read_input_token_cost_priority": 0.000001375, + "input_cost_per_token": 0.0000055, + "input_cost_per_token_above_272k_tokens": 0.000011, + "input_cost_per_token_priority": 0.00001375, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000033, + "output_cost_per_token_above_272k_tokens": 0.0000495, + "output_cost_per_token_priority": 0.0000825, + "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, + "supports_web_search": true, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false + }, + "azure/eu/gpt-5.6-luna": { + "cache_read_input_token_cost": 1.1e-7, + "cache_read_input_token_cost_above_272k_tokens": 2.2e-7, + "cache_read_input_token_cost_priority": 2.75e-7, + "input_cost_per_token": 0.0000011, + "input_cost_per_token_above_272k_tokens": 0.0000022, + "input_cost_per_token_priority": 0.00000275, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000066, + "output_cost_per_token_above_272k_tokens": 0.0000099, + "output_cost_per_token_priority": 0.0000165, + "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, @@ -1549,7 +1908,94 @@ "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, - "supports_none_reasoning_effort": true + "supports_web_search": true, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false + }, + "azure/eu/gpt-5.6-sol": { + "cache_read_input_token_cost": 5.5e-7, + "cache_read_input_token_cost_above_272k_tokens": 0.0000011, + "cache_read_input_token_cost_priority": 0.000001375, + "input_cost_per_token": 0.0000055, + "input_cost_per_token_above_272k_tokens": 0.000011, + "input_cost_per_token_priority": 0.00001375, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000033, + "output_cost_per_token_above_272k_tokens": 0.0000495, + "output_cost_per_token_priority": 0.0000825, + "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, + "supports_web_search": true, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false + }, + "azure/eu/gpt-5.6-terra": { + "cache_read_input_token_cost": 2.75e-7, + "cache_read_input_token_cost_above_272k_tokens": 5.5e-7, + "cache_read_input_token_cost_priority": 6.875e-7, + "input_cost_per_token": 0.00000275, + "input_cost_per_token_above_272k_tokens": 0.0000055, + "input_cost_per_token_priority": 0.000006875, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000165, + "output_cost_per_token_above_272k_tokens": 0.00002475, + "output_cost_per_token_priority": 0.00004125, + "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, + "supports_web_search": true, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false }, "azure/eu/o1-2024-12-17": { "cache_read_input_token_cost": 0.00000825, @@ -2321,71 +2767,39 @@ "supports_tool_choice": true, "supports_vision": false }, - "azure/gpt-4o-mini-realtime-preview-2024-12-17": { - "cache_creation_input_audio_token_cost": 3e-7, - "cache_read_input_token_cost": 3e-7, - "input_cost_per_audio_token": 0.00001, - "input_cost_per_token": 6e-7, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.00002, - "output_cost_per_token": 0.0000024, - "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-10-01": { - "cache_creation_input_audio_token_cost": 0.00002, - "cache_read_input_token_cost": 0.0000025, - "input_cost_per_audio_token": 0.0001, - "input_cost_per_token": 0.000005, - "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": 0.00002, - "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": 0.0000025, - "input_cost_per_audio_token": 0.00004, - "input_cost_per_token": 0.000005, + "azure/gpt-5": { + "cache_read_input_token_cost": 1.25e-7, + "input_cost_per_token": 0.00000125, "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", - "output_cost_per_audio_token": 0.00008, - "output_cost_per_token": 0.00002, + "output_cost_per_token": 0.00001, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/batch", + "/v1/responses" + ], "supported_modalities": [ "text", - "audio" + "image" ], "supported_output_modalities": [ - "text", - "audio" + "text" ], - "supports_audio_input": true, - "supports_audio_output": true, "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_tool_choice": true, + "supports_vision": true }, - "azure/gpt-5": { + "azure/gpt-5-2025-08-07": { "cache_read_input_token_cost": 1.25e-7, "input_cost_per_token": 0.00000125, "litellm_provider": "azure", @@ -2417,48 +2831,16 @@ "supports_tool_choice": true, "supports_vision": true }, - "azure/gpt-5-2025-08-07": { + "azure/gpt-5-chat": { "cache_read_input_token_cost": 1.25e-7, "input_cost_per_token": 0.00000125, "litellm_provider": "azure", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, + "max_input_tokens": 128000, + "max_output_tokens": 16384, + "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, - "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-7, - "input_cost_per_token": 0.00000125, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 0.00001, - "source": "https://azure.microsoft.com/en-us/blog/gpt-5-in-azure-ai-foundry-the-future-of-ai-apps-and-agents-starts-here/", + "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", @@ -2709,7 +3091,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_none_reasoning_effort": true, "supports_minimal_reasoning_effort": true @@ -2851,7 +3232,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true }, "azure/gpt-5.2-chat": { @@ -2954,7 +3334,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true }, "azure/gpt-5.4": { @@ -2996,7 +3375,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true }, "azure/gpt-5.4-2026-03-05": { @@ -3038,7 +3416,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true }, "azure/gpt-5.4-mini": { @@ -3071,7 +3448,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": false, @@ -3107,7 +3483,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": false, @@ -3143,7 +3518,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": false, @@ -3179,7 +3553,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": false, @@ -3224,7 +3597,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -3270,198 +3642,281 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true }, - "azure/gpt-audio-1.5-2026-02-23": { - "input_cost_per_audio_token": 0.00004, - "input_cost_per_token": 0.0000025, + "azure/gpt-5.6": { + "cache_read_input_token_cost": 5e-7, + "cache_read_input_token_cost_above_272k_tokens": 0.000001, + "cache_read_input_token_cost_priority": 0.000001, + "cache_read_input_token_cost_above_272k_tokens_priority": 0.000002, + "input_cost_per_token": 0.000005, + "input_cost_per_token_above_272k_tokens": 0.00001, + "input_cost_per_token_priority": 0.00001, + "input_cost_per_token_above_272k_tokens_priority": 0.00002, "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", - "output_cost_per_audio_token": 0.00008, - "output_cost_per_token": 0.00001, + "output_cost_per_token": 0.00003, + "output_cost_per_token_above_272k_tokens": 0.000045, + "output_cost_per_token_priority": 0.00006, + "output_cost_per_token_above_272k_tokens_priority": 0.00009, "supported_endpoints": [ - "/v1/chat/completions" + "/v1/chat/completions", + "/v1/batch", + "/v1/responses" ], "supported_modalities": [ "text", - "audio" + "image" ], "supported_output_modalities": [ - "text", - "audio" + "text" ], "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_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_vision": false + "supports_vision": true, + "supports_web_search": true, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false }, - "azure/gpt-audio-2025-08-28": { - "input_cost_per_audio_token": 0.00004, - "input_cost_per_token": 0.0000025, + "azure/gpt-5.6-luna": { + "cache_read_input_token_cost": 1e-7, + "cache_read_input_token_cost_above_272k_tokens": 2e-7, + "cache_read_input_token_cost_priority": 2e-7, + "cache_read_input_token_cost_above_272k_tokens_priority": 4e-7, + "input_cost_per_token": 0.000001, + "input_cost_per_token_above_272k_tokens": 0.000002, + "input_cost_per_token_priority": 0.000002, + "input_cost_per_token_above_272k_tokens_priority": 0.000004, "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", - "output_cost_per_audio_token": 0.00008, - "output_cost_per_token": 0.00001, + "output_cost_per_token": 0.000006, + "output_cost_per_token_above_272k_tokens": 0.000009, + "output_cost_per_token_priority": 0.000012, + "output_cost_per_token_above_272k_tokens_priority": 0.000018, "supported_endpoints": [ - "/v1/chat/completions" + "/v1/chat/completions", + "/v1/batch", + "/v1/responses" ], "supported_modalities": [ "text", - "audio" + "image" ], "supported_output_modalities": [ - "text", - "audio" + "text" ], "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_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_vision": false + "supports_vision": true, + "supports_web_search": true, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false }, - "azure/gpt-audio-mini-2025-10-06": { - "input_cost_per_audio_token": 0.00001, - "input_cost_per_token": 6e-7, + "azure/gpt-5.6-sol": { + "cache_read_input_token_cost": 5e-7, + "cache_read_input_token_cost_above_272k_tokens": 0.000001, + "cache_read_input_token_cost_priority": 0.000001, + "cache_read_input_token_cost_above_272k_tokens_priority": 0.000002, + "input_cost_per_token": 0.000005, + "input_cost_per_token_above_272k_tokens": 0.00001, + "input_cost_per_token_priority": 0.00001, + "input_cost_per_token_above_272k_tokens_priority": 0.00002, "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", - "output_cost_per_audio_token": 0.00002, - "output_cost_per_token": 0.0000024, + "output_cost_per_token": 0.00003, + "output_cost_per_token_above_272k_tokens": 0.000045, + "output_cost_per_token_priority": 0.00006, + "output_cost_per_token_above_272k_tokens_priority": 0.00009, "supported_endpoints": [ - "/v1/chat/completions" + "/v1/chat/completions", + "/v1/batch", + "/v1/responses" ], "supported_modalities": [ "text", - "audio" + "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, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false + }, + "azure/gpt-5.6-terra": { + "cache_read_input_token_cost": 2.5e-7, + "cache_read_input_token_cost_above_272k_tokens": 5e-7, + "cache_read_input_token_cost_priority": 5e-7, + "cache_read_input_token_cost_above_272k_tokens_priority": 0.000001, + "input_cost_per_token": 0.0000025, + "input_cost_per_token_above_272k_tokens": 0.000005, + "input_cost_per_token_priority": 0.000005, + "input_cost_per_token_above_272k_tokens_priority": 0.00001, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000015, + "output_cost_per_token_above_272k_tokens": 0.0000225, + "output_cost_per_token_priority": 0.00003, + "output_cost_per_token_above_272k_tokens_priority": 0.000045, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/batch", + "/v1/responses" + ], + "supported_modalities": [ "text", - "audio" + "image" + ], + "supported_output_modalities": [ + "text" ], "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_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_vision": false + "supports_vision": true, + "supports_web_search": true, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false }, - "azure/gpt-realtime-1.5-2026-02-23": { - "cache_creation_input_audio_token_cost": 0.000004, - "cache_read_input_token_cost": 0.000004, - "input_cost_per_audio_token": 0.000032, - "input_cost_per_image": 0.000005, - "input_cost_per_token": 0.000004, + "azure/gpt-audio-1.5-2026-02-23": { + "input_cost_per_audio_token": 0.00004, + "input_cost_per_token": 0.0000025, "litellm_provider": "azure", - "max_input_tokens": 32000, - "max_output_tokens": 4096, - "max_tokens": 4096, + "max_input_tokens": 128000, + "max_output_tokens": 16384, + "max_tokens": 16384, "mode": "chat", - "output_cost_per_audio_token": 0.000064, - "output_cost_per_token": 0.000016, + "output_cost_per_audio_token": 0.00008, + "output_cost_per_token": 0.00001, "supported_endpoints": [ - "/v1/realtime" + "/v1/chat/completions" ], "supported_modalities": [ "text", - "image", "audio" ], "supported_output_modalities": [ "text", "audio" ], - "supports_audio_input": true, - "supports_audio_output": true, "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_tool_choice": true, + "supports_vision": false }, - "azure/gpt-realtime-2025-08-28": { - "cache_creation_input_audio_token_cost": 0.000004, - "cache_read_input_token_cost": 0.000004, - "input_cost_per_audio_token": 0.000032, - "input_cost_per_image": 0.000005, - "input_cost_per_token": 0.000004, + "azure/gpt-audio-2025-08-28": { + "input_cost_per_audio_token": 0.00004, + "input_cost_per_token": 0.0000025, "litellm_provider": "azure", - "max_input_tokens": 32000, - "max_output_tokens": 4096, - "max_tokens": 4096, + "max_input_tokens": 128000, + "max_output_tokens": 16384, + "max_tokens": 16384, "mode": "chat", - "output_cost_per_audio_token": 0.000064, - "output_cost_per_token": 0.000016, + "output_cost_per_audio_token": 0.00008, + "output_cost_per_token": 0.00001, "supported_endpoints": [ - "/v1/realtime" + "/v1/chat/completions" ], "supported_modalities": [ "text", - "image", "audio" ], "supported_output_modalities": [ "text", "audio" ], - "supports_audio_input": true, - "supports_audio_output": true, "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_tool_choice": true, + "supports_vision": false }, - "azure/gpt-realtime-mini-2025-10-06": { - "cache_creation_input_audio_token_cost": 3e-7, - "cache_read_input_token_cost": 6e-8, + "azure/gpt-audio-mini-2025-10-06": { "input_cost_per_audio_token": 0.00001, - "input_cost_per_image": 8e-7, "input_cost_per_token": 6e-7, "litellm_provider": "azure", - "max_input_tokens": 32000, - "max_output_tokens": 4096, - "max_tokens": 4096, + "max_input_tokens": 128000, + "max_output_tokens": 16384, + "max_tokens": 16384, "mode": "chat", "output_cost_per_audio_token": 0.00002, "output_cost_per_token": 0.0000024, "supported_endpoints": [ - "/v1/realtime" + "/v1/chat/completions" ], "supported_modalities": [ "text", - "image", "audio" ], "supported_output_modalities": [ "text", "audio" ], - "supports_audio_input": true, - "supports_audio_output": true, "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_tool_choice": true, + "supports_vision": false }, "azure/mistral-large-2402": { "input_cost_per_token": 0.000008, @@ -3950,71 +4405,6 @@ "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-7, - "cache_read_input_token_cost": 3.3e-7, - "input_cost_per_audio_token": 0.000011, - "input_cost_per_token": 6.6e-7, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.000022, - "output_cost_per_token": 0.00000264, - "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": 0.000022, - "cache_read_input_token_cost": 0.00000275, - "input_cost_per_audio_token": 0.00011, - "input_cost_per_token": 0.0000055, - "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": 0.000022, - "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": 0.0000025, - "cache_read_input_token_cost": 0.00000275, - "input_cost_per_audio_token": 0.000044, - "input_cost_per_token": 0.0000055, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.00008, - "output_cost_per_token": 0.000022, - "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-7, "input_cost_per_token": 0.000001375, @@ -4179,6 +4569,325 @@ "supports_vision": true, "supports_none_reasoning_effort": true }, + "azure/us/gpt-5.4": { + "cache_read_input_token_cost": 2.8e-7, + "cache_read_input_token_cost_priority": 5.5e-7, + "input_cost_per_token": 0.00000275, + "input_cost_per_token_priority": 0.0000055, + "output_cost_per_token": 0.0000165, + "output_cost_per_token_priority": 0.000033, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "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.4-2026-03-05": { + "cache_read_input_token_cost": 2.8e-7, + "cache_read_input_token_cost_priority": 5.5e-7, + "input_cost_per_token": 0.00000275, + "input_cost_per_token_priority": 0.0000055, + "output_cost_per_token": 0.0000165, + "output_cost_per_token_priority": 0.000033, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "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.5": { + "cache_read_input_token_cost": 5.5e-7, + "cache_read_input_token_cost_above_272k_tokens": 0.0000011, + "cache_read_input_token_cost_priority": 0.00000138, + "input_cost_per_token": 0.0000055, + "input_cost_per_token_above_272k_tokens": 0.000011, + "input_cost_per_token_priority": 0.00001375, + "output_cost_per_token": 0.000033, + "output_cost_per_token_above_272k_tokens": 0.0000495, + "output_cost_per_token_priority": 0.0000825, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "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, + "supports_web_search": true, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false + }, + "azure/us/gpt-5.5-2026-04-23": { + "cache_read_input_token_cost": 5.5e-7, + "cache_read_input_token_cost_above_272k_tokens": 0.0000011, + "cache_read_input_token_cost_priority": 0.00000138, + "input_cost_per_token": 0.0000055, + "input_cost_per_token_above_272k_tokens": 0.000011, + "input_cost_per_token_priority": 0.00001375, + "output_cost_per_token": 0.000033, + "output_cost_per_token_above_272k_tokens": 0.0000495, + "output_cost_per_token_priority": 0.0000825, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "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, + "supports_web_search": true + }, + "azure/us/gpt-5.6": { + "cache_read_input_token_cost": 5.5e-7, + "cache_read_input_token_cost_above_272k_tokens": 0.0000011, + "cache_read_input_token_cost_priority": 0.000001375, + "input_cost_per_token": 0.0000055, + "input_cost_per_token_above_272k_tokens": 0.000011, + "input_cost_per_token_priority": 0.00001375, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000033, + "output_cost_per_token_above_272k_tokens": 0.0000495, + "output_cost_per_token_priority": 0.0000825, + "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, + "supports_web_search": true, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false + }, + "azure/us/gpt-5.6-luna": { + "cache_read_input_token_cost": 1.1e-7, + "cache_read_input_token_cost_above_272k_tokens": 2.2e-7, + "cache_read_input_token_cost_priority": 2.75e-7, + "input_cost_per_token": 0.0000011, + "input_cost_per_token_above_272k_tokens": 0.0000022, + "input_cost_per_token_priority": 0.00000275, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000066, + "output_cost_per_token_above_272k_tokens": 0.0000099, + "output_cost_per_token_priority": 0.0000165, + "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, + "supports_web_search": true, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false + }, + "azure/us/gpt-5.6-sol": { + "cache_read_input_token_cost": 5.5e-7, + "cache_read_input_token_cost_above_272k_tokens": 0.0000011, + "cache_read_input_token_cost_priority": 0.000001375, + "input_cost_per_token": 0.0000055, + "input_cost_per_token_above_272k_tokens": 0.000011, + "input_cost_per_token_priority": 0.00001375, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000033, + "output_cost_per_token_above_272k_tokens": 0.0000495, + "output_cost_per_token_priority": 0.0000825, + "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, + "supports_web_search": true, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false + }, + "azure/us/gpt-5.6-terra": { + "cache_read_input_token_cost": 2.75e-7, + "cache_read_input_token_cost_above_272k_tokens": 5.5e-7, + "cache_read_input_token_cost_priority": 6.875e-7, + "input_cost_per_token": 0.00000275, + "input_cost_per_token_above_272k_tokens": 0.0000055, + "input_cost_per_token_priority": 0.000006875, + "litellm_provider": "azure", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000165, + "output_cost_per_token_above_272k_tokens": 0.00002475, + "output_cost_per_token_priority": 0.00004125, + "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, + "supports_web_search": true, + "supports_none_reasoning_effort": true, + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false + }, "azure/us/o1-2024-12-17": { "cache_read_input_token_cost": 0.00000825, "input_cost_per_token": 0.0000165, @@ -4577,6 +5286,7 @@ "supports_reasoning": true }, "azure_ai/claude-fable-5": { + "supports_mid_conversation_system": true, "input_cost_per_token": 0.00001, "output_cost_per_token": 0.00005, "litellm_provider": "azure_ai", @@ -4671,10 +5381,11 @@ "supports_output_config": true }, "azure_ai/claude-opus-4-6": { + "supports_adaptive_thinking": true, "input_cost_per_token": 0.000005, "output_cost_per_token": 0.000025, "litellm_provider": "azure_ai", - "max_input_tokens": 200000, + "max_input_tokens": 1000000, "max_output_tokens": 128000, "max_tokens": 128000, "mode": "chat", @@ -4699,10 +5410,11 @@ "supports_max_reasoning_effort": true }, "azure_ai/claude-opus-4-7": { + "supports_adaptive_thinking": true, "input_cost_per_token": 0.000005, "output_cost_per_token": 0.000025, "litellm_provider": "azure_ai", - "max_input_tokens": 200000, + "max_input_tokens": 1000000, "max_output_tokens": 128000, "max_tokens": 128000, "mode": "chat", @@ -4728,10 +5440,12 @@ "supports_max_reasoning_effort": true }, "azure_ai/claude-opus-4-8": { + "supports_mid_conversation_system": true, + "supports_adaptive_thinking": true, "input_cost_per_token": 0.000005, "output_cost_per_token": 0.000025, "litellm_provider": "azure_ai", - "max_input_tokens": 200000, + "max_input_tokens": 1000000, "max_output_tokens": 128000, "max_tokens": 128000, "mode": "chat", @@ -4743,7 +5457,6 @@ "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_read_input_token_cost": 5e-7, - "supports_adaptive_thinking": true, "supports_assistant_prefill": false, "supports_computer_use": true, "supports_function_calling": true, @@ -4757,6 +5470,38 @@ "supports_xhigh_reasoning_effort": true, "supports_max_reasoning_effort": true }, + "azure_ai/claude-opus-5": { + "supports_mid_conversation_system": true, + "supports_adaptive_thinking": true, + "input_cost_per_token": 0.000005, + "output_cost_per_token": 0.000025, + "litellm_provider": "azure_ai", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_1hr": 0.00001, + "cache_read_input_token_cost": 5e-7, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_max_reasoning_effort": true, + "prompt_cache_min_tokens": 512 + }, "azure_ai/claude-sonnet-4-5": { "cache_creation_input_token_cost": 0.00000375, "cache_creation_input_token_cost_above_1hr": 0.000006, @@ -4779,6 +5524,7 @@ "supports_vision": true }, "azure_ai/claude-sonnet-4-6": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000375, "cache_creation_input_token_cost_above_1hr": 0.000006, "cache_read_input_token_cost": 3e-7, @@ -4801,6 +5547,37 @@ "supports_vision": true, "supports_output_config": true }, + "azure_ai/claude-sonnet-5": { + "supports_mid_conversation_system": true, + "cache_creation_input_token_cost": 0.0000025, + "cache_creation_input_token_cost_above_1hr": 0.000004, + "cache_read_input_token_cost": 2e-7, + "input_cost_per_token": 0.000002, + "litellm_provider": "azure_ai", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.00001, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_adaptive_thinking": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_max_reasoning_effort": true + }, "azure_ai/deepseek-r1": { "input_cost_per_token": 0.00000135, "litellm_provider": "azure_ai", @@ -4974,7 +5751,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -5021,7 +5797,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -5068,7 +5843,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -5115,7 +5889,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -5162,7 +5935,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -5209,7 +5981,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -5256,7 +6027,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -5303,7 +6073,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -6980,7 +7749,9 @@ "supports_tool_choice": true, "supports_vision": true, "supports_native_structured_output": true, - "supports_pdf_input": true + "supports_pdf_input": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "bedrock/us-gov-east-1/anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.0000045, @@ -7002,7 +7773,9 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "bedrock/us-gov-east-1/claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.0000045, @@ -7024,7 +7797,9 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "bedrock/us-gov-east-1/meta.llama3-70b-instruct-v1:0": { "input_cost_per_token": 0.00000265, @@ -7160,7 +7935,9 @@ "supports_tool_choice": true, "supports_vision": true, "supports_native_structured_output": true, - "supports_pdf_input": true + "supports_pdf_input": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "bedrock/us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.0000045, @@ -7182,7 +7959,9 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "bedrock/us-gov-west-1/claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.0000045, @@ -7204,7 +7983,9 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "bedrock/us-gov-west-1/meta.llama3-70b-instruct-v1:0": { "input_cost_per_token": 0.00000265, @@ -7468,7 +8249,8 @@ "supports_pdf_input": true, "supports_prompt_caching": true, "supports_response_schema": true, - "supports_tool_choice": true + "supports_tool_choice": true, + "prompt_cache_min_tokens": 2048 }, "bedrock_mantle/google.gemma-4-26b-a4b": { "input_cost_per_token": 1.3e-7, @@ -7595,6 +8377,27 @@ "supports_response_schema": true, "supports_tool_choice": true }, + "bedrock_mantle/xai.grok-4.3": { + "use_openai_responses_path": true, + "input_cost_per_token": 0.00000125, + "output_cost_per_token": 0.0000025, + "cache_read_input_token_cost": 2e-7, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 131072, + "max_output_tokens": 16384, + "max_tokens": 16384, + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "source": "https://aws.amazon.com/bedrock/pricing/" + }, "cerebras/gpt-oss-120b": { "input_cost_per_token": 3.5e-7, "litellm_provider": "cerebras", @@ -7856,7 +8659,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "claude-4-sonnet-20250514": { "cache_creation_input_token_cost": 0.00000375, @@ -7886,7 +8690,8 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_web_search": true + "supports_web_search": true, + "prompt_cache_min_tokens": 1024 }, "claude-fable-5": { "cache_creation_input_token_cost": 0.0000125, @@ -7920,7 +8725,8 @@ "provider_specific_entry": { "us": 1.1 }, - "supports_output_config": true + "supports_output_config": true, + "prompt_cache_min_tokens": 512 }, "claude-haiku-4-5": { "cache_creation_input_token_cost": 0.00000125, @@ -7941,7 +8747,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 4096 }, "claude-haiku-4-5-20251001": { "cache_creation_input_token_cost": 0.00000125, @@ -7962,7 +8769,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 4096 }, "claude-opus-4-1": { "cache_creation_input_token_cost": 0.00001875, @@ -7987,8 +8795,10 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_native_structured_output": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "claude-opus-4-1-20250805": { "cache_creation_input_token_cost": 0.00001875, @@ -8014,8 +8824,10 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_native_structured_output": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "claude-opus-4-20250514": { "cache_creation_input_token_cost": 0.00001875, @@ -8042,7 +8854,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "claude-opus-4-5": { "cache_creation_input_token_cost": 0.00000625, @@ -8067,9 +8880,11 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_native_structured_output": true, "supports_tool_choice": true, "supports_vision": true, - "supports_output_config": true + "supports_output_config": true, + "prompt_cache_min_tokens": 4096 }, "claude-opus-4-5-20251101": { "cache_creation_input_token_cost": 0.00000625, @@ -8094,9 +8909,11 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_native_structured_output": true, "supports_tool_choice": true, "supports_vision": true, - "supports_output_config": true + "supports_output_config": true, + "prompt_cache_min_tokens": 4096 }, "claude-opus-4-6": { "cache_creation_input_token_cost": 0.00000625, @@ -8122,6 +8939,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_native_structured_output": true, "supports_tool_choice": true, "supports_vision": true, "provider_specific_entry": { @@ -8129,7 +8947,9 @@ "fast": 6 }, "supports_output_config": true, - "supports_max_reasoning_effort": true + "supports_max_reasoning_effort": true, + "supports_speed": true, + "prompt_cache_min_tokens": 4096 }, "claude-opus-4-6-20260205": { "cache_creation_input_token_cost": 0.00000625, @@ -8155,6 +8975,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_native_structured_output": true, "supports_tool_choice": true, "supports_vision": true, "provider_specific_entry": { @@ -8162,7 +8983,9 @@ "fast": 6 }, "supports_max_reasoning_effort": true, - "supports_output_config": true + "supports_output_config": true, + "supports_speed": true, + "prompt_cache_min_tokens": 4096 }, "claude-opus-4-7": { "cache_creation_input_token_cost": 0.00000625, @@ -8188,6 +9011,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_native_structured_output": true, "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, @@ -8197,7 +9021,9 @@ "us": 1.1, "fast": 6 }, - "supports_output_config": true + "supports_output_config": true, + "supports_speed": true, + "prompt_cache_min_tokens": 2048 }, "claude-opus-4-7-20260416": { "cache_creation_input_token_cost": 0.00000625, @@ -8223,6 +9049,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_native_structured_output": true, "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, @@ -8232,7 +9059,9 @@ "us": 1.1, "fast": 6 }, - "supports_output_config": true + "supports_output_config": true, + "supports_speed": true, + "prompt_cache_min_tokens": 2048 }, "claude-opus-4-8": { "cache_creation_input_token_cost": 0.00000625, @@ -8258,6 +9087,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_native_structured_output": true, "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, @@ -8267,7 +9097,47 @@ "us": 1.1, "fast": 2 }, - "supports_output_config": true + "supports_output_config": true, + "supports_speed": true, + "prompt_cache_min_tokens": 1024 + }, + "claude-opus-5": { + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_1hr": 0.00001, + "cache_read_input_token_cost": 5e-7, + "input_cost_per_token": 0.000005, + "litellm_provider": "anthropic", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000025, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_adaptive_thinking": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_native_structured_output": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_max_reasoning_effort": true, + "provider_specific_entry": { + "us": 1.1, + "fast": 2 + }, + "supports_output_config": true, + "supports_speed": true, + "prompt_cache_min_tokens": 512 }, "claude-sonnet-4-20250514": { "deprecation_date": "2026-05-14", @@ -8298,7 +9168,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "claude-sonnet-4-5": { "cache_creation_input_token_cost": 0.00000375, @@ -8328,8 +9199,10 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_native_structured_output": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "claude-sonnet-4-5-20250929": { "cache_creation_input_token_cost": 0.00000375, @@ -8359,9 +9232,11 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_native_structured_output": true, "supports_tool_choice": true, "supports_vision": true, - "supports_web_search": true + "supports_web_search": true, + "prompt_cache_min_tokens": 1024 }, "claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.00000375, @@ -8387,7 +9262,9 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "claude-sonnet-4-6": { "cache_creation_input_token_cost": 0.00000375, @@ -8413,10 +9290,114 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_tool_choice": true, "supports_vision": true, - "supports_output_config": true + "supports_output_config": true, + "prompt_cache_min_tokens": 1024 + }, + "claude-sonnet-5": { + "cache_creation_input_token_cost": 0.0000025, + "cache_creation_input_token_cost_above_1hr": 0.000004, + "cache_read_input_token_cost": 2e-7, + "input_cost_per_token": 0.000002, + "litellm_provider": "anthropic", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.00001, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_adaptive_thinking": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_max_reasoning_effort": true, + "provider_specific_entry": { + "us": 1.1 + }, + "supports_output_config": true, + "prompt_cache_min_tokens": 1024 + }, + "cloudflare/@cf/aisingapore/gemma-sea-lion-v4-27b-it": { + "input_cost_per_token": 3.51e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 5.55e-7 + }, + "cloudflare/@cf/deepseek-ai/deepseek-r1-distill-qwen-32b": { + "input_cost_per_token": 4.97e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 80000, + "max_output_tokens": 80000, + "max_tokens": 80000, + "mode": "chat", + "output_cost_per_token": 0.000004881, + "supports_reasoning": true + }, + "cloudflare/@cf/google/gemma-2b-it-lora": { + "input_cost_per_token": 0, + "litellm_provider": "cloudflare", + "max_input_tokens": 8192, + "max_output_tokens": 8192, + "max_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 0 + }, + "cloudflare/@cf/google/gemma-4-26b-a4b-it": { + "input_cost_per_token": 1e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "max_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 3e-7, + "supports_function_calling": true, + "supports_reasoning": true + }, + "cloudflare/@cf/google/gemma-7b-it-lora": { + "input_cost_per_token": 0, + "litellm_provider": "cloudflare", + "max_input_tokens": 3500, + "max_output_tokens": 3500, + "max_tokens": 3500, + "mode": "chat", + "output_cost_per_token": 0 + }, + "cloudflare/@cf/ibm-granite/granite-4.0-h-micro": { + "input_cost_per_token": 1.7e-8, + "litellm_provider": "cloudflare", + "max_input_tokens": 131000, + "max_output_tokens": 131000, + "max_tokens": 131000, + "mode": "chat", + "output_cost_per_token": 1.12e-7, + "supports_function_calling": true + }, + "cloudflare/@cf/meta-llama/llama-2-7b-chat-hf-lora": { + "input_cost_per_token": 0, + "litellm_provider": "cloudflare", + "max_input_tokens": 8192, + "max_output_tokens": 8192, + "max_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 0 }, "cloudflare/@cf/meta/llama-2-7b-chat-fp16": { "input_cost_per_token": 0.000001923, @@ -8436,6 +9417,72 @@ "mode": "chat", "output_cost_per_token": 0.000001923 }, + "cloudflare/@cf/meta/llama-3.1-8b-instruct-fp8": { + "input_cost_per_token": 1.52e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 32000, + "max_output_tokens": 32000, + "max_tokens": 32000, + "mode": "chat", + "output_cost_per_token": 2.87e-7 + }, + "cloudflare/@cf/meta/llama-3.2-11b-vision-instruct": { + "input_cost_per_token": 4.85e-8, + "litellm_provider": "cloudflare", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6.76e-7, + "supports_vision": true + }, + "cloudflare/@cf/meta/llama-3.2-1b-instruct": { + "input_cost_per_token": 2.7e-8, + "litellm_provider": "cloudflare", + "max_input_tokens": 60000, + "max_output_tokens": 60000, + "max_tokens": 60000, + "mode": "chat", + "output_cost_per_token": 2.01e-7 + }, + "cloudflare/@cf/meta/llama-3.2-3b-instruct": { + "input_cost_per_token": 5.09e-8, + "litellm_provider": "cloudflare", + "max_input_tokens": 80000, + "max_output_tokens": 80000, + "max_tokens": 80000, + "mode": "chat", + "output_cost_per_token": 3.35e-7 + }, + "cloudflare/@cf/meta/llama-3.3-70b-instruct-fp8-fast": { + "input_cost_per_token": 2.93e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 24000, + "max_output_tokens": 24000, + "max_tokens": 24000, + "mode": "chat", + "output_cost_per_token": 0.000002253, + "supports_function_calling": true + }, + "cloudflare/@cf/meta/llama-4-scout-17b-16e-instruct": { + "input_cost_per_token": 2.7e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 131000, + "max_output_tokens": 131000, + "max_tokens": 131000, + "mode": "chat", + "output_cost_per_token": 8.5e-7, + "supports_function_calling": true + }, + "cloudflare/@cf/meta/llama-guard-3-8b": { + "input_cost_per_token": 4.84e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 131072, + "max_output_tokens": 131072, + "max_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 3e-8 + }, "cloudflare/@cf/mistral/mistral-7b-instruct-v0.1": { "input_cost_per_token": 0.000001923, "litellm_provider": "cloudflare", @@ -8445,6 +9492,135 @@ "mode": "chat", "output_cost_per_token": 0.000001923 }, + "cloudflare/@cf/mistral/mistral-7b-instruct-v0.2-lora": { + "input_cost_per_token": 0, + "litellm_provider": "cloudflare", + "max_input_tokens": 15000, + "max_output_tokens": 15000, + "max_tokens": 15000, + "mode": "chat", + "output_cost_per_token": 0 + }, + "cloudflare/@cf/mistralai/mistral-small-3.1-24b-instruct": { + "input_cost_per_token": 3.51e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 5.55e-7, + "supports_function_calling": true + }, + "cloudflare/@cf/moonshotai/kimi-k2.6": { + "cache_read_input_token_cost": 1.6e-7, + "input_cost_per_token": 9.5e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 262144, + "max_output_tokens": 262144, + "max_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 0.000004, + "supports_function_calling": true, + "supports_reasoning": true + }, + "cloudflare/@cf/moonshotai/kimi-k2.7-code": { + "cache_read_input_token_cost": 1.9e-7, + "input_cost_per_token": 9.5e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 262144, + "max_output_tokens": 262144, + "max_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 0.000004, + "supports_function_calling": true, + "supports_reasoning": true + }, + "cloudflare/@cf/nvidia/nemotron-3-120b-a12b": { + "input_cost_per_token": 5e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "max_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 0.0000015, + "supports_function_calling": true, + "supports_reasoning": true + }, + "cloudflare/@cf/openai/gpt-oss-120b": { + "input_cost_per_token": 3.5e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 7.5e-7, + "supports_function_calling": true, + "supports_reasoning": true + }, + "cloudflare/@cf/openai/gpt-oss-20b": { + "input_cost_per_token": 2e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 3e-7, + "supports_function_calling": true, + "supports_reasoning": true + }, + "cloudflare/@cf/qwen/qwen2.5-coder-32b-instruct": { + "input_cost_per_token": 6.6e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 32768, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "chat", + "output_cost_per_token": 0.000001 + }, + "cloudflare/@cf/qwen/qwen3-30b-a3b-fp8": { + "input_cost_per_token": 5.09e-8, + "litellm_provider": "cloudflare", + "max_input_tokens": 32768, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "chat", + "output_cost_per_token": 3.35e-7, + "supports_function_calling": true, + "supports_reasoning": true + }, + "cloudflare/@cf/qwen/qwq-32b": { + "input_cost_per_token": 6.6e-7, + "litellm_provider": "cloudflare", + "max_input_tokens": 24000, + "max_output_tokens": 24000, + "max_tokens": 24000, + "mode": "chat", + "output_cost_per_token": 0.000001, + "supports_reasoning": true + }, + "cloudflare/@cf/zai-org/glm-4.7-flash": { + "input_cost_per_token": 6.05e-8, + "litellm_provider": "cloudflare", + "max_input_tokens": 131072, + "max_output_tokens": 131072, + "max_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 4e-7, + "supports_function_calling": true, + "supports_reasoning": true + }, + "cloudflare/@cf/zai-org/glm-5.2": { + "cache_read_input_token_cost": 2.6e-7, + "input_cost_per_token": 0.0000014, + "litellm_provider": "cloudflare", + "max_input_tokens": 262144, + "max_output_tokens": 262144, + "max_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 0.0000044, + "supports_function_calling": true, + "supports_reasoning": true + }, "cloudflare/@hf/thebloke/codellama-7b-instruct-awq": { "input_cost_per_token": 0.000001923, "litellm_provider": "cloudflare", @@ -8714,6 +9890,40 @@ "supports_system_messages": true, "supports_tool_choice": true }, + "darkbloom/gemma-4-26b": { + "input_cost_per_token": 3e-8, + "litellm_provider": "darkbloom", + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "chat", + "output_cost_per_token": 1.65e-7, + "source": "https://www.darkbloom.dev/", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_system_messages": true, + "supports_tool_choice": true + }, + "darkbloom/gpt-oss-20b": { + "input_cost_per_token": 1.45e-8, + "litellm_provider": "darkbloom", + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "chat", + "output_cost_per_token": 7e-8, + "source": "https://www.darkbloom.dev/", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_system_messages": true, + "supports_tool_choice": true + }, "dashscope/qwen-coder": { "input_cost_per_token": 3e-7, "litellm_provider": "dashscope", @@ -10751,6 +11961,7 @@ "supports_native_streaming": true, "supports_parallel_function_calling": true, "supports_prompt_caching": true, + "supports_reasoning": true, "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, @@ -10776,6 +11987,7 @@ "supports_native_streaming": true, "supports_parallel_function_calling": true, "supports_prompt_caching": true, + "supports_reasoning": true, "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, @@ -10935,6 +12147,7 @@ "supports_native_streaming": true, "supports_parallel_function_calling": true, "supports_prompt_caching": true, + "supports_reasoning": true, "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, @@ -10960,6 +12173,7 @@ "supports_native_streaming": true, "supports_parallel_function_calling": true, "supports_prompt_caching": true, + "supports_reasoning": true, "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, @@ -11057,7 +12271,8 @@ "supports_response_schema": true, "supports_tool_choice": true, "cache_read_input_token_cost": 2.5e-8, - "cache_creation_input_token_cost": 3.125e-7 + "cache_creation_input_token_cost": 3.125e-7, + "prompt_cache_min_tokens": 2048 }, "eu.anthropic.claude-3-5-sonnet-20240620-v1:0": { "input_cost_per_token": 0.000003, @@ -11178,6 +12393,7 @@ "search_context_size_medium": 0.01 }, "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, "supports_assistant_prefill": false, "supports_computer_use": true, "supports_function_calling": true, @@ -11192,7 +12408,9 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "eu.anthropic.claude-haiku-4-5-20251001-v1:0": { "cache_creation_input_token_cost": 0.000001375, @@ -11216,7 +12434,9 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "eu.anthropic.claude-opus-4-1-20250805-v1:0": { "cache_creation_input_token_cost": 0.00001875, @@ -11241,7 +12461,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "eu.anthropic.claude-opus-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00001875, @@ -11266,7 +12487,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "eu.anthropic.claude-opus-4-5-20251101-v1:0": { "cache_creation_input_token_cost": 0.00000625, @@ -11294,9 +12516,12 @@ "supports_vision": true, "supports_native_structured_output": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "high" + "bedrock_output_config_effort_ceiling": "high", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "eu.anthropic.claude-opus-4-6-v1": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.000006875, "cache_creation_input_token_cost_above_1hr": 0.000011, "cache_read_input_token_cost": 5.5e-7, @@ -11324,9 +12549,13 @@ "supports_native_structured_output": true, "supports_output_config": true, "supports_max_reasoning_effort": true, - "bedrock_output_config_effort_ceiling": "max" + "bedrock_output_config_effort_ceiling": "max", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "eu.anthropic.claude-opus-4-7": { + "bedrock_converse_supports_strict_tools": false, + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.000006875, "cache_creation_input_token_cost_above_1hr": 0.000011, "cache_read_input_token_cost": 5.5e-7, @@ -11356,9 +12585,14 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 2048 }, "eu.anthropic.claude-opus-4-8": { + "bedrock_converse_supports_strict_tools": false, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, "cache_creation_input_token_cost": 0.000006875, "cache_creation_input_token_cost_above_1hr": 0.000011, "cache_read_input_token_cost": 5.5e-7, @@ -11374,7 +12608,43 @@ "search_context_size_low": 0.01, "search_context_size_medium": 0.01 }, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": true, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 + }, + "eu.anthropic.claude-opus-5": { + "bedrock_converse_supports_strict_tools": false, "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "cache_creation_input_token_cost": 0.000006875, + "cache_creation_input_token_cost_above_1hr": 0.000011, + "cache_read_input_token_cost": 5.5e-7, + "input_cost_per_token": 0.0000055, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000275, + "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": false, "supports_computer_use": true, "supports_function_calling": true, @@ -11389,7 +12659,8 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512 }, "eu.anthropic.claude-sonnet-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00000375, @@ -11418,7 +12689,9 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "bedrock_converse_supports_strict_tools": false, + "prompt_cache_min_tokens": 1024 }, "eu.anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.000004125, @@ -11450,9 +12723,12 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "eu.anthropic.claude-sonnet-4-6": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.000004125, "cache_creation_input_token_cost_above_1hr": 0.0000066, "cache_read_input_token_cost": 3.3e-7, @@ -11479,7 +12755,45 @@ "supports_tool_choice": true, "supports_vision": true, "supports_native_structured_output": true, - "supports_output_config": true + "supports_output_config": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 + }, + "eu.anthropic.claude-sonnet-5": { + "cache_creation_input_token_cost": 0.00000275, + "cache_creation_input_token_cost_above_1hr": 0.0000044, + "cache_read_input_token_cost": 2.2e-7, + "input_cost_per_token": 0.0000022, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000011, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": true, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "eu.deepseek.v3.2": { "input_cost_per_token": 7.4e-7, @@ -12320,7 +13634,7 @@ "supports_vision": false }, "fireworks_ai/accounts/fireworks/models/glm-5p2": { - "cache_read_input_token_cost": 2.6e-7, + "cache_read_input_token_cost": 1.4e-7, "input_cost_per_token": 0.0000014, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, @@ -14133,7 +15447,7 @@ "supports_vision": false }, "fireworks_ai/glm-5p2": { - "cache_read_input_token_cost": 2.6e-7, + "cache_read_input_token_cost": 1.4e-7, "input_cost_per_token": 0.0000014, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, @@ -14541,15 +15855,9 @@ "input_cost_per_audio_token": 7e-7, "input_cost_per_token": 1e-7, "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-7, "source": "https://ai.google.dev/pricing#2_0flash", @@ -14586,15 +15894,9 @@ "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 1.5e-7, "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-7, "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", @@ -14629,14 +15931,8 @@ "input_cost_per_audio_token": 7.5e-8, "input_cost_per_token": 7.5e-8, "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-7, "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash", @@ -14670,14 +15966,8 @@ "input_cost_per_audio_token": 7.5e-8, "input_cost_per_token": 7.5e-8, "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-7, "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash", @@ -14709,7 +15999,6 @@ "input_cost_per_token": 0.00000125, "input_cost_per_token_above_200k_tokens": 0.0000025, "litellm_provider": "vertex_ai-language-models", - "max_images_per_prompt": 3000, "max_input_tokens": 128000, "max_output_tokens": 64000, "max_tokens": 64000, @@ -14735,15 +16024,9 @@ "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 3e-7, "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": 0.0000025, "output_cost_per_token": 0.0000025, @@ -14779,7 +16062,6 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true, "supports_image_size": false }, "gemini-2.5-flash-image": { @@ -14787,15 +16069,9 @@ "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 3e-7, "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": 0.00003, @@ -14830,7 +16106,6 @@ "supports_vision": true, "supports_web_search": false, "tpm": 8000000, - "supports_service_tier": true, "supports_image_size": false }, "gemini-2.5-flash-lite": { @@ -14838,15 +16113,9 @@ "input_cost_per_audio_token": 3e-7, "input_cost_per_token": 1e-7, "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-7, "output_cost_per_token": 4e-7, @@ -14882,7 +16151,6 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true, "supports_image_size": false }, "gemini-2.5-flash-lite-preview-06-17": { @@ -14891,15 +16159,9 @@ "input_cost_per_audio_token": 5e-7, "input_cost_per_token": 1e-7, "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-7, "output_cost_per_token": 4e-7, @@ -14942,15 +16204,9 @@ "input_cost_per_audio_token": 3e-7, "input_cost_per_token": 1e-7, "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-7, "output_cost_per_token": 4e-7, @@ -15010,7 +16266,8 @@ "audio" ], "supports_audio_input": true, - "supports_audio_output": true + "supports_audio_output": true, + "gemini_native_audio": true }, "gemini-2.5-flash-native-audio-preview-09-2025": { "input_cost_per_audio_token": 0.000001, @@ -15034,7 +16291,8 @@ "audio" ], "supports_audio_input": true, - "supports_audio_output": true + "supports_audio_output": true, + "gemini_native_audio": true }, "gemini-2.5-flash-native-audio-preview-12-2025": { "input_cost_per_audio_token": 0.000001, @@ -15058,22 +16316,17 @@ "audio" ], "supports_audio_input": true, - "supports_audio_output": true + "supports_audio_output": true, + "gemini_native_audio": true }, "gemini-2.5-flash-preview-09-2025": { "cache_read_input_token_cost": 7.5e-8, "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 3e-7, "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": 0.0000025, "output_cost_per_token": 0.0000025, @@ -15118,15 +16371,9 @@ "input_cost_per_token": 0.00000125, "input_cost_per_token_above_200k_tokens": 0.0000025, "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": 0.00001, "output_cost_per_token_above_200k_tokens": 0.000015, @@ -15159,8 +16406,7 @@ "search_context_size_low": 0.035, "search_context_size_medium": 0.035, "search_context_size_high": 0.035 - }, - "supports_service_tier": true + } }, "gemini-2.5-pro-preview-tts": { "cache_read_input_token_cost": 1.25e-7, @@ -15169,15 +16415,9 @@ "input_cost_per_token": 0.00000125, "input_cost_per_token_above_200k_tokens": 0.0000025, "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": 0.00001, "output_cost_per_token_above_200k_tokens": 0.000015, @@ -15208,15 +16448,9 @@ "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 5e-7, "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": 0.000003, "output_cost_per_token": 0.000003, @@ -15252,7 +16486,46 @@ "input_cost_per_audio_token_priority": 0.0000018, "output_cost_per_token_priority": 0.0000054, "cache_read_input_token_cost_priority": 9e-8, - "supports_service_tier": true, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "web_search_billing_unit": "per_query" + }, + "gemini-3-pro-image": { + "input_cost_per_image": 0.0011, + "input_cost_per_token": 0.000002, + "input_cost_per_token_batches": 0.000001, + "litellm_provider": "vertex_ai-language-models", + "max_input_tokens": 65536, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "image_generation", + "output_cost_per_image": 0.134, + "output_cost_per_image_token": 0.00012, + "output_cost_per_token": 0.000012, + "output_cost_per_token_batches": 0.000006, + "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-3-pro-image", + "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, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -15298,8 +16571,7 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, - "web_search_billing_unit": "per_query", - "supports_service_tier": true + "web_search_billing_unit": "per_query" }, "gemini-3-pro-preview": { "deprecation_date": "2026-03-26", @@ -15310,15 +16582,9 @@ "input_cost_per_token_above_200k_tokens": 0.000004, "input_cost_per_token_batches": 0.000001, "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": 0.000012, "output_cost_per_token_above_200k_tokens": 0.000018, @@ -15356,7 +16622,44 @@ "output_cost_per_token_above_200k_tokens_priority": 0.0000324, "cache_read_input_token_cost_priority": 3.6e-7, "cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-7, - "supports_service_tier": true, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "web_search_billing_unit": "per_query" + }, + "gemini-3.1-flash-image": { + "input_cost_per_image": 0.00056, + "input_cost_per_token": 5e-7, + "litellm_provider": "vertex_ai-language-models", + "max_input_tokens": 65536, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "image_generation", + "output_cost_per_image": 0.0672, + "output_cost_per_image_token": 0.00006, + "output_cost_per_token": 0.000003, + "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#gemini-models", + "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, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -15404,9 +16707,7 @@ }, "gemini-3.1-flash-lite": { "cache_read_input_token_cost": 2.5e-8, - "cache_read_input_token_cost_batches": 1.25e-8, "cache_read_input_token_cost_flex": 1.25e-8, - "cache_read_input_token_cost_per_audio_token": 5e-8, "cache_read_input_token_cost_priority": 4.5e-8, "input_cost_per_audio_token": 5e-7, "input_cost_per_token": 2.5e-7, @@ -15414,15 +16715,9 @@ "input_cost_per_token_flex": 1.25e-7, "input_cost_per_token_priority": 4.5e-7, "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_reasoning_token": 0.0000015, "output_cost_per_token": 0.0000015, @@ -15446,8 +16741,6 @@ ], "supports_audio_input": true, "supports_audio_output": false, - "supports_code_execution": true, - "supports_file_search": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -15466,24 +16759,16 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, - "web_search_billing_unit": "per_query", - "supports_service_tier": true + "web_search_billing_unit": "per_query" }, "gemini-3.1-flash-lite-preview": { "cache_read_input_token_cost": 2.5e-8, - "cache_read_input_token_cost_per_audio_token": 5e-8, "input_cost_per_audio_token": 5e-7, "input_cost_per_token": 2.5e-7, "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_reasoning_token": 0.0000015, "output_cost_per_token": 0.0000015, @@ -15504,8 +16789,6 @@ ], "supports_audio_input": true, "supports_audio_output": false, - "supports_code_execution": true, - "supports_file_search": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -15524,8 +16807,7 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, - "web_search_billing_unit": "per_query", - "supports_service_tier": true + "web_search_billing_unit": "per_query" }, "gemini-3.1-flash-live-preview": { "input_cost_per_audio_token": 0.000003, @@ -15557,7 +16839,8 @@ "supports_audio_output": true, "supports_function_calling": true, "supports_vision": true, - "supports_web_search": true + "supports_web_search": true, + "gemini_audio_only_live": true }, "gemini-3.1-pro-preview": { "cache_read_input_token_cost": 2e-7, @@ -15567,15 +16850,9 @@ "input_cost_per_token_above_200k_tokens": 0.000004, "input_cost_per_token_batches": 0.000001, "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_token": 0.000012, "output_cost_per_token_above_200k_tokens": 0.000018, @@ -15609,13 +16886,63 @@ "supports_web_search": true, "supports_url_context": true, "supports_native_streaming": true, - "input_cost_per_token_priority": 0.0000036, - "input_cost_per_token_above_200k_tokens_priority": 0.0000072, - "output_cost_per_token_priority": 0.0000216, - "output_cost_per_token_above_200k_tokens_priority": 0.0000324, - "cache_read_input_token_cost_priority": 3.6e-7, - "cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-7, - "supports_service_tier": true, + "input_cost_per_token_priority": 0.0000036, + "input_cost_per_token_above_200k_tokens_priority": 0.0000072, + "output_cost_per_token_priority": 0.0000216, + "output_cost_per_token_above_200k_tokens_priority": 0.0000324, + "cache_read_input_token_cost_priority": 3.6e-7, + "cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-7, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "web_search_billing_unit": "per_query" + }, + "gemini-3.1-pro-preview-customtools": { + "cache_read_input_token_cost": 2e-7, + "cache_read_input_token_cost_above_200k_tokens": 4e-7, + "cache_creation_input_token_cost_above_200k_tokens": 2.5e-7, + "input_cost_per_token": 0.000002, + "input_cost_per_token_above_200k_tokens": 0.000004, + "input_cost_per_token_batches": 0.000001, + "litellm_provider": "vertex_ai-language-models", + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "max_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 0.000012, + "output_cost_per_token_above_200k_tokens": 0.000018, + "output_cost_per_token_batches": 0.000006, + "output_cost_per_image": 0.00012, + "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#gemini-models", + "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, + "supports_url_context": true, + "supports_native_streaming": true, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -15623,29 +16950,77 @@ }, "web_search_billing_unit": "per_query" }, - "gemini-3.1-pro-preview-customtools": { - "cache_read_input_token_cost": 2e-7, - "cache_read_input_token_cost_above_200k_tokens": 4e-7, - "cache_creation_input_token_cost_above_200k_tokens": 2.5e-7, - "input_cost_per_token": 0.000002, - "input_cost_per_token_above_200k_tokens": 0.000004, - "input_cost_per_token_batches": 0.000001, + "gemini-3.5-flash": { + "cache_read_input_token_cost": 1.5e-7, + "input_cost_per_audio_token": 0.000001, + "input_cost_per_token": 0.0000015, + "litellm_provider": "vertex_ai-language-models", + "max_input_tokens": 1048576, + "max_output_tokens": 65535, + "max_tokens": 65535, + "mode": "chat", + "output_cost_per_reasoning_token": 0.000009, + "output_cost_per_token": 0.000009, + "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_audio_input": true, + "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_video_input": true, + "supports_vision": true, + "supports_web_search": true, + "supports_native_streaming": true, + "input_cost_per_token_priority": 0.0000027, + "input_cost_per_audio_token_priority": 0.0000018, + "output_cost_per_token_priority": 0.0000162, + "cache_read_input_token_cost_priority": 2.7e-7, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "web_search_billing_unit": "per_query" + }, + "gemini-3.5-flash-lite": { + "cache_read_input_token_cost": 3e-8, + "cache_read_input_token_cost_flex": 2e-8, + "cache_read_input_token_cost_priority": 5e-8, + "input_cost_per_token": 3e-7, + "input_cost_per_token_batches": 1.5e-7, + "input_cost_per_token_flex": 1.5e-7, + "input_cost_per_token_priority": 5.4e-7, "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_token": 0.000012, - "output_cost_per_token_above_200k_tokens": 0.000018, - "output_cost_per_token_batches": 0.000006, - "output_cost_per_image": 0.00012, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#gemini-models", + "output_cost_per_reasoning_token": 0.0000025, + "output_cost_per_token": 0.0000025, + "output_cost_per_token_batches": 0.00000125, + "output_cost_per_token_flex": 0.00000125, + "output_cost_per_token_priority": 0.0000045, + "source": "https://ai.google.dev/gemini-api/docs/pricing", "supported_endpoints": [ "/v1/chat/completions", "/v1/completions", @@ -15661,17 +17036,19 @@ "text" ], "supports_audio_input": true, + "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_video_input": true, "supports_vision": true, "supports_web_search": true, - "supports_url_context": true, "supports_native_streaming": true, "search_context_cost_per_query": { "search_context_size_low": 0.014, @@ -15680,23 +17057,21 @@ }, "web_search_billing_unit": "per_query" }, - "gemini-3.5-flash": { + "gemini-3.6-flash": { "cache_read_input_token_cost": 1.5e-7, - "input_cost_per_audio_token": 0.000001, + "cache_read_input_token_cost_flex": 7.5e-8, "input_cost_per_token": 0.0000015, + "input_cost_per_token_batches": 7.5e-7, + "input_cost_per_token_flex": 7.5e-7, "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, + "max_output_tokens": 65536, + "max_tokens": 65536, "mode": "chat", - "output_cost_per_reasoning_token": 0.000009, - "output_cost_per_token": 0.000009, + "output_cost_per_reasoning_token": 0.0000075, + "output_cost_per_token": 0.0000075, + "output_cost_per_token_batches": 0.00000375, + "output_cost_per_token_flex": 0.00000375, "source": "https://ai.google.dev/pricing/gemini-3", "supported_endpoints": [ "/v1/chat/completions", @@ -15728,10 +17103,8 @@ "supports_web_search": true, "supports_native_streaming": true, "input_cost_per_token_priority": 0.0000027, - "input_cost_per_audio_token_priority": 0.0000018, - "output_cost_per_token_priority": 0.0000162, + "output_cost_per_token_priority": 0.0000135, "cache_read_input_token_cost_priority": 2.7e-7, - "supports_service_tier": true, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -15744,15 +17117,9 @@ "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 3e-7, "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": 0.0000025, "output_cost_per_token": 0.0000025, @@ -15796,15 +17163,9 @@ "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 3e-7, "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": 0.0000025, "output_cost_per_token": 0.0000025, @@ -15848,15 +17209,9 @@ "input_cost_per_audio_token": 3e-7, "input_cost_per_token": 1e-7, "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-7, "output_cost_per_token": 4e-7, @@ -15895,21 +17250,46 @@ "search_context_size_high": 0.035 } }, + "gemini-omni-flash-preview": { + "input_cost_per_audio_token": 0.0000015, + "input_cost_per_token": 0.0000015, + "litellm_provider": "vertex_ai-language-models", + "max_input_tokens": 1048576, + "max_output_tokens": 65535, + "max_tokens": 65535, + "mode": "chat", + "output_cost_per_reasoning_token": 0.000009, + "output_cost_per_token": 0.000009, + "output_cost_per_video_token": 0.0000175, + "source": "https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/omni-flash-preview", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supported_modalities": [ + "text", + "image", + "audio", + "video" + ], + "supported_output_modalities": [ + "text", + "video" + ], + "supports_audio_input": true, + "supports_reasoning": true, + "supports_system_messages": true, + "supports_video_input": true, + "supports_vision": true + }, "gemini-pro-latest": { "cache_read_input_token_cost": 1.25e-7, "cache_read_input_token_cost_above_200k_tokens": 2.5e-7, "input_cost_per_token": 0.00000125, "input_cost_per_token_above_200k_tokens": 0.0000025, "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.00001, "output_cost_per_token_above_200k_tokens": 0.000015, @@ -16029,15 +17409,9 @@ "input_cost_per_audio_token": 7e-7, "input_cost_per_token": 1e-7, "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-7, "rpm": 10000, @@ -16075,15 +17449,9 @@ "input_cost_per_audio_token": 7e-7, "input_cost_per_token": 1e-7, "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-7, "rpm": 10000, @@ -16119,14 +17487,8 @@ "input_cost_per_audio_token": 7.5e-8, "input_cost_per_token": 7.5e-8, "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-7, "rpm": 4000, @@ -16161,14 +17523,8 @@ "input_cost_per_audio_token": 7.5e-8, "input_cost_per_token": 7.5e-8, "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-7, "rpm": 4000, @@ -16201,7 +17557,6 @@ "input_cost_per_token": 0.00000125, "input_cost_per_token_above_200k_tokens": 0.0000025, "litellm_provider": "gemini", - "max_images_per_prompt": 3000, "max_input_tokens": 128000, "max_output_tokens": 64000, "max_tokens": 64000, @@ -16233,15 +17588,9 @@ "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 3e-7, "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": 0.0000025, "output_cost_per_token": 0.0000025, @@ -16279,7 +17628,6 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true, "supports_image_size": false }, "gemini/gemini-2.5-flash-image": { @@ -16287,16 +17635,10 @@ "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 3e-7, "litellm_provider": "gemini", - "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": 0.00003, @@ -16336,7 +17678,6 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true, "supports_image_size": false }, "gemini/gemini-2.5-flash-lite": { @@ -16344,15 +17685,9 @@ "input_cost_per_audio_token": 3e-7, "input_cost_per_token": 1e-7, "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-7, "output_cost_per_token": 4e-7, @@ -16390,7 +17725,6 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, - "supports_service_tier": true, "supports_image_size": false }, "gemini/gemini-2.5-flash-lite-preview-06-17": { @@ -16399,15 +17733,9 @@ "input_cost_per_audio_token": 5e-7, "input_cost_per_token": 1e-7, "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-7, "output_cost_per_token": 4e-7, @@ -16452,15 +17780,9 @@ "input_cost_per_audio_token": 3e-7, "input_cost_per_token": 1e-7, "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-7, "output_cost_per_token": 4e-7, @@ -16524,7 +17846,8 @@ "supports_audio_input": true, "supports_audio_output": true, "tpm": 250000, - "rpm": 10 + "rpm": 10, + "gemini_native_audio": true }, "gemini/gemini-2.5-flash-native-audio-preview-09-2025": { "input_cost_per_audio_token": 0.000001, @@ -16550,7 +17873,8 @@ "supports_audio_input": true, "supports_audio_output": true, "tpm": 250000, - "rpm": 10 + "rpm": 10, + "gemini_native_audio": true }, "gemini/gemini-2.5-flash-native-audio-preview-12-2025": { "input_cost_per_audio_token": 0.000001, @@ -16576,22 +17900,17 @@ "supports_audio_input": true, "supports_audio_output": true, "tpm": 250000, - "rpm": 10 + "rpm": 10, + "gemini_native_audio": true }, "gemini/gemini-2.5-flash-preview-09-2025": { "cache_read_input_token_cost": 7.5e-8, "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 3e-7, "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": 0.0000025, "output_cost_per_token": 0.0000025, @@ -16639,15 +17958,9 @@ "input_cost_per_token_priority": 0.00000125, "input_cost_per_token_above_200k_tokens_priority": 0.0000025, "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.00001, "output_cost_per_token_above_200k_tokens": 0.000015, @@ -16655,7 +17968,6 @@ "output_cost_per_token_above_200k_tokens_priority": 0.000015, "rpm": 2000, "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", - "supports_service_tier": true, "supported_endpoints": [ "/v1/chat/completions", "/v1/completions" @@ -16694,15 +18006,9 @@ "input_cost_per_token": 0.00000125, "input_cost_per_token_above_200k_tokens": 0.0000025, "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.00001, "output_cost_per_token_above_200k_tokens": 0.000015, @@ -16734,15 +18040,9 @@ "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 5e-7, "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": 0.000003, "output_cost_per_token": 0.000003, @@ -16780,7 +18080,6 @@ "input_cost_per_audio_token_priority": 0.0000018, "output_cost_per_token_priority": 0.0000054, "cache_read_input_token_cost_priority": 9e-8, - "supports_service_tier": true, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -16788,6 +18087,49 @@ }, "web_search_billing_unit": "per_query" }, + "gemini/gemini-3-pro-image": { + "input_cost_per_image": 0.0011, + "input_cost_per_token": 0.000002, + "input_cost_per_token_batches": 0.000001, + "litellm_provider": "gemini", + "max_input_tokens": 65536, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "image_generation", + "output_cost_per_image": 0.134, + "output_cost_per_image_token": 0.00012, + "output_cost_per_token": 0.000012, + "rpm": 1000, + "tpm": 4000000, + "output_cost_per_token_batches": 0.000006, + "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-3-pro-image", + "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, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "web_search_billing_unit": "per_query", + "supports_reasoning": false + }, "gemini/gemini-3-pro-image-preview": { "input_cost_per_image": 0.0011, "input_cost_per_token": 0.000002, @@ -16819,6 +18161,7 @@ ], "supports_function_calling": false, "supports_prompt_caching": true, + "supports_reasoning": false, "supports_response_schema": true, "supports_system_messages": true, "supports_vision": true, @@ -16828,8 +18171,7 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, - "web_search_billing_unit": "per_query", - "supports_service_tier": true + "web_search_billing_unit": "per_query" }, "gemini/gemini-3-pro-preview": { "deprecation_date": "2026-03-09", @@ -16839,15 +18181,9 @@ "input_cost_per_token_above_200k_tokens": 0.000004, "input_cost_per_token_batches": 0.000001, "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.000012, "output_cost_per_token_above_200k_tokens": 0.000018, @@ -16886,7 +18222,48 @@ "output_cost_per_token_above_200k_tokens_priority": 0.0000324, "cache_read_input_token_cost_priority": 3.6e-7, "cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-7, - "supports_service_tier": true, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "web_search_billing_unit": "per_query" + }, + "gemini/gemini-3.1-flash-image": { + "input_cost_per_token": 2.5e-7, + "input_cost_per_token_batches": 1.25e-7, + "litellm_provider": "gemini", + "max_input_tokens": 65536, + "max_output_tokens": 32768, + "max_tokens": 32768, + "mode": "image_generation", + "output_cost_per_image": 0.045, + "output_cost_per_image_token": 0.00006, + "output_cost_per_token": 0.0000015, + "output_cost_per_token_batches": 7.5e-7, + "rpm": 1000, + "tpm": 4000000, + "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-3.1-flash-image", + "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_reasoning": false, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_vision": true, + "supports_web_search": true, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -16904,7 +18281,6 @@ "mode": "image_generation", "output_cost_per_image": 0.045, "output_cost_per_image_token": 0.00006, - "output_cost_per_image_token_batches": 0.00003, "output_cost_per_token": 0.0000015, "output_cost_per_token_batches": 7.5e-7, "rpm": 1000, @@ -16925,6 +18301,7 @@ ], "supports_function_calling": false, "supports_prompt_caching": true, + "supports_reasoning": false, "supports_response_schema": true, "supports_system_messages": true, "supports_vision": true, @@ -16938,9 +18315,7 @@ }, "gemini/gemini-3.1-flash-lite": { "cache_read_input_token_cost": 2.5e-8, - "cache_read_input_token_cost_batches": 1.25e-8, "cache_read_input_token_cost_flex": 1.25e-8, - "cache_read_input_token_cost_per_audio_token": 5e-8, "cache_read_input_token_cost_priority": 4.5e-8, "input_cost_per_audio_token": 5e-7, "input_cost_per_token": 2.5e-7, @@ -16948,15 +18323,9 @@ "input_cost_per_token_flex": 1.25e-7, "input_cost_per_token_priority": 4.5e-7, "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": 65536, - "max_video_length": 1, - "max_videos_per_prompt": 10, "mode": "chat", "output_cost_per_reasoning_token": 0.0000015, "output_cost_per_token": 0.0000015, @@ -16981,8 +18350,6 @@ ], "supports_audio_input": true, "supports_audio_output": false, - "supports_code_execution": true, - "supports_file_search": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -17002,24 +18369,16 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, - "web_search_billing_unit": "per_query", - "supports_service_tier": true + "web_search_billing_unit": "per_query" }, "gemini/gemini-3.1-flash-lite-preview": { "cache_read_input_token_cost": 2.5e-8, - "cache_read_input_token_cost_per_audio_token": 5e-8, "input_cost_per_audio_token": 5e-7, "input_cost_per_token": 2.5e-7, "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": 65536, - "max_video_length": 1, - "max_videos_per_prompt": 10, "mode": "chat", "output_cost_per_reasoning_token": 0.0000015, "output_cost_per_token": 0.0000015, @@ -17041,8 +18400,6 @@ ], "supports_audio_input": true, "supports_audio_output": false, - "supports_code_execution": true, - "supports_file_search": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -17062,8 +18419,7 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, - "web_search_billing_unit": "per_query", - "supports_service_tier": true + "web_search_billing_unit": "per_query" }, "gemini/gemini-3.1-flash-live-preview": { "input_cost_per_audio_token": 0.000003, @@ -17097,7 +18453,8 @@ "supports_vision": true, "supports_web_search": true, "tpm": 250000, - "rpm": 10 + "rpm": 10, + "gemini_audio_only_live": true }, "gemini/gemini-3.1-pro-preview": { "cache_read_input_token_cost": 2e-7, @@ -17106,15 +18463,9 @@ "input_cost_per_token_above_200k_tokens": 0.000004, "input_cost_per_token_batches": 0.000001, "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": 65536, - "max_video_length": 1, - "max_videos_per_prompt": 10, "mode": "chat", "output_cost_per_token": 0.000012, "output_cost_per_token_above_200k_tokens": 0.000018, @@ -17155,7 +18506,6 @@ "output_cost_per_token_above_200k_tokens_priority": 0.0000324, "cache_read_input_token_cost_priority": 3.6e-7, "cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-7, - "supports_service_tier": true, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -17163,28 +18513,76 @@ }, "web_search_billing_unit": "per_query" }, - "gemini/gemini-3.1-pro-preview-customtools": { - "cache_read_input_token_cost": 2e-7, - "cache_read_input_token_cost_above_200k_tokens": 4e-7, - "input_cost_per_token": 0.000002, - "input_cost_per_token_above_200k_tokens": 0.000004, - "input_cost_per_token_batches": 0.000001, + "gemini/gemini-3.1-pro-preview-customtools": { + "cache_read_input_token_cost": 2e-7, + "cache_read_input_token_cost_above_200k_tokens": 4e-7, + "input_cost_per_token": 0.000002, + "input_cost_per_token_above_200k_tokens": 0.000004, + "input_cost_per_token_batches": 0.000001, + "litellm_provider": "gemini", + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "max_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 0.000012, + "output_cost_per_token_above_200k_tokens": 0.000018, + "output_cost_per_token_batches": 0.000006, + "rpm": 2000, + "source": "https://ai.google.dev/gemini-api/docs/models#gemini-3.1-pro-preview", + "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, + "supports_url_context": true, + "supports_native_streaming": true, + "tpm": 800000, + "input_cost_per_token_priority": 0.0000036, + "input_cost_per_token_above_200k_tokens_priority": 0.0000072, + "output_cost_per_token_priority": 0.0000216, + "output_cost_per_token_above_200k_tokens_priority": 0.0000324, + "cache_read_input_token_cost_priority": 3.6e-7, + "cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-7, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "web_search_billing_unit": "per_query" + }, + "gemini/gemini-3.5-flash": { + "cache_read_input_token_cost": 1.5e-7, + "input_cost_per_audio_token": 0.000001, + "input_cost_per_token": 0.0000015, "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": 65536, - "max_video_length": 1, - "max_videos_per_prompt": 10, + "max_output_tokens": 65535, + "max_tokens": 65535, "mode": "chat", - "output_cost_per_token": 0.000012, - "output_cost_per_token_above_200k_tokens": 0.000018, - "output_cost_per_token_batches": 0.000006, + "output_cost_per_reasoning_token": 0.000009, + "output_cost_per_token": 0.000009, "rpm": 2000, - "source": "https://ai.google.dev/gemini-api/docs/models#gemini-3.1-pro-preview", + "source": "https://ai.google.dev/pricing/gemini-3", "supported_endpoints": [ "/v1/chat/completions", "/v1/completions", @@ -17199,27 +18597,26 @@ "supported_output_modalities": [ "text" ], + "supports_audio_output": false, "supports_audio_input": true, "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_video_input": true, "supports_vision": true, "supports_web_search": true, - "supports_url_context": true, "supports_native_streaming": true, "tpm": 800000, - "input_cost_per_token_priority": 0.0000036, - "input_cost_per_token_above_200k_tokens_priority": 0.0000072, - "output_cost_per_token_priority": 0.0000216, - "output_cost_per_token_above_200k_tokens_priority": 0.0000324, - "cache_read_input_token_cost_priority": 3.6e-7, - "cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-7, - "supports_service_tier": true, + "input_cost_per_token_priority": 0.0000027, + "input_cost_per_audio_token_priority": 0.0000018, + "output_cost_per_token_priority": 0.0000162, + "cache_read_input_token_cost_priority": 2.7e-7, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -17227,23 +18624,78 @@ }, "web_search_billing_unit": "per_query" }, - "gemini/gemini-3.5-flash": { + "gemini/gemini-3.5-flash-lite": { + "cache_read_input_token_cost": 3e-8, + "cache_read_input_token_cost_flex": 2e-8, + "cache_read_input_token_cost_priority": 5e-8, + "input_cost_per_token": 3e-7, + "input_cost_per_token_batches": 1.5e-7, + "input_cost_per_token_flex": 1.5e-7, + "input_cost_per_token_priority": 5.4e-7, + "litellm_provider": "gemini", + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "max_tokens": 65536, + "mode": "chat", + "output_cost_per_reasoning_token": 0.0000025, + "output_cost_per_token": 0.0000025, + "output_cost_per_token_batches": 0.00000125, + "output_cost_per_token_flex": 0.00000125, + "output_cost_per_token_priority": 0.0000045, + "rpm": 15, + "source": "https://ai.google.dev/gemini-api/docs/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_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_video_input": true, + "supports_vision": true, + "supports_web_search": true, + "supports_native_streaming": true, + "tpm": 250000, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "web_search_billing_unit": "per_query" + }, + "gemini/gemini-3.6-flash": { "cache_read_input_token_cost": 1.5e-7, - "input_cost_per_audio_token": 0.000001, + "cache_read_input_token_cost_flex": 7.5e-8, "input_cost_per_token": 0.0000015, + "input_cost_per_token_batches": 7.5e-7, + "input_cost_per_token_flex": 7.5e-7, "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, + "max_output_tokens": 65536, + "max_tokens": 65536, "mode": "chat", - "output_cost_per_reasoning_token": 0.000009, - "output_cost_per_token": 0.000009, + "output_cost_per_reasoning_token": 0.0000075, + "output_cost_per_token": 0.0000075, + "output_cost_per_token_batches": 0.00000375, + "output_cost_per_token_flex": 0.00000375, "rpm": 2000, "source": "https://ai.google.dev/pricing/gemini-3", "supported_endpoints": [ @@ -17277,10 +18729,8 @@ "supports_native_streaming": true, "tpm": 800000, "input_cost_per_token_priority": 0.0000027, - "input_cost_per_audio_token_priority": 0.0000018, - "output_cost_per_token_priority": 0.0000162, + "output_cost_per_token_priority": 0.0000135, "cache_read_input_token_cost_priority": 2.7e-7, - "supports_service_tier": true, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -17292,15 +18742,9 @@ "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 @@ -17321,15 +18765,9 @@ "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 @@ -17351,15 +18789,9 @@ "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 3e-7, "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": 0.0000025, "output_cost_per_token": 0.0000025, @@ -17403,15 +18835,9 @@ "input_cost_per_audio_token": 3e-7, "input_cost_per_token": 1e-7, "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-7, "output_cost_per_token": 4e-7, @@ -17478,21 +18904,48 @@ "tpm": 250000, "rpm": 10 }, + "gemini/gemini-omni-flash-preview": { + "input_cost_per_audio_token": 0.0000015, + "input_cost_per_token": 0.0000015, + "litellm_provider": "gemini", + "max_input_tokens": 1048576, + "max_output_tokens": 65535, + "max_tokens": 65535, + "mode": "chat", + "output_cost_per_reasoning_token": 0.000009, + "output_cost_per_token": 0.000009, + "output_cost_per_video_token": 0.0000175, + "rpm": 2000, + "source": "https://ai.google.dev/gemini-api/docs/pricing", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supported_modalities": [ + "text", + "image", + "audio", + "video" + ], + "supported_output_modalities": [ + "text", + "video" + ], + "supports_audio_input": true, + "supports_reasoning": true, + "supports_system_messages": true, + "supports_video_input": true, + "supports_vision": true, + "tpm": 800000 + }, "gemini/gemini-pro-latest": { "cache_read_input_token_cost": 1.25e-7, "cache_read_input_token_cost_above_200k_tokens": 2.5e-7, "input_cost_per_token": 0.00000125, "input_cost_per_token_above_200k_tokens": 0.0000025, "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.00001, "output_cost_per_token_above_200k_tokens": 0.000015, @@ -17741,6 +19194,7 @@ "supports_output_config": true }, "github_copilot/claude-opus-4.6-fast": { + "supports_adaptive_thinking": true, "litellm_provider": "github_copilot", "max_input_tokens": 128000, "max_output_tokens": 16000, @@ -18066,6 +19520,7 @@ "search_context_size_medium": 0.01 }, "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, "supports_assistant_prefill": false, "supports_computer_use": true, "supports_function_calling": true, @@ -18080,7 +19535,9 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "global.anthropic.claude-haiku-4-5-20251001-v1:0": { "cache_creation_input_token_cost": 0.00000125, @@ -18103,7 +19560,9 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "global.anthropic.claude-opus-4-5-20251101-v1:0": { "cache_creation_input_token_cost": 0.00000625, @@ -18132,9 +19591,12 @@ "supports_vision": true, "supports_native_structured_output": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "high" + "bedrock_output_config_effort_ceiling": "high", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "global.anthropic.claude-opus-4-6-v1": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_read_input_token_cost": 5e-7, @@ -18162,9 +19624,13 @@ "supports_native_structured_output": true, "supports_output_config": true, "supports_max_reasoning_effort": true, - "bedrock_output_config_effort_ceiling": "max" + "bedrock_output_config_effort_ceiling": "max", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "global.anthropic.claude-opus-4-7": { + "bedrock_converse_supports_strict_tools": false, + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_read_input_token_cost": 5e-7, @@ -18194,9 +19660,14 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 2048 }, "global.anthropic.claude-opus-4-8": { + "bedrock_converse_supports_strict_tools": false, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_read_input_token_cost": 5e-7, @@ -18212,7 +19683,43 @@ "search_context_size_low": 0.01, "search_context_size_medium": 0.01 }, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": true, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 + }, + "global.anthropic.claude-opus-5": { + "bedrock_converse_supports_strict_tools": false, "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_1hr": 0.00001, + "cache_read_input_token_cost": 5e-7, + "input_cost_per_token": 0.000005, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000025, + "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": false, "supports_computer_use": true, "supports_function_calling": true, @@ -18227,7 +19734,8 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512 }, "global.anthropic.claude-sonnet-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00000375, @@ -18256,7 +19764,9 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "bedrock_converse_supports_strict_tools": false, + "prompt_cache_min_tokens": 1024 }, "global.anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.00000375, @@ -18288,9 +19798,12 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "global.anthropic.claude-sonnet-4-6": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000375, "cache_creation_input_token_cost_above_1hr": 0.000006, "cache_read_input_token_cost": 3e-7, @@ -18317,7 +19830,45 @@ "supports_tool_choice": true, "supports_vision": true, "supports_native_structured_output": true, - "supports_output_config": true + "supports_output_config": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 + }, + "global.anthropic.claude-sonnet-5": { + "cache_creation_input_token_cost": 0.0000025, + "cache_creation_input_token_cost_above_1hr": 0.000004, + "cache_read_input_token_cost": 2e-7, + "input_cost_per_token": 0.000002, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.00001, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": true, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "gmi/MiniMaxAI/MiniMax-M2.1": { "input_cost_per_token": 3e-7, @@ -18712,8 +20263,6 @@ "output_cost_per_token": 0.000008, "output_cost_per_token_batches": 0.000004, "output_cost_per_token_priority": 0.000014, - "regional_processing_uplift_multiplier_eu": 1.1, - "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -18734,7 +20283,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true }, @@ -18769,7 +20317,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true }, @@ -18787,8 +20334,6 @@ "output_cost_per_token": 0.0000016, "output_cost_per_token_batches": 8e-7, "output_cost_per_token_priority": 0.0000028, - "regional_processing_uplift_multiplier_eu": 1.1, - "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -18809,7 +20354,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true }, @@ -18844,7 +20388,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true }, @@ -18862,8 +20405,6 @@ "output_cost_per_token": 4e-7, "output_cost_per_token_batches": 2e-7, "output_cost_per_token_priority": 8e-7, - "regional_processing_uplift_multiplier_eu": 1.1, - "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -18884,7 +20425,6 @@ "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": { @@ -18918,7 +20458,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true }, "gpt-4o": { @@ -18935,8 +20474,6 @@ "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, "output_cost_per_token_priority": 0.000017, - "regional_processing_uplift_multiplier_eu": 1.1, - "regional_processing_uplift_multiplier_us": 1.1, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -18944,7 +20481,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true }, "gpt-4o-2024-05-13": { @@ -18978,8 +20514,6 @@ "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, - "regional_processing_uplift_multiplier_eu": 1.1, - "regional_processing_uplift_multiplier_us": 1.1, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -18987,7 +20521,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true }, "gpt-4o-2024-11-20": { @@ -19001,8 +20534,6 @@ "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, - "regional_processing_uplift_multiplier_eu": 1.1, - "regional_processing_uplift_multiplier_us": 1.1, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -19010,7 +20541,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true }, "gpt-4o-audio-preview": { @@ -19078,8 +20608,6 @@ "output_cost_per_token": 6e-7, "output_cost_per_token_batches": 3e-7, "output_cost_per_token_priority": 0.000001, - "regional_processing_uplift_multiplier_eu": 1.1, - "regional_processing_uplift_multiplier_us": 1.1, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -19087,7 +20615,6 @@ "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": { @@ -19113,7 +20640,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true }, "gpt-4o-mini-audio-preview": { @@ -19150,44 +20676,6 @@ "supports_system_messages": true, "supports_tool_choice": true }, - "gpt-4o-mini-realtime-preview": { - "cache_creation_input_audio_token_cost": 3e-7, - "cache_read_input_token_cost": 3e-7, - "input_cost_per_audio_token": 0.00001, - "input_cost_per_token": 6e-7, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.00002, - "output_cost_per_token": 0.0000024, - "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-7, - "cache_read_input_token_cost": 3e-7, - "input_cost_per_audio_token": 0.00001, - "input_cost_per_token": 6e-7, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.00002, - "output_cost_per_token": 0.0000024, - "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-8, "input_cost_per_token": 1.5e-7, @@ -19234,60 +20722,6 @@ "supports_tool_choice": true, "supports_vision": true }, - "gpt-4o-realtime-preview": { - "cache_read_input_token_cost": 0.0000025, - "input_cost_per_audio_token": 0.00004, - "input_cost_per_token": 0.000005, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.00008, - "output_cost_per_token": 0.00002, - "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": 0.0000025, - "input_cost_per_audio_token": 0.00004, - "input_cost_per_token": 0.000005, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.00008, - "output_cost_per_token": 0.00002, - "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": 0.0000025, - "input_cost_per_audio_token": 0.00004, - "input_cost_per_token": 0.000005, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.00008, - "output_cost_per_token": 0.00002, - "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": 0.00000125, "input_cost_per_token": 0.0000025, @@ -19349,8 +20783,6 @@ "output_cost_per_token": 0.00001, "output_cost_per_token_flex": 0.000005, "output_cost_per_token_priority": 0.00002, - "regional_processing_uplift_multiplier_eu": 1.1, - "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -19372,7 +20804,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": false, @@ -19415,7 +20846,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": false, @@ -19507,8 +20937,6 @@ "output_cost_per_token": 0.000002, "output_cost_per_token_flex": 0.000001, "output_cost_per_token_priority": 0.0000036, - "regional_processing_uplift_multiplier_eu": 1.1, - "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -19530,7 +20958,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": false, @@ -19573,7 +21000,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": false, @@ -19590,8 +21016,6 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "regional_processing_uplift_multiplier_eu": 1.1, - "regional_processing_uplift_multiplier_us": 1.1, "mode": "chat", "output_cost_per_token": 4e-7, "output_cost_per_token_flex": 2e-7, @@ -19737,7 +21161,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -19777,7 +21200,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -19857,7 +21279,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -19898,7 +21319,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -20001,6 +21421,8 @@ "output_cost_per_token_flex": 0.0000075, "output_cost_per_token_batches": 0.0000075, "output_cost_per_token_priority": 0.00003, + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -20022,7 +21444,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, @@ -20048,6 +21469,8 @@ "output_cost_per_token_flex": 0.0000075, "output_cost_per_token_batches": 0.0000075, "output_cost_per_token_priority": 0.00003, + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -20069,20 +21492,18 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true }, "gpt-5.4-mini": { "cache_read_input_token_cost": 7.5e-8, "cache_read_input_token_cost_flex": 3.75e-8, - "cache_read_input_token_cost_batches": 3.75e-8, "cache_read_input_token_cost_priority": 1.5e-7, "input_cost_per_token": 7.5e-7, "input_cost_per_token_flex": 3.75e-7, "input_cost_per_token_batches": 3.75e-7, "input_cost_per_token_priority": 0.0000015, "litellm_provider": "openai", - "max_input_tokens": 272000, + "max_input_tokens": 1050000, "max_output_tokens": 128000, "max_tokens": 128000, "mode": "chat", @@ -20090,6 +21511,8 @@ "output_cost_per_token_flex": 0.00000225, "output_cost_per_token_batches": 0.00000225, "output_cost_per_token_priority": 0.000009, + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -20111,7 +21534,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -20121,14 +21543,13 @@ "gpt-5.4-mini-2026-03-17": { "cache_read_input_token_cost": 7.5e-8, "cache_read_input_token_cost_flex": 3.75e-8, - "cache_read_input_token_cost_batches": 3.75e-8, "cache_read_input_token_cost_priority": 1.5e-7, "input_cost_per_token": 7.5e-7, "input_cost_per_token_flex": 3.75e-7, "input_cost_per_token_batches": 3.75e-7, "input_cost_per_token_priority": 0.0000015, "litellm_provider": "openai", - "max_input_tokens": 272000, + "max_input_tokens": 1050000, "max_output_tokens": 128000, "max_tokens": 128000, "mode": "chat", @@ -20136,6 +21557,8 @@ "output_cost_per_token_flex": 0.00000225, "output_cost_per_token_batches": 0.00000225, "output_cost_per_token_priority": 0.000009, + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -20157,7 +21580,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -20167,18 +21589,19 @@ "gpt-5.4-nano": { "cache_read_input_token_cost": 2e-8, "cache_read_input_token_cost_flex": 1e-8, - "cache_read_input_token_cost_batches": 1e-8, "input_cost_per_token": 2e-7, "input_cost_per_token_flex": 1e-7, "input_cost_per_token_batches": 1e-7, "litellm_provider": "openai", - "max_input_tokens": 272000, + "max_input_tokens": 1050000, "max_output_tokens": 128000, "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000125, "output_cost_per_token_flex": 6.25e-7, "output_cost_per_token_batches": 6.25e-7, + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -20200,7 +21623,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -20210,18 +21632,19 @@ "gpt-5.4-nano-2026-03-17": { "cache_read_input_token_cost": 2e-8, "cache_read_input_token_cost_flex": 1e-8, - "cache_read_input_token_cost_batches": 1e-8, "input_cost_per_token": 2e-7, "input_cost_per_token_flex": 1e-7, "input_cost_per_token_batches": 1e-7, "litellm_provider": "openai", - "max_input_tokens": 272000, + "max_input_tokens": 1050000, "max_output_tokens": 128000, "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000125, "output_cost_per_token_flex": 6.25e-7, "output_cost_per_token_batches": 6.25e-7, + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -20243,7 +21666,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -20270,6 +21692,8 @@ "output_cost_per_token_flex": 0.000015, "output_cost_per_token_batches": 0.000015, "output_cost_per_token_priority": 0.00006, + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -20291,7 +21715,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, @@ -20318,6 +21741,8 @@ "output_cost_per_token_flex": 0.000015, "output_cost_per_token_batches": 0.000015, "output_cost_per_token_priority": 0.00006, + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -20339,200 +21764,234 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": true, "supports_xhigh_reasoning_effort": true, "supports_minimal_reasoning_effort": false }, - "gpt-audio": { - "input_cost_per_audio_token": 0.000032, - "input_cost_per_token": 0.0000025, + "gpt-5.6": { + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_272k_tokens": 0.0000125, + "cache_creation_input_token_cost_flex": 0.000003125, + "cache_creation_input_token_cost_priority": 0.0000125, + "cache_read_input_token_cost": 5e-7, + "cache_read_input_token_cost_above_272k_tokens": 0.000001, + "cache_read_input_token_cost_flex": 2.5e-7, + "cache_read_input_token_cost_priority": 0.000001, + "input_cost_per_token": 0.000005, + "input_cost_per_token_above_272k_tokens": 0.00001, + "input_cost_per_token_batches": 0.0000025, + "input_cost_per_token_flex": 0.0000025, + "input_cost_per_token_priority": 0.00001, "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", - "output_cost_per_audio_token": 0.000064, - "output_cost_per_token": 0.00001, + "output_cost_per_token": 0.00003, + "output_cost_per_token_above_272k_tokens": 0.000045, + "output_cost_per_token_batches": 0.000015, + "output_cost_per_token_flex": 0.000015, + "output_cost_per_token_priority": 0.00006, + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", - "/v1/responses", - "/v1/realtime", - "/v1/batch" - ], - "supported_modalities": [ - "text", - "audio" - ], - "supported_output_modalities": [ - "text", - "audio" - ], - "supports_audio_input": true, - "supports_audio_output": true, - "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 - }, - "gpt-audio-1.5": { - "input_cost_per_audio_token": 0.000032, - "input_cost_per_token": 0.0000025, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_audio_token": 0.000064, - "output_cost_per_token": 0.00001, - "supported_endpoints": [ - "/v1/chat/completions" + "/v1/batch", + "/v1/responses" ], "supported_modalities": [ "text", - "audio" + "image" ], "supported_output_modalities": [ - "text", - "audio" + "text" ], - "supports_audio_input": true, - "supports_audio_output": true, "supports_function_calling": true, + "supports_minimal_reasoning_effort": false, "supports_native_streaming": true, + "supports_none_reasoning_effort": true, "supports_parallel_function_calling": true, - "supports_prompt_caching": false, - "supports_reasoning": false, - "supports_response_schema": false, + "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": false + "supports_vision": true, + "supports_web_search": true, + "supports_xhigh_reasoning_effort": true }, - "gpt-audio-2025-08-28": { - "input_cost_per_audio_token": 0.000032, - "input_cost_per_token": 0.0000025, + "gpt-5.6-luna": { + "cache_creation_input_token_cost": 0.00000125, + "cache_creation_input_token_cost_above_272k_tokens": 0.0000025, + "cache_creation_input_token_cost_flex": 6.25e-7, + "cache_creation_input_token_cost_priority": 0.0000025, + "cache_read_input_token_cost": 1e-7, + "cache_read_input_token_cost_above_272k_tokens": 2e-7, + "cache_read_input_token_cost_flex": 5e-8, + "cache_read_input_token_cost_priority": 2e-7, + "input_cost_per_token": 0.000001, + "input_cost_per_token_above_272k_tokens": 0.000002, + "input_cost_per_token_batches": 5e-7, + "input_cost_per_token_flex": 5e-7, + "input_cost_per_token_priority": 0.000002, "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", - "output_cost_per_audio_token": 0.000064, - "output_cost_per_token": 0.00001, + "output_cost_per_token": 0.000006, + "output_cost_per_token_above_272k_tokens": 0.000009, + "output_cost_per_token_batches": 0.000003, + "output_cost_per_token_flex": 0.000003, + "output_cost_per_token_priority": 0.000012, + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", - "/v1/responses", - "/v1/realtime", - "/v1/batch" + "/v1/batch", + "/v1/responses" ], "supported_modalities": [ "text", - "audio" + "image" ], "supported_output_modalities": [ - "text", - "audio" + "text" ], - "supports_audio_input": true, - "supports_audio_output": true, "supports_function_calling": true, + "supports_minimal_reasoning_effort": false, "supports_native_streaming": true, + "supports_none_reasoning_effort": true, "supports_parallel_function_calling": true, - "supports_prompt_caching": false, - "supports_reasoning": false, - "supports_response_schema": false, + "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": false + "supports_vision": true, + "supports_web_search": true, + "supports_xhigh_reasoning_effort": true }, - "gpt-audio-mini": { - "input_cost_per_audio_token": 0.00001, - "input_cost_per_token": 6e-7, + "gpt-5.6-sol": { + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_272k_tokens": 0.0000125, + "cache_creation_input_token_cost_flex": 0.000003125, + "cache_creation_input_token_cost_priority": 0.0000125, + "cache_read_input_token_cost": 5e-7, + "cache_read_input_token_cost_above_272k_tokens": 0.000001, + "cache_read_input_token_cost_flex": 2.5e-7, + "cache_read_input_token_cost_priority": 0.000001, + "input_cost_per_token": 0.000005, + "input_cost_per_token_above_272k_tokens": 0.00001, + "input_cost_per_token_batches": 0.0000025, + "input_cost_per_token_flex": 0.0000025, + "input_cost_per_token_priority": 0.00001, "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", - "output_cost_per_audio_token": 0.00002, - "output_cost_per_token": 0.0000024, + "output_cost_per_token": 0.00003, + "output_cost_per_token_above_272k_tokens": 0.000045, + "output_cost_per_token_batches": 0.000015, + "output_cost_per_token_flex": 0.000015, + "output_cost_per_token_priority": 0.00006, + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", - "/v1/responses", - "/v1/realtime", - "/v1/batch" + "/v1/batch", + "/v1/responses" ], "supported_modalities": [ "text", - "audio" + "image" ], "supported_output_modalities": [ - "text", - "audio" + "text" ], - "supports_audio_input": true, - "supports_audio_output": true, "supports_function_calling": true, + "supports_minimal_reasoning_effort": false, "supports_native_streaming": true, + "supports_none_reasoning_effort": true, "supports_parallel_function_calling": true, - "supports_prompt_caching": false, - "supports_reasoning": false, - "supports_response_schema": false, + "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": false + "supports_vision": true, + "supports_web_search": true, + "supports_xhigh_reasoning_effort": true }, - "gpt-audio-mini-2025-10-06": { - "input_cost_per_audio_token": 0.00001, - "input_cost_per_token": 6e-7, + "gpt-5.6-terra": { + "cache_creation_input_token_cost": 0.000003125, + "cache_creation_input_token_cost_above_272k_tokens": 0.00000625, + "cache_creation_input_token_cost_flex": 0.0000015625, + "cache_creation_input_token_cost_priority": 0.00000625, + "cache_read_input_token_cost": 2.5e-7, + "cache_read_input_token_cost_above_272k_tokens": 5e-7, + "cache_read_input_token_cost_flex": 1.25e-7, + "cache_read_input_token_cost_priority": 5e-7, + "input_cost_per_token": 0.0000025, + "input_cost_per_token_above_272k_tokens": 0.000005, + "input_cost_per_token_batches": 0.00000125, + "input_cost_per_token_flex": 0.00000125, + "input_cost_per_token_priority": 0.000005, "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", - "output_cost_per_audio_token": 0.00002, - "output_cost_per_token": 0.0000024, + "output_cost_per_token": 0.000015, + "output_cost_per_token_above_272k_tokens": 0.0000225, + "output_cost_per_token_batches": 0.0000075, + "output_cost_per_token_flex": 0.0000075, + "output_cost_per_token_priority": 0.00003, + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ "/v1/chat/completions", - "/v1/responses", - "/v1/realtime", - "/v1/batch" + "/v1/batch", + "/v1/responses" ], "supported_modalities": [ "text", - "audio" + "image" ], "supported_output_modalities": [ - "text", - "audio" + "text" ], - "supports_audio_input": true, - "supports_audio_output": true, "supports_function_calling": true, + "supports_minimal_reasoning_effort": false, "supports_native_streaming": true, + "supports_none_reasoning_effort": true, "supports_parallel_function_calling": true, - "supports_prompt_caching": false, - "supports_reasoning": false, - "supports_response_schema": false, + "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": false + "supports_vision": true, + "supports_web_search": true, + "supports_xhigh_reasoning_effort": true }, - "gpt-audio-mini-2025-12-15": { - "input_cost_per_audio_token": 0.00001, - "input_cost_per_token": 6e-7, + "gpt-audio": { + "input_cost_per_audio_token": 0.000032, + "input_cost_per_token": 0.0000025, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, "max_tokens": 16384, "mode": "chat", - "output_cost_per_audio_token": 0.00002, - "output_cost_per_token": 0.0000024, + "output_cost_per_audio_token": 0.000064, + "output_cost_per_token": 0.00001, "supported_endpoints": [ "/v1/chat/completions", "/v1/responses", @@ -20559,89 +22018,21 @@ "supports_tool_choice": true, "supports_vision": false }, - "gpt-realtime": { - "cache_creation_input_audio_token_cost": 4e-7, - "cache_read_input_token_cost": 4e-7, - "input_cost_per_audio_token": 0.000032, - "input_cost_per_image": 0.000005, - "input_cost_per_token": 0.000004, - "litellm_provider": "openai", - "max_input_tokens": 32000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.000064, - "output_cost_per_token": 0.000016, - "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-1.5": { - "cache_creation_input_audio_token_cost": 4e-7, - "cache_read_input_token_cost": 4e-7, - "input_cost_per_audio_token": 0.000032, - "input_cost_per_image": 0.000005, - "input_cost_per_token": 0.000004, - "litellm_provider": "openai", - "max_input_tokens": 32000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_audio_token": 0.000064, - "output_cost_per_token": 0.000016, - "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-2": { - "cache_creation_input_audio_token_cost": 4e-7, - "cache_read_input_token_cost": 4e-7, + "gpt-audio-1.5": { "input_cost_per_audio_token": 0.000032, - "input_cost_per_image": 0.000005, - "input_cost_per_token": 0.000004, + "input_cost_per_token": 0.0000025, "litellm_provider": "openai", - "max_input_tokens": 32000, - "max_output_tokens": 4096, - "max_tokens": 4096, + "max_input_tokens": 128000, + "max_output_tokens": 16384, + "max_tokens": 16384, "mode": "chat", "output_cost_per_audio_token": 0.000064, - "output_cost_per_token": 0.000016, + "output_cost_per_token": 0.00001, "supported_endpoints": [ - "/v1/realtime" + "/v1/chat/completions" ], "supported_modalities": [ "text", - "image", "audio" ], "supported_output_modalities": [ @@ -20651,29 +22042,33 @@ "supports_audio_input": true, "supports_audio_output": true, "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_tool_choice": true, + "supports_vision": false }, - "gpt-realtime-2025-08-28": { - "cache_creation_input_audio_token_cost": 4e-7, - "cache_read_input_token_cost": 4e-7, + "gpt-audio-2025-08-28": { "input_cost_per_audio_token": 0.000032, - "input_cost_per_image": 0.000005, - "input_cost_per_token": 0.000004, + "input_cost_per_token": 0.0000025, "litellm_provider": "openai", - "max_input_tokens": 32000, - "max_output_tokens": 4096, - "max_tokens": 4096, + "max_input_tokens": 128000, + "max_output_tokens": 16384, + "max_tokens": 16384, "mode": "chat", "output_cost_per_audio_token": 0.000064, - "output_cost_per_token": 0.000016, + "output_cost_per_token": 0.00001, "supported_endpoints": [ - "/v1/realtime" + "/v1/chat/completions", + "/v1/responses", + "/v1/realtime", + "/v1/batch" ], "supported_modalities": [ "text", - "image", "audio" ], "supported_output_modalities": [ @@ -20683,28 +22078,33 @@ "supports_audio_input": true, "supports_audio_output": true, "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_tool_choice": true, + "supports_vision": false }, - "gpt-realtime-mini": { - "cache_creation_input_audio_token_cost": 3e-7, - "cache_read_input_audio_token_cost": 3e-7, + "gpt-audio-mini": { "input_cost_per_audio_token": 0.00001, "input_cost_per_token": 6e-7, "litellm_provider": "openai", "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, + "max_output_tokens": 16384, + "max_tokens": 16384, "mode": "chat", "output_cost_per_audio_token": 0.00002, "output_cost_per_token": 0.0000024, "supported_endpoints": [ - "/v1/realtime" + "/v1/chat/completions", + "/v1/responses", + "/v1/realtime", + "/v1/batch" ], "supported_modalities": [ "text", - "image", "audio" ], "supported_output_modalities": [ @@ -20714,30 +22114,33 @@ "supports_audio_input": true, "supports_audio_output": true, "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_tool_choice": true, + "supports_vision": false }, - "gpt-realtime-mini-2025-10-06": { - "cache_creation_input_audio_token_cost": 3e-7, - "cache_read_input_audio_token_cost": 3e-7, - "cache_read_input_token_cost": 6e-8, + "gpt-audio-mini-2025-10-06": { "input_cost_per_audio_token": 0.00001, - "input_cost_per_image": 8e-7, "input_cost_per_token": 6e-7, "litellm_provider": "openai", "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, + "max_output_tokens": 16384, + "max_tokens": 16384, "mode": "chat", "output_cost_per_audio_token": 0.00002, "output_cost_per_token": 0.0000024, "supported_endpoints": [ - "/v1/realtime" + "/v1/chat/completions", + "/v1/responses", + "/v1/realtime", + "/v1/batch" ], "supported_modalities": [ "text", - "image", "audio" ], "supported_output_modalities": [ @@ -20747,30 +22150,33 @@ "supports_audio_input": true, "supports_audio_output": true, "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_tool_choice": true, + "supports_vision": false }, - "gpt-realtime-mini-2025-12-15": { - "cache_creation_input_audio_token_cost": 3e-7, - "cache_read_input_audio_token_cost": 3e-7, - "cache_read_input_token_cost": 6e-8, + "gpt-audio-mini-2025-12-15": { "input_cost_per_audio_token": 0.00001, - "input_cost_per_image": 8e-7, "input_cost_per_token": 6e-7, "litellm_provider": "openai", "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, + "max_output_tokens": 16384, + "max_tokens": 16384, "mode": "chat", "output_cost_per_audio_token": 0.00002, "output_cost_per_token": 0.0000024, "supported_endpoints": [ - "/v1/realtime" + "/v1/chat/completions", + "/v1/responses", + "/v1/realtime", + "/v1/batch" ], "supported_modalities": [ "text", - "image", "audio" ], "supported_output_modalities": [ @@ -20780,9 +22186,14 @@ "supports_audio_input": true, "supports_audio_output": true, "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_tool_choice": true, + "supports_vision": false }, "gradient_ai/alibaba-qwen3-32b": { "litellm_provider": "gradient_ai", @@ -21504,9 +22915,12 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "jp.anthropic.claude-opus-4-7": { + "bedrock_converse_supports_strict_tools": false, "cache_creation_input_token_cost": 0.000006875, "cache_read_input_token_cost": 5.5e-7, "input_cost_per_token": 0.0000055, @@ -21521,6 +22935,7 @@ "search_context_size_low": 0.01, "search_context_size_medium": 0.01 }, + "supports_adaptive_thinking": true, "supports_assistant_prefill": false, "supports_computer_use": true, "supports_function_calling": true, @@ -21532,10 +22947,84 @@ "supports_tool_choice": true, "supports_vision": true, "supports_xhigh_reasoning_effort": true, - "tool_use_system_prompt_tokens": 346, "supports_native_structured_output": true, "supports_max_reasoning_effort": true, - "supports_minimal_reasoning_effort": true + "supports_minimal_reasoning_effort": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 2048 + }, + "jp.anthropic.claude-opus-4-8": { + "bedrock_converse_supports_strict_tools": false, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "cache_creation_input_token_cost": 0.000006875, + "cache_creation_input_token_cost_above_1hr": 0.000011, + "cache_read_input_token_cost": 5.5e-7, + "input_cost_per_token": 0.0000055, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000275, + "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": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": true, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 + }, + "jp.anthropic.claude-opus-5": { + "bedrock_converse_supports_strict_tools": false, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "cache_creation_input_token_cost": 0.000006875, + "cache_creation_input_token_cost_above_1hr": 0.000011, + "cache_read_input_token_cost": 5.5e-7, + "input_cost_per_token": 0.0000055, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000275, + "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": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": true, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512 }, "jp.anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.000004125, @@ -21567,9 +23056,12 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "jp.anthropic.claude-sonnet-4-6": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.000004125, "cache_creation_input_token_cost_above_1hr": 0.0000066, "cache_read_input_token_cost": 3.3e-7, @@ -21596,7 +23088,45 @@ "supports_tool_choice": true, "supports_vision": true, "supports_native_structured_output": true, - "supports_output_config": true + "supports_output_config": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 + }, + "jp.anthropic.claude-sonnet-5": { + "cache_creation_input_token_cost": 0.00000275, + "cache_creation_input_token_cost_above_1hr": 0.0000044, + "cache_read_input_token_cost": 2.2e-7, + "input_cost_per_token": 0.0000022, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000011, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": true, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "kimi-k2-thinking-251104": { "input_cost_per_token": 0, @@ -22445,6 +23975,42 @@ "supports_function_calling": true, "supports_tool_choice": false }, + "meta/muse-spark-1.1": { + "cache_read_input_token_cost": 1.5e-7, + "input_cost_per_token": 0.00000125, + "litellm_provider": "meta", + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "max_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 0.00000425, + "source": "https://dev.meta.ai/docs/getting-started/pricing-rate-limits", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses", + "/v1/messages" + ], + "supported_modalities": [ + "text", + "image", + "video" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_minimal_reasoning_effort": 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, + "supports_xhigh_reasoning_effort": true + }, "meta_llama/Llama-3.3-70B-Instruct": { "litellm_provider": "meta_llama", "max_input_tokens": 128000, @@ -23252,6 +24818,37 @@ "supports_response_schema": true, "supports_tool_choice": true }, + "mistral/mistral-medium-2508": { + "input_cost_per_token": 4e-7, + "litellm_provider": "mistral", + "max_input_tokens": 131072, + "max_output_tokens": 131072, + "max_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 0.000002, + "source": "https://mistral.ai/news/mistral-medium-3", + "supports_assistant_prefill": true, + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "mistral/mistral-medium-2604": { + "input_cost_per_token": 0.0000015, + "litellm_provider": "mistral", + "max_input_tokens": 262144, + "max_output_tokens": 262144, + "max_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 0.0000075, + "source": "https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04", + "supports_assistant_prefill": true, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, "mistral/mistral-medium-3-1-2508": { "input_cost_per_token": 4e-7, "litellm_provider": "mistral", @@ -23278,20 +24875,23 @@ "source": "https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04", "supports_assistant_prefill": true, "supports_function_calling": true, + "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true }, "mistral/mistral-medium-latest": { - "input_cost_per_token": 4e-7, + "input_cost_per_token": 0.0000015, "litellm_provider": "mistral", - "max_input_tokens": 131072, - "max_output_tokens": 131072, - "max_tokens": 131072, + "max_input_tokens": 262144, + "max_output_tokens": 262144, + "max_tokens": 262144, "mode": "chat", - "output_cost_per_token": 0.000002, + "output_cost_per_token": 0.0000075, + "source": "https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04", "supports_assistant_prefill": true, "supports_function_calling": true, + "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true @@ -25472,7 +27072,6 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true }, @@ -25505,7 +27104,6 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true }, @@ -25633,7 +27231,6 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true }, @@ -25653,7 +27250,6 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true }, @@ -26558,6 +28154,7 @@ "supports_output_config": true }, "openrouter/anthropic/claude-opus-4.6": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000625, "cache_read_input_token_cost": 5e-7, "input_cost_per_token": 0.000005, @@ -26577,6 +28174,7 @@ "supports_vision": true }, "openrouter/anthropic/claude-opus-4.7": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000625, "cache_read_input_token_cost": 5e-7, "input_cost_per_token": 0.000005, @@ -26645,6 +28243,7 @@ "supports_vision": true }, "openrouter/anthropic/claude-sonnet-4.6": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000375, "cache_creation_input_token_cost_above_200k_tokens": 0.0000075, "cache_read_input_token_cost": 3e-7, @@ -26781,15 +28380,9 @@ "input_cost_per_audio_token": 7e-7, "input_cost_per_token": 1e-7, "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-7, "supports_audio_output": true, @@ -26803,15 +28396,9 @@ "input_cost_per_audio_token": 7e-7, "input_cost_per_token": 3e-7, "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": 0.0000025, "supports_audio_output": true, @@ -26826,15 +28413,9 @@ "input_cost_per_audio_token": 7e-7, "input_cost_per_token": 0.00000125, "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": 0.00001, "supports_audio_output": true, @@ -26849,15 +28430,9 @@ "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 5e-7, "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": 0.000003, "output_cost_per_token": 0.000003, @@ -26899,15 +28474,9 @@ "input_cost_per_token_above_200k_tokens": 0.000004, "input_cost_per_token_batches": 0.000001, "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": 0.000012, "output_cost_per_token_above_200k_tokens": 0.000018, @@ -26940,19 +28509,12 @@ }, "openrouter/google/gemini-3.1-flash-lite": { "cache_read_input_token_cost": 2.5e-8, - "cache_read_input_token_cost_per_audio_token": 5e-8, "input_cost_per_audio_token": 5e-7, "input_cost_per_token": 2.5e-7, "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": 65536, - "max_pdf_size_mb": 30, "max_tokens": 65536, - "max_video_length": 1, - "max_videos_per_prompt": 10, "mode": "chat", "output_cost_per_reasoning_token": 0.0000015, "output_cost_per_token": 0.0000015, @@ -26974,8 +28536,6 @@ ], "supports_audio_input": true, "supports_audio_output": false, - "supports_code_execution": true, - "supports_file_search": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -26992,19 +28552,12 @@ }, "openrouter/google/gemini-3.1-flash-lite-preview": { "cache_read_input_token_cost": 2.5e-8, - "cache_read_input_token_cost_per_audio_token": 5e-8, "input_cost_per_audio_token": 5e-7, "input_cost_per_token": 2.5e-7, "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": 65536, - "max_pdf_size_mb": 30, "max_tokens": 65536, - "max_video_length": 1, - "max_videos_per_prompt": 10, "mode": "chat", "output_cost_per_reasoning_token": 0.0000015, "output_cost_per_token": 0.0000015, @@ -27026,8 +28579,6 @@ ], "supports_audio_input": true, "supports_audio_output": false, - "supports_code_execution": true, - "supports_file_search": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -28018,6 +29569,22 @@ "supports_reasoning": true, "supports_tool_choice": true }, + "openrouter/z-ai/glm-5.1": { + "input_cost_per_token": 0.00000105, + "output_cost_per_token": 0.0000035, + "cache_read_input_token_cost": 5.25e-7, + "cache_creation_input_token_cost": 0, + "litellm_provider": "openrouter", + "max_input_tokens": 202752, + "max_output_tokens": 65535, + "max_tokens": 65535, + "mode": "chat", + "source": "https://openrouter.ai/z-ai/glm-5.1", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true + }, "ovhcloud/DeepSeek-R1-Distill-Llama-70B": { "input_cost_per_token": 6.7e-7, "litellm_provider": "ovhcloud", @@ -29196,6 +30763,7 @@ "source": "https://cloud.sambanova.ai/plans/pricing" }, "sambanova/DeepSeek-R1-Distill-Llama-70B": { + "deprecation_date": "2026-03-20", "input_cost_per_token": 7e-7, "litellm_provider": "sambanova", "max_input_tokens": 131072, @@ -29206,6 +30774,7 @@ "source": "https://cloud.sambanova.ai/plans/pricing" }, "sambanova/DeepSeek-V3-0324": { + "deprecation_date": "2026-04-14", "input_cost_per_token": 0.000003, "litellm_provider": "sambanova", "max_input_tokens": 32768, @@ -29219,6 +30788,19 @@ "supports_tool_choice": true }, "sambanova/DeepSeek-V3.1": { + "max_tokens": 131072, + "max_input_tokens": 131072, + "max_output_tokens": 131072, + "input_cost_per_token": 0.000003, + "output_cost_per_token": 0.0000045, + "litellm_provider": "sambanova", + "mode": "chat", + "supports_function_calling": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "source": "https://cloud.sambanova.ai/plans/pricing" + }, + "sambanova/DeepSeek-V3.2": { "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, @@ -29228,7 +30810,6 @@ "mode": "chat", "supports_function_calling": true, "supports_tool_choice": true, - "supports_reasoning": true, "source": "https://cloud.sambanova.ai/plans/pricing" }, "sambanova/Llama-4-Maverick-17B-128E-Instruct": { @@ -29249,6 +30830,7 @@ "supports_vision": true }, "sambanova/Llama-4-Scout-17B-16E-Instruct": { + "deprecation_date": "2025-06-19", "input_cost_per_token": 4e-7, "litellm_provider": "sambanova", "max_input_tokens": 8192, @@ -29265,6 +30847,7 @@ "supports_tool_choice": true }, "sambanova/Meta-Llama-3.1-405B-Instruct": { + "deprecation_date": "2025-06-25", "input_cost_per_token": 0.000005, "litellm_provider": "sambanova", "max_input_tokens": 16384, @@ -29278,6 +30861,7 @@ "supports_tool_choice": true }, "sambanova/Meta-Llama-3.1-8B-Instruct": { + "deprecation_date": "2026-04-14", "input_cost_per_token": 1e-7, "litellm_provider": "sambanova", "max_input_tokens": 16384, @@ -29291,6 +30875,7 @@ "supports_tool_choice": true }, "sambanova/Meta-Llama-3.2-1B-Instruct": { + "deprecation_date": "2025-06-25", "input_cost_per_token": 4e-8, "litellm_provider": "sambanova", "max_input_tokens": 16384, @@ -29301,6 +30886,7 @@ "source": "https://cloud.sambanova.ai/plans/pricing" }, "sambanova/Meta-Llama-3.2-3B-Instruct": { + "deprecation_date": "2025-06-25", "input_cost_per_token": 8e-8, "litellm_provider": "sambanova", "max_input_tokens": 4096, @@ -29324,6 +30910,7 @@ "supports_tool_choice": true }, "sambanova/Meta-Llama-Guard-3-8B": { + "deprecation_date": "2025-06-25", "input_cost_per_token": 3e-7, "litellm_provider": "sambanova", "max_input_tokens": 16384, @@ -29334,19 +30921,20 @@ "source": "https://cloud.sambanova.ai/plans/pricing" }, "sambanova/MiniMax-M2.7": { - "input_cost_per_token": 3e-7, + "input_cost_per_token": 6e-7, "litellm_provider": "sambanova", - "max_input_tokens": 204800, + "max_input_tokens": 196608, "max_output_tokens": 131072, "max_tokens": 131072, "mode": "chat", - "output_cost_per_token": 0.0000012, + "output_cost_per_token": 0.0000024, "source": "https://cloud.sambanova.ai/plans/pricing", "supports_function_calling": true, "supports_reasoning": true, "supports_tool_choice": true }, "sambanova/QwQ-32B": { + "deprecation_date": "2025-06-25", "input_cost_per_token": 5e-7, "litellm_provider": "sambanova", "max_input_tokens": 16384, @@ -29357,6 +30945,7 @@ "source": "https://cloud.sambanova.ai/plans/pricing" }, "sambanova/Qwen2-Audio-7B-Instruct": { + "deprecation_date": "2025-06-19", "input_cost_per_token": 5e-7, "litellm_provider": "sambanova", "max_input_tokens": 4096, @@ -29368,6 +30957,7 @@ "supports_audio_input": true }, "sambanova/Qwen3-32B": { + "deprecation_date": "2026-04-06", "input_cost_per_token": 4e-7, "litellm_provider": "sambanova", "max_input_tokens": 8192, @@ -29380,12 +30970,23 @@ "supports_reasoning": true, "supports_tool_choice": true }, + "sambanova/gemma-4-31B-it": { + "max_tokens": 131072, + "max_input_tokens": 131072, + "max_output_tokens": 131072, + "input_cost_per_token": 3.8e-7, + "output_cost_per_token": 0.00000115, + "litellm_provider": "sambanova", + "mode": "chat", + "supports_vision": 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": 0.000003, - "output_cost_per_token": 0.0000045, + "input_cost_per_token": 2.2e-7, + "output_cost_per_token": 5.9e-7, "litellm_provider": "sambanova", "mode": "chat", "supports_function_calling": true, @@ -29654,6 +31255,7 @@ "supports_response_schema": true }, "snowflake/claude-sonnet-4-6": { + "supports_adaptive_thinking": true, "max_tokens": 16384, "max_input_tokens": 200000, "max_output_tokens": 16384, @@ -29923,6 +31525,58 @@ "supports_function_calling": true, "supports_system_messages": true }, + "tencent/deepseek-v4-flash": { + "cache_creation_input_token_cost": 0, + "cache_read_input_token_cost": 2.8e-9, + "input_cost_per_token": 1.4e-7, + "input_cost_per_token_cache_hit": 2.8e-9, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 384000, + "max_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 2.8e-7, + "source": "https://www.tencentcloud.com/products/tokenhub", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_assistant_prefill": true, + "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_reasoning": true, + "supports_vision": false + }, + "tencent/deepseek-v4-pro": { + "cache_creation_input_token_cost": 0, + "cache_read_input_token_cost": 3.625e-9, + "input_cost_per_token": 4.35e-7, + "input_cost_per_token_cache_hit": 3.625e-9, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 384000, + "max_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 8.7e-7, + "source": "https://www.tencentcloud.com/products/tokenhub", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_assistant_prefill": true, + "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_reasoning": true, + "supports_vision": false + }, "tensormesh/MiniMaxAI/MiniMax-M2.5": { "litellm_provider": "tensormesh", "mode": "chat", @@ -30515,7 +32169,9 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "us.amazon.nova-2-lite-v1:0": { "cache_read_input_token_cost": 8.25e-8, @@ -30622,7 +32278,8 @@ "supports_pdf_input": true, "supports_prompt_caching": true, "supports_response_schema": true, - "supports_tool_choice": true + "supports_tool_choice": true, + "prompt_cache_min_tokens": 2048 }, "us.anthropic.claude-3-5-sonnet-20240620-v1:0": { "input_cost_per_token": 0.000003, @@ -30743,6 +32400,7 @@ "search_context_size_medium": 0.01 }, "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, "supports_assistant_prefill": false, "supports_computer_use": true, "supports_function_calling": true, @@ -30757,7 +32415,9 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "us.anthropic.claude-haiku-4-5-20251001-v1:0": { "cache_creation_input_token_cost": 0.000001375, @@ -30780,7 +32440,9 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "us.anthropic.claude-opus-4-1-20250805-v1:0": { "cache_creation_input_token_cost": 0.00001875, @@ -30805,7 +32467,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "us.anthropic.claude-opus-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00001875, @@ -30830,7 +32493,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "us.anthropic.claude-opus-4-5-20251101-v1:0": { "cache_creation_input_token_cost": 0.000006875, @@ -30859,9 +32523,12 @@ "supports_vision": true, "supports_native_structured_output": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "high" + "bedrock_output_config_effort_ceiling": "high", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "us.anthropic.claude-opus-4-6-v1": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.000006875, "cache_creation_input_token_cost_above_1hr": 0.000011, "cache_read_input_token_cost": 5.5e-7, @@ -30889,9 +32556,13 @@ "supports_native_structured_output": true, "supports_output_config": true, "supports_max_reasoning_effort": true, - "bedrock_output_config_effort_ceiling": "max" + "bedrock_output_config_effort_ceiling": "max", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 4096 }, "us.anthropic.claude-opus-4-7": { + "bedrock_converse_supports_strict_tools": false, + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.000006875, "cache_creation_input_token_cost_above_1hr": 0.000011, "cache_read_input_token_cost": 5.5e-7, @@ -30921,9 +32592,14 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 2048 }, "us.anthropic.claude-opus-4-8": { + "bedrock_converse_supports_strict_tools": false, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, "cache_creation_input_token_cost": 0.000006875, "cache_creation_input_token_cost_above_1hr": 0.000011, "cache_read_input_token_cost": 5.5e-7, @@ -30939,7 +32615,43 @@ "search_context_size_low": 0.01, "search_context_size_medium": 0.01 }, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": true, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 + }, + "us.anthropic.claude-opus-5": { + "bedrock_converse_supports_strict_tools": false, "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "cache_creation_input_token_cost": 0.000006875, + "cache_creation_input_token_cost_above_1hr": 0.000011, + "cache_read_input_token_cost": 5.5e-7, + "input_cost_per_token": 0.0000055, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000275, + "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": false, "supports_computer_use": true, "supports_function_calling": true, @@ -30954,7 +32666,8 @@ "supports_native_structured_output": true, "supports_max_reasoning_effort": true, "supports_output_config": true, - "bedrock_output_config_effort_ceiling": "xhigh" + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512 }, "us.anthropic.claude-sonnet-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00000375, @@ -30983,7 +32696,9 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "bedrock_converse_supports_strict_tools": false, + "prompt_cache_min_tokens": 1024 }, "us.anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.000004125, @@ -31015,9 +32730,12 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_structured_output": true + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "us.anthropic.claude-sonnet-4-6": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.000004125, "cache_creation_input_token_cost_above_1hr": 0.0000066, "cache_read_input_token_cost": 3.3e-7, @@ -31044,7 +32762,45 @@ "supports_tool_choice": true, "supports_vision": true, "supports_native_structured_output": true, - "supports_output_config": true + "supports_output_config": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 + }, + "us.anthropic.claude-sonnet-5": { + "cache_creation_input_token_cost": 0.00000275, + "cache_creation_input_token_cost_above_1hr": 0.0000044, + "cache_read_input_token_cost": 2.2e-7, + "input_cost_per_token": 0.0000022, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000011, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_native_structured_output": true, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "bedrock_output_config_effort_ceiling": "xhigh", + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024 }, "us.deepseek.r1-v1:0": { "input_cost_per_token": 0.00000135, @@ -31613,6 +33369,7 @@ "supports_output_config": true }, "vercel_ai_gateway/anthropic/claude-opus-4.6": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000625, "cache_read_input_token_cost": 5e-7, "input_cost_per_token": 0.000005, @@ -32616,6 +34373,7 @@ "supports_vision": true }, "vertex_ai/claude-fable-5": { + "supports_mid_conversation_system": true, "cache_creation_input_token_cost": 0.0000125, "cache_creation_input_token_cost_above_1hr": 0.00002, "cache_read_input_token_cost": 0.000001, @@ -32646,6 +34404,7 @@ "supports_max_reasoning_effort": true }, "vertex_ai/claude-fable-5@default": { + "supports_mid_conversation_system": true, "cache_creation_input_token_cost": 0.0000125, "cache_creation_input_token_cost_above_1hr": 0.00002, "cache_read_input_token_cost": 0.000001, @@ -32695,7 +34454,8 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_native_streaming": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 4096 }, "vertex_ai/claude-haiku-4-5@20251001": { "cache_creation_input_token_cost": 0.00000125, @@ -32717,7 +34477,8 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_native_streaming": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 4096 }, "vertex_ai/claude-opus-4": { "cache_creation_input_token_cost": 0.00001875, @@ -32743,7 +34504,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "vertex_ai/claude-opus-4-1": { "cache_creation_input_token_cost": 0.00001875, @@ -32806,7 +34568,8 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_output_config": true + "supports_output_config": true, + "prompt_cache_min_tokens": 4096 }, "vertex_ai/claude-opus-4-5@20251101": { "cache_creation_input_token_cost": 0.00000625, @@ -32834,9 +34597,11 @@ "supports_tool_choice": true, "supports_vision": true, "supports_native_streaming": true, - "supports_output_config": true + "supports_output_config": true, + "prompt_cache_min_tokens": 4096 }, "vertex_ai/claude-opus-4-6": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_read_input_token_cost": 5e-7, @@ -32862,9 +34627,11 @@ "supports_tool_choice": true, "supports_vision": true, "supports_output_config": true, - "supports_max_reasoning_effort": true + "supports_max_reasoning_effort": true, + "prompt_cache_min_tokens": 4096 }, "vertex_ai/claude-opus-4-6@default": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_read_input_token_cost": 5e-7, @@ -32890,9 +34657,11 @@ "supports_tool_choice": true, "supports_vision": true, "supports_output_config": true, - "supports_max_reasoning_effort": true + "supports_max_reasoning_effort": true, + "prompt_cache_min_tokens": 4096 }, "vertex_ai/claude-opus-4-7": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_read_input_token_cost": 5e-7, @@ -32919,9 +34688,75 @@ "supports_tool_choice": true, "supports_vision": true, "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true + "supports_max_reasoning_effort": true, + "prompt_cache_min_tokens": 2048 }, "vertex_ai/claude-opus-4-7@default": { + "supports_adaptive_thinking": true, + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_1hr": 0.00001, + "cache_read_input_token_cost": 5e-7, + "input_cost_per_token": 0.000005, + "litellm_provider": "vertex_ai-anthropic_models", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000025, + "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": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_max_reasoning_effort": true, + "prompt_cache_min_tokens": 2048 + }, + "vertex_ai/claude-opus-4-8": { + "supports_mid_conversation_system": true, + "supports_adaptive_thinking": true, + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_1hr": 0.00001, + "cache_read_input_token_cost": 5e-7, + "input_cost_per_token": 0.000005, + "litellm_provider": "vertex_ai-anthropic_models", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000025, + "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": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_max_reasoning_effort": true, + "prompt_cache_min_tokens": 1024 + }, + "vertex_ai/claude-opus-4-8@default": { + "supports_mid_conversation_system": true, + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_read_input_token_cost": 5e-7, @@ -32948,39 +34783,39 @@ "supports_tool_choice": true, "supports_vision": true, "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true + "supports_max_reasoning_effort": true, + "prompt_cache_min_tokens": 1024 }, - "vertex_ai/claude-opus-4-8": { - "cache_creation_input_token_cost": 0.00000625, - "cache_creation_input_token_cost_above_1hr": 0.00001, - "cache_read_input_token_cost": 5e-7, - "input_cost_per_token": 0.000005, + "vertex_ai/claude-opus-4@20250514": { + "cache_creation_input_token_cost": 0.00001875, + "cache_creation_input_token_cost_above_1hr": 0.00003, + "cache_read_input_token_cost": 0.0000015, + "input_cost_per_token": 0.000015, "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 1000000, - "max_output_tokens": 128000, - "max_tokens": 128000, + "max_input_tokens": 200000, + "max_output_tokens": 32000, + "max_tokens": 32000, "mode": "chat", - "output_cost_per_token": 0.000025, + "output_cost_per_token": 0.000075, "search_context_cost_per_query": { "search_context_size_high": 0.01, "search_context_size_low": 0.01, "search_context_size_medium": 0.01 }, - "supports_adaptive_thinking": true, - "supports_assistant_prefill": false, + "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_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, - "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true + "prompt_cache_min_tokens": 1024 }, - "vertex_ai/claude-opus-4-8@default": { + "vertex_ai/claude-opus-5": { + "supports_mid_conversation_system": true, + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_read_input_token_cost": 5e-7, @@ -32996,7 +34831,6 @@ "search_context_size_low": 0.01, "search_context_size_medium": 0.01 }, - "supports_adaptive_thinking": true, "supports_assistant_prefill": false, "supports_computer_use": true, "supports_function_calling": true, @@ -33008,33 +34842,40 @@ "supports_tool_choice": true, "supports_vision": true, "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true + "supports_max_reasoning_effort": true, + "prompt_cache_min_tokens": 512 }, - "vertex_ai/claude-opus-4@20250514": { - "cache_creation_input_token_cost": 0.00001875, - "cache_creation_input_token_cost_above_1hr": 0.00003, - "cache_read_input_token_cost": 0.0000015, - "input_cost_per_token": 0.000015, + "vertex_ai/claude-opus-5@default": { + "supports_mid_conversation_system": true, + "supports_adaptive_thinking": true, + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_1hr": 0.00001, + "cache_read_input_token_cost": 5e-7, + "input_cost_per_token": 0.000005, "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 32000, - "max_tokens": 32000, + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", - "output_cost_per_token": 0.000075, + "output_cost_per_token": 0.000025, "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_assistant_prefill": false, "supports_computer_use": true, "supports_function_calling": true, "supports_pdf_input": true, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_sampling_params": false, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_max_reasoning_effort": true, + "prompt_cache_min_tokens": 512 }, "vertex_ai/claude-sonnet-4": { "cache_creation_input_token_cost": 0.00000375, @@ -33064,7 +34905,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "vertex_ai/claude-sonnet-4-5": { "cache_creation_input_token_cost": 0.00000375, @@ -33091,7 +34933,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 }, "vertex_ai/claude-sonnet-4-5@20250929": { "cache_creation_input_token_cost": 0.00000375, @@ -33119,9 +34962,11 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "supports_native_streaming": true + "supports_native_streaming": true, + "prompt_cache_min_tokens": 1024 }, "vertex_ai/claude-sonnet-4-6": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000375, "cache_creation_input_token_cost_above_1hr": 0.000006, "cache_read_input_token_cost": 3e-7, @@ -33147,9 +34992,11 @@ "search_context_size_low": 0.01, "search_context_size_medium": 0.01 }, - "supports_output_config": true + "supports_output_config": true, + "prompt_cache_min_tokens": 1024 }, "vertex_ai/claude-sonnet-4-6@default": { + "supports_adaptive_thinking": true, "cache_creation_input_token_cost": 0.00000375, "cache_creation_input_token_cost_above_1hr": 0.000006, "cache_read_input_token_cost": 3e-7, @@ -33175,7 +35022,8 @@ "search_context_size_low": 0.01, "search_context_size_medium": 0.01 }, - "supports_output_config": true + "supports_output_config": true, + "prompt_cache_min_tokens": 1024 }, "vertex_ai/claude-sonnet-4@20250514": { "cache_creation_input_token_cost": 0.00000375, @@ -33205,7 +35053,72 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "prompt_cache_min_tokens": 1024 + }, + "vertex_ai/claude-sonnet-5": { + "supports_mid_conversation_system": true, + "cache_creation_input_token_cost": 0.0000025, + "cache_creation_input_token_cost_above_1hr": 0.000004, + "cache_read_input_token_cost": 2e-7, + "input_cost_per_token": 0.000002, + "litellm_provider": "vertex_ai-anthropic_models", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.00001, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_adaptive_thinking": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_max_reasoning_effort": true, + "prompt_cache_min_tokens": 1024 + }, + "vertex_ai/claude-sonnet-5@default": { + "supports_mid_conversation_system": true, + "cache_creation_input_token_cost": 0.0000025, + "cache_creation_input_token_cost_above_1hr": 0.000004, + "cache_read_input_token_cost": 2e-7, + "input_cost_per_token": 0.000002, + "litellm_provider": "vertex_ai-anthropic_models", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.00001, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_adaptive_thinking": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true, + "supports_max_reasoning_effort": true, + "prompt_cache_min_tokens": 1024 }, "vertex_ai/codestral-2": { "input_cost_per_token": 3e-7, @@ -33323,15 +35236,9 @@ "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 3e-7, "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": 0.00003, @@ -33359,6 +35266,7 @@ "supports_parallel_function_calling": true, "supports_pdf_input": true, "supports_prompt_caching": true, + "supports_reasoning": false, "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, @@ -33373,15 +35281,9 @@ "input_cost_per_token": 5e-7, "input_cost_per_audio_token": 0.000001, "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": 0.000003, "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing", @@ -33415,7 +35317,6 @@ "input_cost_per_audio_token_priority": 0.0000018, "output_cost_per_token_priority": 0.0000054, "cache_read_input_token_cost_priority": 9e-8, - "supports_service_tier": true, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -33431,15 +35332,9 @@ "input_cost_per_token_above_200k_tokens": 0.000004, "input_cost_per_token_batches": 0.000001, "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": 0.000012, "output_cost_per_token_above_200k_tokens": 0.000018, @@ -33477,7 +35372,6 @@ "output_cost_per_token_above_200k_tokens_priority": 0.0000324, "cache_read_input_token_cost_priority": 3.6e-7, "cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-7, - "supports_service_tier": true, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -33487,9 +35381,7 @@ }, "vertex_ai/gemini-3.1-flash-lite": { "cache_read_input_token_cost": 2.5e-8, - "cache_read_input_token_cost_batches": 1.25e-8, "cache_read_input_token_cost_flex": 1.25e-8, - "cache_read_input_token_cost_per_audio_token": 5e-8, "cache_read_input_token_cost_priority": 4.5e-8, "input_cost_per_audio_token": 5e-7, "input_cost_per_token": 2.5e-7, @@ -33497,15 +35389,9 @@ "input_cost_per_token_flex": 1.25e-7, "input_cost_per_token_priority": 4.5e-7, "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_reasoning_token": 0.0000015, "output_cost_per_token": 0.0000015, @@ -33529,8 +35415,6 @@ ], "supports_audio_input": true, "supports_audio_output": false, - "supports_code_execution": true, - "supports_file_search": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -33549,24 +35433,16 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, - "web_search_billing_unit": "per_query", - "supports_service_tier": true + "web_search_billing_unit": "per_query" }, "vertex_ai/gemini-3.1-flash-lite-preview": { "cache_read_input_token_cost": 2.5e-8, - "cache_read_input_token_cost_per_audio_token": 5e-8, "input_cost_per_audio_token": 5e-7, "input_cost_per_token": 2.5e-7, "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_reasoning_token": 0.0000015, "output_cost_per_token": 0.0000015, @@ -33587,8 +35463,6 @@ ], "supports_audio_input": true, "supports_audio_output": false, - "supports_code_execution": true, - "supports_file_search": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -33617,15 +35491,9 @@ "input_cost_per_token_above_200k_tokens": 0.000004, "input_cost_per_token_batches": 0.000001, "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": 65536, - "max_pdf_size_mb": 30, "max_tokens": 65536, - "max_video_length": 1, - "max_videos_per_prompt": 10, "mode": "chat", "output_cost_per_token": 0.000012, "output_cost_per_token_above_200k_tokens": 0.000018, @@ -33665,7 +35533,6 @@ "output_cost_per_token_above_200k_tokens_priority": 0.0000324, "cache_read_input_token_cost_priority": 3.6e-7, "cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-7, - "supports_service_tier": true, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -33681,15 +35548,9 @@ "input_cost_per_token_above_200k_tokens": 0.000004, "input_cost_per_token_batches": 0.000001, "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": 65536, - "max_pdf_size_mb": 30, "max_tokens": 65536, - "max_video_length": 1, - "max_videos_per_prompt": 10, "mode": "chat", "output_cost_per_token": 0.000012, "output_cost_per_token_above_200k_tokens": 0.000018, @@ -33729,7 +35590,6 @@ "output_cost_per_token_above_200k_tokens_priority": 0.0000324, "cache_read_input_token_cost_priority": 3.6e-7, "cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-7, - "supports_service_tier": true, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -33742,15 +35602,9 @@ "input_cost_per_token": 0.0000015, "input_cost_per_audio_token": 0.000001, "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_reasoning_token": 0.000009, "output_cost_per_token": 0.000009, @@ -33787,7 +35641,115 @@ "input_cost_per_audio_token_priority": 0.0000018, "output_cost_per_token_priority": 0.0000162, "cache_read_input_token_cost_priority": 2.7e-7, - "supports_service_tier": true, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "web_search_billing_unit": "per_query" + }, + "vertex_ai/gemini-3.5-flash-lite": { + "cache_read_input_token_cost": 3e-8, + "cache_read_input_token_cost_flex": 2e-8, + "cache_read_input_token_cost_priority": 5e-8, + "input_cost_per_token": 3e-7, + "input_cost_per_token_batches": 1.5e-7, + "input_cost_per_token_flex": 1.5e-7, + "input_cost_per_token_priority": 5.4e-7, + "litellm_provider": "vertex_ai-language-models", + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "max_tokens": 65536, + "mode": "chat", + "output_cost_per_reasoning_token": 0.0000025, + "output_cost_per_token": 0.0000025, + "output_cost_per_token_batches": 0.00000125, + "output_cost_per_token_flex": 0.00000125, + "output_cost_per_token_priority": 0.0000045, + "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#gemini-models", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/completions", + "/v1/batch" + ], + "supported_modalities": [ + "text", + "image", + "audio", + "video" + ], + "supported_output_modalities": [ + "text" + ], + "supports_audio_input": true, + "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_video_input": true, + "supports_vision": true, + "supports_web_search": true, + "supports_native_streaming": true, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "web_search_billing_unit": "per_query" + }, + "vertex_ai/gemini-3.6-flash": { + "cache_read_input_token_cost": 1.5e-7, + "cache_read_input_token_cost_flex": 7.5e-8, + "input_cost_per_token": 0.0000015, + "input_cost_per_token_batches": 7.5e-7, + "input_cost_per_token_flex": 7.5e-7, + "litellm_provider": "vertex_ai", + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "max_tokens": 65536, + "mode": "chat", + "output_cost_per_reasoning_token": 0.0000075, + "output_cost_per_token": 0.0000075, + "output_cost_per_token_batches": 0.00000375, + "output_cost_per_token_flex": 0.00000375, + "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_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_video_input": true, + "supports_vision": true, + "supports_web_search": true, + "supports_native_streaming": true, + "input_cost_per_token_priority": 0.0000027, + "output_cost_per_token_priority": 0.0000135, + "cache_read_input_token_cost_priority": 2.7e-7, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -35633,6 +37595,48 @@ "supports_vision": true, "supports_web_search": true }, + "xai/grok-4.5": { + "cache_read_input_token_cost": 5e-7, + "cache_read_input_token_cost_above_200k_tokens": 0.000001, + "input_cost_per_token": 0.000002, + "input_cost_per_token_above_200k_tokens": 0.000004, + "litellm_provider": "xai", + "max_input_tokens": 500000, + "max_output_tokens": 500000, + "max_tokens": 500000, + "mode": "chat", + "output_cost_per_token": 0.000006, + "output_cost_per_token_above_200k_tokens": 0.000012, + "source": "https://docs.x.ai/docs/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_web_search": true + }, + "xai/grok-4.5-latest": { + "cache_read_input_token_cost": 5e-7, + "cache_read_input_token_cost_above_200k_tokens": 0.000001, + "input_cost_per_token": 0.000002, + "input_cost_per_token_above_200k_tokens": 0.000004, + "litellm_provider": "xai", + "max_input_tokens": 500000, + "max_output_tokens": 500000, + "max_tokens": 500000, + "mode": "chat", + "output_cost_per_token": 0.000006, + "output_cost_per_token_above_200k_tokens": 0.000012, + "source": "https://docs.x.ai/docs/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_web_search": true + }, "xai/grok-beta": { "input_cost_per_token": 0.000005, "litellm_provider": "xai", @@ -35857,6 +37861,21 @@ "supports_tool_choice": true, "source": "https://docs.z.ai/guides/overview/pricing" }, + "zai/glm-4.7-flash": { + "cache_creation_input_token_cost": 0, + "cache_read_input_token_cost": 0, + "input_cost_per_token": 0, + "output_cost_per_token": 0, + "litellm_provider": "zai", + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "mode": "chat", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "source": "https://docs.z.ai/guides/overview/pricing" + }, "zai/glm-5": { "cache_creation_input_token_cost": 0, "cache_read_input_token_cost": 2e-7, @@ -35886,5 +37905,20 @@ "supports_reasoning": true, "supports_tool_choice": true, "source": "https://docs.z.ai/guides/overview/pricing" + }, + "zai/glm-5.1": { + "cache_creation_input_token_cost": 0, + "cache_read_input_token_cost": 2.6e-7, + "input_cost_per_token": 0.0000014, + "output_cost_per_token": 0.0000044, + "litellm_provider": "zai", + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "mode": "chat", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "source": "https://docs.z.ai/guides/overview/pricing" } } \ No newline at end of file diff --git a/cecli/sessions.py b/cecli/sessions.py index 969bb816638..cea4f718f88 100644 --- a/cecli/sessions.py +++ b/cecli/sessions.py @@ -6,6 +6,7 @@ from typing import Dict, List, Optional from cecli import models +from cecli.decoding import safe_open from cecli.helpers import crypto as session_crypto from cecli.helpers.conversation import ConversationService, MessageTag @@ -202,7 +203,7 @@ def _write_session_file(self, session_file: Path, session_data: dict) -> bool: return False session_file.write_bytes(session_crypto.encrypt_session_dict(session_data, key)) else: - with open(session_file, "w", encoding="utf-8") as f: + with safe_open(session_file, "w") as f: json.dump(session_data, f, indent=2) return True except session_crypto.SessionCryptoError as e: diff --git a/cecli/tools/command.py b/cecli/tools/command.py index 3a70a799277..f1e104cccce 100644 --- a/cecli/tools/command.py +++ b/cecli/tools/command.py @@ -210,7 +210,12 @@ async def execute( @classmethod async def _get_confirmation(cls, coder, command_string, background): - """Get user confirmation for command execution.""" + """Get user confirmation for command execution. + + NOTE: This does NOT print the command itself. The caller (format_output + via _print_tool_call_info) is responsible for displaying the command + before this runs. Do not print the command here or it will appear twice. + """ # Hash command for dict key lookup command_hash = cls._hash_command(command_string) @@ -231,8 +236,6 @@ async def _get_confirmation(cls, coder, command_string, background): if fnmatch.fnmatch(command_string, pattern): return True - formatted_command = coder.format_command_with_prefix(command_string) - if background: prompt = "Allow execution of this background command?" else: @@ -240,7 +243,6 @@ async def _get_confirmation(cls, coder, command_string, background): confirmed = await coder.io.confirm_ask( prompt, - subject=formatted_command, explicit_yes_required=True, allow_never=True, group_response="Command Tool", @@ -251,7 +253,6 @@ async def _get_confirmation(cls, coder, command_string, background): if command_hash not in cls.ALLOWED_SESSION_COMMANDS: session_allowed = await coder.io.confirm_ask( "Allow this command for the rest of the session?", - subject=formatted_command, ) cls.ALLOWED_SESSION_COMMANDS[command_hash] = session_allowed @@ -686,7 +687,7 @@ def format_output(cls, coder, mcp_server, tool_response): coder.io.tool_output(f"{color_start}Action:{color_end} {action}") elif command: coder.io.tool_output(f"{color_start}Command:{color_end}") - coder.io.tool_output(command) + coder.io.tool_output(coder.format_command_with_prefix(command)) coder.io.tool_output("") diff --git a/cecli/tools/resource_manager.py b/cecli/tools/resource_manager.py index a507601cc1b..aedc10cc203 100644 --- a/cecli/tools/resource_manager.py +++ b/cecli/tools/resource_manager.py @@ -7,6 +7,7 @@ iter_all_coders, update_server_registration, ) +from cecli.decoding import safe_open from cecli.helpers.background_commands import BackgroundCommandManager from cecli.tools.utils.base_tool import BaseTool from cecli.tools.utils.helpers import ToolError, parse_arg_as_list @@ -410,7 +411,7 @@ def _create(cls, coder, file_path): os.makedirs(os.path.dirname(abs_path), exist_ok=True) # Create an empty file - with open(abs_path, "w", encoding="utf-8"): + with safe_open(abs_path, "w"): pass # Add the file to editable context diff --git a/cecli/tui/app.py b/cecli/tui/app.py index 9471ee81596..991d94bc19e 100644 --- a/cecli/tui/app.py +++ b/cecli/tui/app.py @@ -16,6 +16,7 @@ from textual.theme import Theme from cecli import __version__ +from cecli.decoding import safe_open from cecli.editor import pipe_editor from cecli.helpers import queues from cecli.helpers.agents.service import AgentService @@ -1405,7 +1406,7 @@ def _extract_symbols(self) -> set[str]: for fname in files_to_process: try: - with open(fname, "r", encoding="utf-8", errors="ignore") as f: + with safe_open(fname, "r", errors="ignore") as f: content = f.read() lexer = guess_lexer_for_filename(fname, content) @@ -1429,20 +1430,27 @@ def _get_symbol_completions(self, prefix: str) -> list[str]: should_sort = True if prefix: - matches = self._get_path_completions(prefix) - matches.extend(sorted([s for s in symbols if prefix_lower in s.lower()])) + matches, matches_set = self._get_path_completions(prefix) + # Use a set to efficiently filter out symbols already in matches + for s in symbols: + if prefix_lower in s.lower() and s not in matches_set: + matches.append(s) + matches_set.add(s) should_sort = False else: matches = list(symbols) - matches = list(dict.fromkeys(matches)) return matches[:50] if not should_sort else sorted(matches)[:50] - def _get_path_completions(self, prefix: str) -> list[str]: + def _get_path_completions(self, prefix: str) -> tuple[list[str], set[str]]: """Get filesystem path completions relative to coder root. Uses FileSystemService when available for efficient trie/trigram lookups, with fallback to legacy filesystem iteration. + + Returns: + tuple[list[str], set[str]]: A tuple of (ordered_list, fast_lookup_set) + containing the matched path completions. """ coder = self.worker.coder root = Path(coder.root) if hasattr(coder, "root") else Path.cwd() @@ -1461,7 +1469,8 @@ def _get_path_completions(self, prefix: str) -> list[str]: matches = fs.search(prefix, threshold=0.1) if matches: - return matches if is_fuzzy else sorted(matches) + result = sorted(matches) if not is_fuzzy else matches + return result, set(result) except Exception: pass @@ -1492,7 +1501,8 @@ def _get_path_completions(self, prefix: str) -> list[str]: except (PermissionError, OSError): pass - return sorted(completions) + result = sorted(completions) + return result, set(result) def _get_suggestions(self, text: str) -> list[str]: """Get completion suggestions for given text.""" @@ -1549,7 +1559,7 @@ def _get_suggestions(self, text: str) -> list[str]: # Check if this command needs path-based completion if cmd_name in self.PATH_COMPLETION_COMMANDS: - suggestions = self._get_path_completions(arg_prefix) + suggestions, suggestions_set = self._get_path_completions(arg_prefix) # For /read-only and /read-only-stub, also include add completions if cmd_name in {"/add", "/read-only", "/read-only-stub"}: try: @@ -1557,8 +1567,13 @@ def _get_suggestions(self, text: str) -> list[str]: commands.get_completions(cmd_name, coder=active_coder) or [] ) for c in add_completions: - if arg_prefix_lower in str(c).lower() and str(c) not in suggestions: - suggestions.append(str(c)) + c_str = str(c) + if ( + arg_prefix_lower in c_str.lower() + and c_str not in suggestions_set + ): + suggestions.append(c_str) + suggestions_set.add(c_str) except Exception: pass else: diff --git a/cecli/voice.py b/cecli/voice.py index be0013f5a11..8b8a5933aab 100644 --- a/cecli/voice.py +++ b/cecli/voice.py @@ -4,6 +4,8 @@ import tempfile from concurrent.futures import ProcessPoolExecutor +from cecli.decoding import safe_open + class Voice: def __init__(self, audio_format="wav", device_name=None): @@ -76,7 +78,7 @@ def callback(indata, frames, time, status): file.write(q.get()) # 3. Transcription - with open(temp_path, "rb") as fh: + with safe_open(temp_path, "rb") as fh: print("\nTranscribing...") transcript = litellm.transcription( model="whisper-1", file=fh, prompt=history, language=language diff --git a/cecli/watch.py b/cecli/watch.py index e4c508cd8a9..412e7cffffe 100644 --- a/cecli/watch.py +++ b/cecli/watch.py @@ -6,6 +6,7 @@ from pathspec import PathSpec from pathspec.patterns import GitWildMatchPattern +from cecli.decoding import safe_open from cecli.dump import dump # noqa from cecli.watch_prompts import watch_ask_prompt, watch_code_prompt @@ -55,7 +56,7 @@ def load_gitignores(gitignore_paths: list[Path]) -> Optional[PathSpec]: for path in gitignore_paths: if path.exists(): try: - with open(path, "r", encoding="utf-8", errors="ignore") as f: + with safe_open(path, "r", errors="ignore") as f: patterns.extend(f.readlines()) except Exception: pass # Ignore files that can't be read diff --git a/cecli/website/docs/config/mcp.md b/cecli/website/docs/config/mcp.md index 550dd7c69d0..5de4e1dd493 100644 --- a/cecli/website/docs/config/mcp.md +++ b/cecli/website/docs/config/mcp.md @@ -147,6 +147,24 @@ For more information about specific MCP servers and their capabilities, refer to Here are some commonly used MCP servers that can enhance cecli's capabilities: +### Chrome DevTools + +Chrome DevTools MCP provides browser automation and debugging capabilities through Chrome's DevTools Protocol, enabling web page interaction, network monitoring, and performance analysis. It connects to a running Chrome instance and offers tools for web development testing and automation. Note: the configuration below requires you to start chrome with remote debugging enabled before +starting the coding agent. + +```yaml +mcp-servers: + mcpServers: + chrome-devtools: + transport: stdio + command: npx + args: [ + "chrome-devtools-mcp@latest", + "--browser-url", + "http://127.0.0.1:9222" + ] +``` + ### Context7 Context7 MCP provides up-to-date, version-specific documentation and code examples directly from the source into your LLM prompts, eliminating outdated information and hallucinations. It offers a streamlined integration experience with built-in caching mechanisms and is optimized for explorative agentic workflows. @@ -171,6 +189,27 @@ mcp-servers: url: https://mcp.deepwiki.com/mcp ``` + +### GitHub + +GitHub MCP provides access to GitHub repositories, issues, pull requests, and other GitHub resources. It enables AI models to interact with GitHub data, read repository contents, and perform various GitHub operations. The server runs in a Docker container and requires a GitHub Personal Access Token for authentication. + +```yaml +mcp-servers: + mcpServers: + github: + transport: stdio + command: "docker" + args: [ + "run", + "-i", + "--rm", + "-e", + "GITHUB_PERSONAL_ACCESS_TOKEN=", + "ghcr.io/github/github-mcp-server" + ] +``` + ### Serena Serena MCP provides LSP support for the current project, offering code analysis, symbol navigation, and project-specific tooling. It runs as a local stdio server and provides context-aware development assistance directly within the IDE environment. @@ -193,40 +232,22 @@ mcp-servers: ] ``` -### Chrome DevTools +### You.com Search (Paid Service) -Chrome DevTools MCP provides browser automation and debugging capabilities through Chrome's DevTools Protocol, enabling web page interaction, network monitoring, and performance analysis. It connects to a running Chrome instance and offers tools for web development testing and automation. Note: the configuration below requires you to start chrome with remote debugging enabled before -starting the coding agent. +You.com MCP provides live web and news search with LLM-ready results, useful when the model needs current information — release notes, library docs, error messages — beyond its training cutoff, and as the search complement to `/web` (search first, then scrape the best result). -```yaml -mcp-servers: - mcpServers: - chrome-devtools: - transport: stdio - command: npx - args: [ - "chrome-devtools-mcp@latest", - "--browser-url", - "http://127.0.0.1:9222" - ] -``` +**Free tier — no account, no API key.** The `?profile=free` endpoint used in the configuration below is limited to 100 queries per day (rate limited per IP) and exposes the `you-search` tool only. -### GitHub - -GitHub MCP provides access to GitHub repositories, issues, pull requests, and other GitHub resources. It enables AI models to interact with GitHub data, read repository contents, and perform various GitHub operations. The server runs in a Docker container and requires a GitHub Personal Access Token for authentication. +**Paid tier.** An [API key](https://you.com/platform?utm_source=cecli-dev-cecli&utm_medium=oss_integration&utm_campaign=2026-07-oss-integrations&utm_content=docs) raises the rate limit and unlocks the remaining tools: `you-contents` (page content extraction), `you-research` (cited multi-source research), `you-finance`, `you-discover`, and `you-balance`. Usage beyond the free allowance is pay-as-you-go — see [pricing](https://you.com/pricing?utm_source=cecli-dev-cecli&utm_medium=oss_integration&utm_campaign=2026-07-oss-integrations&utm_content=docs) and the [MCP server docs](https://you.com/docs/build-with-agents/mcp-server?utm_source=cecli-dev-cecli&utm_medium=oss_integration&utm_campaign=2026-07-oss-integrations&utm_content=docs). ```yaml mcp-servers: mcpServers: - github: - transport: stdio - command: "docker" - args: [ - "run", - "-i", - "--rm", - "-e", - "GITHUB_PERSONAL_ACCESS_TOKEN=", - "ghcr.io/github/github-mcp-server" - ] -``` + youcom: + transport: http + url: https://api.you.com/mcp?profile=free + # With a You.com API key (unlocks you-contents and you-research): + # url: https://api.you.com/mcp + # headers: + # Authorization: "Bearer " +``` \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 4d1c6569201..58e6b26c294 100644 --- a/requirements.txt +++ b/requirements.txt @@ -51,9 +51,10 @@ cffi==2.0.0 # cryptography # sounddevice # soundfile -charset-normalizer==3.4.4 +charset-normalizer==3.4.9 # via # -c requirements/common-constraints.txt + # -r requirements/requirements.in # requests click==8.3.1 # via diff --git a/requirements/common-constraints.txt b/requirements/common-constraints.txt index d3109f02ed9..306a605a58a 100644 --- a/requirements/common-constraints.txt +++ b/requirements/common-constraints.txt @@ -46,8 +46,10 @@ cffi==2.0.0 # soundfile cfgv==3.5.0 # via pre-commit -charset-normalizer==3.4.4 - # via requests +charset-normalizer==3.4.9 + # via + # -r requirements/requirements.in + # requests click==8.3.1 # via # litellm diff --git a/requirements/requirements-help.txt b/requirements/requirements-help.txt index 193ed2fdd07..9ecb75a35f5 100644 --- a/requirements/requirements-help.txt +++ b/requirements/requirements-help.txt @@ -39,7 +39,7 @@ certifi==2025.11.12 # httpcore # httpx # requests -charset-normalizer==3.4.4 +charset-normalizer==3.4.9 # via # -c requirements/common-constraints.txt # requests diff --git a/requirements/requirements.in b/requirements/requirements.in index dfd06d8a2fb..c69f47393a0 100644 --- a/requirements/requirements.in +++ b/requirements/requirements.in @@ -7,7 +7,7 @@ oslex>=0.1.3 pexpect>=4.9.0 psutil>=7.0.0 watchfiles>=1.1.0 - +charset-normalizer>=3.4.7 # git GitPython>=3.1.45 pathspec>=0.12.1 diff --git a/tests/basic/test_coder.py b/tests/basic/test_coder.py index 872503b8e50..f36b656d962 100644 --- a/tests/basic/test_coder.py +++ b/tests/basic/test_coder.py @@ -528,7 +528,7 @@ async def mock_send(*args, **kwargs): # Call the run method again with a message await coder.run(with_message="hi") - assert len(coder.abs_fnames) == 1 + assert len(coder.abs_fnames) == 2 async def test_choose_fence(self): # Create a few temporary files