diff --git a/cecli/coders/agent_coder.py b/cecli/coders/agent_coder.py index b9622fd856a..184080e2046 100644 --- a/cecli/coders/agent_coder.py +++ b/cecli/coders/agent_coder.py @@ -833,10 +833,12 @@ def get_environment_info(self): result += f"- Git repository: {rel_repo_dir} with {num_files:,} files\n" except Exception: result += "- Git repository: active but details unavailable\n" - if self.mcp_manager and self.mcp_manager.connected_servers: - num_mcp_servers = len(self.mcp_manager.connected_servers) - result += f"- Connected MCP servers: {num_mcp_servers}\n" + else: result += "- Git repository: none\n" + + if self.mcp_manager and self.mcp_manager.connected_servers: + num_mcp_servers = len(self.mcp_manager.connected_servers) + result += f"- Connected MCP servers: {num_mcp_servers}\n" result += "" return result except Exception as e: diff --git a/cecli/coders/base_coder.py b/cecli/coders/base_coder.py index 5b5840836de..a6714110d1c 100755 --- a/cecli/coders/base_coder.py +++ b/cecli/coders/base_coder.py @@ -744,6 +744,15 @@ def __init__( if root is not None: self.root = os.path.normpath(os.path.abspath(root)) + # Outside a git repo with no files in context there is nothing to derive + # a root from. Fall back to the primary workspace (sub-agents) or the + # process working directory so tools that pass root as their subprocess + # cwd never receive an empty path. + if not self.root: + self.root = utils.safe_abs_path( + primary_root or getattr(self, "primary_root", None) or os.getcwd() + ) + # A sub-agent may operate on a different base path than its parent. In # that case its repo must be scoped to *this* root (per-base-path), # rather than inheriting the parent's repo, so the coder's repo/fs match @@ -2331,6 +2340,7 @@ async def compact_context_if_needed(self, force=False, message=""): if ( self.context_compaction_max_tokens and non_compactable_tokens >= self.context_compaction_max_tokens + and not force ): if getattr(self, "_compaction_noop_warning_time", 0) + 300 < time.time(): self._compaction_noop_warning_time = time.time() diff --git a/cecli/helpers/agents/service.py b/cecli/helpers/agents/service.py index 4025b951923..f1777b56971 100644 --- a/cecli/helpers/agents/service.py +++ b/cecli/helpers/agents/service.py @@ -87,6 +87,7 @@ class SubAgentInfo: independent: bool = False detached: bool = False cancel_requested: bool = False # the current run was cancelled (see _was_cancelled) + worktree: Optional[Any] = None class AgentService: @@ -535,6 +536,28 @@ def _cleanup_sub_agent(self, agent_uuid: str) -> None: if info is None: return + # Release a finished agent's worktree before tearing down its coder. A + # still-running task is left to WorktreeManager.release_all() on exit. + worktree = getattr(info, "worktree", None) + if worktree is not None and (info.generate_task is None or info.generate_task.done()): + record = worktree + result = self._release_worktree( + record, f"Failed to release worktree for sub-agent {agent_uuid}" + ) + if result is not None: + _subagent_event(self.coder, info.coder.uuid, "worktree", **result.to_dict()) + + path = getattr(record, "path", None) + if path is None and isinstance(record, dict): + path = record.get("path") + if path: + try: + from cecli.repo import GitRepoProxy + + GitRepoProxy.evict(str(path)) + except Exception: + logger.warning("Failed to evict worktree repo proxy", exc_info=True) + # Destroy conversation resources for the sub-agent from cecli.helpers.conversation.service import ConversationService @@ -590,6 +613,20 @@ def _cleanup_sub_agent(self, agent_uuid: str) -> None: AgentTree.unregister(info.coder.uuid) self.destroy_instance(info.coder.uuid) + @staticmethod + def _release_worktree(record: Any, failure_message: str) -> Any: + """Release *record*, logging *failure_message* if the release raises. + + Returns the release result, or None when the release failed. + """ + try: + from cecli.helpers.worktrees import WorktreeManager + + return WorktreeManager.release(record) + except Exception: + logger.warning("%s", failure_message, exc_info=True) + return None + def _check_max_sub_agents(self) -> None: """If we've hit max_sub_agents, reap the oldest finished one. @@ -618,12 +655,31 @@ def _check_max_sub_agents(self) -> None: "Wait for one to finish or use /reap-agent to free resources." ) + @staticmethod + def _resolve_root(value: Any, base: Any = None) -> str: + """Resolve *value* to an absolute, existing directory. + + Relative paths resolve against *base* (usually the parent coder's root). + """ + from pathlib import Path + + path = Path(value).expanduser() + if not path.is_absolute(): + base_path = Path(base).expanduser() if isinstance(base, (str, Path)) else Path.cwd() + path = base_path / path + path = path.resolve() + if not path.is_dir(): + raise ValueError(f"Sub-agent root is not an existing directory: {path}") + return str(path) + async def _create_sub_agent_coder( self, name: str, parent: Any = None, auto_reap: Optional[bool] = None, independent: bool = False, + root: Any = None, + resume_worktree: Any = None, ) -> Tuple[Any, SubAgentInfo]: """Create a sub-agent coder, register it, and set up its container and prompt. @@ -639,6 +695,10 @@ async def _create_sub_agent_coder( auto_reap: If True, agent may be automatically reaped when FINISHED. If not set, defers to the sub-agent config's ``auto_reap`` value, then defaults to ``True``. + independent: If True, the sub-agent is detached from its parent. + root: Optional working directory for the sub-agent. Relative paths + resolve against the parent coder's root. + resume_worktree: Optional saved worktree record to recreate and use. Returns: Tuple of ``(new_coder, info)``. @@ -682,7 +742,8 @@ async def _create_sub_agent_coder( from cecli.coders import Coder - metadata = getattr(config, "metadata", {}).copy() + metadata = getattr(config, "metadata", None) + metadata = dict(metadata) if isinstance(metadata, dict) else {} agent_config = metadata.get("agent-config", {}) # Optional per-sub-agent root override for multi-project workspaces. @@ -690,6 +751,13 @@ async def _create_sub_agent_coder( if not configured_root and isinstance(agent_config, dict): configured_root = agent_config.get("root") + worktree_spec = ( + metadata.get("worktree") + if name.startswith("wf:") and isinstance(metadata, dict) + else None + ) + override_root = override.get("root") if override else None + # Workspace/workflow sub-agents (ws:*, wf:*) inherit the parent/primary # coder's agent_config as their default; the agent's own metadata # agent-config is merged on top. ws: additionally hard-enables nested @@ -711,7 +779,6 @@ async def _create_sub_agent_coder( # this merge so an allowlist override cannot hide the file/exec tools. if override: agent_config = apply_agent_override(agent_config, override.get("agent-config")) - configured_root = override.get("root") or configured_root if override.get("description") is not None: metadata["description"] = override["description"] if "detached" in override: @@ -726,6 +793,47 @@ async def _create_sub_agent_coder( servers.append("local") agent_config["servers_includelist"] = servers + if not name.startswith("wf:"): + resume_worktree = None + + parent_root = getattr(parent_coder, "root", None) or None + worktree_record = None + resolved_root = None + + if root is not None: + resolved_root = self._resolve_root(root, parent_root) + elif override_root: + resolved_root = str(override_root) + elif resume_worktree is not None: + from cecli.helpers.worktrees import WorktreeManager + + worktree_record = await asyncio.to_thread( + WorktreeManager.recreate, + resume_worktree, + agent_name=name, + uuid=new_uuid, + ) + resolved_root = worktree_record.path + elif worktree_spec is not None: + from cecli.helpers.worktrees import WorktreeManager + + base_ref = worktree_spec.get("branch") if isinstance(worktree_spec, dict) else None + try: + worktree_record = await asyncio.to_thread( + WorktreeManager.create, + agent_name=name, + uuid=new_uuid, + source=metadata.get("worktree_source") or parent_root, + base_ref=base_ref, + base_root=parent_root, + reuse_existing=True, + ) + except Exception as e: + raise RuntimeError(f"Failed to create worktree for sub-agent '{name}': {e}") from e + resolved_root = worktree_record.path + elif configured_root: + resolved_root = str(configured_root) + kwargs = dict( io=parent_coder.io, from_coder=parent_coder, @@ -751,8 +859,8 @@ async def _create_sub_agent_coder( ) ) - if configured_root: - kwargs["root"] = configured_root + if resolved_root: + kwargs["root"] = resolved_root if agent_config: # Reset the per-instance tool/server filters so AgentCoder.post_init() @@ -784,35 +892,57 @@ async def _create_sub_agent_coder( agent_model=model_override, ) - new_coder = await Coder.create(**kwargs) + try: + new_coder = await Coder.create(**kwargs) + except BaseException: + if worktree_record is not None: + await asyncio.to_thread( + self._release_worktree, + worktree_record, + "Failed to release worktree after coder creation failed", + ) + raise + new_coder.max_sub_agents = getattr(self.coder, "max_sub_agents", 30) + if worktree_record is not None: + new_coder.worktree = worktree_record # IOProxy wrapping is handled by base_coder.py's Coder.__init__ # Re-acquire the lock to register — we must re-check max agents since # the lock was released and other spawns may have registered in between. - with self._get_lock(self._spawn_locks, parent_coder.uuid): - self._check_max_sub_agents() - - # Register in global coder lookup and the visibility tree - self._uuid_coder_map[new_uuid] = weakref.ref(new_coder) - AgentTree.register( - str(new_coder.uuid), - parent_uuid=str(parent_coder.uuid), - name=name, - ) + try: + with self._get_lock(self._spawn_locks, parent_coder.uuid): + self._check_max_sub_agents() + + # Register in global coder lookup and the visibility tree + self._uuid_coder_map[new_uuid] = weakref.ref(new_coder) + AgentTree.register( + str(new_coder.uuid), + parent_uuid=str(parent_coder.uuid), + name=name, + ) - info = SubAgentInfo( - name=name, - coder=new_coder, - parent_uuid=parent_coder.uuid, - status=SubAgentStatus.CREATED, - auto_reap=auto_reap, - independent=independent, - detached=isinstance(agent_config, dict) - and bool(agent_config.get("detached", False)), - ) - self.sub_agents[new_coder.uuid] = info - self._sub_agent_order.append(new_coder.uuid) + info = SubAgentInfo( + name=name, + coder=new_coder, + parent_uuid=parent_coder.uuid, + status=SubAgentStatus.CREATED, + auto_reap=auto_reap, + independent=independent, + detached=isinstance(agent_config, dict) + and bool(agent_config.get("detached", False)), + worktree=worktree_record, + ) + self.sub_agents[new_coder.uuid] = info + self._sub_agent_order.append(new_coder.uuid) + except BaseException: + if worktree_record is not None: + await asyncio.to_thread( + self._release_worktree, + worktree_record, + "Failed to release worktree after registration failed", + ) + raise # Notify TUI to create a container try: @@ -821,16 +951,15 @@ async def _create_sub_agent_coder( _tui_notify(tui, tui.create_sub_agent_container, new_uuid, name) except Exception: logger.warning("Failed to notify TUI to create sub-agent container", exc_info=True) - - _subagent_event( - parent_coder, - new_coder.uuid, - "created", + created_event = dict( parent_uuid=str(parent_coder.uuid), name=name, description=metadata.get("description") if isinstance(metadata, dict) else None, root=str(getattr(new_coder, "root", "") or ""), ) + if worktree_record is not None: + created_event["worktree"] = worktree_record.to_dict() + _subagent_event(parent_coder, new_coder.uuid, "created", **created_event) # Initialize system prompt from config system_prompt = override.get("prompt") or getattr(config, "prompt", "") @@ -894,6 +1023,7 @@ async def switch_sub_agent_coder(self, info: SubAgentInfo, switch, preproc=True) kwargs["summarize_from_coder"] = False new_coder = await Coder.create(**kwargs) + new_coder.worktree = getattr(old_coder, "worktree", None) AgentTree.replace(old_coder.uuid, new_coder.uuid) new_coder.prompt_queue = list(old_coder.prompt_queue) @@ -1073,9 +1203,11 @@ def _queue_to_conversation() -> None: async def _inject_sub_agent_result(self, info: SubAgentInfo) -> None: """Inject the sub-agent's result (summary/error) into the parent's conversation. - Adds a user message with the result content and an assistant acknowledgment - so the parent coder (and therefore the LLM) sees what the sub-agent produced. - Uses unique hash keys so multiple sub-agent completions don't overwrite each other. + Adds a single user message containing a typed ```` block so the parent coder (and therefore the + LLM) sees what the sub-agent produced. No synthetic assistant reply is + fabricated on the model's behalf. Uses unique hash keys so multiple + sub-agent completions don't overwrite each other. """ from cecli.helpers.conversation.service import ConversationService from cecli.helpers.conversation.tags import MessageTag @@ -1096,38 +1228,27 @@ async def _inject_sub_agent_result(self, info: SubAgentInfo) -> None: return if info.status == SubAgentStatus.ERROR: - user_content = ( - f"The **{info.name}** agent (`{coder_uuid}`) encountered an error:\n" - f"{info.error}" - ) - assistant_content = ( - f"The {info.name} agent `{coder_uuid}` failed with the error above. " - f"You may want to review or retry the delegation." - ) + header = f"The **{info.name}** agent (`{coder_uuid}`) encountered an error:" + body = str(info.error) elif info.status == SubAgentStatus.FINISHED: - is_interrupted = info.summary == DEFAULT_SUMMARY_INTERRUPTED - summary_text = info.summary or DEFAULT_SUMMARY_COMPLETED - if is_interrupted: - user_content = ( - f"The **{info.name}** agent (`{coder_uuid}`) was interrupted:\n" - f"{summary_text}" - ) - assistant_content = ( - f"The {info.name} agent `{coder_uuid}` was interrupted before completing its task. " - f"You may want to review or retry the delegation." - ) + if info.summary == DEFAULT_SUMMARY_INTERRUPTED: + header = f"The **{info.name}** agent (`{coder_uuid}`) was interrupted:" else: - user_content = ( - f"The **{info.name}** agent (`{coder_uuid}`) completed with the following summary:\n" - f"{summary_text}" - ) - assistant_content = ( - f"Thank you for sharing the summary for {info.name} agent `{coder_uuid}`. " - f"The agent has finished its task." + header = ( + f"The **{info.name}** agent (`{coder_uuid}`) completed with the following" + " summary:" ) + body = info.summary or DEFAULT_SUMMARY_COMPLETED else: return + user_content = ( + '\n' + f"{header}\n" + f"{body}\n" + "" + ) + with self._get_lock(self._conversation_locks, info.parent_uuid): ConversationService.get_manager(parent_coder).add_message( message_dict={"role": "user", "content": user_content}, @@ -1135,12 +1256,6 @@ async def _inject_sub_agent_result(self, info: SubAgentInfo) -> None: hash_key=("sub_agent_result", "user", coder_uuid, str(time.monotonic_ns())), force=True, ) - ConversationService.get_manager(parent_coder).add_message( - message_dict={"role": "assistant", "content": assistant_content}, - tag=MessageTag.CUR, - hash_key=("sub_agent_result", "assistant", coder_uuid, str(time.monotonic_ns())), - force=True, - ) _subagent_event( parent_coder, parent_coder.uuid, "message", sender_uuid=coder_uuid, text=user_content @@ -1153,6 +1268,8 @@ async def invoke( blocking: bool = True, parent: Any = None, auto_reap: Optional[bool] = None, + root: Any = None, + resume_worktree: Any = None, ) -> Optional[str]: """Invoke a sub-agent by name with the given prompt (blocking by default). @@ -1162,9 +1279,15 @@ async def invoke( blocking: If True, waits for completion and returns summary. parent: Optional coder instance to use as the parent for nested sub-agent hierarchies. Defaults to ``self.coder``. + root: Optional working directory for this invocation. + resume_worktree: Optional saved worktree record to recreate. """ new_coder, info = await self._create_sub_agent_coder( - name, auto_reap=auto_reap, parent=parent + name, + auto_reap=auto_reap, + parent=parent, + root=root, + resume_worktree=resume_worktree, ) if not blocking: @@ -1197,6 +1320,8 @@ async def spawn( parent: Any = None, auto_reap: Optional[bool] = None, independent: bool = False, + root: Any = None, + resume_worktree: Any = None, ) -> Tuple[Any, SubAgentInfo]: """Spawn a sub-agent (non-blocking) that waits for user input. @@ -1206,13 +1331,20 @@ async def spawn( immediately with this prompt (fire-and-forget). parent: Optional coder instance to use as the parent for nested sub-agent hierarchies. Defaults to ``self.coder``. + root: Optional working directory for the sub-agent. + resume_worktree: Optional saved worktree record to recreate. Returns: Tuple of ``(new_coder, info)`` so callers can further interact with the sub-agent (e.g. call ``start_generate_task`` later). """ new_coder, info = await self._create_sub_agent_coder( - name, auto_reap=auto_reap, parent=parent, independent=independent + name, + auto_reap=auto_reap, + parent=parent, + independent=independent, + root=root, + resume_worktree=resume_worktree, ) if prompt: sender = parent if parent is not None else self.coder @@ -1279,6 +1411,7 @@ def get_active_agents(self) -> List[Dict[str, Any]]: "uuid": info.coder.uuid, "status": info.status.value, "summary": info.summary, + "worktree": info.worktree.to_dict() if info.worktree is not None else None, } for info in self.sub_agents.values() ] @@ -1421,11 +1554,24 @@ def _tui_notify(tui, callback, *args): thread. Scheduler-dispatched workflow runs now execute on the coder's own loop (the TUI worker-thread loop — see ``SchedulerService._on_coder_loop``), so notifications originate from the worker thread and ``call_from_thread`` - applies; when we are already on the app thread (or the TUI is unavailable), - fall back to calling directly. + applies; when we are already on the app thread, the callback runs directly. + + Notifications that arrive after the app has stopped are dropped: its DOM is + already torn down by then, so running the callback would fail on its widget + lookups. This happens on shutdown, when ``graceful_exit()`` cleans up + sub-agents after the TUI has exited. """ + if getattr(tui, "is_running", None) is False: + return + try: tui.call_from_thread(callback, *args) except RuntimeError: + # A stale app object stays reachable through the coder's weakref after + # the TUI exits; its DOM is gone, so drop the notification instead of + # calling the callback. Otherwise this is the same-thread error and the + # callback must run here. + if getattr(tui, "is_running", None) is False: + return callback(*args) diff --git a/cecli/helpers/background_commands.py b/cecli/helpers/background_commands.py index 50d59ec5b86..579ce68eac0 100644 --- a/cecli/helpers/background_commands.py +++ b/cecli/helpers/background_commands.py @@ -283,6 +283,7 @@ def __init__( self.start_time = time.time() self.end_time = None self.persist = persist + self.continued_in_background = False self.input_buffer = input_buffer or InputBuffer() self.writer_thread = None self._stop_event = threading.Event() @@ -671,6 +672,20 @@ def start_background_command( except Exception as e: raise RuntimeError(f"Failed to start background command: {str(e)}") + @classmethod + def mark_continued_in_background(cls, command_key: str) -> bool: + """Flag a timeout-managed command as continuing after its timeout.""" + + with cls._lock: + bg_process = cls._background_commands.get(command_key) + + if not bg_process: + return False + + bg_process.continued_in_background = True + + return True + @classmethod def is_command_running(cls, command_key: str) -> bool: """ @@ -826,6 +841,9 @@ def list_background_commands(cls) -> Dict[str, Dict[str, any]]: "command": bg_process.command, "running": bg_process.is_alive(), "persist": getattr(bg_process, "persist", False), + "continued_in_background": getattr( + bg_process, "continued_in_background", False + ), "buffer_size": bg_process.buffer.size(), "pages": getattr(bg_process.buffer, "page_count", 0), "total_chars": getattr( diff --git a/cecli/helpers/conversation/files.py b/cecli/helpers/conversation/files.py index cd14a60825e..e75749306f3 100644 --- a/cecli/helpers/conversation/files.py +++ b/cecli/helpers/conversation/files.py @@ -263,9 +263,10 @@ def generate_diff(self, fname: str) -> Optional[str]: context_lines=3, ) - # If there's a diff, update the last snapshot with current content + # If there's a diff, update the snapshot and invalidate cached read ranges. if diff_text.strip(): self._file_contents_snapshot[abs_fname] = current_content + self.invalidate_file_context(abs_fname) return diff_text if diff_text.strip() else None @@ -512,6 +513,19 @@ def update_file_context( return (start_line, end_line) # fallback + def invalidate_file_context(self, file_path: str) -> None: + """Discard cached ReadFile ranges after a file edit. + + Cached ranges are numeric line intervals. An edit can change the lines + inside a range or shift every later range, so the whole per-file range + cache is discarded instead of trying to remap offsets. + """ + abs_fname = os.path.abspath(file_path) + self._numbered_contexts.pop(abs_fname, None) + self._last_merged_ranges.pop(abs_fname, None) + self._emitted_contexts.pop(abs_fname, None) + self._file_context_versions.pop(abs_fname, None) + def push_range(self, file_path: str, ranges: List[Tuple[int, int]]) -> None: """ Push merged ranges into the _last_merged_ranges cache for a file. diff --git a/cecli/helpers/conversation/integration.py b/cecli/helpers/conversation/integration.py index 215c2dab182..fd42101cc02 100644 --- a/cecli/helpers/conversation/integration.py +++ b/cecli/helpers/conversation/integration.py @@ -772,6 +772,15 @@ def add_file_context_messages(self, promote_messages=True) -> None: hash_key=("file_context_user", file_path, content_hash), ) + def notify_file_edited(self, file_path: str) -> None: + """Invalidate cached ReadFile ranges for a file changed by a tool.""" + + coder = self.get_coder() + if not coder: + return + + ConversationService.get_files(coder).invalidate_file_context(file_path) + def reset(self) -> None: """ Reset the entire conversation system to initial state. diff --git a/cecli/helpers/coroutines.py b/cecli/helpers/coroutines.py index 6c8e590404e..ed5d26ddc28 100644 --- a/cecli/helpers/coroutines.py +++ b/cecli/helpers/coroutines.py @@ -158,10 +158,26 @@ async def cancel_and_abandon(tasks, grace=INTERRUPT_UNWIND_GRACE_SECONDS): if not pending_tasks: return + # Tasks can outlive their loop during shutdown. Cancelling one then calls + # loop.call_soon() on a closed loop and raises RuntimeError, so drop those + # instead of failing the whole shutdown sequence. + active_tasks = [] for task in pending_tasks: + task_loop = task.get_loop() if hasattr(task, "get_loop") else None + + if task_loop is not None and task_loop.is_closed(): + background_tasks.discard(task) + continue + + active_tasks.append(task) + + if not active_tasks: + return + + for task in active_tasks: task.cancel() - done, still_running = await asyncio.wait(set(pending_tasks), timeout=grace) + done, still_running = await asyncio.wait(set(active_tasks), timeout=grace) drain_task_results(done) for task in still_running: diff --git a/cecli/helpers/hashline.py b/cecli/helpers/hashline.py index f232e5e85ff..4b7bebb5968 100644 --- a/cecli/helpers/hashline.py +++ b/cecli/helpers/hashline.py @@ -183,12 +183,23 @@ def find_hashline_range( start_hash, _, _ = parse_hashline(start_line_hash) end_hash, _, _ = parse_hashline(end_line_hash) + # Handle an empty range at EOF ("000@" ... "000@"): append content. + if start_hash == "000@" and end_hash == "000@": + return len(hashed_lines), len(hashed_lines) - 1 + + # "000@" is only valid as a start marker when paired with another "000@". + if start_hash == "000@": + raise ContentHashError( + "Start marker '000@' (EOF) is only valid with end marker '000@' " + "to append at the end of the file" + ) + # Handle special marker "@000" (top of file) if start_hash == "@000": found_start = 0 # If end is also "@000", it's an empty range at the start if end_hash == "@000": - return 0, 0 + return 0, -1 # If end is "000@", it's the entire file if end_hash == "000@": if not hashed_lines: @@ -1208,6 +1219,24 @@ def _merge_replace_operations(resolved_ops): and current["op"]["operation"] == "replace" and prev["op"].get("text") is not None and current["op"].get("text") is not None + and not ( + prev["op"].get("start_line_hash") == "000@" + and prev["op"].get("end_line_hash") == "000@" + ) + and not ( + prev["op"].get("start_line_hash") == "@000" + and prev["op"].get("end_line_hash") == "@000" + ) + and not ( + current["op"].get("start_line_hash") == "000@" + and current["op"].get("end_line_hash") == "000@" + ) + and not ( + current["op"].get("start_line_hash") == "@000" + and current["op"].get("end_line_hash") == "@000" + ) + and prev["op"].get("original_operation") != "insert" + and current["op"].get("original_operation") != "insert" ): # Check if they are contiguous or overlapping # Contiguous: prev.end_idx == current.start_idx OR prev.end_idx + 1 == current.start_idx @@ -1355,7 +1384,10 @@ def _deduplicate_ranges(resolved_ops): ops_by_key = {} for op in resolved_ops: - key = (op["start_idx"], op["op"]["operation"]) + key = ( + op["start_idx"], + op["op"].get("original_operation", op["op"]["operation"]), + ) ops_by_key.setdefault(key, []).append(op) for ops in ops_by_key.values(): @@ -1508,7 +1540,8 @@ def _merged_contained_ranges(resolved_ops): if ( op_a["start_idx"] == op_b["start_idx"] and op_a["end_idx"] == op_b["end_idx"] - and op_a["op"]["operation"] != op_b["op"]["operation"] + and op_a["op"].get("original_operation", op_a["op"]["operation"]) + != op_b["op"].get("original_operation", op_b["op"]["operation"]) ): # Keep both operations if they have different types continue @@ -1538,7 +1571,7 @@ def sort_ranges(op): start_idx = op["start_idx"] # Operation type priority: insert (0), replace (1), delete (2) # Lower priority number means applied first - op_type = op["op"]["operation"] + op_type = op["op"].get("original_operation", op["op"]["operation"]) if op_type == "insert": priority = 0 elif op_type == "replace": @@ -1577,11 +1610,27 @@ def _would_create_duplicate_content(source_lines, candidate_start, candidate_end def _fix_duplicate_content_boundaries(source_lines, resolved_ops): """ Expand edit boundaries when replacement content duplicates adjacent lines. + Expansions never cross another operation's resolved range. """ + + def _overlaps_other(start, end, current): + for other in resolved_ops: + if other is current: + continue + if start <= other["end_idx"] and end >= other["start_idx"]: + return True + return False + for resolved in resolved_ops: op = resolved["op"] if op["operation"] not in {"replace", "insert", "delete"}: continue + if op.get("original_operation") == "insert": + continue + if (op.get("start_line_hash") == "000@" and op.get("end_line_hash") == "000@") or ( + op.get("start_line_hash") == "@000" and op.get("end_line_hash") == "@000" + ): + continue repl_text = op.get("text", "") or "" repl_lines = repl_text.splitlines() if not repl_lines: @@ -1591,7 +1640,7 @@ def _fix_duplicate_content_boundaries(source_lines, resolved_ops): end_idx = resolved["end_idx"] # Expand start backward if first replacement line duplicates line before - while start_idx > 0: + while start_idx > 0 and not _overlaps_other(start_idx - 1, end_idx, resolved): line_before = source_lines[start_idx - 1].strip() first_repl = repl_lines[0].strip() if line_before and line_before == first_repl: @@ -1600,7 +1649,9 @@ def _fix_duplicate_content_boundaries(source_lines, resolved_ops): break # Expand end forward if last replacement line duplicates line after - while end_idx < len(source_lines) - 1: + while end_idx < len(source_lines) - 1 and not _overlaps_other( + start_idx, end_idx + 1, resolved + ): line_after = source_lines[end_idx + 1].strip() last_repl = repl_lines[-1].strip() if line_after and line_after == last_repl: @@ -1668,6 +1719,23 @@ def count_ast_errors(node) -> int: errors += count_ast_errors(child) return errors + def apply_resolved_operations(lines: list, ops: list) -> bytes: + """Apply resolved operations to a line list for whole-batch AST checks.""" + result = list(lines) + + for candidate in sorted(ops, key=lambda item: (-item["start_idx"], item["index"])): + candidate_op = candidate["op"] + candidate_start = candidate["start_idx"] + candidate_end = candidate["end_idx"] + replacement = (candidate_op.get("text") or "").splitlines() + + if candidate_op["operation"] == "insert": + result[candidate_start + 1 : candidate_start + 1] = replacement + else: + result[candidate_start : candidate_end + 1] = replacement + + return "\n".join(result).encode("utf-8") + def _detect_indent_unit(source_lines: list) -> int: """Detect the common indentation unit from non-empty source lines.""" indents = [] @@ -1709,6 +1777,12 @@ def _has_indent_jump(test_lines: list, unit: int) -> bool: return False + def _replacement_duplicate_count(lines: list, replacement_lines: list) -> int: + """Count extra occurrences of replacement-text lines in the file.""" + counts = Counter(line.strip() for line in lines if line.strip()) + keys = {line.strip() for line in replacement_lines if line.strip()} + return sum(max(0, counts[key] - 1) for key in keys) + # Establish the baseline syntax health of the original file base_tree = parser.parse(source_bytes) baseline_error_count = count_ast_errors(base_tree.root_node) @@ -1742,6 +1816,7 @@ def _has_indent_jump(test_lines: list, unit: int) -> bool: repl_lines = replacement_text.splitlines() llm_end = min(llm_end, len(source_lines) - 1) + baseline_replacement_duplicates = _replacement_duplicate_count(source_lines, repl_lines) offsets = [0, 1, -1, 2, -2] all_candidates = [] @@ -1767,11 +1842,6 @@ def _has_indent_jump(test_lines: list, unit: int) -> bool: if overlaps: continue - if _would_create_duplicate_content( - source_lines, candidate_start, candidate_end, repl_lines - ): - continue - test_source_bytes = apply_edit( source_lines, candidate_start, @@ -1783,6 +1853,12 @@ def _has_indent_jump(test_lines: list, unit: int) -> bool: edited_tree = parser.parse(test_source_bytes) ast_error_count = count_ast_errors(edited_tree.root_node) + test_lines = test_source_bytes.decode("utf-8").splitlines() + duplicate_delta = ( + _replacement_duplicate_count(test_lines, repl_lines) + - baseline_replacement_duplicates + ) + is_partial = (start_shift == 0) ^ (end_shift == 0) is_downward = start_shift <= 0 is_both = start_shift == end_shift @@ -1792,7 +1868,6 @@ def _has_indent_jump(test_lines: list, unit: int) -> bool: # Check for indentation jumps in the resulting edit if is_normally_indented: - test_lines = test_source_bytes.decode("utf-8").splitlines() has_indent_jump = _has_indent_jump(test_lines, indent_unit) else: has_indent_jump = False @@ -1804,6 +1879,7 @@ def _has_indent_jump(test_lines: list, unit: int) -> bool: "ast_error_count": ast_error_count, "start_line_match": start_line_match, "end_line_match": end_line_match, + "duplicate_delta": duplicate_delta, "cumulative_movement": cumulative_movement, "has_indent_jump": has_indent_jump, "is_partial": is_partial, @@ -1813,15 +1889,19 @@ def _has_indent_jump(test_lines: list, unit: int) -> bool: ) if all_candidates: - # 1. AST Health is the absolute highest priority. - # 2. Cumulative movement acts as the tie-breaker for equally valid ASTs. + # 1. AST health is the highest priority. + # 2. Preserve exact boundary-line matches. + # 3. Minimize total duplication of replacement-text lines. + # 4. Prefer the smallest cumulative movement. + # 5. Use indentation heuristics only to break remaining ties. all_candidates.sort( key=lambda r: ( r["ast_error_count"], # Ascending: fewer syntax errors wins not r["start_line_match"], # Descending: True first not r["end_line_match"], # Descending: True first - r.get("has_indent_jump", False), # Ascending: False (no jump) first + r["duplicate_delta"], # Ascending: fewer replacement-line duplicates r["cumulative_movement"], # Ascending: smaller is better + r.get("has_indent_jump", False), # Ascending: False (no jump) first not r["is_partial"], # Booleans: False comes before True not r["is_downward"], # Booleans: False comes before True r["is_both"], # Booleans: False comes before True @@ -1833,7 +1913,6 @@ def _has_indent_jump(test_lines: list, unit: int) -> bool: # EVICTION GATE: If the absolute best boundary still introduces NEW # syntax errors compared to the original file, discard the edit entirely. if best["ast_error_count"] > baseline_error_count: - rejected_ops.append( { "index": resolved["index"], @@ -1843,6 +1922,11 @@ def _has_indent_jump(test_lines: list, unit: int) -> bool: f"{len(all_candidates)} candidate boundary adjustments could resolve it" ), "operation": op, + "resolved": { + **resolved, + "start_idx": best["start_idx"], + "end_idx": best["end_idx"], + }, } ) continue @@ -1852,6 +1936,21 @@ def _has_indent_jump(test_lines: list, unit: int) -> bool: safe_resolved_ops.append(resolved) + # An operation can be individually invalid but valid in combination with + # sibling operations (e.g., a structural refactor split across edits). + # Accept the batch when the combined result is no worse than the source. + if rejected_ops and len(resolved_ops) > 1: + batch_ops = safe_resolved_ops + [ + rejected["resolved"] for rejected in rejected_ops if "resolved" in rejected + ] + combined_tree = parser.parse(apply_resolved_operations(source_lines, batch_ops)) + if count_ast_errors(combined_tree.root_node) <= baseline_error_count: + safe_resolved_ops = batch_ops + rejected_ops = [] + + for rejected in rejected_ops: + rejected.pop("resolved", None) + return safe_resolved_ops, rejected_ops @@ -1916,31 +2015,71 @@ def _raise_clear_hash_error(hp, op, key): "Use a hashed ID prefix (e.g., `—XXXX—`) to target the line." ) - # Count how many lines contain this value as a substring - matching_count = 0 - for line in hp.lines: - if value_stripped in line: - matching_count += 1 + if "\n" in value_stripped or "\r" in value_stripped: + raise ContentHashError( + "Line anchors must be single-line; multi-line text is only supported " + "in the replacement text." + ) - if matching_count > 1: + if re.search(r"(?:^|[ \t])@[CPN][0-9]*[ \t]*$", value_stripped): raise ContentHashError( - f"Line '{value_stripped}' appears {matching_count} times in the file. " - "Use the hashed ID prefix (e.g., `—XXXX—`) to disambiguate " - "which occurrence to target." + "ReadFile-only range markers ('@C', '@P', '@N') are not " + "supported by EditFile; use a content ID or '@L' line reference." ) - elif matching_count == 1: + + if re.search(r"(?:^|[ \t])@[AB][ \t]*$", value_stripped): raise ContentHashError( - f"Line '{value_stripped}' was found once in the file but could not be " - "resolved as a unique content ID. Use the hashed ID prefix (e.g., `—XXXX—`) " - "to target it precisely." + "Bare '@A'/'@B' hints are not supported; include anchor text before " + "the hint, e.g. 'my line @A{regex}'." ) - else: + + substring_indices = [i for i, line in enumerate(hp.lines) if value_stripped in line] + exact_indices = [i for i, line in enumerate(hp.lines) if line.strip() == value_stripped] + + def _format_line_numbers(indices): + shown = ", ".join(str(i + 1) for i in indices[:10]) + if len(indices) > 10: + return f"{shown} (+{len(indices) - 10} more)" + return shown + + if not substring_indices: raise ContentHashError( f"Line '{value_stripped}' was not found in the file. " "Use the exact line content or a hashed ID prefix (e.g., `—XXXX—`) " "to target the desired line." ) + if len(exact_indices) > 1: + raise ContentHashError( + f"Line '{value_stripped}' appears {len(exact_indices)} times " + f"(lines {_format_line_numbers(exact_indices)}). " + "Add a line hint (e.g., 'text @L') or use the hashed ID prefix " + "(e.g., `—XXXX—`) to choose one occurrence." + ) + + if len(exact_indices) == 1: + raise ContentHashError( + f"Line '{value_stripped}' exactly matches line {exact_indices[0] + 1} " + "but could not be resolved to a unique content ID. Use its hashed ID " + "prefix (e.g., `—XXXX—`) to target it precisely." + ) + + if len(substring_indices) == 1: + matched_line = hp.lines[substring_indices[0]].strip() + raise ContentHashError( + f"Line '{value_stripped}' only partially matches line " + f"{substring_indices[0] + 1} ('{matched_line}'). " + "Anchors must match the complete line. " + "Use the full line text or the hashed ID prefix (e.g., `—XXXX—`)." + ) + + raise ContentHashError( + f"Line '{value_stripped}' partially matches {len(substring_indices)} lines " + f"(lines {_format_line_numbers(substring_indices)}). " + "Anchors must match one complete line; use the full line text or the " + "hashed ID prefix (e.g., `—XXXX—`) to disambiguate." + ) + def _detect_overlapping_ranges(resolved_ops): """Check resolved operations for genuinely overlapping ranges. @@ -1988,8 +2127,8 @@ def _detect_overlapping_ranges(resolved_ops): op_b = b["op"] error_msg = ( f"Operation {a['index'] + 1} ({op_a['operation']}, lines " - f"{a_start}-{a_end}) overlaps with operation {b['index'] + 1} " - f"({op_b['operation']}, lines {b_start}-{b_end}). " + f"{a_start + 1}-{a_end + 1}) overlaps with operation {b['index'] + 1} " + f"({op_b['operation']}, lines {b_start + 1}-{b_end + 1}). " "Edits with overlapping ranges are not supported. " "Combine them into a single edit or use non-overlapping ranges." ) @@ -2067,12 +2206,72 @@ def apply_hashline_operations( hashed_content = hp.format_content() hashed_lines = hashed_content.splitlines(keepends=True) + def _rewrite_insert_as_replace(op): + """Rewrite insert to replace so it follows the same remediation chain.""" + text = op.get("text") or "" + start_hash = op["start_line_hash"] + position = (op.get("position") or "after").lower() + + if position not in ("before", "after"): + raise ContentHashError(f"Invalid insert position '{position}'; use 'before' or 'after'") + + if start_hash in ("@000", "000@"): + return { + **op, + "end_line_hash": start_hash, + "operation": "replace", + "original_operation": "insert", + } + + fragment, line_num_str, _ = parse_hashline(start_hash) + target_idx = find_hashline_by_exact_match(hashed_lines, fragment, line_num_str) + if target_idx is None: + raise ContentHashError(f"Start line hash fragment '{fragment}' not found in file") + + target_line = strip_hashline(hashed_lines[target_idx]) + + if position == "before": + replacement = text if text.endswith("\n") else text + "\n" + replacement += target_line + else: + replacement = target_line + if not replacement.endswith("\n"): + replacement += "\n" + replacement += text + + return { + **op, + "end_line_hash": start_hash, + "operation": "replace", + "text": replacement, + "original_operation": "insert", + } + # Resolve all operations to indices first resolved_ops = [] # Loop to convert hashline references to line indices for i, op in enumerate(normalized_operations): try: if op["operation"] == "insert": + if op.get("text"): + rewritten_op = _rewrite_insert_as_replace(op) + found_start, found_end = find_hashline_range( + hashed_lines, + rewritten_op["start_line_hash"], + rewritten_op["end_line_hash"], + allow_exact_match=True, + replacement_text=rewritten_op.get("text"), + ) + resolved_ops.append( + { + "index": i, + "start_idx": found_start, + "end_idx": found_end, + "op": rewritten_op, + } + ) + continue + start_hash_fragment, start_line_num_str, start_line_num = parse_hashline( op["start_line_hash"] ) @@ -2139,7 +2338,9 @@ def apply_hashline_operations( ) except Exception as e: raise ContentHashError( - f"Could not resolve hash range {start_hash}...{end_hash}: {str(e)}" + f"Could not resolve hash range {start_hash}...{end_hash}: {e}. " + "The file may have changed since these IDs were read; re-read " + "it and use the fresh IDs or '@L' anchors." ) except Exception as e: @@ -2221,10 +2422,14 @@ def apply_hashline_operations( else: hashed_lines.append(text) elif op["operation"] == "delete": - del hashed_lines[start_idx : end_idx + 1] + if start_idx > end_idx: + changed = False + else: + del hashed_lines[start_idx : end_idx + 1] elif op["operation"] == "replace": - # If operation ends with "000@", ensure end_idx is at actual end of file - if op.get("end_line_hash") == "000@": + # If operation ends with "000@", ensure end_idx is at actual end of file. + # A "000@" start is an empty append range, so leave it alone. + if op.get("end_line_hash") == "000@" and op.get("start_line_hash") != "000@": end_idx = len(hashed_lines) - 1 text = op["text"] @@ -2271,6 +2476,16 @@ def apply_hashline_operations( next_idx < len(hashed_lines) and hashed_lines[next_idx].strip() == "" ) + # Appending after the last line needs a separator when the + # source text did not end with a newline. + if ( + start_idx > end_idx + and start_idx >= len(hashed_lines) + and hashed_lines + and not hashed_lines[-1].endswith("\n") + ): + hashed_lines[-1] += "\n" + hashed_lines[start_idx : end_idx + 1] = replacement_lines # Ensure the trailing empty line is preserved after replacement @@ -2324,6 +2539,14 @@ def apply_hashline_operations( # Original doesn't end with newline but result does - remove it result = result[:-1] + # Restore CRLF when the source used it consistently. + if ( + original_content + and "\r\n" in original_content + and original_content.count("\r\n") == original_content.count("\n") + ): + result = result.replace("\r\n", "\n").replace("\n", "\r\n") + return result, successful_ops, failed_ops diff --git a/cecli/helpers/hashpos/hashpos.py b/cecli/helpers/hashpos/hashpos.py index 538fc483200..1fa8e40f541 100644 --- a/cecli/helpers/hashpos/hashpos.py +++ b/cecli/helpers/hashpos/hashpos.py @@ -86,17 +86,50 @@ def __init__(self, source_text: str = ""): if line.strip(): self.line_counts[line] = self.line_counts.get(line, 0) + 1 + self._line_anchors = [] + self._line_local_occurrences = [] + last_anchor = 0 + segment_counts = {} + + for line in self.lines: + self._line_anchors.append(last_anchor) + + if not line.strip(): + self._line_local_occurrences.append(0) + continue + + occurrence = segment_counts.get(line, 0) + 1 + segment_counts[line] = occurrence + self._line_local_occurrences.append(occurrence) + + if self.line_counts.get(line, 0) == 1: + last_anchor = self._get_anchor_hash(line) + segment_counts = {} + def _get_line_hash(self, text: str) -> int: return xxhash.xxh3_64_intdigest(text.encode("utf-8")) & 0xFFFFF + def _get_anchor_hash(self, text: str) -> int: + return self._get_line_hash(text) & 0x3FFF + def generate_public_id(self, text: str, line_idx: int, occurrence: int) -> str: + """Encode content hash + local anchor hash + local occurrence. + + The anchor is the hash of the closest preceding unique line (or 0 for + the file prefix); occurrence counts equal lines of the same content + since that anchor. This keeps IDs stable when unrelated content shifts + line numbers. + """ line_hash = self._get_line_hash(text) - # Explicit modulo for bounds wrapping - idx_bits = line_idx % 16384 - occ_bits = occurrence % 64 + if 0 <= line_idx < len(self.lines) and self.lines[line_idx] == text: + anchor_bits = self._line_anchors[line_idx] + occ_bits = self._line_local_occurrences[line_idx] + else: + anchor_bits = 0 + occ_bits = occurrence - packed = (line_hash << 20) | (idx_bits << 6) | occ_bits + packed = (line_hash << 20) | ((anchor_bits & 0x3FFF) << 6) | (occ_bits & 0x3F) res = "" for i in range(3, -1, -1): @@ -109,14 +142,13 @@ def unpack_public_id(self, public_id: str) -> tuple[int, int, int]: packed |= self.B1024.index(char) << (10 * (3 - i)) occ_bits = packed & 0x3F - idx_bits = (packed >> 6) & 0x3FFF + anchor_bits = (packed >> 6) & 0x3FFF line_hash = (packed >> 20) & 0xFFFFF - return line_hash, idx_bits, occ_bits + return line_hash, anchor_bits, occ_bits def format_content(self, start_line: int = 1) -> str: formatted_lines = [] - seen = {} for i, line in enumerate(self.lines): if not line.strip(): @@ -129,8 +161,7 @@ def format_content(self, start_line: int = 1) -> str: # Flush directly against code using the unique token formatted_lines.append(f"{UNIQUE_HASH_DELIMITER}{line}") else: - occ = seen.get(line, 0) + 1 - seen[line] = occ + occ = self._line_local_occurrences[i] prefix = self.generate_public_id(line, i, occ) # Wrap the generated Base1024 hash in tildes formatted_lines.append(f"{self.get_wrapped_id(prefix)}{line}") @@ -148,38 +179,36 @@ def resolve_to_lines(self, public_id: str, start_line: int = 1) -> list[int]: if len(clean_id) != 4: raise ValueError(f"Invalid public ID string for unpacking: {public_id}") - target_line_hash, target_idx, target_occ = self.unpack_public_id(clean_id) + target_line_hash, target_anchor, target_occurrence = self.unpack_public_id(clean_id) - matches = [] - for i, line in enumerate(self.lines): - if self._get_line_hash(line) == target_line_hash: - matches.append((i, line)) + matches = [ + i for i, line in enumerate(self.lines) if self._get_line_hash(line) == target_line_hash + ] if not matches: return [] if len(matches) == 1: - return [matches[0][0]] + return matches - current_seen = {} - scored_matches = [] - - for i, line in matches: - current_seen[line] = current_seen.get(line, 0) + 1 - current_occ = current_seen[line] + exact_matches = [ + i + for i in matches + if self._line_anchors[i] == target_anchor + and (self._line_local_occurrences[i] & 0x3F) == target_occurrence + ] - # Apply identical modulo to current spatial data before comparing - current_idx_mod = i % 16384 - current_occ_mod = current_occ % 64 + if exact_matches: + return sorted(exact_matches) - # Cartesian distance squared - distance_sq = ((current_idx_mod - target_idx) ** 2) + ( - (current_occ_mod - target_occ) ** 2 - ) - scored_matches.append((distance_sq, i)) + scored_matches = [] + for i in matches: + anchor_penalty = 0 if self._line_anchors[i] == target_anchor else 1 + occurrence_distance = abs((self._line_local_occurrences[i] & 0x3F) - target_occurrence) + scored_matches.append((anchor_penalty, occurrence_distance, i)) - scored_matches.sort(key=lambda x: x[0]) - return [m[1] for m in scored_matches] + scored_matches.sort() + return [m[2] for m in scored_matches] def resolve_range(self, start_id: str, end_id: str) -> tuple[int, int]: starts = self.resolve_to_lines(start_id) diff --git a/cecli/helpers/hashpos/transformations.py b/cecli/helpers/hashpos/transformations.py index 0f76be0c164..5ea1e10106a 100644 --- a/cecli/helpers/hashpos/transformations.py +++ b/cecli/helpers/hashpos/transformations.py @@ -3,8 +3,7 @@ Centralizes all operations related to searching, processing line hints, contextual markers, and extracting content from HashPos-encoded files. -Previously scattered across read_file.py, edit_file.py, hashline.py, -and region_resolver.py. +Previously scattered across read_file.py, edit_file.py, and hashline.py. """ from __future__ import annotations @@ -155,6 +154,9 @@ def resolve_at_l( ): return line_spec + if line_spec == "@L0": + return "@000" + line_num = int(line_spec[2:]) - 1 if line_num < 0 or line_num >= len(lines): @@ -183,8 +185,8 @@ def extract_hint( Supports three hint types: * ``@L`` — direct line number (always resolvable). - * ``@A{{{{regex}}}}`` — keep only matches **after** the first regex hit. - * ``@B{{{{regex}}}}`` — keep only matches **before** the last regex hit. + * ``@A{regex}`` / ``@A{{regex}}`` — keep only matches **after** the first regex hit. + * ``@B{regex}`` / ``@B{{regex}}`` — keep only matches **before** the last regex hit. Returns a ``(stripped_pattern, hint_value, hint_type)`` tuple: @@ -199,8 +201,8 @@ def extract_hint( stripped = pattern[: m.start()] return (stripped if stripped else pattern), int(m.group(1)) - 1, "L" - # @A{{regex}} hint — first regex match, filter to lines AFTER - m = re.search(r"(?:^|[ \t]+)@A\{\{(.+?)\}\}[ \t]*$", pattern) + # @A{regex} or @A{{regex}} hint — first regex match, filter to lines AFTER + m = re.search(r"(?:^|[ \t]+)@A\{\{?(.+?)\}\}?[ \t]*$", pattern) if m: stripped = pattern[: m.start()] @@ -217,8 +219,8 @@ def extract_hint( return stripped, None, None - # @B{{regex}} hint — last regex match, filter to lines BEFORE - m = re.search(r"(?:^|[ \t]+)@B\{\{(.+?)\}\}[ \t]*$", pattern) + # @B{regex} or @B{{regex}} hint — last regex match, filter to lines BEFORE + m = re.search(r"(?:^|[ \t]+)@B\{\{?(.+?)\}\}?[ \t]*$", pattern) if m: stripped = pattern[: m.start()] diff --git a/cecli/helpers/model_config/api.py b/cecli/helpers/model_config/api.py index c65f838b35b..80e8c62738a 100644 --- a/cecli/helpers/model_config/api.py +++ b/cecli/helpers/model_config/api.py @@ -20,6 +20,7 @@ is_glm, is_kimi, is_mistral, + is_qwen, ) from .registry import get_default from .utils import supports_reasoning @@ -62,6 +63,7 @@ def derive_api_config( is_glm(provider, route, record) or is_kimi(provider, route, record) or is_mistral(provider, route, record) + or is_qwen(provider, route, record) ): default_effort = _DEFAULT_HIGH_REASONING_EFFORT diff --git a/cecli/helpers/model_config/identifiers.py b/cecli/helpers/model_config/identifiers.py index 10ba3c22998..cd4203533c5 100644 --- a/cecli/helpers/model_config/identifiers.py +++ b/cecli/helpers/model_config/identifiers.py @@ -79,6 +79,11 @@ def is_mistral(provider, route, record): return "mistral" in _haystack(provider, route, record) +def is_qwen(provider, route, record): + """True when the model is a Qwen-series model (Alibaba).""" + return "qwen" in _haystack(provider, route, record) + + def gpt_version(route): """Return the leading ``gpt-`` model version, or 0 when not a gpt model. diff --git a/cecli/helpers/model_config/model_routers.py b/cecli/helpers/model_config/model_routers.py new file mode 100644 index 00000000000..c166d6d4e4f --- /dev/null +++ b/cecli/helpers/model_config/model_routers.py @@ -0,0 +1,238 @@ +"""Router / multi-segment model-name resolution helpers. + +OpenRouter-style names encode a router, an upstream vendor, and a model in one +slash-delimited name (``openrouter/z-ai/glm-5.3-flash``). The bundled metadata +usually stores the same model under its upstream provider slug +(``zai/glm-5.3-flash``), so resolving a router model needs vendor alias +expansion and a route-tail fallback. + +This module owns that name-space logic; :mod:`.pipeline` keeps the metadata +loading and record-lookup chain. +""" + +from __future__ import annotations + +import re + +from .utils import get_entry_from_raw, top_level_keys + +#: Suffix segments dropped when looking for a nearby model family. +#: ``gpt-5.6-luna`` -> ``gpt-5.6`` -> ``gpt-5`` -> ``gpt`` +#: ``claude-sonnet-4-5`` -> ``claude-sonnet-4`` -> ``claude-sonnet`` -> ``claude`` +#: ``[^.-]`` (no dots, no hyphens) ensures exactly one trailing ``-X`` / ``.X`` +#: segment is dropped per pass instead of collapsing the whole remainder. +_TRAILING_SEGMENT_RE = re.compile(r"[-.][^.-]+$") + +#: Router/upstream vendor tokens that differ from the provider slug used in +#: the bundled metadata. OpenRouter-style names look like +#: ``openrouter//``; the vendor token often needs normalizing +#: before it matches a metadata key (``z-ai`` -> ``zai``, ``google`` -> +#: ``gemini``, ...). +_VENDOR_ALIASES = { + "z-ai": "zai", + "z_ai": "zai", + "z.ai": "zai", + "x-ai": "xai", + "x_ai": "xai", + "x.ai": "xai", + "mistralai": "mistral", + "moonshotai": "moonshot", + "meta-llama": "meta_llama", + "metallama": "meta_llama", + "google": "gemini", + "cohere": "cohere_chat", + "qwen": "dashscope", + "xiaomi": "xiaomi_mimo", +} + +_SLUG_NORMALIZE_RE = re.compile(r"[^a-z0-9]+") + + +def candidate_keys(model_name, route, provider): + """Ordered lookup keys: full name, same-provider families, route, bare families. + + Same-provider family candidates come before the bare route so a provider + prefix is never silently dropped for a bare (possibly different-provider) + record, e.g. ``github_copilot/gpt-5.6-luna`` should resolve to the + ``github_copilot/gpt-5`` family rather than the bare ``gpt-5.6-luna`` + (openai) record. + + Multi-segment routes (``openrouter/z-ai/glm-5.3-flash``) are also expanded + with vendor aliases (``zai/glm-5.3-flash``) and with the leading vendor + segment dropped (``glm-5.3-flash``) so router-hosted models inherit the + upstream model's limits and costs. + """ + keys = [] + + def add(key): + if key and key not in keys: + keys.append(key) + + add(model_name) + variants = _route_variants(route) + shortened = [] + + for variant in variants: + shortened.extend(_shorten_route(variant)) + + if provider and route: + for variant in variants: + add(f"{provider}/{variant}") + + for candidate in shortened: + add(f"{provider}/{candidate}") + + for variant in variants: + add(variant) + + for candidate in shortened: + add(candidate) + + tail = route.rsplit("/", 1)[-1] if route else "" + + for candidate in [tail, *_shorten_route(tail)]: + add(candidate) + + return keys + + +def closest_route_match(sources, route): + """Return the record whose route best matches the requested route tail. + + Cross-provider fallback for router models (``openrouter/z-ai/glm-5.3-flash``) + when no same-provider record exists. The final route segment (the model + name) must match case-insensitively; ties prefer the record whose provider + is the upstream vendor token (aliases included) so ``z-ai/glm-5.3-flash`` + resolves to ``zai/glm-5.3-flash`` rather than an arbitrary rehost. + """ + if not route or "/" not in route: + return None + + best = None + best_score = -1 + + for source in reversed(sources): + if source["kind"] == "dict": + for key, record in source["data"].items(): + if not isinstance(record, dict): + continue + + score = _route_match_score(route, key) + + if score > best_score: + best_score = score + best = record + + else: + for key in top_level_keys(source["text"]): + score = _route_match_score(route, key) + + if score <= best_score: + continue + + record = get_entry_from_raw(source["text"], key) + + if not record: + continue + + best_score = score + best = record + + return best if best_score > 0 else None + + +def _shorten_route(route): + """Yield progressively shorter routes, e.g. ``gpt-5.6-luna`` -> ``gpt-5``.""" + candidates = [] + current = route + + while current: + shortened = _TRAILING_SEGMENT_RE.sub("", current) + + if not shortened or shortened == current: + break + + candidates.append(shortened) + current = shortened + + return candidates + + +def _route_variants(route): + """Return the route plus any vendor-alias / vendor-less variants. + + ``z-ai/glm-5.3-flash`` -> ``[z-ai/glm-5.3-flash, zai/glm-5.3-flash, + glm-5.3-flash]``. Single-segment routes are returned unchanged. + """ + if not route: + return [route] + + variants = [route] + segments = route.split("/") + + if len(segments) < 2: + return variants + + vendor = segments[0] + rest = "/".join(segments[1:]) + + for alias in _vendor_aliases(vendor): + variants.append(f"{alias}/{rest}") + + variants.append(rest) + + return variants + + +def _vendor_aliases(vendor): + """Return normalized/aliased forms of a vendor token (never the original).""" + token = vendor.lower() + normalized = _SLUG_NORMALIZE_RE.sub("", token) + candidates = [normalized] + + alias = _VENDOR_ALIASES.get(token) or _VENDOR_ALIASES.get(normalized) + + if alias: + candidates.append(alias) + + return list(dict.fromkeys(c for c in candidates if c and c != token)) + + +def _route_match_score(requested_route, key): + """Score how well a metadata ``key`` matches a requested route tail. + + Returns ``-1`` unless the final route segment matches. Extra score is + awarded for contiguous trailing segments and for an upstream vendor whose + provider slug matches the requested vendor (``z-ai``/``zai``). + """ + key_route = key.split("/", 1)[-1] if "/" in key else key + requested_parts = requested_route.lower().split("/") + key_parts = key_route.lower().split("/") + + matched = 0 + + for left, right in zip(reversed(requested_parts), reversed(key_parts)): + if _SLUG_NORMALIZE_RE.sub("", left) != _SLUG_NORMALIZE_RE.sub("", right): + break + + matched += 1 + + if matched == 0: + return -1 + + score = matched * 100 + vendor = requested_parts[-2] if len(requested_parts) >= 2 else "" + + if vendor: + key_provider = key.split("/", 1)[0].lower() if "/" in key else "" + + if key_provider in (vendor, *_vendor_aliases(vendor)): + score += 40 + + if len(key_parts) >= 2 and key_parts[-2] in ( + vendor, + *_vendor_aliases(vendor), + ): + score += 25 + + return score diff --git a/cecli/helpers/model_config/pipeline.py b/cecli/helpers/model_config/pipeline.py index 2839be426b2..b679039c395 100644 --- a/cecli/helpers/model_config/pipeline.py +++ b/cecli/helpers/model_config/pipeline.py @@ -15,7 +15,6 @@ import importlib.resources as importlib_resources import json -import re from pathlib import Path from typing import Any, Dict, List, Optional, Union @@ -26,17 +25,11 @@ from .formatters.reasoning import format_reasoning from .formatters.thinking import format_thinking from .llm import derive_llm_config +from .model_routers import candidate_keys, closest_route_match from .utils import get_entry_from_raw, top_level_keys RESOURCE_FILE = "model-metadata.json" -#: Suffix segments dropped when looking for a nearby model family. -#: ``gpt-5.6-luna`` -> ``gpt-5.6`` -> ``gpt-5`` -> ``gpt`` -#: ``claude-sonnet-4-5`` -> ``claude-sonnet-4`` -> ``claude-sonnet`` -> ``claude`` -#: ``[^.-]`` (no dots, no hyphens) ensures exactly one trailing ``-X`` / ``.X`` -#: segment is dropped per pass instead of collapsing the whole remainder. -_TRAILING_SEGMENT_RE = re.compile(r"[-.][^.-]+$") - #: Lazily loaded raw text of the bundled metadata file (never json.loads-ed). _BUNDLED_RAW_CACHE: Optional[str] = None @@ -260,37 +253,13 @@ def _find_record(sources, model_name, provider, route): if not sources: return None - for key in _candidate_keys(model_name, route, provider): + for key in candidate_keys(model_name, route, provider): record = _lookup_entry(sources, key) if record: return record - return _closest_provider_match(sources, provider, route) - - -def _candidate_keys(model_name, route, provider): - """Ordered lookup keys: full name, same-provider families, route, bare families. - - Same-provider family candidates come before the bare route so a provider - prefix is never silently dropped for a bare (possibly different-provider) - record, e.g. ``github_copilot/gpt-5.6-luna`` should resolve to the - ``github_copilot/gpt-5`` family rather than the bare ``gpt-5.6-luna`` - (openai) record. - """ - keys = [model_name] - shortened = _shorten_route(route) if provider and route else [] - - if provider and route: - keys.extend(f"{provider}/{candidate}" for candidate in shortened) - - if route and route != model_name: - keys.append(route) - - if provider and route: - keys.extend(shortened) - - return keys + return _closest_provider_match(sources, provider, route) or closest_route_match(sources, route) def _lookup_entry(sources, key): @@ -311,23 +280,6 @@ def _lookup_entry(sources, key): return None -def _shorten_route(route): - """Yield progressively shorter routes, e.g. ``gpt-5.6-luna`` -> ``gpt-5``.""" - candidates = [] - current = route - - while current: - shortened = _TRAILING_SEGMENT_RE.sub("", current) - - if not shortened or shortened == current: - break - - candidates.append(shortened) - current = shortened - - return candidates - - def _closest_provider_match(sources, provider, route): """Return the same-provider record with the longest shared route prefix. diff --git a/cecli/helpers/model_providers.py b/cecli/helpers/model_providers.py index 72bb7c5e82b..312ad75a509 100644 --- a/cecli/helpers/model_providers.py +++ b/cecli/helpers/model_providers.py @@ -22,9 +22,153 @@ import requests from cecli.helpers.file_searcher import handle_core_files +from cecli.helpers.nested import getter RESOURCE_FILE = "providers.json" +#: Candidate paths (dot notation for ``nested.getter``) that may hold the model +#: list in a provider response. Tried in order; the first list wins. +MODEL_LIST_PATHS = ( + "data", + "models", + "result.data", + "result", + "model_list", + "items", + "available_models", + "response.data", + "data.models", + "results", +) + +#: Candidate paths for a provider's model identifier, in preference order. +MODEL_ID_PATHS = ( + "id", + "model_id", + "model", + "canonical_id", + "slug", + "name", + "model_spec.name", + "metadata.display_name", + "display_name", + "title", + "canonical_slug", +) + +#: Canonical field -> ordered extraction paths. +#: +#: Provider model lists disagree on both key names and nesting (OpenAI +#: ``data[].context_length``, OpenRouter ``data[].top_provider.context_length``, +#: Fireworks ``models[].name``, ...). Declaring the superset of paths here keeps +#: parsing generic; providers.json entries can override any field through +#: ``model_field_paths`` without touching code. +MODEL_FIELD_PATHS = { + "max_input_tokens": ( + "max_input_tokens", + "input_token_limit", + "max_context_tokens", + "context_length", + "context_window.context_length", + "max_context_length", + "max_model_len", + "context_size", + "limit.context", + "model_spec.availableContextTokens", + "top_provider.context_length", + "top_provider_context_length", + "metadata.context_length", + "limits.context_length", + "limits.max_input_tokens", + "context_window", + "max_tokens", + ), + "max_output_tokens": ( + "max_output_tokens", + "max_completion_tokens", + "max_output_length", + "max_completion_length", + "top_provider.max_completion_tokens", + "top_provider_max_completion_tokens", + "limit.output", + "context_window.max_output_tokens", + "model_spec.maxCompletionTokens", + "max_tokens", + "metadata.max_tokens", + "context_length", + "context_window", + "top_provider.context_length", + "limits.max_output_tokens", + ), + "max_tokens": ( + "max_tokens", + "max_input_tokens", + "input_token_limit", + "context_length", + "context_window.context_length", + "max_context_length", + "max_model_len", + "context_size", + "limit.context", + "model_spec.availableContextTokens", + "top_provider.context_length", + "top_provider_context_length", + "limits.context_length", + ), + "input_cost_per_token": ( + "input_cost_per_token", + "prompt_cost_per_token", + "pricing.prompt", + "pricing.input", + "pricing.prompt.price_per_m_decimal", + "input_token_price_per_m", + "price.input.usd", + "cost.text.input.price", + "model_spec.pricing.input.usd", + "metadata.pricing.input_tokens", + "pricing.input_tokens", + "cost.input", + "cost.prompt", + "pricing.prompt_tokens", + ), + "output_cost_per_token": ( + "output_cost_per_token", + "completion_cost_per_token", + "pricing.completion", + "pricing.output", + "pricing.completion.price_per_m_decimal", + "output_token_price_per_m", + "price.output.usd", + "cost.text.output.price", + "model_spec.pricing.output.usd", + "metadata.pricing.output_tokens", + "pricing.output_tokens", + "cost.output", + "cost.completion", + "pricing.completion_tokens", + ), + "cache_read_input_token_cost": ( + "cache_read_input_token_cost", + "input_cost_per_token_cache_hit", + "pricing.input_cache_read", + "pricing.cache_read", + "pricing.input_cache_read.price_per_m_decimal", + "cache_read_cost_per_token", + "metadata.pricing.cache_read", + ), + "cache_creation_input_token_cost": ( + "cache_creation_input_token_cost", + "pricing.input_cache_write", + "pricing.cache_write", + "pricing.input_cache_write.price_per_m_decimal", + "cache_write_cost_per_token", + "metadata.pricing.cache_write", + ), +} + +#: Provider model-type values that mean "chat model". +CHAT_MODE_VALUES = frozenset({"chat", "completion", "completions", "language", "text", "responses"}) + def _first_env_value(names): """Return the first non-empty environment variable for the provided names.""" @@ -234,43 +378,26 @@ def _find_record(self, content: Optional[Dict], route: str) -> Optional[Dict]: return next((item for item in content["data"] if item.get("id") in candidates), None) def _record_to_info(self, record: Dict, provider: str) -> Dict: - context_len = _first_value( - record, - "max_input_tokens", - "max_tokens", - "max_output_tokens", - "context_length", - "context_window", - "top_provider_context_length", - "top_provider", - ) - if isinstance(context_len, dict): - context_len = context_len.get("context_length") or context_len.get("max_tokens") - pricing = record.get("pricing", {}) if isinstance(record.get("pricing"), dict) else {} - input_cost = _cost_per_token( - _first_value(pricing, "prompt", "input", "prompt_tokens") - or _first_value(record, "input_cost_per_token", "prompt_cost_per_token") - ) + field_paths = self._model_field_paths(provider) + context_len = _first_path_value(record, field_paths["max_input_tokens"]) + if context_len is None: + top_provider = getter(record, "top_provider") + if isinstance(top_provider, dict): + context_len = _first_path_value( + top_provider, ("context_length", "max_tokens", "max_completion_tokens") + ) + input_cost = _cost_per_token(_first_path_value(record, field_paths["input_cost_per_token"])) output_cost = _cost_per_token( - _first_value(pricing, "completion", "output", "completion_tokens") - or _first_value(record, "output_cost_per_token", "completion_cost_per_token") + _first_path_value(record, field_paths["output_cost_per_token"]) ) - max_tokens = _first_value( - record, - "max_tokens", - "max_input_tokens", - "context_length", - "context_window", - "top_provider_context_length", + cache_read_cost = _cost_per_token( + _first_path_value(record, field_paths["cache_read_input_token_cost"]) ) - max_output_tokens = _first_value( - record, - "max_output_tokens", - "max_tokens", - "context_length", - "context_window", - "top_provider_context_length", + cache_creation_cost = _cost_per_token( + _first_path_value(record, field_paths["cache_creation_input_token_cost"]) ) + max_tokens = _first_path_value(record, field_paths["max_tokens"]) + max_output_tokens = _first_path_value(record, field_paths["max_output_tokens"]) if max_tokens is None: max_tokens = context_len if max_output_tokens is None: @@ -290,8 +417,12 @@ def _normalize_cost(cost: Optional[float]) -> float: "input_cost_per_token": _normalize_cost(input_cost), "output_cost_per_token": _normalize_cost(output_cost), "litellm_provider": provider, - "mode": record.get("mode", "chat"), + "mode": _normalize_mode(getter(record, ("mode", "type", "model_type"), "chat")), } + if cache_read_cost is not None: + info["cache_read_input_token_cost"] = _normalize_cost(cache_read_cost) + if cache_creation_cost is not None: + info["cache_creation_input_token_cost"] = _normalize_cost(cache_creation_cost) return {k: v for k, v in info.items() if v is not None} def _get_cache_file(self, provider: str) -> Path: @@ -299,38 +430,58 @@ def _get_cache_file(self, provider: str) -> Path: return self.cache_dir / fname def _normalize_models_payload(self, provider: str, payload: Dict) -> Dict: - """Normalize provider payloads into an OpenAI-style `{data: [{id: ...}]}`.""" - if not isinstance(payload, dict): + """Normalize provider payloads into an OpenAI-style `{data: [{id: ...}]}`. + + The list location and per-entry field names differ per provider. Both + are resolved through the declarative path sets above (``nested.getter``), + with optional ``model_list_paths`` / ``model_field_paths`` overrides in + the provider's ``providers.json`` entry. + """ + items = payload if isinstance(payload, list) else None + + if items is None and isinstance(payload, dict): + for path in self._model_list_paths(provider): + candidate = getter(payload, path) + if isinstance(candidate, list): + items = candidate + break + if isinstance(candidate, dict): + items = [] + for model_key, value in candidate.items(): + if not isinstance(value, dict): + continue + record = dict(value) + record.setdefault("id", model_key) + items.append(record) + break + + if items is None: return {} - if "data" in payload and isinstance(payload.get("data"), list): - return payload - # Fireworks returns `{models: [...], nextPageToken: ..., totalSize: ...}` - models = payload.get("models") - if isinstance(models, list): - normalized = [] - for item in models: - if not isinstance(item, dict): - continue - model_id = item.get("name") or item.get("id") - if not model_id: - continue - record = {"id": model_id} - for key in ( - "max_input_tokens", - "max_output_tokens", - "max_tokens", - "context_length", - "context_window", - "mode", - "pricing", - "input_cost_per_token", - "output_cost_per_token", - ): - if key in item and item[key] is not None: - record[key] = item[key] - normalized.append(record) - return {"data": normalized} - return {} + + field_paths = self._model_field_paths(provider) + normalized = [] + for item in items: + if not isinstance(item, dict): + continue + model_id = _first_path_value(item, MODEL_ID_PATHS) + if not model_id: + continue + record = {"id": model_id} + for key, paths in field_paths.items(): + value = _first_path_value(item, paths) + if value is not None: + record[key] = value + # Keep the raw pricing dict for cache/cost fields not covered by + # the canonical paths (e.g. cache-read pricing). + pricing = getter(item, "pricing") + if isinstance(pricing, dict): + record["pricing"] = pricing + for key in ("mode", "type", "supported_endpoints"): + value = getter(item, key) + if value not in (None, "", [], {}): + record[key] = value + normalized.append(record) + return {"data": normalized} def _load_cache(self, provider: str) -> None: if self._cache_loaded.get(provider): @@ -422,6 +573,31 @@ def _get_account_id(self, provider: str) -> Optional[str]: return os.environ.get(account_id_env) return None + def _model_field_paths(self, provider: str) -> Dict[str, tuple]: + """Return canonical field -> extraction paths, with provider overrides.""" + overrides = (self.provider_configs.get(provider) or {}).get("model_field_paths") or {} + if not overrides: + return MODEL_FIELD_PATHS + + paths = dict(MODEL_FIELD_PATHS) + for field, candidates in overrides.items(): + if isinstance(candidates, str): + candidates = (candidates,) + if isinstance(candidates, (list, tuple)): + paths[field] = tuple(candidates) + + return paths + + def _model_list_paths(self, provider: str) -> tuple: + """Return candidate payload paths that may contain the model list.""" + override = (self.provider_configs.get(provider) or {}).get("model_list_paths") + if isinstance(override, str): + return (override,) + if isinstance(override, (list, tuple)) and override: + return tuple(override) + + return MODEL_LIST_PATHS + _NUMBER_RE = re.compile(r"-?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?") @@ -453,3 +629,33 @@ def _first_value(record: Dict, *keys: str): if value not in (None, ""): return value return None + + +def _first_path_value(record: Dict, paths): + """Return the first non-empty scalar value from ordered dotted paths.""" + + for path in paths: + value = getter(record, path) + + if value in (None, "", [], {}): + continue + + if isinstance(value, (dict, list, tuple)): + continue + + return value + + return None + + +def _normalize_mode(value): + """Map provider model-type values (``language``, ``text``, ...) to ``chat``.""" + if not isinstance(value, str): + return "chat" + + value = value.lower() + + if value in CHAT_MODE_VALUES: + return "chat" + + return value diff --git a/cecli/helpers/orchestration/agent_proxy.py b/cecli/helpers/orchestration/agent_proxy.py index a016d8d4ff9..7401a7db9e7 100644 --- a/cecli/helpers/orchestration/agent_proxy.py +++ b/cecli/helpers/orchestration/agent_proxy.py @@ -389,77 +389,6 @@ def get_content_id(self, file_path: str, line_content: str) -> str: raise ValueError(f"Could not resolve content ID for '{line_content}' in {file_path}") return result - def resolve_regions( - self, - file_path: str, - regions: list[dict[str, str]], - exact: bool = True, - ): - """ - Store named region patterns for lazy content-ID resolution. - - Content IDs are resolved *on access* via `.get_start(name)` / - `.get_end(name)`, so they are always fresh — even after - intervening edits shift hashline positions. - - Args: - file_path: Path to the file containing the target regions. - regions: List of region spec dicts with "name", "start", "end" keys. - exact: When True (default), use exact line matching (no stripping). - When False, use substring matching with stripped content. - - Returns an :class:`AgentRegion` instance. - """ - - from cecli.helpers.orchestration.region_resolver import AgentRegion - - return AgentRegion(file_path, self._coder, regions, exact=exact) - - async def edit_region( - self, - file_path: str, - edits: list[dict[str, object]], - change_id: str | None = None, - ): - """ - Thin wrapper around `EditFile` that accepts `{"start": content_id, "end": content_id}` region dicts. - - Use with `Agent.resolve_regions()` and `regions.get(name)`: - - regions = Agent.resolve_regions("foo.py", [ - {"name": "my_func", "start": "def my_func", "end": "return result"}, - ]) - await Agent.edit_region( - file_path="foo.py", - edits=[ - {"region": regions.get("my_func"), "text": "def my_func():\\n return 42"}, - ], - ) - """ - - edit_tool = self.get_tool("EditFile") - - edit_objects: list[dict[str, object]] = [] - for edit in edits: - region = edit["region"] - - edit_objects.append( - { - "file_path": file_path, - "operation": edit.get("operation", "replace"), - "start_line": region["start"], - "end_line": region["end"], - "text": edit["text"], - } - ) - - # self._validate_edit_regions(edits, edit_objects) - - return await edit_tool.call( - edits=edit_objects, - change_id=change_id, - ) - async def sleep(self, seconds: float) -> None: """Safe sleep - pauses execution (0-120 seconds max). @@ -505,57 +434,6 @@ def allowed_methods(self) -> list[str]: ) return builtins + globals_list - @staticmethod - def _validate_edit_regions( - edits: list[dict[str, object]], - edit_objects: list[dict[str, object]], - ) -> None: - """Reject batches where any two edit regions overlap or are adjacent. - - Adjacent edits (within 8 lines of each other) corrupt content IDs - because the first edit regenerates IDs in the surrounding ~8-line - window, making the second edit's target IDs stale. - """ - _ADJACENCY_THRESHOLD = 8 # lines of ID-regeneration buffer - - if len(edits) <= 1: - return - - # Collect (start_line, end_line, idx) for each edit - indexed: list[tuple[int, int, int]] = [] - for i, (edit, eo) in enumerate(zip(edits, edit_objects)): - region = edit["region"] - sl = region.get("start_line") - el = region.get("end_line") - if sl is None or el is None: - # No line numbers available — skip validation (best-effort) - return - indexed.append((int(sl), int(el), i)) - - # Sort by start_line - indexed.sort(key=lambda x: x[0]) - - for j in range(len(indexed) - 1): - sl_a, el_a, idx_a = indexed[j] - sl_b, el_b, idx_b = indexed[j + 1] - - if sl_b <= el_a: - raise ValueError( - f"Overlapping edit regions detected: " - f"edit {idx_a + 1} (lines {sl_a}-{el_a}) overlaps with " - f"edit {idx_b + 1} (lines {sl_b}-{el_b}). " - f"Split edits into separate calls." - ) - if sl_b <= el_a + _ADJACENCY_THRESHOLD: - raise ValueError( - f"Adjacent edit regions detected: " - f"edit {idx_a + 1} (lines {sl_a}-{el_a}) is within " - f"{_ADJACENCY_THRESHOLD} lines of edit {idx_b + 1} (lines {sl_b}-{el_b}). " - f"Content IDs within ~8 lines of an edit are regenerated, " - f"so adjacent edits corrupt each other's targets. " - f"Split edits into separate calls." - ) - # --------------------------------------------------------------------------- # Main execution environment diff --git a/cecli/helpers/orchestration/environment.py b/cecli/helpers/orchestration/environment.py index 59cef7da459..188317bd0df 100644 --- a/cecli/helpers/orchestration/environment.py +++ b/cecli/helpers/orchestration/environment.py @@ -558,22 +558,13 @@ def build_orchestration_context_block(agent_config: dict[str, Any]) -> str | Non | `Agent.get_tool(name)` | Get a tool proxy (case-insensitive; `Local--` / `{{Server Name}}--` prefixes ok) | | `Agent.get_tool_schema(name)` | Return a copy of the full function-calling JSON schema | | `Agent.get_tool_signature(name)` | Return a readable Python-style signature; optional params without defaults appear as `= ...` | -| `await tool.call(**params)` | Run a tool; returns `{"result": [...], "errors": [...], "details": [...]}`, items with shape `{"content", "_"}` | +| `await tool.call(**params)` | Run a tool; `params` match the tool's JSON schema. Returns `{"result", "errors", "details"}` | | `Agent.peek(result)` / `Agent.get_value(result, path, default?)` | Inspect / extract values from tool results. path is dot-separated string | -| `Agent.resolve_regions(path, specs)` / `Agent.edit_region(path, edits)` | Resolve text boundaries once, then apply edits | | `gather(**tasks)` | Run tasks concurrently; results expose `.key` and `["key"]` | | `state` / `shared_state` | Persistent dicts that survive between Orchestrate calls; `state.get(k)` falls back to `shared_state`. Use these for anything you need to reuse in a later call | | `print(...)` / `reset(local_vars=True, state=False)` | Emit output / clear namespaces | | `typeof(x)`, `isinstance(x, t)`, `hasattr(x, n)`, `repr(x)`, `vars(obj)` | Type inspection and debugging | -### Region editing - -- `resolve_regions(path, specs)`: - `specs` = `[{"name", "start", "end", "start_line_hint"?, "end_line_hint"?}]`; `start`/`end` are line text, `@L{num}`, or a content ID. - Returns `regions` with `.get(name)` -> `{"start", "end", "start_line", "end_line"}` plus `.get_start(name)` / `.get_end(name)`. -- `edit_region(path, edits)`: - `edits` = `[{"region": regions.get(name), "text", "operation" ("replace"|"delete", default "replace")}]`. - ### Modules Pre-imported, read-only: `re`, `math`, `itertools`, `collections`, `datetime`, `pathlib` (I/O blocked), `json`, `traceback`. Any other import fails. @@ -583,7 +574,7 @@ def build_orchestration_context_block(agent_config: dict[str, Any]) -> str | Non - Keyword args only; `gather()` takes named tasks - Do not touch private (`_`) attributes or `__builtins__` - Always `await` tool calls -- Inspect tool results with `Agent.peek()` / `Agent.get_value()`; edit files via `Agent.resolve_regions()` + `Agent.edit_region()` or `EditFile` directly +- Inspect tool results with `Agent.peek()` / `Agent.get_value()` """ # Task 6: Append sandbox configuration overrides when non-empty diff --git a/cecli/helpers/orchestration/region_resolver.py b/cecli/helpers/orchestration/region_resolver.py deleted file mode 100644 index 5d578b58ad2..00000000000 --- a/cecli/helpers/orchestration/region_resolver.py +++ /dev/null @@ -1,488 +0,0 @@ -""" -Region resolution helpers for the orchestration sandbox. - -Provides AgentRegion for storing named region boundary *patterns* that are -resolved to content IDs on-demand at access time. This ensures content IDs -are always fresh — important after intervening edits shift hashline positions. -""" - -from __future__ import annotations - -from typing import Any - -from cecli.helpers.hashpos.transformations import ( - extract_hint, - is_content_id, - narrow_by_proximity, - resolve_at_l, - search_in_lines, -) - - -class AgentRegion: - """ - Stores named region boundary *patterns* resolved to content IDs on access. - - Content IDs can shift after edits, so ``get_start(name)`` and - ``get_end(name)`` re-read the file and re-resolve patterns at each call. - Use these directly in ``EditFile`` calls for always-fresh IDs. - - When a region spec uses a **content ID** (e.g. `"—abcd—"`) instead of - text, the referenced line content is snapshotted on first resolution. - If the ID goes stale after intervening edits, subsequent resolutions - fall back to content matching against the snapshotted line text. - - Example usage in orchestration code: - - regions = Agent.resolve_regions("foo.py", [ - {"name": "helper", "start": "def helper", "end": "return x"}, - ]) - edit_tool = Agent.get_tool("EditFile") - await edit_tool.call(edits=[{ - "file_path": "foo.py", - "operation": "replace", - "start_line": regions.get_start("helper"), - "end_line": regions.get_end("helper"), - "text": "def helper():\\n return 42", - }]) - """ - - def __init__( - self, - file_path: str, - coder: Any, - region_specs: list[dict[str, str]], - exact: bool = True, - ) -> None: - self._exact = exact - self._file_path = file_path - self._coder = coder - self._specs: dict[str, dict[str, str]] = {} - - for spec in region_specs: - name = spec["name"] - entry: dict[str, object] = { - "start": spec["start"], - "end": spec["end"], - } - if "start_line_hint" in spec: - entry["start_line_hint"] = spec["start_line_hint"] - if "end_line_hint" in spec: - entry["end_line_hint"] = spec["end_line_hint"] - self._specs[name] = entry - - # Eagerly validate uniqueness for all regions at creation time. - # This catches ambiguous patterns immediately with clear error messages. - self._eager_validate() - - # ------------------------------------------------------------------ - # Public API - # ------------------------------------------------------------------ - - def get_start(self, name: str) -> str: - """Re-read file and return the current content ID for the start of *name*.""" - - return self._resolve(name)[0] - - def get_end(self, name: str) -> str: - """Re-read file and return the current content ID for the end of *name*.""" - - return self._resolve(name)[1] - - def get_start_line(self, name: str) -> int: - """Re-read file and return the current 1-based start line for *name*.""" - - return self._resolve(name)[2] - - def get_end_line(self, name: str) -> int: - """Re-read file and return the current 1-based end line for *name*.""" - - return self._resolve(name)[3] - - def __contains__(self, name: str) -> bool: - return name in self._specs - - def __len__(self) -> int: - return len(self._specs) - - def names(self) -> list[str]: - """Return the list of region names.""" - - return sorted(self._specs.keys()) - - def get(self, name: str) -> dict[str, object]: - """Return ``{"start": ..., "end": ..., "start_line": N, "end_line": N}`` for *name*. - - The returned dict can be passed directly as the ``region`` value - in ``Agent.edit_region()`` edits. ``start_line`` / ``end_line`` are - 1-based for readability and enable adjacent-edit detection. - """ - - start_id, end_id, start_line, end_line = self._resolve(name) - return { - "start": start_id, - "end": end_id, - "start_line": start_line + 1, - "end_line": end_line + 1, - } - - def __repr__(self) -> str: - names = ", ".join(sorted(self._specs.keys())) - return f"AgentRegion({len(self._specs)} regions on " f"{self._file_path!r}: {names})" - - # ------------------------------------------------------------------ - # Resolution internals - # ------------------------------------------------------------------ - - def _eager_validate(self) -> None: - """Eagerly resolve and validate all region patterns at init time. - - Raises ValueError immediately for ambiguous patterns so the LLM - gets clear feedback without waiting for the first access. - """ - - for name in list(self._specs.keys()): - self._resolve(name) - - def _resolve(self, name: str) -> tuple[str, str, int, int]: - """ - Re-read file and resolve *name* to - (start_id, end_id, start_line, end_line). - - When a pattern is a content ID the referenced line is snapshotted - so future resolutions can fall back to content matching if the - original ID goes stale. - """ - - import os - - from cecli.helpers.hashline import ( - ContentHashError, - normalize_hashline, - resolve_content_to_hashline_ids, - ) - from cecli.helpers.hashpos.hashpos import HashPos - from cecli.tools.utils.helpers import resolve_paths - - spec = self._specs[name] - - # Read explicit line hints from spec (preferred over @L in patterns). - # 1-based in the spec, converted to 0-based internally. - explicit_start = spec.get("start_line_hint") - explicit_end = spec.get("end_line_hint") - - abs_path, rel_path = resolve_paths(self._coder, self._file_path) - - if not os.path.isfile(abs_path): - raise ValueError(f"File not found: {self._file_path}") - - content = self._coder.io.read_text(abs_path) - - if content is None: - raise ValueError(f"Could not read file: {self._file_path}") - - lines = content.splitlines() - hp = HashPos(content) - - start_pattern = self._resolve_pattern( - hp, lines, spec, "start", normalize_hashline, ContentHashError - ) - end_pattern = self._resolve_pattern( - hp, lines, spec, "end", normalize_hashline, ContentHashError - ) - - # Always strip @L hints from patterns — they are metadata, not literal text. - # Explicit hints (start_line_hint / end_line_hint) override any @L in patterns. - start_pattern, extracted_start, start_hint_type = self._extract_l_hint(start_pattern, lines) - end_pattern, extracted_end, end_hint_type = self._extract_l_hint(end_pattern, lines) - - # Handle explicit hints (start_line_hint / end_line_hint) - # Integers are treated as @L (1-based line numbers). - # Strings support the full @L, @A, @B syntax (same as ReadFile). - if explicit_start is not None: - if isinstance(explicit_start, str): - # String hint — parse through _extract_l_hint - _, start_hint, start_hint_type = self._extract_l_hint(explicit_start, lines) - if start_hint is None: - # String hint like "@L394" may fail because the regex - # requires the @L to be preceded by whitespace or be at - # the start of the string. Guide the user to use an - # integer hint instead. - raise ValueError( - f"start_line_hint '{explicit_start}' for region " - f"'{name}' could not be resolved. " - f"Use an integer line number instead: " - f"start_line_hint={explicit_start.replace('@L', '')}" - ) - else: - # Integer hint — treat as @L (1-based, converted to 0-based) - start_hint = explicit_start - 1 - start_hint_type = "L" - else: - start_hint = extracted_start - - if explicit_end is not None: - if isinstance(explicit_end, str): - _, end_hint, end_hint_type = self._extract_l_hint(explicit_end, lines) - if end_hint is None: - # String hint like "@L437" may fail because the regex - # requires @L to be preceded by whitespace or be at - # the start of the string. Guide the user to use an - # integer hint instead. - raise ValueError( - f"end_line_hint '{explicit_end}' for region " - f"'{name}' could not be resolved. " - f"Use an integer line number instead: " - f"end_line_hint={explicit_end.replace('@L', '')}" - ) - else: - end_hint = explicit_end - 1 - end_hint_type = "L" - else: - end_hint = extracted_end - - # Strip hashline prefixes from text patterns — the LLM may have copied - # content-ID-prefixed lines from a ReadFile response (e.g. —XYZ12—text). - # Content-ID patterns and special markers are left untouched. - if not self._looks_like_content_id(start_pattern) and start_pattern not in ("@000", "000@"): - start_pattern = HashPos.strip_prefix(start_pattern) - if not self._looks_like_content_id(end_pattern) and end_pattern not in ("@000", "000@"): - end_pattern = HashPos.strip_prefix(end_pattern) - - # Validate uniqueness for text-based patterns (not content IDs or special markers). - self._validate_pattern_uniqueness( - start_pattern, start_hint, "start", name, lines, start_hint_type - ) - self._validate_pattern_uniqueness(end_pattern, end_hint, "end", name, lines, end_hint_type) - - start_id, end_id = resolve_content_to_hashline_ids( - content, - start_pattern, - end_pattern, - start_hint_line=start_hint if start_hint_type == "L" else None, - exact=self._exact, - ) - - # Resolve line numbers from content IDs - def _line_from_id(content_id: str, default_if_not_found: int) -> int: - if content_id == "@000": - return 1 - - if content_id == "000@": - return len(lines) - - try: - normalized = normalize_hashline(content_id) - candidates = hp.resolve_to_lines(normalized) - - if candidates: - return candidates[0] + 1 - except (ContentHashError, ValueError): - pass - - return default_if_not_found - - start_line = _line_from_id(start_id, -1) - end_line = _line_from_id(end_id, -1) - - if start_line < 0 or end_line < 0: - parts = [] - if start_line >= 0: - parts.append(f" Start pattern resolved to: {start_pattern!r} (line {start_line})") - else: - parts.append(f" Start pattern NOT FOUND: {start_pattern!r}") - if end_line >= 0: - parts.append(f" End pattern resolved to: {end_pattern!r} (line {end_line})") - else: - parts.append(f" End pattern NOT FOUND: {end_pattern!r}") - raise ValueError( - f"Could not resolve line numbers for region " - f"'{name}' in {self._file_path}\n" + "\n".join(parts) - ) - - return start_id, end_id, start_line, end_line - - # ------------------------------------------------------------------ - # Helpers - # ------------------------------------------------------------------ - - @staticmethod - def _search_in_lines(lines: list[str], pattern: str) -> list[int]: - """Return 0-based indices of all lines where *pattern* matches. - - Supports multiline patterns (each line of *pattern* must appear - as a whole word in the corresponding line of *lines*). - - Delegates to the core ``search_in_lines`` in - ``cecli.helpers.hashpos.transformations`` for unified matching. - """ - - return search_in_lines(lines, pattern) - - @staticmethod - def _extract_l_hint( - pattern: str, lines: list[str] | None = None - ) -> tuple[str, int | None, str | None]: - """Extract a hint suffix from a pattern string. - - Supports @L (direct line number), @A{{regex}} (filter to matches AFTER - the first regex match), and @B{{regex}} (filter to matches BEFORE the last - regex match) hints. - - Returns (stripped_pattern, hint_value, hint_type) where: - - hint_value is a 0-based line number or None - - hint_type is 'L', 'A', 'B', or None - """ - - return extract_hint(pattern, lines) - - @staticmethod - def _narrow_by_proximity(indices: list[int], target: int, max_results: int = 5) -> list[int]: - """Return up to *max_results* indices closest to *target* (0-based).""" - - return narrow_by_proximity(indices, target, max_results=max_results) - - def _validate_pattern_uniqueness( - self, - pattern: str, - hint: int | None, - boundary: str, - name: str, - lines: list[str], - hint_type: str | None = None, - ) -> None: - """Raise ValueError if *pattern* matches multiple locations. - - Only validates text patterns — content IDs and special markers - (@000 / 000@) are inherently unique and are skipped. - """ - - if self._looks_like_content_id(pattern): - return - if pattern in ("@000", "000@"): - return - - matches = self._search_in_lines(lines, pattern) - - # Apply @A/@B directional filtering — keep only closest match in direction - if hint_type == "A" and hint is not None: - after = [m for m in matches if m > hint] - matches = [min(after)] if after else [] - elif hint_type == "B" and hint is not None: - before = [m for m in matches if m < hint] - matches = [max(before)] if before else [] - - if len(matches) <= 1: - return - - # Try proximity narrowing — find the unique closest match (only for @L hints) - if hint is not None and hint_type == "L": - best = min(matches, key=lambda i: abs(i - hint)) - best_dist = abs(best - hint) - conflicts = [i for i in matches if i != best and abs(i - hint) == best_dist] - if not conflicts: - return # Unique closest match found - matches_for_display = [best] + conflicts - else: - matches_for_display = matches - - # Build detailed match display with line content - max_preview = 10 - sorted_matches = sorted(matches_for_display) - all_line_nums = [str(i + 1) for i in sorted_matches] - line_nums_display = ", ".join(all_line_nums) - if len(all_line_nums) > 50: - line_nums_display = ( - ", ".join(all_line_nums[:50]) + f", ... ({len(all_line_nums)} total)" - ) - - # Only show content previews for the first 10 matches - match_lines = [] - for i in sorted_matches[:max_preview]: - line_content = lines[i] - if len(line_content) > 120: - line_content = line_content[:117] + "..." - match_lines.append(f" @L{i + 1}: {line_content}") - match_details = "\n".join(match_lines) - if len(sorted_matches) > max_preview: - match_details += f"\n ... and {len(sorted_matches) - max_preview} more match(es)" - - if hint is not None: - raise ValueError( - f"{boundary.capitalize()} pattern '{pattern}' for region " - f"'{name}' has {len(matches)} matches (lines {line_nums_display}); " - f"@L{hint + 1} hint ties between " - f"{len(matches_for_display)} equally-close locations:\n" - f"{match_details}\n" - f"Use a more specific pattern." - ) - - raise ValueError( - f"{boundary.capitalize()} pattern '{pattern}' for region " - f"'{name}' matches {len(matches)} locations (lines {line_nums_display}):\n" - f"{match_details}\n" - f"Use a more specific pattern or append ' @L' to " - f"disambiguate (e.g., '{pattern} @L{all_line_nums[0]}')." - ) - - @staticmethod - def _looks_like_content_id(value: str) -> bool: - """Return True if *value* appears to be a content ID rather than text.""" - - return is_content_id(value) - - def _resolve_pattern( - self, - hp, - lines: list[str], - spec: dict[str, str], - key: str, - normalize_hashline, - ContentHashError, - ) -> str: - """ - Resolve a single boundary pattern. - - Content-ID patterns have their referenced line content snapshotted - so stale IDs can be recovered via content matching. - """ - - pattern = spec[key] - - # Special markers never go stale - if pattern in ("@000", "000@"): - return pattern - - # @L{num} notation — resolve via shared utility - import re as _re - - _m = _re.match(r"^@L(\d+)$", pattern) - if _m: - return resolve_at_l(pattern, hp, lines) - - if not self._looks_like_content_id(pattern): - return pattern - - # Content ID — try to resolve and snapshot the line content - content_key = f"_{key}_content" - - try: - normalized = normalize_hashline(pattern) - candidates = hp.resolve_to_lines(normalized) - - if candidates and candidates[0] < len(lines): - spec[content_key] = lines[candidates[0]] - - return pattern - except (ContentHashError, ValueError): - pass - - # Content ID may be stale — fall back to snapshotted line content - cached = spec.get(content_key) - - if cached: - return cached - - # No fallback available; return the (stale) ID and let the - # caller's resolution logic handle the error - return pattern diff --git a/cecli/helpers/sessions/manager.py b/cecli/helpers/sessions/manager.py index 974baacdf31..bfe69dc8c8b 100644 --- a/cecli/helpers/sessions/manager.py +++ b/cecli/helpers/sessions/manager.py @@ -269,10 +269,12 @@ async def _reload_sub_agent(self, service, sub_file: Path) -> None: return independent = bool(sub_data.get("independent", True)) + spawn_kwargs = {"auto_reap": False, "independent": independent} + resume_worktree = sub_data.get("worktree") + if resume_worktree is not None: + spawn_kwargs["resume_worktree"] = resume_worktree - new_coder, _info = await service.spawn( - name, parent=self.coder, auto_reap=False, independent=independent - ) + new_coder, _info = await service.spawn(name, parent=self.coder, **spawn_kwargs) sub_manager = SessionManager(new_coder, self.io) applied, _edit_format = await sub_manager._apply_session_data( diff --git a/cecli/helpers/sessions/payload.py b/cecli/helpers/sessions/payload.py index 7d08d9e9df1..f5e12cc921f 100644 --- a/cecli/helpers/sessions/payload.py +++ b/cecli/helpers/sessions/payload.py @@ -41,6 +41,7 @@ def build_payload(coder, io, session_name: str, agent_name: Optional[str] = None "session_name": session_name, "agent_name": agent_name, "agent_root": str(coder.root) if agent_name and agent_name.startswith("ws:") else None, + "worktree": _worktree_data(coder), "independent": independent, "status": status, "model": coder.main_model.name, @@ -261,6 +262,20 @@ def _agent_config_data(coder) -> Optional[Dict]: } +def _worktree_data(coder) -> Optional[Dict]: + """Return a JSON-serializable worktree dict, or ``None`` when absent.""" + record = getattr(coder, "worktree", None) + if record is None or not hasattr(record, "to_dict"): + return None + + try: + data = record.to_dict() + except Exception: + return None + + return data if isinstance(data, dict) else None + + def _restore_files(coder, io, target: set, rel_fnames: list) -> None: """Add every existing ``rel_fnames`` entry to ``target``.""" for rel_fname in rel_fnames: diff --git a/cecli/helpers/skills.py b/cecli/helpers/skills.py index 84e632c9e32..f20c722b02a 100644 --- a/cecli/helpers/skills.py +++ b/cecli/helpers/skills.py @@ -347,7 +347,7 @@ def _parse_skill_metadata(self, skill_md_path: Path) -> SkillMetadata: description=description, path=skill_md_path.parent, license=frontmatter.get("license"), - allowed_tools=frontmatter.get("allowed-tools", []), + allowed_tools=_normalize_allowed_tools(frontmatter.get("allowed-tools")), metadata=frontmatter.get("metadata", {}), ) @@ -1092,3 +1092,58 @@ def get_skills_context(self) -> Optional[str]: # We can't use io.tool_error here since we don't have access to io # The caller should handle the exception raise + + +def _normalize_allowed_tools(value: Any) -> List[str]: + """Normalize an ``allowed-tools`` frontmatter value into a list of strings. + + YAML permits ``allowed-tools`` to be either a sequence or a single scalar; + the latter is split on top-level commas so that constructs such as + ``Bash(git commit -m "a, b"), Read`` are not broken apart. Missing values + become an empty list. Raises ``ValueError`` for unsupported types. + """ + if value is None: + return [] + + if isinstance(value, str): + return _split_top_level_commas(value) + + if not isinstance(value, (list, tuple)): + raise ValueError( + "'allowed-tools' must be a string or a list of strings, " f"got {type(value).__name__}" + ) + + tools: List[str] = [] + + for item in value: + if not isinstance(item, str): + raise ValueError(f"'allowed-tools' entries must be strings, got {type(item).__name__}") + + tool = item.strip() + if tool: + tools.append(tool) + + return tools + + +def _split_top_level_commas(value: str) -> List[str]: + """Split ``value`` on commas that are not nested inside parentheses.""" + parts: List[str] = [] + current: List[str] = [] + depth = 0 + + for char in value: + if char == "(": + depth += 1 + elif char == ")" and depth > 0: + depth -= 1 + elif char == "," and depth == 0: + parts.append("".join(current)) + current = [] + continue + + current.append(char) + + parts.append("".join(current)) + + return [part.strip() for part in parts if part.strip()] diff --git a/cecli/helpers/workflows/config.py b/cecli/helpers/workflows/config.py index b6c04f6dc5f..4056816475e 100644 --- a/cecli/helpers/workflows/config.py +++ b/cecli/helpers/workflows/config.py @@ -163,6 +163,29 @@ def validate_workflow_config(wf: WorkflowConfig, raw: Optional[Dict[str, Any]] = if norm.get("persist") is not None and not isinstance(norm["persist"], bool): warnings.append("'persist' is not a boolean") + if wf.repo is not None and not isinstance(wf.repo, str): + raise ValueError(f"{where}: 'repo' must be a string") + + if wf.worktree is not None: + if not isinstance(wf.worktree, dict): + raise ValueError(f"{where}: 'worktree' must be a boolean or a mapping") + + unknown = sorted(set(wf.worktree) - {"branch"}) + if unknown: + warnings.append(f"unknown 'worktree' key(s) ignored: {', '.join(unknown)}") + + branch = wf.worktree.get("branch") + if branch is not None and not isinstance(branch, str): + raise ValueError(f"{where}: 'worktree.branch' must be a string") + + from .subagents import _worktree_source + + if _worktree_source(wf) is None: + warnings.append( + "'worktree' is enabled but no source repository could be inferred; " + "the dispatching agent's root will be used" + ) + wf.lease_timeout = _positive_number(wf.lease_timeout, "lease_timeout", where, default=30.0) _check_schedule(wf.schedule, where) diff --git a/cecli/helpers/workflows/logs.py b/cecli/helpers/workflows/logs.py index 4d246b49c91..0446f4ca2ce 100644 --- a/cecli/helpers/workflows/logs.py +++ b/cecli/helpers/workflows/logs.py @@ -86,6 +86,7 @@ def finish_log(handle: Optional[LogHandle], result) -> None: "summary": getattr(result, "summary", ""), "error_message": getattr(result, "error_message", ""), "run_id": getattr(result, "run_id", None), + "worktree": getattr(result, "worktree", None), }, ) except Exception: diff --git a/cecli/helpers/workflows/models.py b/cecli/helpers/workflows/models.py index 5a0f02fca00..59ebb6445e5 100644 --- a/cecli/helpers/workflows/models.py +++ b/cecli/helpers/workflows/models.py @@ -55,6 +55,8 @@ class WorkflowConfig: lease_timeout: float = 30.0 # minutes model: Optional[str] = None root: Optional[str] = None + repo: Optional[str] = None + worktree: Optional[Dict[str, Any]] = None hooks: Dict[str, Any] = field(default_factory=dict) skills: List[str] = field(default_factory=list) servers: List[str] = field(default_factory=list) @@ -64,13 +66,22 @@ class WorkflowConfig: catch_up: Optional[bool] = None # None: use the scheduler default source_path: Optional[str] = None + def __post_init__(self) -> None: + """Normalize the worktree field for programmatic construction.""" + if self.worktree is True: + self.worktree = {} + elif self.worktree is False: + self.worktree = None + elif isinstance(self.worktree, dict): + self.worktree = dict(self.worktree) + @property def agent_name(self) -> str: return f"wf:{self.name}" def to_dict(self) -> Dict[str, Any]: """Canonical dict form used for hashing and ``/workflows show``.""" - return { + data = { "name": self.name, "description": self.description, "schedule": self.schedule, @@ -89,6 +100,14 @@ def to_dict(self) -> Dict[str, Any]: "tasks": [t.to_dict() for t in self.tasks], } + if self.repo is not None: + data["repo"] = self.repo + + if self.worktree is not None: + data["worktree"] = self.worktree + + return data + def definition_hash(self) -> str: """sha256 of the normalized definition (key-order independent).""" canonical = json.dumps(self.to_dict(), sort_keys=True, separators=(",", ":"), default=str) @@ -136,6 +155,10 @@ def from_dict(cls, raw: Dict[str, Any], source_path: Optional[str] = None) -> "W ) hooks = data.get("hooks") or {} + worktree = _normalize_worktree(data.get("worktree")) + if isinstance(worktree, dict) and isinstance(worktree.get("branch"), str): + worktree["branch"] = interpolate_env_vars(worktree["branch"]) + return cls( name=str(data.get("name") or ""), tasks=tasks, @@ -156,6 +179,12 @@ def from_dict(cls, raw: Dict[str, Any], source_path: Optional[str] = None) -> "W if data.get("root") is not None else None ), + repo=( + _interp(interpolate_env_vars, data["repo"]) + if data.get("repo") is not None + else None + ), + worktree=worktree, hooks=hooks if isinstance(hooks, dict) else {}, skills=[_interp(interpolate_env_vars, s) for s in data.get("skills") or []], servers=[_interp(interpolate_env_vars, s) for s in data.get("servers") or []], @@ -199,6 +228,23 @@ class RunResult: tasks: List[TaskResult] = field(default_factory=list) run_id: Optional[int] = None log_path: Optional[str] = None + worktree: Optional[Dict[str, Any]] = None + + def to_dict(self) -> Dict[str, Any]: + """Serialize the run outcome, including the worker's worktree record.""" + return { + "name": self.name, + "status": self.status, + "source": self.source, + "summary": self.summary, + "error_message": self.error_message, + "started_at": self.started_at, + "finished_at": self.finished_at, + "tasks": [t.to_dict() for t in self.tasks], + "run_id": self.run_id, + "log_path": self.log_path, + "worktree": self.worktree, + } @classmethod def error(cls, exc: BaseException, name: str = "", source: str = "scheduler") -> "RunResult": @@ -207,6 +253,25 @@ def error(cls, exc: BaseException, name: str = "", source: str = "scheduler") -> ) +def _normalize_worktree(value: Any) -> Any: + """Normalize the ``worktree`` field: true -> {}, false/None -> None, mapping -> dict. + + Other values are left untouched so validation can reject them with a useful + error. + """ + + if value is None or value is False: + return None + + if value is True: + return {} + + if isinstance(value, dict): + return dict(value) + + return value + + def _as_bool(value: Any, default: bool = False) -> bool: """Coerce a config value to a boolean without treating "false" as truthy.""" diff --git a/cecli/helpers/workflows/runner.py b/cecli/helpers/workflows/runner.py index 6bcb5599d59..9f0b47574b8 100644 --- a/cecli/helpers/workflows/runner.py +++ b/cecli/helpers/workflows/runner.py @@ -112,6 +112,11 @@ async def execute_workflow( result.error_message = str(exc) or exc.__class__.__name__ finally: if worker is not None: + record = getattr(worker, "worktree", None) + if record is not None: + to_dict = getattr(record, "to_dict", None) + result.worktree = to_dict() if callable(to_dict) else record + _save_session(worker, coder, wf, result) if not wf.persist: _reap_worker(service, worker) diff --git a/cecli/helpers/workflows/subagents.py b/cecli/helpers/workflows/subagents.py index 09e82dd6132..43a338714d8 100644 --- a/cecli/helpers/workflows/subagents.py +++ b/cecli/helpers/workflows/subagents.py @@ -16,8 +16,9 @@ from __future__ import annotations import logging +import subprocess from pathlib import Path -from typing import Any, Dict, List +from typing import Any, Dict, List, Optional logger = logging.getLogger(__name__) @@ -110,6 +111,19 @@ def register_workflow_subagents(workflow_configs) -> List[str]: if wf.root: metadata["root"] = str(Path(wf.root).expanduser().resolve()) + if wf.worktree is not None: + worktree = wf.worktree if isinstance(wf.worktree, dict) else {} + metadata["worktree"] = dict(worktree) + + source = _worktree_source(wf) + if source: + metadata["worktree_source"] = source + else: + logger.warning( + "Workflow '%s' enables worktree but no source repository could be inferred", + wf.name, + ) + metadata["agent-config"] = agent_config metadata["description"] = f"Workflow sub-agent for '{wf.name}'" # ``allow_nested_delegation`` is intentionally NOT forced here: the @@ -176,3 +190,45 @@ def ensure_wf_agent_registered(name: str) -> Any: def get_workflow_configs() -> List[Any]: """Return the cached WorkflowConfigs from the most recent registrations.""" return list(_workflow_configs_by_agent.values()) + + +def _worktree_source(wf: Any) -> Optional[str]: + """Resolve the worktree source repository for *wf*. + + Prefer an explicit ``repo``; otherwise use the normalized ``root``; as a + last resort use the git top-level of the workflow definition file's + directory. Returns None when nothing can be inferred. + """ + + if wf.repo: + return str(wf.repo) + + if wf.root: + return str(Path(wf.root).expanduser().resolve()) + + return _git_toplevel(wf.source_path) + + +def _git_toplevel(source_path: Optional[str]) -> Optional[str]: + """Return the git top-level containing *source_path*, if any.""" + + if not source_path: + return None + + directory = Path(source_path).expanduser().resolve().parent + + try: + completed = subprocess.run( + ["git", "-C", str(directory), "rev-parse", "--show-toplevel"], + capture_output=True, + text=True, + timeout=5, + check=False, + ) + except (OSError, subprocess.SubprocessError): + return None + + if completed.returncode != 0: + return None + + return completed.stdout.strip() or None diff --git a/cecli/helpers/worktrees/__init__.py b/cecli/helpers/worktrees/__init__.py new file mode 100644 index 00000000000..b5cf9cc4e7c --- /dev/null +++ b/cecli/helpers/worktrees/__init__.py @@ -0,0 +1,19 @@ +"""Git worktree isolation helpers for agent workspaces. + +Public entry points live in :mod:`cecli.helpers.worktrees.manager`; this +package re-exports them for convenient imports. +""" + +from cecli.helpers.worktrees.git import WorktreeError +from cecli.helpers.worktrees.manager import ( + WorktreeManager, + WorktreeRecord, + WorktreeReleaseResult, +) + +__all__ = [ + "WorktreeError", + "WorktreeManager", + "WorktreeRecord", + "WorktreeReleaseResult", +] diff --git a/cecli/helpers/worktrees/git.py b/cecli/helpers/worktrees/git.py new file mode 100644 index 00000000000..924df7fe10f --- /dev/null +++ b/cecli/helpers/worktrees/git.py @@ -0,0 +1,204 @@ +"""Thin subprocess wrappers around the git CLI. + +Every wrapper captures output, disables the pager and interactive credential +prompts, and reports fatal failures as :class:`WorktreeError` carrying git's +stderr. Read-only probes accept ``check=False`` so callers can treat a +non-zero exit code as a falsy answer instead of an exception. +""" + +from __future__ import annotations + +import os +import subprocess +from pathlib import Path + + +class WorktreeError(RuntimeError): + """Raised when a worktree operation or git invocation cannot complete.""" + + +def run_git( + *args: str, + cwd: str | Path | None = None, + check: bool = True, + timeout: int = 120, + env: dict[str, str] | None = None, +) -> subprocess.CompletedProcess: + """Run ``git`` with *args* and capture its output. + + ``GIT_PAGER=cat`` keeps output machine-readable and + ``GIT_TERMINAL_PROMPT=0`` prevents a hung process waiting on credentials. + When *check* is true a non-zero exit code raises :class:`WorktreeError` + with git's stderr attached. + """ + command = ["git", *(_as_text(arg) for arg in args)] + full_env = os.environ.copy() + full_env["GIT_PAGER"] = "cat" + full_env.setdefault("GIT_TERMINAL_PROMPT", "0") + + if env: + full_env.update(env) + + try: + result = subprocess.run( + command, + cwd=_as_text(cwd) if cwd is not None else None, + capture_output=True, + text=True, + encoding="utf-8", + errors="replace", + env=full_env, + timeout=timeout, + ) + except FileNotFoundError as exc: + raise WorktreeError("git executable not found") from exc + except OSError as exc: + raise WorktreeError(f"failed to run {' '.join(command)}: {exc}") from exc + except subprocess.TimeoutExpired as exc: + raise WorktreeError(f"git command timed out: {' '.join(command)}") from exc + + if check and result.returncode != 0: + raise WorktreeError(_format_error(command, result)) + + return result + + +def rev_parse(ref: str, cwd: str | Path | None = None, *, check: bool = True) -> str | None: + """Resolve *ref* to a commit SHA, or return ``None`` when it is unknown.""" + result = run_git("rev-parse", "--verify", ref, cwd=cwd, check=False) + + if result.returncode != 0: + if check: + raise WorktreeError(_format_error(["git", "rev-parse", "--verify", ref], result)) + + return None + + value = result.stdout.strip() + + return value or None + + +def git_root(path: str | Path) -> str | None: + """Return the absolute top-level of the worktree containing *path*. + + A path pointing directly at a ``.git`` file (as used by linked worktrees) + is resolved through its parent. Bare repositories are returned as-is. + """ + target = Path(path).expanduser() + + if target.is_file(): + if target.name != ".git": + return None + + target = target.parent + + result = run_git("rev-parse", "--show-toplevel", cwd=target, check=False) + + if result.returncode == 0: + value = result.stdout.strip() + + if value: + return str(Path(value).resolve()) + + if is_bare_repo(target): + return str(target.resolve()) + + return None + + +def is_git_repo(path: str | Path) -> bool: + """Return whether *path* is inside a git repository (bare included).""" + result = run_git("rev-parse", "--git-dir", cwd=path, check=False) + + return result.returncode == 0 and bool(result.stdout.strip()) + + +def is_bare_repo(path: str | Path) -> bool: + """Return whether *path* is a bare git repository.""" + result = run_git("rev-parse", "--is-bare-repository", cwd=path, check=False) + + return result.returncode == 0 and result.stdout.strip() == "true" + + +def default_branch(cwd: str | Path | None = None) -> str | None: + """Best-effort default base branch, preferring ``origin/HEAD``. + + Falls back to local ``main``, then ``master``, then the currently checked + out branch. Returns ``None`` for an empty repository with no commits. + """ + result = run_git( + "symbolic-ref", "--quiet", "--short", "refs/remotes/origin/HEAD", cwd=cwd, check=False + ) + + if result.returncode == 0 and result.stdout.strip(): + return result.stdout.strip() + + for candidate in ("main", "master"): + if rev_parse(candidate, cwd=cwd, check=False): + return candidate + + return current_branch(cwd) + + +def current_branch(cwd: str | Path | None = None) -> str | None: + """Return the short name of the checked out branch, if any.""" + result = run_git("rev-parse", "--abbrev-ref", "HEAD", cwd=cwd, check=False) + + if result.returncode != 0: + return None + + name = result.stdout.strip() + + return name if name and name != "HEAD" else None + + +def status_porcelain(cwd: str | Path) -> str: + """Return V1 porcelain status, listing untracked files individually.""" + result = run_git("status", "--porcelain=v1", "--untracked-files=all", cwd=cwd, check=False) + + return result.stdout + + +def branch_exists(branch: str, cwd: str | Path | None = None) -> bool: + """Return whether a local branch named *branch* exists.""" + name = branch.removeprefix("refs/heads/") + result = run_git("show-ref", "--verify", "--quiet", f"refs/heads/{name}", cwd=cwd, check=False) + + return result.returncode == 0 + + +def branch_merged(branch: str, base: str, cwd: str | Path | None = None) -> bool: + """Return whether *branch* is an ancestor of (fully merged into) *base*.""" + if not branch or not base: + return False + + result = run_git("merge-base", "--is-ancestor", branch, base, cwd=cwd, check=False) + + return result.returncode == 0 + + +def ahead_count(base_sha: str, branch: str, cwd: str | Path | None = None) -> int: + """Return the number of commits on *branch* not reachable from *base_sha*.""" + if not base_sha or not branch: + return 0 + + result = run_git("rev-list", "--count", f"{base_sha}..{branch}", cwd=cwd, check=False) + + if result.returncode != 0: + return 0 + + try: + return int(result.stdout.strip()) + except ValueError: + return 0 + + +def _format_error(command: list[str], result: subprocess.CompletedProcess) -> str: + detail = (result.stderr or result.stdout or "").strip() + prefix = f"git command failed (exit {result.returncode}): {' '.join(command)}" + + return f"{prefix}: {detail}" if detail else prefix + + +def _as_text(value: object) -> str: + return str(value) diff --git a/cecli/helpers/worktrees/manager.py b/cecli/helpers/worktrees/manager.py new file mode 100644 index 00000000000..e0372ebdf13 --- /dev/null +++ b/cecli/helpers/worktrees/manager.py @@ -0,0 +1,980 @@ +"""Lifecycle management for isolated agent git worktrees. + +A worktree is created from a local repository or a cached bare clone of a +remote. Each worktree gets its own generated branch and lives under +``~/.cecli/worktrees`` (see :mod:`cecli.helpers.worktrees.paths`). Records are +tracked in an atomically-written JSON registry so they can be recreated or +released later, even from a different process. + +Releasing a worktree deliberately commits any uncommitted work first +("commit-on-release"), then removes the worktree. Only branches with no +commits ahead of their base -- or branches fully merged into their base -- are +deleted; otherwise the branch is kept so the work is not lost. Ignored files +are intentionally discarded by ``git worktree remove --force``. +""" + +from __future__ import annotations + +import json +import os +import re +import shutil +import socket +import tempfile +import threading +from contextlib import contextmanager +from dataclasses import asdict, dataclass, fields +from datetime import datetime, timezone +from pathlib import Path +from typing import Iterator + +from cecli.helpers.worktrees import paths +from cecli.helpers.worktrees.git import ( + WorktreeError, + ahead_count, + branch_exists, + branch_merged, + current_branch, + default_branch, + git_root, + is_git_repo, + rev_parse, + run_git, + status_porcelain, +) + +__all__ = [ + "WorktreeError", + "WorktreeManager", + "WorktreeRecord", + "WorktreeReleaseResult", +] + +_SCHEME_URL = re.compile(r"^[A-Za-z][A-Za-z0-9+.-]*://") +_SCP_URL = re.compile(r"^[^/@\s]+@[^:\s]+:.+") + + +@dataclass(frozen=True) +class WorktreeRecord: + """A managed worktree and the metadata needed to recreate or release it.""" + + source: str + repo: str + path: str + branch: str + base_ref: str + base_sha: str + agent: str + uuid: str + pid: int + host: str + created_at: str + + def to_dict(self) -> dict: + """Return a JSON-serializable representation of the record.""" + return asdict(self) + + @classmethod + def from_dict(cls, data: dict) -> "WorktreeRecord": + """Build a record from a mapping, ignoring unknown keys.""" + known = {field.name for field in fields(cls)} + values = {name: data[name] for name in known if name in data} + + return cls(**values) + + +@dataclass(frozen=True) +class WorktreeReleaseResult: + """Outcome of releasing a single worktree.""" + + uuid: str + branch: str + committed: bool = False + removed: bool = False + branch_kept: bool = False + branch_deleted: bool = False + reason: str = "" + + def to_dict(self) -> dict: + """Return a JSON-serializable representation of the result.""" + return asdict(self) + + +class WorktreeManager: + """Create, recreate, release, and sweep agent worktrees.""" + + BASE: Path = paths.managed_root() + REGISTRY_FILENAME = "registry.json" + MAX_UNTRACKED_FILE_BYTES = 10 * 1024 * 1024 + MAX_UNTRACKED_TOTAL_BYTES = 100 * 1024 * 1024 + MAX_NAME_ATTEMPTS = 8 + _THREAD_LOCK = threading.RLock() + + @classmethod + def create( + cls, + *, + agent_name: str, + uuid: str, + source: str | Path, + base_ref: str | None = None, + base_root: str | Path | None = None, + reuse_existing: bool = True, + ) -> WorktreeRecord: + """Create a new worktree for *agent_name* and return its record. + + *source* may be a local repository path or a remote URL. Remotes are + cloned into a shared bare cache and fetched on reuse. The default base + branch is resolved from ``origin/HEAD``, ``main``, ``master``, or the + current ``HEAD`` in that order. + + By default an already-recorded checkout for the same agent and + repository is adopted (its owner is refreshed) instead of creating a + duplicate; workflows never run the same pair concurrently. Pass + ``reuse_existing=False`` only when deliberately creating a second + independent checkout for the same agent. + """ + base = cls._base() + repo = cls._prepare_source(source, base_root=base_root) + + # Reuse and creation are serialized per repository so concurrent runs of + # the same workflow cannot each create their own checkout. + with cls._repo_lock(base, repo): + if reuse_existing: + existing = cls._find_reusable(repo, agent_name) + + if existing is not None: + return cls._adopt(existing) + + base_ref_name, base_sha = cls._resolve_base(repo, base_ref) + branch = paths.branch_name(agent_name, uuid) + path = paths.worktree_path(base, repo, agent_name, uuid) + path.parent.mkdir(parents=True, exist_ok=True) + branch, path = cls._add_worktree(repo, branch, path, base_ref_name, base_sha) + + record = WorktreeRecord( + source=str(source), + repo=str(Path(repo).resolve()), + path=str(path.resolve()), + branch=branch, + base_ref=base_ref_name, + base_sha=base_sha, + agent=str(agent_name), + uuid=str(uuid), + pid=os.getpid(), + host=socket.gethostname(), + created_at=_now(), + ) + cls._save_record(record) + + return record + + @classmethod + def recreate( + cls, + record: WorktreeRecord | dict, + *, + agent_name: str | None = None, + uuid: str | None = None, + path: str | Path | None = None, + ) -> WorktreeRecord: + """Reattach or rebuild the worktree described by *record*. + + An existing recorded path is reused when it is still a valid worktree. + Otherwise the existing branch is attached, the recorded base SHA is + checked out onto a new branch, or the base is resolved again as a last + resort. ``agent_name``, ``uuid``, and ``path`` may be overridden. + """ + original = cls._coerce_record(record) + base = cls._base() + repo = Path(original.repo) + new_agent = str(agent_name) if agent_name is not None else original.agent + new_uuid = str(uuid) if uuid is not None else original.uuid + recorded_path = Path(original.path) + base_ref = original.base_ref + base_sha = original.base_sha + + if path is None and recorded_path.exists() and cls._is_worktree(recorded_path, repo): + target_path = recorded_path + branch = current_branch(target_path) or original.branch + else: + branch = original.branch or paths.branch_name(new_agent, new_uuid) + + if path is not None: + target_path = Path(path).expanduser().resolve() + elif new_agent == original.agent and new_uuid == original.uuid: + target_path = recorded_path + else: + target_path = paths.worktree_path(base, repo, new_agent, new_uuid) + + target_path.parent.mkdir(parents=True, exist_ok=True) + + with cls._repo_lock(base, repo): + reusable = cls._find_reusable(repo, new_agent) if path is None else None + + if reusable is not None: + adopted = cls._adopt(reusable) + + if original.uuid != adopted.uuid: + cls._discard_record(original.uuid) + + return adopted + + if branch_exists(branch, repo): + try: + run_git("worktree", "add", str(target_path), branch, cwd=repo) + except WorktreeError: + # The saved branch may still be checked out elsewhere. + # Preserve its tip under the new generated name instead. + tip = rev_parse(branch, cwd=repo, check=False) + branch = paths.branch_name(new_agent, new_uuid) + + if tip: + run_git( + "worktree", "add", "-b", branch, str(target_path), tip, cwd=repo + ) + else: + raise + elif base_sha and rev_parse(base_sha, cwd=repo, check=False): + run_git("worktree", "add", "-b", branch, str(target_path), base_sha, cwd=repo) + else: + fallback_ref = base_ref if rev_parse(base_ref, cwd=repo, check=False) else None + base_ref, base_sha = cls._resolve_base(repo, fallback_ref) + branch, target_path = cls._add_worktree( + repo, branch, target_path, base_ref, base_sha + ) + + record = WorktreeRecord( + source=original.source, + repo=str(repo.resolve()), + path=str(target_path.resolve()), + branch=branch, + base_ref=base_ref, + base_sha=base_sha, + agent=new_agent, + uuid=new_uuid, + pid=os.getpid(), + host=socket.gethostname(), + created_at=original.created_at, + ) + cls._replace_record(original.uuid, record) + + return record + + @classmethod + def release( + cls, + record_or_uuid: WorktreeRecord | dict | str, + *, + force: bool = False, + ) -> WorktreeReleaseResult: + """Commit dirty work, remove the worktree, and clean up its branch. + + Uncommitted changes are committed with the cecli identity before the + worktree is removed. Oversized untracked files abort the release and + leave everything in place. *force* bypasses that size guard. A branch + is deleted only when it has no commits ahead of its base or is fully + merged; otherwise it is kept. + """ + record = cls._coerce_record(record_or_uuid) + repo = Path(record.repo) + path = Path(record.path) + + if not path.exists(): + run_git("worktree", "prune", cwd=repo, check=False) + ahead = ahead_count(record.base_sha, record.branch, cwd=repo) + branch_deleted = cls._drop_empty_branch(repo, record, ahead) + cls._discard_record(record.uuid) + + return _release_result( + record, + removed=False, + branch_kept=not branch_deleted, + branch_deleted=branch_deleted, + reason="worktree path missing", + ) + + if not cls._is_worktree(path, repo): + cls._discard_record(record.uuid) + + return _release_result( + record, + branch_kept=True, + reason="path is not a managed worktree", + ) + + try: + status = status_porcelain(path) + except WorktreeError as exc: + return _release_result(record, branch_kept=True, reason=f"status failed: {exc}") + + committed = False + + if status.strip(): + if not force and cls._untracked_too_large(path, status): + return _release_result( + record, + branch_kept=True, + reason="untracked files too large", + ) + + try: + cls._commit_dirty(record, path, status) + except WorktreeError as exc: + return _release_result(record, branch_kept=True, reason=f"commit failed: {exc}") + + committed = True + + active_branch = current_branch(path) + if active_branch is None and ( + status.strip() or ahead_count(record.base_sha, "HEAD", cwd=repo) > 0 + ): + run_git("branch", "-f", f"{record.branch}-detached", "HEAD", cwd=path, check=False) + + ahead = ahead_count(record.base_sha, record.branch, cwd=repo) + + with cls._repo_lock(cls._base(), repo): + try: + run_git("worktree", "remove", "--force", str(path), cwd=repo) + except WorktreeError as exc: + return _release_result( + record, + committed=committed, + branch_kept=True, + reason=f"worktree remove failed: {exc}", + ) + + run_git("worktree", "prune", cwd=repo, check=False) + branch_deleted = cls._drop_empty_branch( + repo, record, ahead, allow_delete=active_branch == record.branch + ) + + branch_kept = not branch_deleted + cls._discard_record(record.uuid) + + return _release_result( + record, + committed=committed, + removed=True, + branch_kept=branch_kept, + branch_deleted=branch_deleted, + reason="" if branch_deleted else "branch kept (unmerged commits)", + ) + + @classmethod + def release_all(cls, *, pid: int | None = None) -> list[WorktreeReleaseResult]: + """Release every recorded worktree belonging to *pid* (default: us).""" + target = os.getpid() if pid is None else int(pid) + host = socket.gethostname() + results = [] + + for record in cls._records(): + if record.pid != target or record.host != host: + continue + + results.append(cls._release_safely(record)) + + return results + + @classmethod + def sweep_stale(cls) -> list[WorktreeReleaseResult]: + """Release worktrees from this host whose owning process is gone.""" + host = socket.gethostname() + results = [] + + for record in cls._records(): + if record.host != host or _pid_alive(record.pid): + continue + + results.append(cls._release_safely(record)) + + return results + + @classmethod + def get(cls, uuid: str) -> WorktreeRecord | None: + """Return the registry record for *uuid*, or ``None`` if unknown.""" + data = cls._read_registry().get(str(uuid)) + + if not data: + return None + + try: + return WorktreeRecord.from_dict(data) + except (TypeError, KeyError): + return None + + @classmethod + def resolve_source( + cls, + source: str | Path, + *, + base_root: str | Path | None = None, + ) -> str: + """Resolve *source* to an absolute repository path or a remote URL. + + Existing paths are normalized to their git top-level; relative paths + are resolved against *base_root* (or the current directory). Strings + that do not exist but look like URLs are returned unchanged. A missing + non-remote path raises :class:`WorktreeError`. + """ + raw = str(source) + candidate = Path(raw).expanduser() + + if candidate.is_absolute(): + if candidate.exists(): + return _normalize_local(candidate) + elif base_root is not None: + candidate = Path(base_root).expanduser() / candidate + + if candidate.exists(): + return _normalize_local(candidate) + elif candidate.exists(): + return _normalize_local(candidate) + + if _looks_remote(raw): + return raw + + raise WorktreeError(f"source path does not exist: {raw}") + + @classmethod + def _base(cls) -> Path: + override = os.environ.get("CECLI_WORKTREES_DIR") + + if override: + return Path(override).expanduser().resolve() + + return Path(cls.BASE).expanduser().resolve() + + @classmethod + def _prepare_source( + cls, + source: str | Path, + *, + base_root: str | Path | None = None, + ) -> str: + resolved = cls.resolve_source(source, base_root=base_root) + + if _looks_remote(resolved): + return cls._cache_remote(cls._base(), resolved) + + return resolved + + @classmethod + def _cache_remote(cls, base: Path, source: str) -> str: + digest = paths.short_digest(source, 8) + slug = paths.source_slug(source) + cache = paths.sources_dir(base) / f"{slug}-{digest}" + cache.parent.mkdir(parents=True, exist_ok=True) + lock = paths.lock_path(base, f"source-{digest}") + + with _file_lock(lock): + if cache.exists() and is_git_repo(cache): + run_git( + "fetch", + "--prune", + "origin", + "+refs/heads/*:refs/heads/*", + cwd=cache, + check=False, + ) + else: + if cache.exists(): + shutil.rmtree(cache, ignore_errors=True) + + run_git("clone", "--bare", source, str(cache)) + + return str(cache.resolve()) + + @classmethod + def _resolve_base(cls, repo: str | Path, base_ref: str | None) -> tuple[str, str]: + if base_ref is not None: + ref = str(base_ref) + sha = rev_parse(ref, cwd=repo, check=False) + + if not sha: + raise WorktreeError(f"unknown base ref {ref!r} in {repo}") + + return ref, sha + + name = default_branch(cwd=repo) + + if name is None: + name = "HEAD" + + sha = rev_parse(name, cwd=repo, check=False) + + if not sha: + raise WorktreeError(f"repository has no resolvable base commit: {repo}") + + return name, sha + + @classmethod + def _add_worktree( + cls, + repo: str | Path, + branch: str, + path: Path, + base_ref: str, + base_sha: str, + ) -> tuple[str, Path]: + start = base_ref if rev_parse(base_ref, cwd=repo, check=False) else base_sha + + if path.exists(): + existing = cls._existing_branch(repo, path, branch) + + if existing is not None: + return existing, path + + raise WorktreeError(f"worktree path already exists: {path}") + + last_error: WorktreeError | None = None + + for attempt in range(cls.MAX_NAME_ATTEMPTS): + candidate_branch = branch if attempt == 0 else f"{branch}-{attempt + 1}" + + try: + if branch_exists(candidate_branch, repo): + run_git("worktree", "add", str(path), candidate_branch, cwd=repo) + else: + run_git( + "worktree", + "add", + "-b", + candidate_branch, + str(path), + start, + cwd=repo, + ) + except WorktreeError as exc: + last_error = exc + + if path.exists(): + existing = cls._existing_branch(repo, path, candidate_branch) + + if existing is not None: + return existing, path + + break + + continue + + return candidate_branch, path + + raise WorktreeError( + f"could not create worktree for branch {branch!r} in {repo}: {last_error}" + ) + + @classmethod + def _commit_dirty(cls, record: WorktreeRecord, path: Path, status: str) -> None: + subject = f"Unfinished Dirty Worktree from agent {record.uuid}" + summary = status.rstrip() + body = "\n".join( + [ + f"agent: {record.agent}", + f"worktree: {record.path}", + f"base ref: {record.base_ref}", + f"base sha: {record.base_sha}", + "", + "status:", + summary[:4000], + ] + ) + run_git("add", "-A", cwd=path) + run_git( + "-c", + "user.name=cecli", + "-c", + "user.email=cecli@localhost", + "-c", + "commit.gpgsign=false", + "commit", + "--no-verify", + "-m", + subject, + "-m", + body, + cwd=path, + ) + + @classmethod + def _untracked_too_large(cls, path: Path, status: str) -> bool: + total = 0 + + for line in status.splitlines(): + if not line.startswith("?? "): + continue + + relative = line[3:].strip().strip('"') + candidate = path / relative + + try: + size = candidate.stat().st_size + except OSError: + continue + + if size > cls.MAX_UNTRACKED_FILE_BYTES: + return True + + total += size + + if total > cls.MAX_UNTRACKED_TOTAL_BYTES: + return True + + return False + + @classmethod + def _drop_empty_branch( + cls, repo: Path, record: WorktreeRecord, ahead: int, *, allow_delete: bool = True + ) -> bool: + """Delete a managed branch when it has no unique commits.""" + if not branch_exists(record.branch, repo): + return True + + if not allow_delete: + return False + + if not record.branch.startswith(f"{paths.BRANCH_PREFIX}/"): + return False + + if not record.base_sha or not rev_parse(record.base_sha, cwd=repo, check=False): + return False + + if ahead == 0 or cls._branch_merged(repo, record): + delete = run_git("branch", "-D", record.branch, cwd=repo, check=False) + return delete.returncode == 0 + + return False + + @classmethod + def _branch_merged(cls, repo: Path, record: WorktreeRecord) -> bool: + if record.base_ref and branch_merged(record.branch, record.base_ref, cwd=repo): + return True + + if record.base_sha and branch_merged(record.branch, record.base_sha, cwd=repo): + return True + + return False + + @classmethod + def _is_worktree(cls, path: Path, repo: Path) -> bool: + if not path.is_dir(): + return False + + root = git_root(path) + + if root is None: + return False + + try: + if Path(root).resolve() != path.resolve(): + return False + except OSError: + return False + + path_common = _git_common_dir(path) + repo_common = _git_common_dir(repo) + + return bool(path_common and repo_common and path_common == repo_common) + + @classmethod + def _release_safely(cls, record: WorktreeRecord) -> WorktreeReleaseResult: + try: + return cls.release(record) + except Exception as exc: + return _release_result(record, branch_kept=True, reason=str(exc)) + + @classmethod + def _coerce_record(cls, value: WorktreeRecord | dict | str) -> WorktreeRecord: + if isinstance(value, WorktreeRecord): + return value + + if isinstance(value, dict): + return WorktreeRecord.from_dict(value) + + record = cls.get(str(value)) + + if record is None: + raise WorktreeError(f"unknown worktree uuid: {value}") + + return record + + @classmethod + def _save_record(cls, record: WorktreeRecord) -> None: + with cls._registry_lock(): + data = cls._read_registry() + data[record.uuid] = record.to_dict() + cls._write_registry(data) + + @classmethod + def _replace_record(cls, old_uuid: str, record: WorktreeRecord) -> None: + with cls._registry_lock(): + data = cls._read_registry() + + if old_uuid != record.uuid: + data.pop(old_uuid, None) + + data[record.uuid] = record.to_dict() + cls._write_registry(data) + + @classmethod + def _discard_record(cls, uuid: str) -> None: + with cls._registry_lock(): + data = cls._read_registry() + + if data.pop(str(uuid), None) is not None: + cls._write_registry(data) + + @classmethod + def _records(cls) -> list[WorktreeRecord]: + records = [] + + for value in cls._read_registry().values(): + try: + records.append(WorktreeRecord.from_dict(value)) + except (TypeError, KeyError): + continue + + return records + + @classmethod + def _read_registry(cls) -> dict[str, dict]: + path = paths.registry_path(cls._base()) + + try: + with open(path, "r", encoding="utf-8") as handle: + data = json.load(handle) + except FileNotFoundError: + return {} + except (OSError, json.JSONDecodeError): + return {} + + if not isinstance(data, dict): + return {} + + return {str(key): value for key, value in data.items() if isinstance(value, dict)} + + @classmethod + def _write_registry(cls, data: dict[str, dict]) -> None: + path = paths.registry_path(cls._base()) + path.parent.mkdir(parents=True, exist_ok=True) + fd, temp_name = tempfile.mkstemp(prefix=".registry-", suffix=".tmp", dir=str(path.parent)) + + try: + with os.fdopen(fd, "w", encoding="utf-8") as handle: + json.dump(data, handle, indent=2, sort_keys=True) + handle.write("\n") + handle.flush() + os.fsync(handle.fileno()) + + os.replace(temp_name, path) + except BaseException: + try: + os.unlink(temp_name) + except OSError: + pass + + raise + + @classmethod + @contextmanager + def _registry_lock(cls) -> Iterator[None]: + with cls._THREAD_LOCK: + with _file_lock(paths.lock_path(cls._base(), "registry")): + yield + + @classmethod + @contextmanager + def _repo_lock(cls, base: Path, repo: str | Path) -> Iterator[None]: + digest = paths.short_digest(str(Path(repo).resolve()), 12) + + with _file_lock(paths.lock_path(base, f"repo-{digest}")): + yield + + @classmethod + def _find_reusable(cls, repo: str | Path, agent_name: str) -> WorktreeRecord | None: + """Return a recorded checkout for *agent_name* in *repo*, if usable.""" + resolved_repo = str(Path(repo).resolve()) + + for record in sorted(cls._records(), key=lambda item: item.created_at, reverse=True): + if record.agent != agent_name: + continue + + if str(Path(record.repo).resolve()) != resolved_repo: + continue + + if cls._is_worktree(Path(record.path), Path(repo)): + return record + + return None + + @classmethod + def _adopt(cls, record: WorktreeRecord) -> WorktreeRecord: + """Refresh *record* ownership and persist it.""" + adopted = WorktreeRecord( + source=record.source, + repo=record.repo, + path=record.path, + branch=record.branch, + base_ref=record.base_ref, + base_sha=record.base_sha, + agent=record.agent, + uuid=record.uuid, + pid=os.getpid(), + host=socket.gethostname(), + created_at=record.created_at, + ) + cls._save_record(adopted) + + return adopted + + @classmethod + def _existing_branch(cls, repo: str | Path, path: Path, fallback: str) -> str | None: + """Return the branch checked out at an existing managed worktree.""" + if not cls._is_worktree(path, Path(repo)): + return None + + return current_branch(path) or fallback + + +@contextmanager +def _file_lock(path: Path) -> Iterator[None]: + path.parent.mkdir(parents=True, exist_ok=True) + handle = open(path, "a+", encoding="utf-8") + fcntl = None + msvcrt = None + + try: + try: + import fcntl as _fcntl + except ImportError: + _fcntl = None + + fcntl = _fcntl + + if fcntl is not None: + fcntl.flock(handle.fileno(), fcntl.LOCK_EX) + else: + try: + import msvcrt as _msvcrt + except ImportError: + _msvcrt = None + + msvcrt = _msvcrt + + if msvcrt is not None: + handle.seek(0) + msvcrt.locking(handle.fileno(), msvcrt.LK_LOCK, 1) + + yield + finally: + if fcntl is not None: + try: + fcntl.flock(handle.fileno(), fcntl.LOCK_UN) + except OSError: + pass + elif msvcrt is not None: + try: + handle.seek(0) + msvcrt.locking(handle.fileno(), msvcrt.LK_UNLCK, 1) + except OSError: + pass + + handle.close() + + +def _normalize_local(path: Path) -> str: + root = git_root(path) + + if root is None: + raise WorktreeError(f"not a git repository: {path}") + + return root + + +def _looks_remote(value: str) -> bool: + text = str(value) + + return bool(_SCHEME_URL.match(text) or _SCP_URL.match(text)) + + +def _git_common_dir(path: str | Path) -> str | None: + """Return a canonical git common directory for *path*, or ``None``.""" + result = run_git("rev-parse", "--git-common-dir", cwd=path, check=False) + + if result.returncode != 0: + return None + + value = result.stdout.strip() + + if not value: + return None + + common = Path(value) + + if not common.is_absolute(): + common = Path(path).expanduser() / common + + try: + return str(common.resolve()) + except OSError: + return None + + +def _release_result( + record: WorktreeRecord, + *, + committed: bool = False, + removed: bool = False, + branch_kept: bool = False, + branch_deleted: bool = False, + reason: str = "", +) -> WorktreeReleaseResult: + return WorktreeReleaseResult( + uuid=record.uuid, + branch=record.branch, + committed=committed, + removed=removed, + branch_kept=branch_kept, + branch_deleted=branch_deleted, + reason=reason, + ) + + +def _pid_alive(pid: int) -> bool: + if pid <= 0: + return False + + try: + import psutil + + return bool(psutil.pid_exists(int(pid))) + except ImportError: + pass + + if os.name == "nt": + import ctypes + + process_query_limited_information = 0x1000 + kernel32 = ctypes.windll.kernel32 + handle = kernel32.OpenProcess(process_query_limited_information, False, int(pid)) + + if handle: + kernel32.CloseHandle(handle) + return True + + return kernel32.GetLastError() == 5 + + try: + os.kill(pid, 0) + except PermissionError: + return True + except ProcessLookupError: + return False + except OSError: + return False + + return True + + +def _now() -> str: + return datetime.now(timezone.utc).isoformat() diff --git a/cecli/helpers/worktrees/paths.py b/cecli/helpers/worktrees/paths.py new file mode 100644 index 00000000000..c49a25cccb6 --- /dev/null +++ b/cecli/helpers/worktrees/paths.py @@ -0,0 +1,131 @@ +"""Filesystem layout and naming helpers for managed git worktrees. + +Managed layout:: + + / + registry.json + .locks/ + _sources/-/ # bare caches for remote sources + /-/ # one directory per worktree + +``BASE`` defaults to ``~/.cecli/worktrees`` and can be overridden with the +``CECLI_WORKTREES_DIR`` environment variable. +""" + +from __future__ import annotations + +import hashlib +import os +import re +from pathlib import Path + +DEFAULT_BASE = "~/.cecli/worktrees" +BRANCH_PREFIX = "cecli" +AGENT_SLUG_MAX = 40 +REPO_SLUG_MAX = 48 +LOCK_NAME_MAX = 80 + +_SLUG_SEPARATORS = re.compile(r"[:\\/\s]+") +_SLUG_INVALID = re.compile(r"[^A-Za-z0-9._-]+") +_SLUG_DASHES = re.compile(r"-{2,}") + + +def managed_root() -> Path: + """Return the managed worktree root, honoring ``CECLI_WORKTREES_DIR``.""" + override = os.environ.get("CECLI_WORKTREES_DIR") + raw = override if override else DEFAULT_BASE + return Path(raw).expanduser().resolve() + + +def registry_path(base: str | Path | None = None) -> Path: + """Return the path of the JSON registry for managed worktrees.""" + return _base_path(base) / "registry.json" + + +def lock_dir(base: str | Path | None = None) -> Path: + """Return the directory holding inter-process lock files.""" + return _base_path(base) / ".locks" + + +def lock_path(base: str | Path | None, name: str) -> Path: + """Return a lock file path for *name* under the managed lock directory.""" + slug = slugify(name, max_length=LOCK_NAME_MAX, fallback="lock") + return lock_dir(base) / f"{slug}.lock" + + +def sources_dir(base: str | Path | None = None) -> Path: + """Return the directory holding bare caches for remote sources.""" + return _base_path(base) / "_sources" + + +def slugify(value: str, *, max_length: int | None = None, fallback: str = "item") -> str: + """Turn *value* into a filesystem- and branch-safe slug. + + Colons, whitespace, and path separators become dashes; other characters + outside ``[A-Za-z0-9._-]`` become dashes as well. Leading and trailing + punctuation is stripped, and the result is truncated to *max_length*. + """ + text = str(value).strip() + text = _SLUG_SEPARATORS.sub("-", text) + text = _SLUG_INVALID.sub("-", text) + text = _SLUG_DASHES.sub("-", text).strip("-._") + + if max_length is not None and len(text) > max_length: + text = text[:max_length].rstrip("-._") + + return text or fallback + + +def short_digest(value: str, length: int = 8) -> str: + """Return a stable short SHA-1 digest of *value*.""" + return hashlib.sha1(str(value).encode("utf-8")).hexdigest()[:length] + + +def repo_slug(repo: str | Path) -> str: + """Return the directory slug used for the repository at *repo*.""" + name = Path(str(repo)).name.removesuffix(".git") + fallback = f"repo-{short_digest(str(repo))}" + + return slugify(name, max_length=REPO_SLUG_MAX, fallback=fallback) + + +def source_slug(source: str) -> str: + """Return a human-readable slug for a remote source URL.""" + text = str(source).rstrip("/") + text = text.removesuffix(".git") + name = re.split(r"[/:]", text)[-1] + fallback = f"source-{short_digest(str(source))}" + + return slugify(name, max_length=REPO_SLUG_MAX, fallback=fallback) + + +def agent_slug(agent_name: str) -> str: + """Return the slug used for *agent_name* in branches and paths.""" + return slugify(agent_name, max_length=AGENT_SLUG_MAX, fallback="agent") + + +def branch_name(agent_name: str, uuid: str) -> str: + """Return the generated branch name for an agent worktree.""" + return f"{BRANCH_PREFIX}/{worktree_dir_name(agent_name, uuid)}" + + +def worktree_dir_name(agent_name: str, uuid: str) -> str: + """Return the generated directory name for an agent worktree.""" + return f"{agent_slug(agent_name)}-{_uuid_slug(uuid)}" + + +def worktree_path(base: str | Path | None, repo: str | Path, agent_name: str, uuid: str) -> Path: + """Return the full managed path for an agent worktree.""" + return _base_path(base) / repo_slug(repo) / worktree_dir_name(agent_name, uuid) + + +def _uuid_slug(uuid: str) -> str: + text = slugify(uuid, max_length=40, fallback="") + return text or short_digest(uuid, 8) + + +def _base_path(base: str | Path | None) -> Path: + if base is None: + return managed_root() + + return Path(base).expanduser().resolve() diff --git a/cecli/io.py b/cecli/io.py index d2f49aa4d93..2def2478ffd 100644 --- a/cecli/io.py +++ b/cecli/io.py @@ -777,6 +777,13 @@ def write_text(self, filename, content, max_retries=5, initial_delay=0.1): if self.line_endings == "preserve": newline = self._detect_newline(filename) or self.newline + # Content that already carries CRLF must not be translated again, + # which would double the carriage returns on Windows. + # ``None`` is the platform default, which is CRLF on Windows, so it + # must be handled alongside an explicit CRLF target. + if newline in (None, "\r\n") and "\r\n" in content: + newline = "" + delay = initial_delay for attempt in range(max_retries): try: diff --git a/cecli/main.py b/cecli/main.py index cac438c1a72..bd210673b04 100644 --- a/cecli/main.py +++ b/cecli/main.py @@ -1515,6 +1515,15 @@ def get_io(pretty): except Exception: logging.exception("workflow sub-agent registration failed") + # Sweep worktrees left behind by dead processes before the session starts. + # Best-effort: a worktree failure must never block startup. + try: + from cecli.helpers.worktrees import WorktreeManager + + WorktreeManager.sweep_stale() + except Exception: + logging.warning("worktree sweep failed", exc_info=True) + # Creator ``agents:`` map: re-read it so the spawn-time override index is # fresh, then register definition entries as dynamic ``creator:`` # sub-agents. The map never flows through agent_config. @@ -2018,10 +2027,24 @@ async def graceful_exit(coder=None, exit_code=0): if info.generate_task is not None ] await coroutines.cancel_and_abandon(agent_tasks) - agent_service.cleanup_all_for_parent() + # Cancel background tasks again before the blocking worktree release: + # abandoned tasks can outlive their loop, and re-cancelling them after a + # long git operation can hit "Event loop is closed". await coroutines.cancel_and_abandon(list(coroutines.background_tasks)) + agent_service.cleanup_all_for_parent() await _stop_scheduler_quietly(coder) + # Release every worktree owned by this process, including ones that were + # never attached to a tracked sub-agent. Best-effort on the way out. + try: + import logging + + from cecli.helpers.worktrees import WorktreeManager + + WorktreeManager.release_all(pid=os.getpid()) + except Exception: + logging.warning("worktree release on exit failed", exc_info=True) + if coder.mcp_manager and coder.mcp_manager.is_connected: await coder.mcp_manager.disconnect_all() # Cleanup old agent directories diff --git a/cecli/models.py b/cecli/models.py index 052e30e8273..1b2bcd794f0 100644 --- a/cecli/models.py +++ b/cecli/models.py @@ -282,57 +282,30 @@ def _ensure_model_settings_entry(self, model): def fetch_openrouter_model_info(self, model): """ - Fetch model info by scraping the openrouter model page. - Expected URL: https://openrouter.ai/ - Example: openrouter/qwen/qwen-2.5-72b-instruct:free + Fetch model metadata from OpenRouter's public models endpoint. + + Expected model name: ``openrouter//``. Returns a dict with keys: max_tokens, max_input_tokens, max_output_tokens, input_cost_per_token, output_cost_per_token. """ - url_part = model[len("openrouter/") :] - url = "https://openrouter.ai/" + url_part - try: - import requests - - response = requests.get(url, timeout=5, verify=self.verify_ssl) - if response.status_code != 200: - return {} - html = response.text - import re - - if re.search( - f"The model\\s*.*{re.escape(url_part)}.* is not available", - html, - re.IGNORECASE, - ): - print(f"\x1b[91mError: Model '{url_part}' is not available\x1b[0m") - return {} - text = re.sub("<[^>]+>", " ", html) - context_match = re.search("([\\d,]+)\\s*context", text) - if context_match: - context_str = context_match.group(1).replace(",", "") - context_size = int(context_str) - else: - context_size = None - input_cost_match = re.search("\\$\\s*([\\d.]+)\\s*/M input tokens", text, re.IGNORECASE) - output_cost_match = re.search( - "\\$\\s*([\\d.]+)\\s*/M output tokens", text, re.IGNORECASE - ) - input_cost = float(input_cost_match.group(1)) / 1000000 if input_cost_match else None - output_cost = float(output_cost_match.group(1)) / 1000000 if output_cost_match else None - if context_size is None or input_cost is None or output_cost is None: - return {} - params = { - "max_input_tokens": context_size, - "max_tokens": context_size, - "max_output_tokens": context_size, - "input_cost_per_token": input_cost, - "output_cost_per_token": output_cost, - "litellm_provider": "openrouter", + manager = ModelProviderManager( + { + "openrouter": { + "api_base": "https://openrouter.ai/api/v1", + "models_url": "https://openrouter.ai/api/v1/models", + "requires_api_key": False, + } } - return params - except Exception as e: - print("Error fetching openrouter info:", str(e)) - return {} + ) + manager.cache_dir = self.cache_dir + manager.verify_ssl = self.verify_ssl + + info = manager.get_model_info(model) + if info: + info.setdefault("litellm_provider", "openrouter") + return info + + return {} model_info_manager = ModelInfoManager() diff --git a/cecli/prompts/agent.yml b/cecli/prompts/agent.yml index 900bed62f2e..7085a0ef50a 100644 --- a/cecli/prompts/agent.yml +++ b/cecli/prompts/agent.yml @@ -59,7 +59,6 @@ main_system: | - **Plan**: Outline multi-step work with `UpdateTodoList`. - **Execute**: Make read-only files editable with `ManageResources` before editing, then review the diff and fix lint errors immediately. - **Recover**: Repair a bad edit in place; use `UndoChange` only when the corruption is beyond repair. - - **Outputs**: Tool calls trigger turns. Yield when finished with the final user summary. - **Sandbox**: Perform all verification and temp logic in `.cecli/temp`. - **Responses**: Be brief in your reasoning. Use bulleted lists of known facts and be terse in your deliberation on how to accomplish the goal. - **Finishing Up**: Avoid verifying the same detail multiple times. Be detailed in your `Yield` tool summary in describing your task, findings, efforts and results. diff --git a/cecli/prompts/subagent.yml b/cecli/prompts/subagent.yml index b43afbf8fea..f51048e4d51 100644 --- a/cecli/prompts/subagent.yml +++ b/cecli/prompts/subagent.yml @@ -44,7 +44,6 @@ main_system: | - **Plan**: Outline multi-step work with `UpdateTodoList`. - **Execute**: Make read-only files editable with `ManageResources` before editing, then review the diff and fix lint errors immediately. - **Recover**: Repair a bad edit in place; use `UndoChange` only when the corruption is beyond repair. - - **Outputs**: Tool calls trigger turns. Yield when finished with the final user summary. - **Sandbox**: Perform all verification and temp logic in `.cecli/temp`. - **Responses**: Be brief in your reasoning. Use bulleted lists of known facts and be terse in your deliberation on how to accomplish the goal. - **Finishing Up**: Avoid verifying the same detail multiple times. Be detailed in your `Yield` tool summary in describing your task, findings, efforts and results. diff --git a/cecli/resources/model-metadata.ext.json b/cecli/resources/model-metadata.ext.json index c57a81d1ed6..be2fbaf7c64 100644 --- a/cecli/resources/model-metadata.ext.json +++ b/cecli/resources/model-metadata.ext.json @@ -64,9 +64,9 @@ }, "github_copilot/claude-fable-5": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16000, - "max_tokens": 16000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "max_tokens": 64000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -77,10 +77,38 @@ "supports_vision": true }, "github_copilot/claude-fable-5.1": { + "litellm_provider": "github_copilot", + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "max_tokens": 64000, + "mode": "chat", + "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_vision": true + }, + "github_copilot/claude-haiku-4.5": { "litellm_provider": "github_copilot", "max_input_tokens": 128000, - "max_output_tokens": 16000, - "max_tokens": 16000, + "max_output_tokens": 32000, + "max_tokens": 32000, + "mode": "chat", + "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_vision": true + }, + "github_copilot/claude-haiku-5.5": { + "litellm_provider": "github_copilot", + "max_input_tokens": 100000, + "max_output_tokens": 100000, + "max_tokens": 100000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -92,9 +120,9 @@ }, "github_copilot/claude-opus-4.7": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16000, - "max_tokens": 16000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "max_tokens": 64000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -106,9 +134,9 @@ }, "github_copilot/claude-opus-4.8": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16000, - "max_tokens": 16000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "max_tokens": 64000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -120,9 +148,9 @@ }, "github_copilot/claude-opus-4.8-fast": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16000, - "max_tokens": 16000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "max_tokens": 64000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -134,9 +162,23 @@ }, "github_copilot/claude-opus-5": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16000, - "max_tokens": 16000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "max_tokens": 64000, + "mode": "chat", + "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_vision": true + }, + "github_copilot/claude-opus-5.5": { + "litellm_provider": "github_copilot", + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -148,9 +190,9 @@ }, "github_copilot/claude-sonnet-4.6": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16000, - "max_tokens": 16000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "max_tokens": 64000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -162,9 +204,23 @@ }, "github_copilot/claude-sonnet-5": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16000, - "max_tokens": 16000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "max_tokens": 64000, + "mode": "chat", + "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_vision": true + }, + "github_copilot/claude-sonnet-5.5": { + "litellm_provider": "github_copilot", + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -198,7 +254,7 @@ }, "github_copilot/gemini-3.7-flash": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, + "max_input_tokens": 200000, "max_output_tokens": 64000, "max_tokens": 64000, "mode": "chat", @@ -209,9 +265,20 @@ }, "github_copilot/gemini-3.8-flash": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 200000, + "max_output_tokens": 65536, + "max_tokens": 65536, + "mode": "chat", + "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_vision": true + }, + "github_copilot/gemini-4-argon": { + "litellm_provider": "github_copilot", + "max_input_tokens": 200000, + "max_output_tokens": 65536, + "max_tokens": 65536, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supports_function_calling": true, @@ -220,9 +287,9 @@ }, "github_copilot/gpt-5.3-codex": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -236,9 +303,9 @@ }, "github_copilot/gpt-5.4": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -252,9 +319,9 @@ }, "github_copilot/gpt-5.4-mini": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -267,9 +334,9 @@ }, "github_copilot/gpt-5.4-nano": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -282,9 +349,9 @@ }, "github_copilot/gpt-5.5": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -298,9 +365,9 @@ }, "github_copilot/gpt-5.6-luna": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -314,9 +381,9 @@ }, "github_copilot/gpt-5.6-sol": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -330,9 +397,9 @@ }, "github_copilot/gpt-5.6-terra": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -346,9 +413,9 @@ }, "github_copilot/gpt-6-astra": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -362,9 +429,9 @@ }, "github_copilot/grok-4.5": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -376,9 +443,9 @@ }, "github_copilot/gpt-6-luna": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -392,9 +459,9 @@ }, "github_copilot/gpt-6-sol": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -405,12 +472,26 @@ "supports_parallel_function_calling": true, "supports_response_schema": true, "supports_vision": true - }, + }, "github_copilot/grok-4.6": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true + }, + "github_copilot/grok-4.7": { + "litellm_provider": "github_copilot", + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -422,9 +503,9 @@ }, "github_copilot/kimi-k2.7-code": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 262144, + "max_output_tokens": 131072, + "max_tokens": 131072, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -436,9 +517,9 @@ }, "github_copilot/kimi-k3": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 917504, + "max_output_tokens": 131072, + "max_tokens": 131072, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -451,8 +532,8 @@ "github_copilot/mai-code-1.1-flash": { "litellm_provider": "github_copilot", "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -1028,4 +1109,3 @@ "source": "https://agnes-ai.com/en/docs/agnes-30-flash" } } - diff --git a/cecli/resources/model-metadata.json b/cecli/resources/model-metadata.json index a054515262b..880b0fdf797 100644 --- a/cecli/resources/model-metadata.json +++ b/cecli/resources/model-metadata.json @@ -1,4 +1,104 @@ { + "abliteration/abliterated-model": { + "cache_read_input_token_cost": 1e-7, + "input_cost_per_token": 0.000001, + "litellm_provider": "abliteration", + "max_input_tokens": 262144, + "max_output_tokens": 262134, + "mode": "chat", + "output_cost_per_token": 0.000003, + "source": "https://abliteration.ai/pricing", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "reasoning_effort_levels": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ] + }, + "abliteration/abliterated-model-large": { + "cache_read_input_token_cost": 3e-7, + "input_cost_per_token": 0.000003, + "litellm_provider": "abliteration", + "max_input_tokens": 1000000, + "max_output_tokens": 999990, + "mode": "chat", + "output_cost_per_token": 0.000005, + "source": "https://abliteration.ai/pricing", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "reasoning_effort_levels": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ] + }, + "abliteration/abliterated-model-large-flash": { + "cache_read_input_token_cost": 1e-7, + "input_cost_per_token": 0.000001, + "litellm_provider": "abliteration", + "max_input_tokens": 1048576, + "max_output_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 0.000002, + "source": "https://abliteration.ai/pricing", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "reasoning_effort_levels": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ] + }, + "abliteration/abliterated-model-large-v2": { + "cache_read_input_token_cost": 3e-7, + "input_cost_per_token": 0.000003, + "litellm_provider": "abliteration", + "max_input_tokens": 1000000, + "max_output_tokens": 999990, + "mode": "chat", + "output_cost_per_token": 0.000005, + "source": "https://abliteration.ai/pricing", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_none_reasoning_effort": false, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "reasoning_effort_levels": [ + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ] + }, "agnes/agnes-3.0-flash": { "max_tokens": 65536, "max_input_tokens": 512000, @@ -14,7 +114,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 8191, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.0000125, "source": "https://aws.amazon.com/bedrock/pricing/" @@ -24,29 +123,28 @@ "litellm_provider": "bedrock", "max_input_tokens": 8191, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.0000188, "source": "https://aws.amazon.com/bedrock/pricing/" }, "ai21.jamba-1-5-large-v1:0": { "deprecation_date": "2026-11-26", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-ai21-labs-jamba-1-5-large.md", "input_cost_per_token": 0.000002, "litellm_provider": "bedrock", "max_input_tokens": 256000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000008, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-ai21-labs-jamba-1-5-large.md" }, "ai21.jamba-1-5-mini-v1:0": { "deprecation_date": "2026-11-26", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-ai21-labs-jamba-1-5-mini.md", "input_cost_per_token": 2e-7, "litellm_provider": "bedrock", "max_input_tokens": 256000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 4e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-ai21-labs-jamba-1-5-mini.md" @@ -56,18 +154,245 @@ "litellm_provider": "bedrock", "max_input_tokens": 70000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 7e-7, "source": "https://aws.amazon.com/bedrock/pricing/", "supports_system_messages": true }, + "aiand/deepseek-ai/deepseek-v4-flash": { + "cache_read_input_token_cost": 8e-8, + "deprecation_date": "2026-10-27", + "input_cost_per_token": 1.5e-7, + "litellm_provider": "aiand", + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 2.5e-7, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "aiand/deepseek-ai/deepseek-v4-pro": { + "cache_read_input_token_cost": 2.5e-7, + "input_cost_per_token": 0.000001, + "litellm_provider": "aiand", + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 0.0000025, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "aiand/deepseek-ai/deepseek-v4.1-flash": { + "cache_read_input_token_cost": 2e-8, + "deprecation_date": "2026-11-05", + "input_cost_per_token": 3e-7, + "litellm_provider": "aiand", + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 6e-7, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "aiand/deepseek-ai/deepseek-v4.1-flash-1017": { + "cache_read_input_token_cost": 2e-8, + "input_cost_per_token": 3e-7, + "litellm_provider": "aiand", + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 6e-7, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "aiand/google/gemma-4-31b-it": { + "cache_read_input_token_cost": 5e-8, + "input_cost_per_token": 2e-7, + "litellm_provider": "aiand", + "max_input_tokens": 262144, + "max_output_tokens": 32768, + "mode": "chat", + "output_cost_per_token": 5e-7, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "aiand/meta/muse-spark-open": { + "cache_read_input_token_cost": 1.5e-7, + "input_cost_per_token": 0.00000125, + "litellm_provider": "aiand", + "max_input_tokens": 1048576, + "max_output_tokens": 943718, + "mode": "chat", + "output_cost_per_token": 0.00000425, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "aiand/moonshotai/kimi-k2.7-code": { + "cache_read_input_token_cost": 2e-7, + "deprecation_date": "2026-10-27", + "input_cost_per_token": 7.5e-7, + "litellm_provider": "aiand", + "max_input_tokens": 262144, + "max_output_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 0.0000035, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "aiand/moonshotai/kimi-k3": { + "cache_read_input_token_cost": 5e-7, + "input_cost_per_token": 0.000003, + "litellm_provider": "aiand", + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 0.0000125, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "aiand/motif-technologies/motif-3": { + "cache_read_input_token_cost": 2e-7, + "input_cost_per_token": 5e-7, + "litellm_provider": "aiand", + "max_input_tokens": 262144, + "max_output_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 0.000002, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "aiand/openai/gpt-oss-120b": { + "cache_read_input_token_cost": 8e-8, + "input_cost_per_token": 1.5e-7, + "litellm_provider": "aiand", + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "mode": "chat", + "output_cost_per_token": 6e-7, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "aiand/qwen/qwen3.6-27b": { + "cache_read_input_token_cost": 2e-7, + "input_cost_per_token": 3.2e-7, + "litellm_provider": "aiand", + "max_input_tokens": 262144, + "max_output_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 0.0000032, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "aiand/qwen/qwen3.8-27b": { + "cache_read_input_token_cost": 2e-7, + "input_cost_per_token": 4e-7, + "litellm_provider": "aiand", + "max_input_tokens": 262144, + "max_output_tokens": 32768, + "mode": "chat", + "output_cost_per_token": 0.000003, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "aiand/zai-org/glm-5.2": { + "cache_read_input_token_cost": 3e-7, + "deprecation_date": "2026-10-27", + "input_cost_per_token": 0.000001, + "litellm_provider": "aiand", + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 0.000004, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "aiand/zai-org/glm-5.3": { + "cache_read_input_token_cost": 3e-7, + "input_cost_per_token": 0.000001, + "litellm_provider": "aiand", + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 0.000004, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "aiand/zai-org/glm-5.3-flash": { + "cache_read_input_token_cost": 3e-8, + "input_cost_per_token": 1.5e-7, + "litellm_provider": "aiand", + "max_input_tokens": 1048550, + "max_output_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 5e-7, + "source": "https://api.aiand.com/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, "aihubmix/agnes-2.5-flash": { "input_cost_per_token": 3e-8, "litellm_provider": "aihubmix", "max_input_tokens": 512000, "max_output_tokens": 65500, - "max_tokens": 65500, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://aihubmix.com/api/v1/models", @@ -80,7 +405,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://aihubmix.com/api/v1/models", @@ -93,7 +417,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 200000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 2.2e-7, "source": "https://aihubmix.com/api/v1/models", @@ -108,7 +431,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000055, "source": "https://aihubmix.com/api/v1/models", @@ -129,7 +451,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000055, "source": "https://aihubmix.com/api/v1/models", @@ -147,7 +468,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "source": "https://aihubmix.com/api/v1/models", @@ -167,7 +487,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "source": "https://aihubmix.com/api/v1/models", @@ -188,7 +507,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "source": "https://aihubmix.com/api/v1/models", @@ -207,7 +525,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 2.2e-7, "source": "https://aihubmix.com/api/v1/models", @@ -222,7 +539,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.00000161333, "source": "https://aihubmix.com/api/v1/models", @@ -251,7 +567,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 1.6e-7, "source": "https://aihubmix.com/api/v1/models", @@ -267,7 +582,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 4e-7, "source": "https://aihubmix.com/api/v1/models", @@ -281,7 +595,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 128000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.00001, "source": "https://aihubmix.com/api/v1/models", @@ -296,7 +609,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 2.84e-7, "source": "https://aihubmix.com/api/v1/models", @@ -311,7 +623,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 0.00000338, "source": "https://aihubmix.com/api/v1/models", @@ -326,7 +637,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 256000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000002411, "source": "https://aihubmix.com/api/v1/models", @@ -342,7 +652,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 256000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5.4246e-7, "source": "https://aihubmix.com/api/v1/models", @@ -359,7 +668,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 256000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 3.0136e-7, "source": "https://aihubmix.com/api/v1/models", @@ -376,7 +684,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 256000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000002411, "source": "https://aihubmix.com/api/v1/models", @@ -393,7 +700,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.00000232375, "source": "https://aihubmix.com/api/v1/models", @@ -410,7 +716,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 119000, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000025353, "source": "https://aihubmix.com/api/v1/models", @@ -423,7 +728,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000003, "source": "https://aihubmix.com/api/v1/models", @@ -440,7 +744,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000003, "source": "https://aihubmix.com/api/v1/models", @@ -457,7 +760,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000012, "source": "https://aihubmix.com/api/v1/models", @@ -474,7 +776,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000012, "source": "https://aihubmix.com/api/v1/models", @@ -491,7 +792,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000002499999, "source": "https://aihubmix.com/api/v1/models", @@ -499,6 +799,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_sampling_params": false, "supports_vision": true, "supports_web_search": true }, @@ -508,7 +809,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.00000375, "source": "https://aihubmix.com/api/v1/models", @@ -516,6 +816,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_sampling_params": false, "supports_vision": true, "supports_web_search": true }, @@ -524,7 +825,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 262144, "max_output_tokens": 131100, - "max_tokens": 131100, "mode": "chat", "output_cost_per_token": 3.9998e-7, "source": "https://aihubmix.com/api/v1/models", @@ -536,7 +836,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 262144, "max_output_tokens": 131100, - "max_tokens": 131100, "mode": "chat", "output_cost_per_token": 3.9998e-7, "source": "https://aihubmix.com/api/v1/models", @@ -549,7 +848,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000007889, "source": "https://aihubmix.com/api/v1/models", @@ -564,7 +862,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000039438, "source": "https://aihubmix.com/api/v1/models", @@ -579,7 +876,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 3.9438e-7, "source": "https://aihubmix.com/api/v1/models", @@ -595,7 +891,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 200000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00000309848, "source": "https://aihubmix.com/api/v1/models", @@ -609,7 +904,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 400000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000014, "source": "https://aihubmix.com/api/v1/models", @@ -625,7 +919,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000015, "source": "https://aihubmix.com/api/v1/models", @@ -642,7 +935,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000015, "source": "https://aihubmix.com/api/v1/models", @@ -659,7 +951,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 400000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000045, "source": "https://aihubmix.com/api/v1/models", @@ -676,7 +967,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 400000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000125, "source": "https://aihubmix.com/api/v1/models", @@ -693,7 +983,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "source": "https://aihubmix.com/api/v1/models", @@ -709,7 +998,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00018, "source": "https://aihubmix.com/api/v1/models", @@ -726,7 +1014,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://aihubmix.com/api/v1/models", @@ -743,7 +1030,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00002, "source": "https://aihubmix.com/api/v1/models", @@ -760,7 +1046,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "source": "https://aihubmix.com/api/v1/models", @@ -776,7 +1061,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 400000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "source": "https://aihubmix.com/api/v1/models", @@ -821,7 +1105,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 500000, "max_output_tokens": 500000, - "max_tokens": 500000, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://aihubmix.com/api/v1/models", @@ -837,7 +1120,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://aihubmix.com/api/v1/models", @@ -853,7 +1135,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 256000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 6.248e-7, "source": "https://aihubmix.com/api/v1/models", @@ -869,7 +1150,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000002535, "source": "https://aihubmix.com/api/v1/models", @@ -885,7 +1165,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000039995, "source": "https://aihubmix.com/api/v1/models", @@ -901,7 +1180,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000007999, "source": "https://aihubmix.com/api/v1/models", @@ -917,7 +1195,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.000015, "source": "https://aihubmix.com/api/v1/models", @@ -933,7 +1210,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000030984, "source": "https://aihubmix.com/api/v1/models", @@ -946,7 +1222,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 256000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000008, "source": "https://aihubmix.com/api/v1/models", @@ -982,7 +1257,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 204800, "max_output_tokens": 204800, - "max_tokens": 204800, "mode": "chat", "output_cost_per_token": 0.0000011832, "source": "https://aihubmix.com/api/v1/models", @@ -996,7 +1270,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 524288, - "max_tokens": 524288, "mode": "chat", "output_cost_per_token": 0.000001152, "source": "https://aihubmix.com/api/v1/models", @@ -1021,7 +1294,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 5.48e-7, "source": "https://aihubmix.com/api/v1/models", @@ -1033,7 +1305,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 9.008e-7, "source": "https://aihubmix.com/api/v1/models", @@ -1048,7 +1319,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 9.864e-7, "source": "https://aihubmix.com/api/v1/models", @@ -1063,7 +1333,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000002532, "source": "https://aihubmix.com/api/v1/models", @@ -1078,7 +1347,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000001524, "source": "https://aihubmix.com/api/v1/models", @@ -1095,7 +1363,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000007608, "source": "https://aihubmix.com/api/v1/models", @@ -1112,7 +1379,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000001128, "source": "https://aihubmix.com/api/v1/models", @@ -1129,7 +1395,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://aihubmix.com/api/v1/models", @@ -1146,7 +1411,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 3.80025e-7, "source": "https://aihubmix.com/api/v1/models", @@ -1164,7 +1428,6 @@ "litellm_provider": "aihubmix", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00000507, "source": "https://aihubmix.com/api/v1/models", @@ -1192,7 +1455,6 @@ "litellm_provider": "amazon_nova", "max_input_tokens": 300000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 2.4e-7, "supports_function_calling": true, @@ -1206,7 +1468,6 @@ "litellm_provider": "amazon_nova", "max_input_tokens": 128000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 1.4e-7, "supports_function_calling": true, @@ -1218,7 +1479,6 @@ "litellm_provider": "amazon_nova", "max_input_tokens": 1000000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 0.0000125, "supports_function_calling": true, @@ -1232,7 +1492,6 @@ "litellm_provider": "amazon_nova", "max_input_tokens": 300000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 0.0000032, "supports_function_calling": true, @@ -1250,7 +1509,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_batches": 0.00000125, @@ -1275,7 +1533,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, @@ -1297,7 +1554,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 300000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 2.4e-7, "output_cost_per_token_batches": 1.2e-7, @@ -1316,7 +1572,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 1.4e-7, "output_cost_per_token_batches": 7e-8, @@ -1335,7 +1590,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 0.0000125, "output_cost_per_token_batches": 0.00000625, @@ -1359,7 +1613,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 300000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 0.0000032, "output_cost_per_token_batches": 0.0000016, @@ -1378,7 +1631,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 42000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 6e-7 }, @@ -1387,7 +1639,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 42000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 2e-7 }, @@ -1396,7 +1647,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 42000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.0000015 }, @@ -1407,7 +1657,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000004, "supports_assistant_prefill": true, @@ -1423,7 +1672,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000015, "supports_function_calling": true, @@ -1441,7 +1689,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -1460,7 +1707,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000018, "supports_assistant_prefill": true, @@ -1480,7 +1726,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -1498,7 +1743,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000075, "supports_function_calling": true, @@ -1516,7 +1760,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "search_context_cost_per_query": { @@ -1544,7 +1787,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 512, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-fable-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "anthropic.claude-fable-5-1": { "cache_creation_input_token_cost": 0.0000125, @@ -1554,7 +1802,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "search_context_cost_per_query": { @@ -1594,7 +1841,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000005, "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", @@ -1611,7 +1857,11 @@ "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, "input_cost_per_token_batches": 5e-7, - "output_cost_per_token_batches": 0.0000025 + "output_cost_per_token_batches": 0.0000025, + "token_count_model": { + "model": "anthropic.claude-haiku-4-5-20251001-v1:0", + "litellm_provider": "bedrock" + } }, "anthropic.claude-haiku-4-5@20251001": { "cache_creation_input_token_cost": 0.00000125, @@ -1622,7 +1872,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000005, "source": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock", @@ -1638,7 +1887,11 @@ "supports_native_streaming": true, "supports_native_structured_output": true, "supports_parallel_tool_use_config": true, - "prompt_cache_min_tokens": 4096 + "prompt_cache_min_tokens": 4096, + "token_count_model": { + "model": "anthropic.claude-haiku-4-5-20251001-v1:0", + "litellm_provider": "bedrock" + } }, "anthropic.claude-haiku-5-5": { "input_cost_per_token_above_100k_tokens": 5e-7, @@ -1654,12 +1907,12 @@ "litellm_provider": "bedrock_converse", "token_count_model": { "model": "anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", "region": "us-east-1" }, "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "search_context_cost_per_query": { @@ -1696,7 +1949,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.0000024, "supports_tool_choice": true @@ -1705,7 +1957,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supports_adaptive_thinking": true, "thinking_always_on": true, @@ -1743,7 +1994,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "thinking_always_on": true, "supports_function_calling": true, @@ -1758,11 +2008,11 @@ "cache_creation_input_token_cost": 0.00001875, "cache_read_input_token_cost": 0.0000015, "deprecation_date": "2027-01-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 0.000015, "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000075, "search_context_cost_per_query": { @@ -1779,7 +2029,11 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "prompt_cache_min_tokens": 1024 + "prompt_cache_min_tokens": 1024, + "token_count_model": { + "model": "anthropic.claude-opus-4-1-20250805-v1:0", + "litellm_provider": "bedrock" + } }, "anthropic.claude-opus-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00001875, @@ -1788,7 +2042,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000075, "search_context_cost_per_query": { @@ -1816,7 +2069,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000025, "search_context_cost_per_query": { @@ -1838,7 +2090,11 @@ "bedrock_output_config_effort_ceiling": "high", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-opus-4-5-20251101-v1:0", + "litellm_provider": "bedrock" + } }, "anthropic.claude-opus-4-6-v1": { "supports_adaptive_thinking": true, @@ -1851,7 +2107,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "search_context_cost_per_query": { @@ -1874,7 +2129,11 @@ "bedrock_output_config_effort_ceiling": "max", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-opus-4-6-v1", + "litellm_provider": "bedrock" + } }, "anthropic.claude-opus-4-7": { "bedrock_converse_supports_strict_tools": false, @@ -1887,7 +2146,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "search_context_cost_per_query": { @@ -1912,7 +2170,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 2048, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-opus-4-7", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "anthropic.claude-opus-4-8": { "bedrock_converse_supports_strict_tools": false, @@ -1926,7 +2189,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "search_context_cost_per_query": { @@ -1952,7 +2214,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-opus-4-8", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "anthropic.claude-opus-5": { "bedrock_converse_supports_strict_tools": false, @@ -1966,7 +2233,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "search_context_cost_per_query": { @@ -1990,7 +2256,14 @@ "supports_output_config": true, "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 512, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/us-east-1/index.json", + "token_count_model": { + "model": "anthropic.claude-opus-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + }, + "input_cost_per_token_batches": 0.0000025, + "output_cost_per_token_batches": 0.0000125 }, "anthropic.claude-opus-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -2004,7 +2277,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00002, "search_context_cost_per_query": { @@ -2030,12 +2302,19 @@ "prompt_cache_min_tokens": 512, "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", "thinking_always_on": true, - "supports_forced_tool_use": false + "supports_forced_tool_use": false, + "token_count_model": { + "model": "anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "anthropic.claude-sonnet-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00000375, "cache_read_input_token_cost": 3e-7, "deprecation_date": "2026-10-14", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "successor_model": "anthropic.claude-sonnet-5", "input_cost_per_token": 0.000003, "input_cost_per_token_above_200k_tokens": 0.000006, "output_cost_per_token_above_200k_tokens": 0.0000225, @@ -2044,7 +2323,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "search_context_cost_per_query": { @@ -2063,7 +2341,11 @@ "supports_vision": true, "bedrock_converse_supports_strict_tools": false, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-20250514-v1:0", + "litellm_provider": "bedrock" + } }, "anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.00000375, @@ -2076,11 +2358,12 @@ "cache_creation_input_token_cost_above_200k_tokens": 0.0000075, "cache_read_input_token_cost_above_200k_tokens": 6e-7, "deprecation_date": "2027-04-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "successor_model": "anthropic.claude-sonnet-5-5", "litellm_provider": "bedrock_converse", "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "search_context_cost_per_query": { @@ -2102,7 +2385,11 @@ "prompt_cache_min_tokens": 1024, "input_cost_per_token_batches": 0.0000015, "output_cost_per_token_batches": 0.0000075, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-5-20250929-v1:0", + "litellm_provider": "bedrock" + } }, "anthropic.claude-sonnet-4-6": { "supports_adaptive_thinking": true, @@ -2115,7 +2402,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "search_context_cost_per_query": { @@ -2137,7 +2423,11 @@ "supports_output_config": true, "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-6", + "litellm_provider": "bedrock" + } }, "anthropic.claude-sonnet-5": { "bedrock_converse_supports_strict_tools": false, @@ -2149,7 +2439,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "search_context_cost_per_query": { @@ -2177,7 +2466,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-sonnet-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "anthropic.claude-sonnet-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -2188,12 +2482,12 @@ "litellm_provider": "bedrock_converse", "token_count_model": { "model": "anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", "region": "us-east-1" }, "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "search_context_cost_per_query": { @@ -2230,7 +2524,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000024 }, @@ -2239,7 +2532,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000024, "supports_tool_choice": true @@ -2249,7 +2541,6 @@ "litellm_provider": "anyscale", "max_input_tokens": 16384, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 1.5e-7 }, @@ -2258,7 +2549,6 @@ "litellm_provider": "anyscale", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000001 }, @@ -2267,7 +2557,6 @@ "litellm_provider": "anyscale", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000001, "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/codellama-CodeLlama-70b-Instruct-hf" @@ -2277,7 +2566,6 @@ "litellm_provider": "anyscale", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/google-gemma-7b-it" @@ -2287,7 +2575,6 @@ "litellm_provider": "anyscale", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2.5e-7 }, @@ -2296,7 +2583,6 @@ "litellm_provider": "anyscale", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000001 }, @@ -2305,7 +2591,6 @@ "litellm_provider": "anyscale", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 1.5e-7 }, @@ -2314,7 +2599,6 @@ "litellm_provider": "anyscale", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000001, "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/meta-llama-Meta-Llama-3-70B-Instruct" @@ -2324,7 +2608,6 @@ "litellm_provider": "anyscale", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/meta-llama-Meta-Llama-3-8B-Instruct" @@ -2334,7 +2617,6 @@ "litellm_provider": "anyscale", "max_input_tokens": 16384, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/mistralai-Mistral-7B-Instruct-v0.1", @@ -2345,7 +2627,6 @@ "litellm_provider": "anyscale", "max_input_tokens": 65536, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/mistralai-Mixtral-8x22B-Instruct-v0.1", @@ -2356,7 +2637,6 @@ "litellm_provider": "anyscale", "max_input_tokens": 16384, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://docs.anyscale.com/preview/endpoints/text-generation/supported-models/mistralai-Mixtral-8x7B-Instruct-v0.1", @@ -2368,7 +2648,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000003311, "supports_function_calling": true, @@ -2388,7 +2667,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000011, "source": "https://aws.amazon.com/nova/pricing/", @@ -2407,7 +2685,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 300000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 2.52e-7, "supports_function_calling": true, @@ -2423,7 +2700,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 1.48e-7, "supports_function_calling": true, @@ -2439,7 +2715,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 300000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 0.00000336, "output_cost_per_token_flex": 0.00000168, @@ -2454,7 +2729,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supports_adaptive_thinking": true, "thinking_always_on": true, @@ -2491,7 +2765,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000055, "source": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock", @@ -2508,7 +2781,11 @@ "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, "input_cost_per_token_batches": 5.5e-7, - "output_cost_per_token_batches": 0.00000275 + "output_cost_per_token_batches": 0.00000275, + "token_count_model": { + "model": "anthropic.claude-haiku-4-5-20251001-v1:0", + "litellm_provider": "bedrock" + } }, "apac.anthropic.claude-haiku-5-5": { "input_cost_per_token_above_100k_tokens": 5.5e-7, @@ -2521,7 +2798,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supports_adaptive_thinking": true, "supports_mid_conversation_system": true, @@ -2556,7 +2832,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "thinking_always_on": true, "supports_function_calling": true, @@ -2579,7 +2854,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supports_assistant_prefill": false, "supports_computer_use": true, @@ -2603,7 +2877,12 @@ "input_cost_per_token": 0.0000055, "cache_creation_input_token_cost_above_1hr": 0.000011, "cache_read_input_token_cost": 5.5e-7, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-opus-4-7", + "litellm_provider": "bedrock_mantle", + "region": "ap-northeast-1" + } }, "apac.anthropic.claude-opus-4-8": { "bedrock_converse_supports_strict_tools": false, @@ -2613,7 +2892,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supports_assistant_prefill": false, "supports_computer_use": true, @@ -2638,7 +2916,12 @@ "output_cost_per_token": 0.0000275, "cache_read_input_token_cost": 5.5e-7, "cache_creation_input_token_cost": 0.000006875, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-opus-4-8", + "litellm_provider": "bedrock_mantle", + "region": "ap-northeast-1" + } }, "apac.anthropic.claude-opus-5": { "bedrock_converse_supports_strict_tools": false, @@ -2648,7 +2931,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supports_assistant_prefill": false, "supports_computer_use": true, @@ -2671,7 +2953,14 @@ "input_cost_per_token": 0.0000055, "cache_read_input_token_cost": 5.5e-7, "output_cost_per_token": 0.0000275, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/ap-northeast-1/index.json", + "token_count_model": { + "model": "anthropic.claude-opus-5", + "litellm_provider": "bedrock_mantle", + "region": "ap-southeast-4" + }, + "input_cost_per_token_batches": 0.00000275, + "output_cost_per_token_batches": 0.00001375 }, "apac.anthropic.claude-opus-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -2681,7 +2970,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supports_assistant_prefill": false, "supports_computer_use": true, @@ -2706,12 +2994,19 @@ "input_cost_per_token": 0.0000044, "output_cost_per_token": 0.000022, "cache_read_input_token_cost": 2.2e-7, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", + "region": "ap-southeast-4" + } }, "apac.anthropic.claude-sonnet-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00000375, "cache_read_input_token_cost": 3e-7, "deprecation_date": "2026-10-14", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "successor_model": "apac.anthropic.claude-sonnet-5", "input_cost_per_token": 0.000003, "input_cost_per_token_above_200k_tokens": 0.000006, "output_cost_per_token_above_200k_tokens": 0.0000225, @@ -2720,7 +3015,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "search_context_cost_per_query": { @@ -2739,7 +3033,11 @@ "supports_vision": true, "bedrock_converse_supports_strict_tools": false, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-20250514-v1:0", + "litellm_provider": "bedrock" + } }, "apac.anthropic.claude-sonnet-4-6": { "supports_adaptive_thinking": true, @@ -2748,7 +3046,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "supports_assistant_prefill": false, "supports_computer_use": true, @@ -2769,7 +3066,11 @@ "cache_read_input_token_cost": 3.3e-7, "cache_creation_input_token_cost": 0.000004125, "input_cost_per_token": 0.0000033, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-6", + "litellm_provider": "bedrock" + } }, "apac.anthropic.claude-sonnet-5": { "bedrock_converse_supports_strict_tools": false, @@ -2777,7 +3078,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supports_adaptive_thinking": true, "supports_mid_conversation_system": true, @@ -2804,7 +3104,12 @@ "input_cost_per_token": 0.0000022, "output_cost_per_token": 0.000011, "cache_read_input_token_cost": 2.2e-7, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-sonnet-5", + "litellm_provider": "bedrock_mantle", + "region": "ap-southeast-4" + } }, "apac.anthropic.claude-sonnet-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -2812,7 +3117,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supports_adaptive_thinking": true, "supports_mid_conversation_system": true, @@ -2847,7 +3151,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supports_adaptive_thinking": true, "thinking_always_on": true, @@ -2885,7 +3188,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000055, "supports_assistant_prefill": true, @@ -2902,11 +3204,16 @@ "prompt_cache_min_tokens": 4096, "input_cost_per_token_batches": 5.5e-7, "output_cost_per_token_batches": 0.00000275, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-haiku-4-5-20251001-v1:0", + "litellm_provider": "bedrock" + } }, "au.anthropic.claude-haiku-5-5": { "token_count_model": { "model": "au.anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", "region": "ap-southeast-4" }, "input_cost_per_token_above_100k_tokens": 5.5e-7, @@ -2923,7 +3230,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5.5e-7, "search_context_cost_per_query": { @@ -2959,7 +3265,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "thinking_always_on": true, "supports_function_calling": true, @@ -2986,7 +3291,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -3009,7 +3313,11 @@ "bedrock_output_config_effort_ceiling": "max", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-6-v1", + "litellm_provider": "bedrock" + } }, "au.anthropic.claude-opus-4-7": { "bedrock_converse_supports_strict_tools": false, @@ -3022,7 +3330,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -3047,7 +3354,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 2048, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-7", + "litellm_provider": "bedrock_mantle", + "region": "ap-southeast-4" + } }, "au.anthropic.claude-opus-4-8": { "bedrock_converse_supports_strict_tools": false, @@ -3061,7 +3373,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -3087,7 +3398,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-8", + "litellm_provider": "bedrock_mantle", + "region": "ap-southeast-4" + } }, "au.anthropic.claude-opus-5": { "bedrock_converse_supports_strict_tools": false, @@ -3101,7 +3417,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -3125,7 +3440,14 @@ "supports_output_config": true, "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 512, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/ap-southeast-2/index.json", + "token_count_model": { + "model": "anthropic.claude-opus-5", + "litellm_provider": "bedrock_mantle", + "region": "ap-southeast-4" + }, + "input_cost_per_token_batches": 0.00000275, + "output_cost_per_token_batches": 0.00001375 }, "au.anthropic.claude-opus-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -3139,7 +3461,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000022, "search_context_cost_per_query": { @@ -3165,7 +3486,12 @@ "prompt_cache_min_tokens": 512, "thinking_always_on": true, "supports_forced_tool_use": false, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", + "region": "ap-southeast-4" + } }, "au.anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.000004125, @@ -3178,11 +3504,12 @@ "cache_creation_input_token_cost_above_1hr_above_200k_tokens": 0.0000132, "cache_read_input_token_cost_above_200k_tokens": 6.6e-7, "deprecation_date": "2027-04-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "successor_model": "au.anthropic.claude-sonnet-5-5", "litellm_provider": "bedrock_converse", "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000165, "search_context_cost_per_query": { @@ -3204,7 +3531,11 @@ "prompt_cache_min_tokens": 1024, "input_cost_per_token_batches": 0.00000165, "output_cost_per_token_batches": 0.00000825, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-5-20250929-v1:0", + "litellm_provider": "bedrock" + } }, "au.anthropic.claude-sonnet-4-6": { "supports_adaptive_thinking": true, @@ -3217,7 +3548,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000165, "search_context_cost_per_query": { @@ -3239,7 +3569,11 @@ "supports_output_config": true, "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-6", + "litellm_provider": "bedrock" + } }, "au.anthropic.claude-sonnet-5": { "bedrock_converse_supports_strict_tools": false, @@ -3251,7 +3585,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000011, "search_context_cost_per_query": { @@ -3279,11 +3612,17 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-5", + "litellm_provider": "bedrock_mantle", + "region": "ap-southeast-4" + } }, "au.anthropic.claude-sonnet-5-5": { "token_count_model": { "model": "au.anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", "region": "ap-southeast-4" }, "bedrock_converse_supports_strict_tools": false, @@ -3295,7 +3634,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000011, "search_context_cost_per_query": { @@ -3338,14 +3676,13 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "output_cost_per_token_above_272k_tokens": 0.000018, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/models", "supported_endpoints": [ @@ -3376,6 +3713,53 @@ "supports_web_search": true, "supports_xhigh_reasoning_effort": true }, + "azure/apac/gpt-6.1-terra": { + "cache_creation_input_token_cost": 0.0000015, + "cache_creation_input_token_cost_above_272k_tokens": 0.000003, + "cache_read_input_token_cost": 6e-8, + "cache_read_input_token_cost_above_272k_tokens": 1.2e-7, + "input_cost_per_token": 0.0000012, + "input_cost_per_token_above_272k_tokens": 0.0000024, + "litellm_provider": "azure", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000006, + "output_cost_per_token_above_272k_tokens": 0.000009, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, + "source": "https://techcommunity.microsoft.com/blog/azure-ai-foundry-blog/gpt-6-1-terra-now-generally-available-in-microsoft-foundry-build-agents-that-see/4567769", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_computer_use": true, + "supports_function_calling": true, + "supports_max_reasoning_effort": true, + "supports_minimal_reasoning_effort": false, + "supports_native_streaming": true, + "supports_none_reasoning_effort": false, + "supports_parallel_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_web_search": true, + "supports_xhigh_reasoning_effort": true + }, "azure/chat-latest": { "cache_read_input_token_cost": 5e-7, "deprecation_date": "2026-12-02", @@ -3383,7 +3767,6 @@ "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "reasoning_effort_levels": [ @@ -3413,24 +3796,11 @@ "supports_vision": true, "supports_web_search": true }, - "azure/command-r-plus": { - "deprecation_date": "2025-06-30", - "input_cost_per_token": 0.000003, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.000015, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_function_calling": true - }, "azure/computer-use-preview": { "input_cost_per_token": 0.000003, "litellm_provider": "azure", "max_input_tokens": 8192, "max_output_tokens": 1024, - "max_tokens": 1024, "mode": "chat", "output_cost_per_token": 0.000012, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -3454,9 +3824,10 @@ "supports_vision": true }, "azure/container": { - "code_interpreter_cost_per_session": 0.03, + "code_interpreter_cost_per_session": 0.033, "litellm_provider": "azure", - "mode": "chat" + "mode": "chat", + "source": "https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/" }, "azure/eu/computer-use-preview": { "input_cost_per_token": 0.0000033, @@ -3467,6 +3838,8 @@ }, "azure/eu/gpt-4.1": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.1", "cache_read_input_token_cost": 5.5e-7, "cache_read_input_token_cost_priority": 9.63e-7, "input_cost_per_token": 0.0000022, @@ -3477,10 +3850,17 @@ "output_cost_per_token": 0.0000088, "output_cost_per_token_batches": 0.0000044, "output_cost_per_token_priority": 0.0000154, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/eu/gpt-4.1-mini": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.4-mini", "cache_read_input_token_cost": 1.1e-7, "cache_read_input_token_cost_priority": 1.93e-7, "input_cost_per_token": 4.4e-7, @@ -3491,10 +3871,17 @@ "output_cost_per_token": 0.00000176, "output_cost_per_token_batches": 8.8e-7, "output_cost_per_token_priority": 0.00000308, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/eu/gpt-4.1-nano": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.4-nano", "cache_read_input_token_cost": 2.8e-8, "input_cost_per_token": 1.1e-7, "input_cost_per_token_batches": 5.5e-8, @@ -3504,14 +3891,36 @@ "output_cost_per_token_batches": 2.2e-7, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, + "azure/eu/gpt-4o": { + "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.1", + "cache_creation_input_token_cost": 0.00000138, + "cache_read_input_token_cost": 0.000001375, + "input_cost_per_token": 0.00000275, + "input_cost_per_token_batches": 0.000001375, + "litellm_provider": "azure", + "max_input_tokens": 128000, + "max_output_tokens": 16384, + "mode": "chat", + "output_cost_per_token": 0.000011, + "output_cost_per_token_batches": 0.0000055, + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, "azure/eu/gpt-4o-2024-05-13": { "deprecation_date": "2026-12-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.1", "input_cost_per_token": 0.0000055, "input_cost_per_token_batches": 0.00000275, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.0000165, "output_cost_per_token_batches": 0.00000825, @@ -3519,13 +3928,14 @@ }, "azure/eu/gpt-4o-2024-08-06": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.1", "cache_read_input_token_cost": 0.000001375, "input_cost_per_token": 0.00000275, "input_cost_per_token_batches": 0.000001375, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000011, "output_cost_per_token_batches": 0.0000055, @@ -3539,6 +3949,8 @@ }, "azure/eu/gpt-4o-2024-11-20": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.1", "cache_creation_input_token_cost": 0.00000138, "cache_read_input_token_cost": 0.000001375, "input_cost_per_token": 0.00000275, @@ -3546,7 +3958,6 @@ "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000011, "output_cost_per_token_batches": 0.0000055, @@ -3557,17 +3968,46 @@ "supports_tool_choice": true, "supports_vision": true }, + "azure/eu/gpt-4o-mini": { + "cache_read_input_token_cost": 8.3e-8, + "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "input_cost_per_token": 1.65e-7, + "input_cost_per_token_batches": 8.3e-8, + "litellm_provider": "azure", + "max_input_tokens": 128000, + "max_output_tokens": 16384, + "mode": "chat", + "output_cost_per_token": 6.6e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_prompt_caching": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, "azure/eu/gpt-4o-mini-2024-07-18": { "cache_read_input_token_cost": 8.3e-8, "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_token": 1.65e-7, "input_cost_per_token_batches": 8.3e-8, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6.6e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, "supports_parallel_function_calling": true, @@ -3578,6 +4018,8 @@ }, "azure/eu/gpt-5": { "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.1", "cache_read_input_token_cost": 1.375e-7, "cache_read_input_token_cost_batches": 6.875e-8, "cache_read_input_token_cost_priority": 2.75e-7, @@ -3589,23 +4031,34 @@ "output_cost_per_token": 0.000011, "output_cost_per_token_batches": 0.0000055, "output_cost_per_token_priority": 0.000022, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/eu/gpt-5-2025-08-07": { "cache_read_input_token_cost": 1.375e-7, "cache_read_input_token_cost_priority": 2.75e-7, "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.1", "input_cost_per_token": 0.000001375, "input_cost_per_token_batches": 6.875e-7, "input_cost_per_token_priority": 0.00000275, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000011, "output_cost_per_token_batches": 0.0000055, "output_cost_per_token_priority": 0.000022, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -3633,6 +4086,8 @@ }, "azure/eu/gpt-5-mini": { "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.4-mini", "cache_read_input_token_cost": 2.75e-8, "cache_read_input_token_cost_batches": 1.375e-8, "cache_read_input_token_cost_priority": 4.95e-8, @@ -3644,23 +4099,34 @@ "output_cost_per_token": 0.0000022, "output_cost_per_token_batches": 0.0000011, "output_cost_per_token_priority": 0.00000396, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/eu/gpt-5-mini-2025-08-07": { "cache_read_input_token_cost": 2.75e-8, "cache_read_input_token_cost_priority": 4.95e-8, "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.4-mini", "input_cost_per_token": 2.75e-7, "input_cost_per_token_batches": 1.375e-7, "input_cost_per_token_priority": 4.95e-7, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000022, "output_cost_per_token_batches": 0.0000011, "output_cost_per_token_priority": 0.00000396, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -3688,6 +4154,8 @@ }, "azure/eu/gpt-5-nano": { "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.4-nano", "cache_read_input_token_cost": 5.5e-9, "cache_read_input_token_cost_batches": 2.75e-9, "input_cost_per_token": 5.5e-8, @@ -3696,20 +4164,31 @@ "mode": "chat", "output_cost_per_token": 4.4e-7, "output_cost_per_token_batches": 2.2e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/eu/gpt-5-nano-2025-08-07": { "cache_read_input_token_cost": 5.5e-9, "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.4-nano", "input_cost_per_token": 5.5e-8, "input_cost_per_token_batches": 2.75e-8, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 4.4e-7, "output_cost_per_token_batches": 2.2e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -3737,6 +4216,8 @@ }, "azure/eu/gpt-5.1": { "deprecation_date": "2027-05-15", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.2", "cache_read_input_token_cost": 1.375e-7, "cache_read_input_token_cost_batches": 6.875e-8, "cache_read_input_token_cost_priority": 2.75e-7, @@ -3744,7 +4225,6 @@ "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000011, "supported_endpoints": [ @@ -3776,16 +4256,22 @@ "input_cost_per_token_priority": 0.00000275, "output_cost_per_token_batches": 0.0000055, "output_cost_per_token_priority": 0.000022, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/eu/gpt-5.1-chat": { "cache_read_input_token_cost": 1.375e-7, "deprecation_date": "2026-06-29", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-chat-latest", "input_cost_per_token": 0.000001375, "litellm_provider": "azure", "max_input_tokens": 111616, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000011, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -3802,6 +4288,8 @@ }, "azure/eu/gpt-5.2": { "deprecation_date": "2027-06-08", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.4", "cache_read_input_token_cost": 1.925e-7, "cache_read_input_token_cost_batches": 9.625e-8, "cache_read_input_token_cost_priority": 3.85e-7, @@ -3813,16 +4301,22 @@ "output_cost_per_token": 0.0000154, "output_cost_per_token_batches": 0.0000077, "output_cost_per_token_priority": 0.0000308, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/eu/gpt-5.2-chat": { "cache_read_input_token_cost": 1.925e-7, "deprecation_date": "2026-06-29", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-chat-latest", "input_cost_per_token": 0.000001925, "litellm_provider": "azure", "max_input_tokens": 111616, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000154, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -3839,11 +4333,12 @@ "azure/eu/gpt-5.3-chat": { "cache_read_input_token_cost": 1.925e-7, "deprecation_date": "2026-06-29", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-chat-latest", "input_cost_per_token": 0.000001925, "litellm_provider": "azure", "max_input_tokens": 111616, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000154, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -3859,6 +4354,8 @@ }, "azure/eu/gpt-5.4": { "deprecation_date": "2027-09-02", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.5", "cache_read_input_token_cost": 2.75e-7, "cache_read_input_token_cost_above_272k_tokens": 5.5e-7, "cache_read_input_token_cost_above_272k_tokens_batches": 2.75e-7, @@ -3871,7 +4368,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supported_endpoints": [ "/v1/chat/completions", @@ -3912,6 +4408,8 @@ "cache_read_input_token_cost_above_272k_tokens": 5.5e-7, "cache_read_input_token_cost_priority": 5.5e-7, "deprecation_date": "2027-09-02", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.5", "input_cost_per_token": 0.00000275, "input_cost_per_token_priority": 0.0000055, "output_cost_per_token": 0.0000165, @@ -3919,7 +4417,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supported_endpoints": [ "/v1/chat/completions", @@ -3959,6 +4456,7 @@ }, "azure/eu/gpt-5.4-mini": { "deprecation_date": "2027-09-21", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "cache_read_input_token_cost": 8.25e-8, "cache_read_input_token_cost_batches": 4.125e-8, "cache_read_input_token_cost_priority": 1.65e-7, @@ -3970,10 +4468,16 @@ "output_cost_per_token": 0.00000495, "output_cost_per_token_batches": 0.000002475, "output_cost_per_token_priority": 0.0000099, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/eu/gpt-5.4-nano": { "deprecation_date": "2027-09-21", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "cache_read_input_token_cost": 2.2e-8, "cache_read_input_token_cost_batches": 1.1e-8, "input_cost_per_token": 2.2e-7, @@ -3982,10 +4486,17 @@ "mode": "chat", "output_cost_per_token": 0.000001375, "output_cost_per_token_batches": 6.875e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/eu/gpt-5.5": { "deprecation_date": "2027-10-26", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "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_above_272k_tokens_batches": 5.5e-7, @@ -4002,14 +4513,13 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token_above_272k_tokens_batches": 0.00002475, "output_cost_per_token_batches": 0.0000165, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -4054,12 +4564,11 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "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 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -4085,6 +4594,8 @@ "supports_vision": true, "supports_web_search": true, "deprecation_date": "2027-10-26", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.6", "input_cost_per_token_above_272k_tokens_batches": 0.0000055, "input_cost_per_token_batches": 0.00000275, "output_cost_per_token_above_272k_tokens_batches": 0.00002475, @@ -4093,6 +4604,8 @@ }, "azure/eu/gpt-5.5-2026-04-24": { "deprecation_date": "2027-10-26", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "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, @@ -4107,12 +4620,11 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "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 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -4162,16 +4674,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000022, "output_cost_per_token_above_272k_tokens": 0.000033, "output_cost_per_token_above_272k_tokens_priority": 0.000066, "output_cost_per_token_priority": 0.000044, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -4210,6 +4721,8 @@ "cache_read_input_token_cost_above_272k_tokens_priority": 8.8e-8, "cache_read_input_token_cost_priority": 4.4e-8, "deprecation_date": "2028-01-11", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-6-luna", "input_cost_per_token": 2.2e-7, "input_cost_per_token_above_272k_tokens": 4.4e-7, "input_cost_per_token_above_272k_tokens_priority": 8.8e-7, @@ -4217,16 +4730,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000132, "output_cost_per_token_above_272k_tokens": 0.00000198, "output_cost_per_token_above_272k_tokens_priority": 0.00000396, "output_cost_per_token_priority": 0.00000264, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -4266,6 +4778,8 @@ "cache_read_input_token_cost_above_272k_tokens_priority": 0.00000176, "cache_read_input_token_cost_priority": 8.8e-7, "deprecation_date": "2028-01-11", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-6-sol", "input_cost_per_token": 0.0000044, "input_cost_per_token_above_272k_tokens": 0.0000088, "input_cost_per_token_above_272k_tokens_priority": 0.0000176, @@ -4273,16 +4787,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000022, "output_cost_per_token_above_272k_tokens": 0.000033, "output_cost_per_token_above_272k_tokens_priority": 0.000066, "output_cost_per_token_priority": 0.000044, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -4322,6 +4835,8 @@ "cache_read_input_token_cost_above_272k_tokens_priority": 8.8e-7, "cache_read_input_token_cost_priority": 4.4e-7, "deprecation_date": "2028-01-11", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-6.1-terra", "input_cost_per_token": 0.0000022, "input_cost_per_token_above_272k_tokens": 0.0000044, "input_cost_per_token_above_272k_tokens_priority": 0.0000088, @@ -4329,16 +4844,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000132, "output_cost_per_token_above_272k_tokens": 0.0000198, "output_cost_per_token_above_272k_tokens_priority": 0.0000396, "output_cost_per_token_priority": 0.0000264, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -4379,10 +4893,14 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00006, "output_cost_per_token_above_272k_tokens": 0.00009, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://learn.microsoft.com/en-us/azure/foundry/foundry-models/concepts/models-sold-directly-by-azure", "supported_endpoints": [ "/v1/chat/completions", @@ -4400,7 +4918,7 @@ "supports_max_reasoning_effort": false, "supports_minimal_reasoning_effort": false, "supports_native_streaming": true, - "supports_none_reasoning_effort": true, + "supports_none_reasoning_effort": false, "supports_parallel_function_calling": true, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -4423,14 +4941,13 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_above_272k_tokens": 9e-7, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://azure.microsoft.com/en-us/blog/gpt-6-astra-sol-and-luna-for-production-agents-in-microsoft-foundry/", "supported_endpoints": [ @@ -4472,14 +4989,13 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "output_cost_per_token_above_272k_tokens": 0.000018, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://azure.microsoft.com/en-us/blog/gpt-6-astra-sol-and-luna-for-production-agents-in-microsoft-foundry/", "supported_endpoints": [ @@ -4521,14 +5037,13 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "output_cost_per_token_above_272k_tokens": 0.000018, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/models", "supported_endpoints": [ @@ -4559,15 +5074,81 @@ "supports_web_search": true, "supports_xhigh_reasoning_effort": true }, + "azure/eu/gpt-6.1-terra": { + "cache_creation_input_token_cost": 0.0000015, + "cache_creation_input_token_cost_above_272k_tokens": 0.000003, + "cache_read_input_token_cost": 6e-8, + "cache_read_input_token_cost_above_272k_tokens": 1.2e-7, + "input_cost_per_token": 0.0000012, + "input_cost_per_token_above_272k_tokens": 0.0000024, + "litellm_provider": "azure", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000006, + "output_cost_per_token_above_272k_tokens": 0.000009, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, + "source": "https://techcommunity.microsoft.com/blog/azure-ai-foundry-blog/gpt-6-1-terra-now-generally-available-in-microsoft-foundry-build-agents-that-see/4567769", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_computer_use": true, + "supports_function_calling": true, + "supports_max_reasoning_effort": true, + "supports_minimal_reasoning_effort": false, + "supports_native_streaming": true, + "supports_none_reasoning_effort": false, + "supports_parallel_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_web_search": true, + "supports_xhigh_reasoning_effort": true + }, + "azure/eu/o1": { + "cache_read_input_token_cost": 0.00000825, + "deprecation_date": "2026-11-19", + "successor_model": "azure/eu/gpt-5.6-sol", + "input_cost_per_token": 0.0000165, + "input_cost_per_token_batches": 0.00000825, + "litellm_provider": "azure", + "max_input_tokens": 200000, + "max_output_tokens": 100000, + "mode": "chat", + "output_cost_per_token": 0.000066, + "output_cost_per_token_batches": 0.000033, + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_prompt_caching": true, + "supports_tool_choice": true, + "supports_vision": true + }, "azure/eu/o1-2024-12-17": { "cache_read_input_token_cost": 0.00000825, "deprecation_date": "2026-11-19", + "successor_model": "azure/eu/gpt-5.6-sol", "input_cost_per_token": 0.0000165, "input_cost_per_token_batches": 0.00000825, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.000066, "output_cost_per_token_batches": 0.000033, @@ -4595,7 +5176,6 @@ "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.00000484, "output_cost_per_token_batches": 0.00000242, @@ -4605,38 +5185,48 @@ "supports_prompt_caching": true, "supports_vision": false }, - "azure/eu/o1-preview": { - "cache_read_input_token_cost": 0.00000825, - "deprecation_date": "2025-07-28", - "input_cost_per_token": 0.0000165, + "azure/eu/o3": { + "deprecation_date": "2026-11-19", + "successor_model": "azure/eu/gpt-5.6-sol", + "cache_read_input_token_cost": 5.5e-7, + "input_cost_per_token": 0.0000022, + "input_cost_per_token_batches": 0.0000011, "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 32768, - "max_tokens": 32768, + "max_input_tokens": 200000, + "max_output_tokens": 100000, "mode": "chat", - "output_cost_per_token": 0.000066, - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", - "supported_endpoints": [ - "/v1/chat/completions" - ], - "supports_prompt_caching": true + "output_cost_per_token": 0.0000088, + "output_cost_per_token_batches": 0.0000044, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/eu/o3-2025-04-16": { "deprecation_date": "2026-11-19", + "successor_model": "azure/eu/gpt-5.6-sol", "cache_read_input_token_cost": 5.5e-7, "input_cost_per_token": 0.0000022, "input_cost_per_token_batches": 0.0000011, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.0000088, "output_cost_per_token_batches": 0.0000044, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/eu/o3-deep-research": { "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.6-sol", "cache_read_input_token_cost": 0.00000275, "input_cost_per_token": 0.000011, "litellm_provider": "azure", @@ -4644,15 +5234,35 @@ "output_cost_per_token": 0.000044, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, + "azure/eu/o3-mini": { + "cache_read_input_token_cost": 6.05e-7, + "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.6-terra", + "input_cost_per_token": 0.00000121, + "input_cost_per_token_batches": 6.05e-7, + "litellm_provider": "azure", + "max_input_tokens": 200000, + "max_output_tokens": 100000, + "mode": "chat", + "output_cost_per_token": 0.00000484, + "output_cost_per_token_batches": 0.00000242, + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": false + }, "azure/eu/o3-mini-2025-01-31": { "cache_read_input_token_cost": 6.05e-7, "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.6-terra", "input_cost_per_token": 0.00000121, "input_cost_per_token_batches": 6.05e-7, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.00000484, "output_cost_per_token_batches": 0.00000242, @@ -4662,29 +5272,55 @@ "supports_tool_choice": true, "supports_vision": false }, + "azure/eu/o4-mini": { + "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.6-terra", + "cache_read_input_token_cost": 3.03e-7, + "input_cost_per_token": 0.00000121, + "input_cost_per_token_batches": 6.05e-7, + "litellm_provider": "azure", + "max_input_tokens": 200000, + "max_output_tokens": 100000, + "mode": "chat", + "output_cost_per_token": 0.00000484, + "output_cost_per_token_batches": 0.00000242, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + }, "azure/eu/o4-mini-2025-04-16": { "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/eu/gpt-5.6-terra", "cache_read_input_token_cost": 3.03e-7, "input_cost_per_token": 0.00000121, "input_cost_per_token_batches": 6.05e-7, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.00000484, "output_cost_per_token_batches": 0.00000242, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/global-standard/gpt-4o-2024-08-06": { "cache_read_input_token_cost": 0.00000125, "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_token": 0.0000025, "input_cost_per_token_batches": 0.00000125, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, @@ -4699,12 +5335,12 @@ "azure/global-standard/gpt-4o-2024-11-20": { "cache_read_input_token_cost": 0.00000125, "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_token": 0.0000025, "input_cost_per_token_batches": 0.00000125, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, @@ -4717,13 +5353,18 @@ }, "azure/global-standard/gpt-4o-mini": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_token": 1.5e-7, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_response_schema": true, @@ -4732,13 +5373,14 @@ }, "azure/global/gpt-4o-2024-08-06": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/global/gpt-5.1", "cache_read_input_token_cost": 0.00000125, "input_cost_per_token": 0.0000025, "input_cost_per_token_batches": 0.00000125, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, @@ -4752,13 +5394,14 @@ }, "azure/global/gpt-4o-2024-11-20": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/global/gpt-5.1", "cache_read_input_token_cost": 0.00000125, "input_cost_per_token": 0.0000025, "input_cost_per_token_batches": 0.00000125, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, @@ -4772,6 +5415,7 @@ }, "azure/global/gpt-5.1": { "deprecation_date": "2027-05-15", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "cache_read_input_token_cost": 1.25e-7, "cache_read_input_token_cost_batches": 6.25e-8, "cache_read_input_token_cost_priority": 2.5e-7, @@ -4779,7 +5423,6 @@ "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "supported_endpoints": [ @@ -4811,6 +5454,11 @@ "input_cost_per_token_priority": 0.0000025, "output_cost_per_token_batches": 0.000005, "output_cost_per_token_priority": 0.00002, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/gpt-3.5-turbo": { @@ -4818,7 +5466,6 @@ "litellm_provider": "azure", "max_input_tokens": 4097, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.0000015, "supports_function_calling": true, @@ -4829,117 +5476,38 @@ "litellm_provider": "azure", "max_input_tokens": 4097, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.0000015, "supports_function_calling": true, "supports_tool_choice": true }, - "azure/gpt-35-turbo-16k": { - "deprecation_date": "2025-04-30", - "input_cost_per_token": 0.000003, - "litellm_provider": "azure", - "max_input_tokens": 16385, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.000004, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/legacy-models", - "supports_tool_choice": true - }, - "azure/gpt-35-turbo-16k-0613": { - "deprecation_date": "2025-04-30", - "input_cost_per_token": 0.000003, - "litellm_provider": "azure", - "max_input_tokens": 16385, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.000004, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/legacy-models", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure/gpt-4": { - "deprecation_date": "2025-06-06", - "input_cost_per_token": 0.00003, - "litellm_provider": "azure", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.00006, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_function_calling": true, - "supports_tool_choice": true - }, "azure/gpt-4-0125-preview": { "input_cost_per_token": 0.00001, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00003, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true }, - "azure/gpt-4-0613": { - "deprecation_date": "2025-06-06", - "input_cost_per_token": 0.00003, - "litellm_provider": "azure", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.00006, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/legacy-models", - "supports_function_calling": true, - "supports_tool_choice": true - }, "azure/gpt-4-1106-preview": { "input_cost_per_token": 0.00001, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00003, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true }, - "azure/gpt-4-32k": { - "deprecation_date": "2025-06-06", - "input_cost_per_token": 0.00006, - "litellm_provider": "azure", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.00012, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/legacy-models", - "supports_tool_choice": true - }, - "azure/gpt-4-32k-0613": { - "deprecation_date": "2025-06-06", - "input_cost_per_token": 0.00006, - "litellm_provider": "azure", - "max_input_tokens": 32768, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.00012, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/legacy-models", - "supports_tool_choice": true - }, "azure/gpt-4-turbo": { "input_cost_per_token": 0.000011, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000033, "source": "https://azure.microsoft.com/en-us/pricing/details/azure-openai/", @@ -4952,7 +5520,6 @@ "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000033, "source": "https://azure.microsoft.com/en-us/pricing/details/azure-openai/", @@ -4966,7 +5533,6 @@ "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000033, "source": "https://azure.microsoft.com/en-us/pricing/details/azure-openai/", @@ -4975,6 +5541,8 @@ }, "azure/gpt-4.1": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.1", "cache_read_input_token_cost": 5e-7, "cache_read_input_token_cost_priority": 8.75e-7, "input_cost_per_token": 0.000002, @@ -4983,11 +5551,15 @@ "litellm_provider": "azure", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000008, "output_cost_per_token_batches": 0.000004, "output_cost_per_token_priority": 0.000014, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -5013,6 +5585,8 @@ }, "azure/gpt-4.1-2025-04-14": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.1", "cache_read_input_token_cost": 5e-7, "cache_read_input_token_cost_priority": 8.75e-7, "input_cost_per_token": 0.000002, @@ -5021,11 +5595,15 @@ "litellm_provider": "azure", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000008, "output_cost_per_token_batches": 0.000004, "output_cost_per_token_priority": 0.000014, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -5051,6 +5629,8 @@ }, "azure/gpt-4.1-mini": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.4-mini", "cache_read_input_token_cost": 1e-7, "cache_read_input_token_cost_priority": 1.75e-7, "input_cost_per_token": 4e-7, @@ -5059,11 +5639,15 @@ "litellm_provider": "azure", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000016, "output_cost_per_token_batches": 8e-7, "output_cost_per_token_priority": 0.0000028, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -5089,6 +5673,8 @@ }, "azure/gpt-4.1-mini-2025-04-14": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.4-mini", "cache_read_input_token_cost": 1e-7, "cache_read_input_token_cost_priority": 1.75e-7, "input_cost_per_token": 4e-7, @@ -5097,11 +5683,15 @@ "litellm_provider": "azure", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000016, "output_cost_per_token_batches": 8e-7, "output_cost_per_token_priority": 0.0000028, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -5127,13 +5717,14 @@ }, "azure/gpt-4.1-nano": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.4-nano", "cache_read_input_token_cost": 2.5e-8, "input_cost_per_token": 1e-7, "input_cost_per_token_batches": 5e-8, "litellm_provider": "azure", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 4e-7, "output_cost_per_token_batches": 2e-7, @@ -5161,13 +5752,14 @@ }, "azure/gpt-4.1-nano-2025-04-14": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.4-nano", "cache_read_input_token_cost": 2.5e-8, "input_cost_per_token": 1e-7, "input_cost_per_token_batches": 5e-8, "litellm_provider": "azure", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 4e-7, "output_cost_per_token_batches": 2e-7, @@ -5193,37 +5785,20 @@ "supports_tool_choice": true, "supports_vision": true }, - "azure/gpt-4.5-preview": { - "cache_read_input_token_cost": 0.0000375, - "deprecation_date": "2025-07-14", - "input_cost_per_token": 0.000075, - "input_cost_per_token_batches": 0.0000375, - "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 0.00015, - "output_cost_per_token_batches": 0.000075, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/legacy-models", - "supports_function_calling": true, - "supports_parallel_function_calling": true, - "supports_prompt_caching": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": true, - "supports_vision": true - }, "azure/gpt-4o": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.1", "cache_read_input_token_cost": 0.00000125, "input_cost_per_token": 0.0000025, + "input_cost_per_token_batches": 0.00000125, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, + "output_cost_per_token_batches": 0.000005, + "source": "https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/", "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_prompt_caching": true, @@ -5233,12 +5808,13 @@ }, "azure/gpt-4o-2024-05-13": { "deprecation_date": "2026-12-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.1", "input_cost_per_token": 0.000005, "input_cost_per_token_batches": 0.0000025, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_batches": 0.0000075, @@ -5251,13 +5827,14 @@ }, "azure/gpt-4o-2024-08-06": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.1", "cache_read_input_token_cost": 0.00000125, "input_cost_per_token": 0.0000025, "input_cost_per_token_batches": 0.00000125, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, @@ -5271,13 +5848,14 @@ }, "azure/gpt-4o-2024-11-20": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.1", "cache_read_input_token_cost": 0.00000125, "input_cost_per_token": 0.0000025, "input_cost_per_token_batches": 0.00000125, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, @@ -5295,7 +5873,6 @@ "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_audio_token": 0.00008, "output_cost_per_token": 0.00001, @@ -5310,6 +5887,7 @@ "text", "audio" ], + "supports_audio_output": true, "supports_function_calling": true, "supports_native_streaming": true, "supports_parallel_function_calling": true, @@ -5322,14 +5900,22 @@ }, "azure/gpt-4o-mini": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "cache_read_input_token_cost": 7.5e-8, "input_cost_per_token": 1.5e-7, + "input_cost_per_token_batches": 7.5e-8, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6e-7, + "output_cost_per_token_batches": 3e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, + "source": "https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/", "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_prompt_caching": true, @@ -5340,15 +5926,20 @@ "azure/gpt-4o-mini-2024-07-18": { "cache_read_input_token_cost": 7.5e-8, "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_token": 1.5e-7, "input_cost_per_token_batches": 7.5e-8, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_batches": 3e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, "supports_parallel_function_calling": true, @@ -5363,7 +5954,6 @@ "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_audio_token": 0.00002, "output_cost_per_token": 6e-7, @@ -5379,6 +5969,7 @@ "text", "audio" ], + "supports_audio_output": true, "supports_function_calling": true, "supports_native_streaming": true, "supports_parallel_function_calling": true, @@ -5391,6 +5982,8 @@ }, "azure/gpt-5": { "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.1", "cache_read_input_token_cost": 1.25e-7, "cache_read_input_token_cost_batches": 6.25e-8, "cache_read_input_token_cost_priority": 2.5e-7, @@ -5400,11 +5993,15 @@ "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, "output_cost_per_token_priority": 0.00002, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -5433,17 +6030,23 @@ "cache_read_input_token_cost": 1.25e-7, "cache_read_input_token_cost_priority": 2.5e-7, "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.1", "input_cost_per_token": 0.00000125, "input_cost_per_token_batches": 6.25e-7, "input_cost_per_token_priority": 0.0000025, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, "output_cost_per_token_priority": 0.00002, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -5472,11 +6075,12 @@ "azure/gpt-5-chat": { "cache_read_input_token_cost": 1.25e-7, "deprecation_date": "2026-06-29", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-chat-latest", "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://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -5496,6 +6100,8 @@ }, "azure/gpt-5-mini": { "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.4-mini", "cache_read_input_token_cost": 2.5e-8, "cache_read_input_token_cost_batches": 1.25e-8, "cache_read_input_token_cost_priority": 4.5e-8, @@ -5505,11 +6111,15 @@ "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000002, "output_cost_per_token_batches": 0.000001, "output_cost_per_token_priority": 0.0000036, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -5538,17 +6148,23 @@ "cache_read_input_token_cost": 2.5e-8, "cache_read_input_token_cost_priority": 4.5e-8, "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.4-mini", "input_cost_per_token": 2.5e-7, "input_cost_per_token_batches": 1.25e-7, "input_cost_per_token_priority": 4.5e-7, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000002, "output_cost_per_token_batches": 0.000001, "output_cost_per_token_priority": 0.0000036, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -5576,6 +6192,8 @@ }, "azure/gpt-5-nano": { "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.4-nano", "cache_read_input_token_cost": 5e-9, "cache_read_input_token_cost_batches": 2.5e-9, "input_cost_per_token": 5e-8, @@ -5583,10 +6201,14 @@ "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 4e-7, "output_cost_per_token_batches": 2e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -5614,15 +6236,21 @@ "azure/gpt-5-nano-2025-08-07": { "cache_read_input_token_cost": 5e-9, "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.4-nano", "input_cost_per_token": 5e-8, "input_cost_per_token_batches": 2.5e-8, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 4e-7, "output_cost_per_token_batches": 2e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -5650,6 +6278,8 @@ }, "azure/gpt-5.1": { "deprecation_date": "2027-05-15", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.2", "cache_read_input_token_cost": 1.25e-7, "cache_read_input_token_cost_batches": 6.25e-8, "cache_read_input_token_cost_priority": 2.5e-7, @@ -5657,7 +6287,6 @@ "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "supported_endpoints": [ @@ -5689,18 +6318,24 @@ "input_cost_per_token_priority": 0.0000025, "output_cost_per_token_batches": 0.000005, "output_cost_per_token_priority": 0.00002, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/gpt-5.1-2025-11-13": { "cache_read_input_token_cost": 1.25e-7, "cache_read_input_token_cost_priority": 2.5e-7, "deprecation_date": "2027-05-15", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.2", "input_cost_per_token": 0.00000125, "input_cost_per_token_priority": 0.0000025, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_priority": 0.00002, @@ -5730,6 +6365,11 @@ "default_reasoning_effort": "none", "input_cost_per_token_batches": 6.25e-7, "output_cost_per_token_batches": 0.000005, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_minimal_reasoning_effort": true, "cache_read_input_token_cost_batches": 6.25e-8 @@ -5737,11 +6377,12 @@ "azure/gpt-5.1-chat": { "cache_read_input_token_cost": 1.25e-7, "deprecation_date": "2026-06-29", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-chat-latest", "input_cost_per_token": 0.00000125, "litellm_provider": "azure", "max_input_tokens": 111616, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -5758,6 +6399,8 @@ }, "azure/gpt-5.2": { "deprecation_date": "2027-06-08", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.4", "cache_read_input_token_cost": 1.75e-7, "cache_read_input_token_cost_batches": 8.75e-8, "cache_read_input_token_cost_priority": 3.5e-7, @@ -5767,11 +6410,15 @@ "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000014, "output_cost_per_token_batches": 0.000007, "output_cost_per_token_priority": 0.000028, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -5801,17 +6448,23 @@ "cache_read_input_token_cost": 1.75e-7, "cache_read_input_token_cost_priority": 3.5e-7, "deprecation_date": "2027-06-08", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.4", "input_cost_per_token": 0.00000175, "input_cost_per_token_batches": 8.75e-7, "input_cost_per_token_priority": 0.0000035, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000014, "output_cost_per_token_batches": 0.000007, "output_cost_per_token_priority": 0.000028, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -5841,11 +6494,12 @@ "azure/gpt-5.2-chat": { "cache_read_input_token_cost": 1.75e-7, "deprecation_date": "2026-06-29", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-chat-latest", "input_cost_per_token": 0.00000175, "litellm_provider": "azure", "max_input_tokens": 111616, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000014, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -5862,11 +6516,12 @@ "azure/gpt-5.3-chat": { "cache_read_input_token_cost": 1.75e-7, "deprecation_date": "2026-06-29", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-chat-latest", "input_cost_per_token": 0.00000175, "litellm_provider": "azure", "max_input_tokens": 111616, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000014, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -5882,6 +6537,8 @@ }, "azure/gpt-5.4": { "deprecation_date": "2027-09-02", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.5", "cache_read_input_token_cost": 2.5e-7, "cache_read_input_token_cost_above_272k_tokens": 5e-7, "cache_read_input_token_cost_above_272k_tokens_batches": 2.5e-7, @@ -5896,7 +6553,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_above_272k_tokens": 0.0000225, @@ -5945,6 +6601,8 @@ "cache_read_input_token_cost_priority": 5e-7, "cache_read_input_token_cost_above_272k_tokens_priority": 0.000001, "deprecation_date": "2027-09-02", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.5", "input_cost_per_token": 0.0000025, "input_cost_per_token_above_272k_tokens": 0.000005, "input_cost_per_token_priority": 0.000005, @@ -5952,7 +6610,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_above_272k_tokens": 0.0000225, @@ -5998,6 +6655,7 @@ }, "azure/gpt-5.4-mini": { "deprecation_date": "2027-09-21", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "cache_read_input_token_cost": 7.5e-8, "cache_read_input_token_cost_batches": 3.75e-8, "cache_read_input_token_cost_flex": 3.75e-8, @@ -6006,13 +6664,12 @@ "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000045, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -6053,17 +6710,17 @@ "cache_read_input_token_cost_flex": 3.75e-8, "cache_read_input_token_cost_priority": 1.5e-7, "deprecation_date": "2027-09-21", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_token": 7.5e-7, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000045, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -6102,6 +6759,7 @@ }, "azure/gpt-5.4-nano": { "deprecation_date": "2027-09-21", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "cache_read_input_token_cost": 2e-8, "cache_read_input_token_cost_batches": 1e-8, "cache_read_input_token_cost_flex": 1e-8, @@ -6109,13 +6767,12 @@ "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000125, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -6153,17 +6810,17 @@ "cache_read_input_token_cost": 2e-8, "cache_read_input_token_cost_flex": 1e-8, "deprecation_date": "2027-09-21", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_token": 2e-7, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000125, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -6200,6 +6857,8 @@ }, "azure/gpt-5.5": { "deprecation_date": "2027-10-26", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "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_above_272k_tokens_batches": 5e-7, @@ -6218,7 +6877,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "output_cost_per_token_above_272k_tokens": 0.000045, @@ -6227,9 +6885,9 @@ "output_cost_per_token_above_272k_tokens_priority": 0.00009, "output_cost_per_token_batches": 0.000015, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -6274,16 +6932,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "output_cost_per_token_above_272k_tokens": 0.000045, "output_cost_per_token_priority": 0.000075, "output_cost_per_token_above_272k_tokens_priority": 0.00009, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -6309,6 +6966,8 @@ "supports_vision": true, "supports_web_search": true, "deprecation_date": "2027-10-26", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.6", "input_cost_per_token_above_272k_tokens_batches": 0.000005, "input_cost_per_token_above_272k_tokens_flex": 0.000005, "input_cost_per_token_batches": 0.0000025, @@ -6319,6 +6978,8 @@ }, "azure/gpt-5.5-2026-04-24": { "deprecation_date": "2027-10-26", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "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.00000125, @@ -6334,7 +6995,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "output_cost_per_token_batches": 0.000015, @@ -6342,9 +7002,9 @@ "output_cost_per_token_priority": 0.000075, "output_cost_per_token_above_272k_tokens_priority": 0.00009, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -6394,16 +7054,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00002, "output_cost_per_token_above_272k_tokens": 0.00003, "output_cost_per_token_priority": 0.00004, "output_cost_per_token_above_272k_tokens_priority": 0.00006, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -6446,6 +7105,8 @@ "cache_read_input_token_cost_above_272k_tokens_priority": 8e-8, "cache_read_input_token_cost_flex": 1e-8, "deprecation_date": "2028-01-11", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-6-luna", "input_cost_per_token": 2e-7, "input_cost_per_token_above_272k_tokens": 4e-7, "input_cost_per_token_above_272k_tokens_flex": 2e-7, @@ -6455,7 +7116,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_above_272k_tokens": 0.0000018, @@ -6464,9 +7124,9 @@ "output_cost_per_token_above_272k_tokens_priority": 0.0000036, "output_cost_per_token_flex": 6e-7, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -6510,6 +7170,8 @@ "cache_read_input_token_cost_above_272k_tokens_priority": 8e-8, "cache_read_input_token_cost_flex": 1e-8, "deprecation_date": "2028-01-11", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-6-luna", "input_cost_per_token": 2e-7, "input_cost_per_token_above_272k_tokens": 4e-7, "input_cost_per_token_above_272k_tokens_flex": 2e-7, @@ -6519,7 +7181,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_above_272k_tokens": 0.0000018, @@ -6528,9 +7189,9 @@ "output_cost_per_token_above_272k_tokens_priority": 0.0000036, "output_cost_per_token_flex": 6e-7, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -6574,6 +7235,8 @@ "cache_read_input_token_cost_above_272k_tokens_priority": 0.0000016, "cache_read_input_token_cost_flex": 2e-7, "deprecation_date": "2028-01-11", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-6-sol", "input_cost_per_token": 0.000004, "input_cost_per_token_above_272k_tokens": 0.000008, "input_cost_per_token_above_272k_tokens_flex": 0.000004, @@ -6583,7 +7246,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00002, "output_cost_per_token_above_272k_tokens": 0.00003, @@ -6592,9 +7254,9 @@ "output_cost_per_token_above_272k_tokens_priority": 0.00006, "output_cost_per_token_flex": 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 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -6638,6 +7300,8 @@ "cache_read_input_token_cost_above_272k_tokens_priority": 0.0000016, "cache_read_input_token_cost_flex": 2e-7, "deprecation_date": "2028-01-11", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-6-sol", "input_cost_per_token": 0.000004, "input_cost_per_token_above_272k_tokens": 0.000008, "input_cost_per_token_above_272k_tokens_flex": 0.000004, @@ -6647,7 +7311,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00002, "output_cost_per_token_above_272k_tokens": 0.00003, @@ -6656,9 +7319,9 @@ "output_cost_per_token_above_272k_tokens_priority": 0.00006, "output_cost_per_token_flex": 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 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -6702,6 +7365,8 @@ "cache_read_input_token_cost_above_272k_tokens_priority": 8e-7, "cache_read_input_token_cost_flex": 1e-7, "deprecation_date": "2028-01-11", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-6.1-terra", "input_cost_per_token": 0.000002, "input_cost_per_token_above_272k_tokens": 0.000004, "input_cost_per_token_above_272k_tokens_flex": 0.000002, @@ -6711,7 +7376,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "output_cost_per_token_above_272k_tokens": 0.000018, @@ -6720,9 +7384,9 @@ "output_cost_per_token_above_272k_tokens_priority": 0.000036, "output_cost_per_token_flex": 0.000006, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -6766,6 +7430,8 @@ "cache_read_input_token_cost_above_272k_tokens_priority": 8e-7, "cache_read_input_token_cost_flex": 1e-7, "deprecation_date": "2028-01-11", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-6.1-terra", "input_cost_per_token": 0.000002, "input_cost_per_token_above_272k_tokens": 0.000004, "input_cost_per_token_above_272k_tokens_flex": 0.000002, @@ -6775,7 +7441,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "output_cost_per_token_above_272k_tokens": 0.000018, @@ -6784,9 +7449,9 @@ "output_cost_per_token_above_272k_tokens_priority": 0.000036, "output_cost_per_token_flex": 0.000006, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -6827,16 +7492,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "output_cost_per_token_above_272k_tokens": 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 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "source": "https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/", "supported_endpoints": [ "/v1/chat/completions", "/v1/responses" @@ -6853,7 +7517,7 @@ "supports_max_reasoning_effort": false, "supports_minimal_reasoning_effort": false, "supports_native_streaming": true, - "supports_none_reasoning_effort": true, + "supports_none_reasoning_effort": false, "supports_parallel_function_calling": true, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -6863,7 +7527,11 @@ "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true, - "supports_xhigh_reasoning_effort": true + "supports_xhigh_reasoning_effort": true, + "cache_creation_input_token_cost_above_272k_tokens_flex": 0.0000125, + "cache_read_input_token_cost_above_272k_tokens_flex": 0.000001, + "input_cost_per_token_above_272k_tokens_flex": 0.00001, + "output_cost_per_token_above_272k_tokens_flex": 0.0000375 }, "azure/gpt-6-astra-2026-09-03": { "cache_creation_input_token_cost": 0.0000125, @@ -6876,16 +7544,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "output_cost_per_token_above_272k_tokens": 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 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "source": "https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/", "supported_endpoints": [ "/v1/chat/completions", "/v1/responses" @@ -6902,7 +7569,7 @@ "supports_max_reasoning_effort": false, "supports_minimal_reasoning_effort": false, "supports_native_streaming": true, - "supports_none_reasoning_effort": true, + "supports_none_reasoning_effort": false, "supports_parallel_function_calling": true, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -6912,7 +7579,11 @@ "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true, - "supports_xhigh_reasoning_effort": true + "supports_xhigh_reasoning_effort": true, + "cache_creation_input_token_cost_above_272k_tokens_flex": 0.0000125, + "cache_read_input_token_cost_above_272k_tokens_flex": 0.000001, + "input_cost_per_token_above_272k_tokens_flex": 0.00001, + "output_cost_per_token_above_272k_tokens_flex": 0.0000375 }, "azure/gpt-6-luna": { "cache_creation_input_token_cost": 1.25e-7, @@ -6925,14 +7596,13 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "output_cost_per_token_above_272k_tokens": 7.5e-7, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://azure.microsoft.com/en-us/blog/gpt-6-astra-sol-and-luna-for-production-agents-in-microsoft-foundry/", "supported_endpoints": [ @@ -6974,14 +7644,13 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "output_cost_per_token_above_272k_tokens": 7.5e-7, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://azure.microsoft.com/en-us/blog/gpt-6-astra-sol-and-luna-for-production-agents-in-microsoft-foundry/", "supported_endpoints": [ @@ -7029,16 +7698,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_above_272k_tokens": 0.000015, "output_cost_per_token_above_272k_tokens_priority": 0.00003, "output_cost_per_token_priority": 0.00002, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://azure.microsoft.com/en-us/blog/gpt-6-astra-sol-and-luna-for-production-agents-in-microsoft-foundry/", "supported_endpoints": [ @@ -7086,16 +7754,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_above_272k_tokens": 0.000015, "output_cost_per_token_above_272k_tokens_priority": 0.00003, "output_cost_per_token_priority": 0.00002, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://azure.microsoft.com/en-us/blog/gpt-6-astra-sol-and-luna-for-production-agents-in-microsoft-foundry/", "supported_endpoints": [ @@ -7137,14 +7804,13 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_above_272k_tokens": 0.000015, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/models", "supported_endpoints": [ @@ -7186,14 +7852,13 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_above_272k_tokens": 0.000015, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/models", "supported_endpoints": [ @@ -7224,14 +7889,61 @@ "supports_web_search": true, "supports_xhigh_reasoning_effort": true }, + "azure/gpt-6.1-terra": { + "cache_creation_input_token_cost": 0.00000125, + "cache_creation_input_token_cost_above_272k_tokens": 0.0000025, + "cache_read_input_token_cost": 5e-8, + "cache_read_input_token_cost_above_272k_tokens": 1e-7, + "input_cost_per_token": 0.000001, + "input_cost_per_token_above_272k_tokens": 0.000002, + "litellm_provider": "azure", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000005, + "output_cost_per_token_above_272k_tokens": 0.0000075, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, + "source": "https://techcommunity.microsoft.com/blog/azure-ai-foundry-blog/gpt-6-1-terra-now-generally-available-in-microsoft-foundry-build-agents-that-see/4567769", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_computer_use": true, + "supports_function_calling": true, + "supports_max_reasoning_effort": true, + "supports_minimal_reasoning_effort": false, + "supports_native_streaming": true, + "supports_none_reasoning_effort": false, + "supports_parallel_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_web_search": true, + "supports_xhigh_reasoning_effort": true + }, "azure/gpt-audio": { "deprecation_date": "2027-03-02", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_audio_token": 0.00004, "input_cost_per_token": 0.0000025, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_audio_token": 0.00008, "output_cost_per_token": 0.00001, @@ -7246,6 +7958,7 @@ "text", "audio" ], + "supports_audio_output": true, "supports_function_calling": true, "supports_native_streaming": true, "supports_parallel_function_calling": true, @@ -7259,12 +7972,12 @@ }, "azure/gpt-audio-1.5": { "deprecation_date": "2027-08-24", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_audio_token": 0.000032, "input_cost_per_token": 0.0000025, "litellm_provider": "azure", "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, @@ -7279,6 +7992,7 @@ "text", "audio" ], + "supports_audio_output": true, "supports_function_calling": true, "supports_native_streaming": true, "supports_parallel_function_calling": true, @@ -7292,12 +8006,12 @@ }, "azure/gpt-audio-1.5-2026-02-23": { "deprecation_date": "2027-08-24", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_audio_token": 0.000032, "input_cost_per_token": 0.0000025, "litellm_provider": "azure", "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, @@ -7313,6 +8027,8 @@ "text", "audio" ], + "supports_audio_input": true, + "supports_audio_output": true, "supports_function_calling": true, "supports_native_streaming": true, "supports_parallel_function_calling": true, @@ -7325,12 +8041,12 @@ }, "azure/gpt-audio-2025-08-28": { "deprecation_date": "2027-03-02", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_audio_token": 0.00004, "input_cost_per_token": 0.0000025, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_audio_token": 0.00008, "output_cost_per_token": 0.00001, @@ -7345,6 +8061,7 @@ "text", "audio" ], + "supports_audio_output": true, "supports_function_calling": true, "supports_native_streaming": true, "supports_parallel_function_calling": true, @@ -7357,12 +8074,12 @@ }, "azure/gpt-audio-mini": { "deprecation_date": "2027-06-15", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_audio_token": 0.00001, "input_cost_per_token": 6e-7, "litellm_provider": "azure", "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, @@ -7377,6 +8094,7 @@ "text", "audio" ], + "supports_audio_output": true, "supports_function_calling": true, "supports_native_streaming": true, "supports_parallel_function_calling": true, @@ -7389,12 +8107,12 @@ }, "azure/gpt-audio-mini-2025-10-06": { "deprecation_date": "2027-04-06", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_audio_token": 0.00001, "input_cost_per_token": 6e-7, "litellm_provider": "azure", "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, @@ -7409,6 +8127,8 @@ "text", "audio" ], + "supports_audio_input": true, + "supports_audio_output": true, "supports_function_calling": true, "supports_native_streaming": true, "supports_parallel_function_calling": true, @@ -7422,11 +8142,11 @@ "azure/gpt-chat-latest": { "cache_read_input_token_cost": 5e-7, "deprecation_date": "2027-05-18", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_token": 0.000005, "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.00003, "reasoning_effort_levels": [ @@ -7460,7 +8180,7 @@ "input_cost_per_token": 0.000008, "litellm_provider": "azure", "max_input_tokens": 32000, - "max_tokens": 32000, + "max_output_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000024, "supports_function_calling": true @@ -7469,7 +8189,7 @@ "input_cost_per_token": 0.000008, "litellm_provider": "azure", "max_input_tokens": 32000, - "max_tokens": 32000, + "max_output_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000024, "supports_function_calling": true @@ -7477,11 +8197,11 @@ "azure/model-router": { "comment": "The flat $0.14 per M input tokens is the router's own fee, the routed model is priced on top of it", "deprecation_date": "2027-05-20", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_token": 1.4e-7, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0, "source": "https://azure.microsoft.com/en-us/pricing/details/ai-foundry-models/model-router/", @@ -7489,12 +8209,12 @@ }, "azure/o1": { "deprecation_date": "2026-11-19", + "successor_model": "azure/gpt-5.6-sol", "cache_read_input_token_cost": 0.0000075, "input_cost_per_token": 0.000015, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.00006, "supports_function_calling": true, @@ -7507,12 +8227,12 @@ "azure/o1-2024-12-17": { "cache_read_input_token_cost": 0.0000075, "deprecation_date": "2026-11-19", + "successor_model": "azure/gpt-5.6-sol", "input_cost_per_token": 0.000015, "input_cost_per_token_batches": 0.0000075, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.00006, "output_cost_per_token_batches": 0.00003, @@ -7531,7 +8251,6 @@ "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000044, "output_cost_per_token_batches": 0.0000022, @@ -7549,7 +8268,6 @@ "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000044, "output_cost_per_token_batches": 0.0000022, @@ -7562,14 +8280,22 @@ }, "azure/o3": { "deprecation_date": "2026-11-19", + "successor_model": "azure/gpt-5.6-sol", "cache_read_input_token_cost": 5e-7, "input_cost_per_token": 0.000002, + "input_cost_per_token_batches": 0.000001, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.000008, + "output_cost_per_token_batches": 0.000004, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, + "source": "https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/", "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -7592,16 +8318,21 @@ }, "azure/o3-2025-04-16": { "deprecation_date": "2026-11-19", + "successor_model": "azure/gpt-5.6-sol", "cache_read_input_token_cost": 5e-7, "input_cost_per_token": 0.000002, "input_cost_per_token_batches": 0.000001, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.000008, "output_cost_per_token_batches": 0.000004, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -7625,14 +8356,18 @@ }, "azure/o3-mini": { "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.6-terra", "cache_read_input_token_cost": 5.5e-7, "input_cost_per_token": 0.0000011, + "input_cost_per_token_batches": 5.5e-7, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.0000044, + "output_cost_per_token_batches": 0.0000022, + "source": "https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/", "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, @@ -7642,12 +8377,13 @@ "azure/o3-mini-2025-01-31": { "cache_read_input_token_cost": 5.5e-7, "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.6-terra", "input_cost_per_token": 0.0000011, "input_cost_per_token_batches": 5.5e-7, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.0000044, "output_cost_per_token_batches": 0.0000022, @@ -7659,14 +8395,23 @@ }, "azure/o4-mini": { "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.6-terra", "cache_read_input_token_cost": 2.75e-7, "input_cost_per_token": 0.0000011, + "input_cost_per_token_batches": 5.5e-7, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.0000044, + "output_cost_per_token_batches": 0.0000022, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, + "source": "https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/", "supported_endpoints": [ "/v1/chat/completions", "/v1/batch", @@ -7690,15 +8435,21 @@ "azure/o4-mini-2025-04-16": { "cache_read_input_token_cost": 2.75e-7, "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/gpt-5.6-terra", "input_cost_per_token": 0.0000011, "input_cost_per_token_batches": 5.5e-7, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.0000044, "output_cost_per_token_batches": 0.0000022, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, "supports_parallel_function_calling": false, @@ -7715,7 +8466,6 @@ "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001375, "supported_endpoints": [ @@ -7749,7 +8499,6 @@ "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.00000605, "supports_prompt_caching": true, @@ -7767,6 +8516,8 @@ }, "azure/us/gpt-4.1": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.1", "cache_read_input_token_cost": 5.5e-7, "cache_read_input_token_cost_priority": 9.63e-7, "input_cost_per_token": 0.0000022, @@ -7777,10 +8528,17 @@ "output_cost_per_token": 0.0000088, "output_cost_per_token_batches": 0.0000044, "output_cost_per_token_priority": 0.0000154, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/us/gpt-4.1-2025-04-14": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.1", "cache_read_input_token_cost": 5.5e-7, "cache_read_input_token_cost_priority": 9.63e-7, "input_cost_per_token": 0.0000022, @@ -7789,11 +8547,15 @@ "litellm_provider": "azure", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000088, "output_cost_per_token_batches": 0.0000044, "output_cost_per_token_priority": 0.0000154, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -7819,6 +8581,8 @@ }, "azure/us/gpt-4.1-mini": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.4-mini", "cache_read_input_token_cost": 1.1e-7, "cache_read_input_token_cost_priority": 1.93e-7, "input_cost_per_token": 4.4e-7, @@ -7829,10 +8593,17 @@ "output_cost_per_token": 0.00000176, "output_cost_per_token_batches": 8.8e-7, "output_cost_per_token_priority": 0.00000308, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/us/gpt-4.1-mini-2025-04-14": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.4-mini", "cache_read_input_token_cost": 1.1e-7, "cache_read_input_token_cost_priority": 1.93e-7, "input_cost_per_token": 4.4e-7, @@ -7841,11 +8612,15 @@ "litellm_provider": "azure", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.00000176, "output_cost_per_token_batches": 8.8e-7, "output_cost_per_token_priority": 0.00000308, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -7871,6 +8646,8 @@ }, "azure/us/gpt-4.1-nano": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.4-nano", "cache_read_input_token_cost": 2.8e-8, "input_cost_per_token": 1.1e-7, "input_cost_per_token_batches": 5.5e-8, @@ -7882,13 +8659,14 @@ }, "azure/us/gpt-4.1-nano-2025-04-14": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.4-nano", "cache_read_input_token_cost": 2.8e-8, "input_cost_per_token": 1.1e-7, "input_cost_per_token_batches": 5.5e-8, "litellm_provider": "azure", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 4.4e-7, "output_cost_per_token_batches": 2.2e-7, @@ -7914,14 +8692,36 @@ "supports_tool_choice": true, "supports_vision": true }, + "azure/us/gpt-4o": { + "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.1", + "cache_creation_input_token_cost": 0.00000138, + "cache_read_input_token_cost": 0.000001375, + "input_cost_per_token": 0.00000275, + "input_cost_per_token_batches": 0.000001375, + "litellm_provider": "azure", + "max_input_tokens": 128000, + "max_output_tokens": 16384, + "mode": "chat", + "output_cost_per_token": 0.000011, + "output_cost_per_token_batches": 0.0000055, + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, "azure/us/gpt-4o-2024-05-13": { "deprecation_date": "2026-12-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.1", "input_cost_per_token": 0.0000055, "input_cost_per_token_batches": 0.00000275, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.0000165, "output_cost_per_token_batches": 0.00000825, @@ -7929,13 +8729,14 @@ }, "azure/us/gpt-4o-2024-08-06": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.1", "cache_read_input_token_cost": 0.000001375, "input_cost_per_token": 0.00000275, "input_cost_per_token_batches": 0.000001375, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000011, "output_cost_per_token_batches": 0.0000055, @@ -7949,6 +8750,8 @@ }, "azure/us/gpt-4o-2024-11-20": { "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.1", "cache_creation_input_token_cost": 0.00000138, "cache_read_input_token_cost": 0.000001375, "input_cost_per_token": 0.00000275, @@ -7956,7 +8759,6 @@ "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000011, "output_cost_per_token_batches": 0.0000055, @@ -7967,17 +8769,46 @@ "supports_tool_choice": true, "supports_vision": true }, + "azure/us/gpt-4o-mini": { + "cache_read_input_token_cost": 8.3e-8, + "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "input_cost_per_token": 1.65e-7, + "input_cost_per_token_batches": 8.3e-8, + "litellm_provider": "azure", + "max_input_tokens": 128000, + "max_output_tokens": 16384, + "mode": "chat", + "output_cost_per_token": 6.6e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_prompt_caching": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, "azure/us/gpt-4o-mini-2024-07-18": { "cache_read_input_token_cost": 8.3e-8, "deprecation_date": "2027-04-14", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_token": 1.65e-7, "input_cost_per_token_batches": 8.3e-8, "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6.6e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, "supports_parallel_function_calling": true, @@ -7988,6 +8819,8 @@ }, "azure/us/gpt-5": { "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.1", "cache_read_input_token_cost": 1.375e-7, "cache_read_input_token_cost_batches": 6.875e-8, "cache_read_input_token_cost_priority": 2.75e-7, @@ -7999,23 +8832,34 @@ "output_cost_per_token": 0.000011, "output_cost_per_token_batches": 0.0000055, "output_cost_per_token_priority": 0.000022, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/us/gpt-5-2025-08-07": { "cache_read_input_token_cost": 1.375e-7, "cache_read_input_token_cost_priority": 2.75e-7, "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.1", "input_cost_per_token": 0.000001375, "input_cost_per_token_batches": 6.875e-7, "input_cost_per_token_priority": 0.00000275, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000011, "output_cost_per_token_batches": 0.0000055, "output_cost_per_token_priority": 0.000022, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -8043,6 +8887,8 @@ }, "azure/us/gpt-5-mini": { "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.4-mini", "cache_read_input_token_cost": 2.75e-8, "cache_read_input_token_cost_batches": 1.375e-8, "cache_read_input_token_cost_priority": 4.95e-8, @@ -8054,23 +8900,34 @@ "output_cost_per_token": 0.0000022, "output_cost_per_token_batches": 0.0000011, "output_cost_per_token_priority": 0.00000396, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/us/gpt-5-mini-2025-08-07": { "cache_read_input_token_cost": 2.75e-8, "cache_read_input_token_cost_priority": 4.95e-8, "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.4-mini", "input_cost_per_token": 2.75e-7, "input_cost_per_token_batches": 1.375e-7, "input_cost_per_token_priority": 4.95e-7, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000022, "output_cost_per_token_batches": 0.0000011, "output_cost_per_token_priority": 0.00000396, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -8098,6 +8955,8 @@ }, "azure/us/gpt-5-nano": { "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.4-nano", "cache_read_input_token_cost": 5.5e-9, "cache_read_input_token_cost_batches": 2.75e-9, "input_cost_per_token": 5.5e-8, @@ -8106,20 +8965,31 @@ "mode": "chat", "output_cost_per_token": 4.4e-7, "output_cost_per_token_batches": 2.2e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/us/gpt-5-nano-2025-08-07": { "cache_read_input_token_cost": 5.5e-9, "deprecation_date": "2027-02-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.4-nano", "input_cost_per_token": 5.5e-8, "input_cost_per_token_batches": 2.75e-8, "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 4.4e-7, "output_cost_per_token_batches": 2.2e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -8147,6 +9017,8 @@ }, "azure/us/gpt-5.1": { "deprecation_date": "2027-05-15", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.2", "cache_read_input_token_cost": 1.375e-7, "cache_read_input_token_cost_batches": 6.875e-8, "cache_read_input_token_cost_priority": 2.75e-7, @@ -8154,7 +9026,6 @@ "litellm_provider": "azure", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000011, "supported_endpoints": [ @@ -8186,16 +9057,22 @@ "input_cost_per_token_priority": 0.00000275, "output_cost_per_token_batches": 0.0000055, "output_cost_per_token_priority": 0.000022, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/us/gpt-5.1-chat": { "cache_read_input_token_cost": 1.375e-7, "deprecation_date": "2026-06-29", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-chat-latest", "input_cost_per_token": 0.000001375, "litellm_provider": "azure", "max_input_tokens": 111616, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000011, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -8212,6 +9089,8 @@ }, "azure/us/gpt-5.2": { "deprecation_date": "2027-06-08", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.4", "cache_read_input_token_cost": 1.925e-7, "cache_read_input_token_cost_batches": 9.625e-8, "cache_read_input_token_cost_priority": 3.85e-7, @@ -8223,16 +9102,22 @@ "output_cost_per_token": 0.0000154, "output_cost_per_token_batches": 0.0000077, "output_cost_per_token_priority": 0.0000308, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/us/gpt-5.2-chat": { "cache_read_input_token_cost": 1.925e-7, "deprecation_date": "2026-06-29", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-chat-latest", "input_cost_per_token": 0.000001925, "litellm_provider": "azure", "max_input_tokens": 111616, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000154, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -8249,11 +9134,12 @@ "azure/us/gpt-5.3-chat": { "cache_read_input_token_cost": 1.925e-7, "deprecation_date": "2026-06-29", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-chat-latest", "input_cost_per_token": 0.000001925, "litellm_provider": "azure", "max_input_tokens": 111616, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000154, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -8269,6 +9155,8 @@ }, "azure/us/gpt-5.4": { "deprecation_date": "2027-09-02", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.5", "cache_read_input_token_cost": 2.75e-7, "cache_read_input_token_cost_above_272k_tokens": 5.5e-7, "cache_read_input_token_cost_above_272k_tokens_batches": 2.75e-7, @@ -8281,7 +9169,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supported_endpoints": [ "/v1/chat/completions", @@ -8322,6 +9209,8 @@ "cache_read_input_token_cost_above_272k_tokens": 5.5e-7, "cache_read_input_token_cost_priority": 5.5e-7, "deprecation_date": "2027-09-02", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.5", "input_cost_per_token": 0.00000275, "input_cost_per_token_priority": 0.0000055, "output_cost_per_token": 0.0000165, @@ -8329,7 +9218,6 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supported_endpoints": [ "/v1/chat/completions", @@ -8369,6 +9257,7 @@ }, "azure/us/gpt-5.4-mini": { "deprecation_date": "2027-09-21", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "cache_read_input_token_cost": 8.25e-8, "cache_read_input_token_cost_batches": 4.125e-8, "cache_read_input_token_cost_priority": 1.65e-7, @@ -8380,10 +9269,16 @@ "output_cost_per_token": 0.00000495, "output_cost_per_token_batches": 0.000002475, "output_cost_per_token_priority": 0.0000099, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/us/gpt-5.4-nano": { "deprecation_date": "2027-09-21", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "cache_read_input_token_cost": 2.2e-8, "cache_read_input_token_cost_batches": 1.1e-8, "input_cost_per_token": 2.2e-7, @@ -8392,10 +9287,17 @@ "mode": "chat", "output_cost_per_token": 0.000001375, "output_cost_per_token_batches": 6.875e-7, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, "azure/us/gpt-5.5": { "deprecation_date": "2027-10-26", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "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_above_272k_tokens_batches": 5.5e-7, @@ -8412,14 +9314,13 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token_above_272k_tokens_batches": 0.00002475, "output_cost_per_token_batches": 0.0000165, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -8464,12 +9365,11 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "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 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -8495,6 +9395,8 @@ "supports_vision": true, "supports_web_search": true, "deprecation_date": "2027-10-26", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.6", "input_cost_per_token_above_272k_tokens_batches": 0.0000055, "input_cost_per_token_batches": 0.00000275, "output_cost_per_token_above_272k_tokens_batches": 0.00002475, @@ -8503,6 +9405,8 @@ }, "azure/us/gpt-5.5-2026-04-24": { "deprecation_date": "2027-10-26", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "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, @@ -8517,12 +9421,11 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "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 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -8572,16 +9475,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000022, "output_cost_per_token_above_272k_tokens": 0.000033, "output_cost_per_token_above_272k_tokens_priority": 0.000066, "output_cost_per_token_priority": 0.000044, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "supported_endpoints": [ "/v1/chat/completions", @@ -8620,6 +9522,8 @@ "cache_read_input_token_cost_above_272k_tokens_priority": 8.8e-8, "cache_read_input_token_cost_priority": 4.4e-8, "deprecation_date": "2028-01-11", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-6-luna", "input_cost_per_token": 2.2e-7, "input_cost_per_token_above_272k_tokens": 4.4e-7, "input_cost_per_token_above_272k_tokens_priority": 8.8e-7, @@ -8627,16 +9531,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000132, "output_cost_per_token_above_272k_tokens": 0.00000198, "output_cost_per_token_above_272k_tokens_priority": 0.00000396, "output_cost_per_token_priority": 0.00000264, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -8676,6 +9579,8 @@ "cache_read_input_token_cost_above_272k_tokens_priority": 0.00000176, "cache_read_input_token_cost_priority": 8.8e-7, "deprecation_date": "2028-01-11", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-6-sol", "input_cost_per_token": 0.0000044, "input_cost_per_token_above_272k_tokens": 0.0000088, "input_cost_per_token_above_272k_tokens_priority": 0.0000176, @@ -8683,16 +9588,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000022, "output_cost_per_token_above_272k_tokens": 0.000033, "output_cost_per_token_above_272k_tokens_priority": 0.000066, "output_cost_per_token_priority": 0.000044, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -8732,6 +9636,8 @@ "cache_read_input_token_cost_above_272k_tokens_priority": 8.8e-7, "cache_read_input_token_cost_priority": 4.4e-7, "deprecation_date": "2028-01-11", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-6.1-terra", "input_cost_per_token": 0.0000022, "input_cost_per_token_above_272k_tokens": 0.0000044, "input_cost_per_token_above_272k_tokens_priority": 0.0000088, @@ -8739,16 +9645,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000132, "output_cost_per_token_above_272k_tokens": 0.0000198, "output_cost_per_token_above_272k_tokens_priority": 0.0000396, "output_cost_per_token_priority": 0.0000264, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -8789,14 +9694,13 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000055, "output_cost_per_token_above_272k_tokens": 0.0000825, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ @@ -8815,7 +9719,7 @@ "supports_max_reasoning_effort": false, "supports_minimal_reasoning_effort": false, "supports_native_streaming": true, - "supports_none_reasoning_effort": true, + "supports_none_reasoning_effort": false, "supports_parallel_function_calling": true, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -8838,14 +9742,13 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5.5e-7, "output_cost_per_token_above_272k_tokens": 8.25e-7, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://azure.microsoft.com/en-us/blog/gpt-6-astra-sol-and-luna-for-production-agents-in-microsoft-foundry/", "supported_endpoints": [ @@ -8893,16 +9796,15 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000011, "output_cost_per_token_above_272k_tokens": 0.0000165, "output_cost_per_token_above_272k_tokens_priority": 0.000033, "output_cost_per_token_priority": 0.000022, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://azure.microsoft.com/en-us/blog/gpt-6-astra-sol-and-luna-for-production-agents-in-microsoft-foundry/", "supported_endpoints": [ @@ -8944,14 +9846,13 @@ "litellm_provider": "azure", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000011, "output_cost_per_token_above_272k_tokens": 0.0000165, "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 }, "source": "https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/models", "supported_endpoints": [ @@ -8982,14 +9883,61 @@ "supports_web_search": true, "supports_xhigh_reasoning_effort": true }, + "azure/us/gpt-6.1-terra": { + "cache_creation_input_token_cost": 0.000001375, + "cache_creation_input_token_cost_above_272k_tokens": 0.00000275, + "cache_read_input_token_cost": 5.5e-8, + "cache_read_input_token_cost_above_272k_tokens": 1.1e-7, + "input_cost_per_token": 0.0000011, + "input_cost_per_token_above_272k_tokens": 0.0000022, + "litellm_provider": "azure", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000055, + "output_cost_per_token_above_272k_tokens": 0.00000825, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, + "source": "https://techcommunity.microsoft.com/blog/azure-ai-foundry-blog/gpt-6-1-terra-now-generally-available-in-microsoft-foundry-build-agents-that-see/4567769", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_computer_use": true, + "supports_function_calling": true, + "supports_max_reasoning_effort": true, + "supports_minimal_reasoning_effort": false, + "supports_native_streaming": true, + "supports_none_reasoning_effort": false, + "supports_parallel_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_web_search": true, + "supports_xhigh_reasoning_effort": true + }, "azure/us/gpt-chat-latest": { "cache_read_input_token_cost": 5.5e-7, "deprecation_date": "2027-05-18", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", "input_cost_per_token": 0.0000055, "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.000033, "reasoning_effort_levels": [ @@ -9019,15 +9967,34 @@ "supports_vision": true, "supports_web_search": true }, + "azure/us/o1": { + "cache_read_input_token_cost": 0.00000825, + "deprecation_date": "2026-11-19", + "successor_model": "azure/us/gpt-5.6-sol", + "input_cost_per_token": 0.0000165, + "input_cost_per_token_batches": 0.00000825, + "litellm_provider": "azure", + "max_input_tokens": 200000, + "max_output_tokens": 100000, + "mode": "chat", + "output_cost_per_token": 0.000066, + "output_cost_per_token_batches": 0.000033, + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_prompt_caching": true, + "supports_tool_choice": true, + "supports_vision": true + }, "azure/us/o1-2024-12-17": { "cache_read_input_token_cost": 0.00000825, "deprecation_date": "2026-11-19", + "successor_model": "azure/us/gpt-5.6-sol", "input_cost_per_token": 0.0000165, "input_cost_per_token_batches": 0.00000825, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.000066, "output_cost_per_token_batches": 0.000033, @@ -9055,7 +10022,6 @@ "litellm_provider": "azure", "max_input_tokens": 128000, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.00000484, "output_cost_per_token_batches": 0.00000242, @@ -9065,34 +10031,61 @@ "supports_prompt_caching": true, "supports_vision": false }, - "azure/us/o1-preview": { - "cache_read_input_token_cost": 0.00000825, - "deprecation_date": "2025-07-28", - "input_cost_per_token": 0.0000165, + "azure/us/o3": { + "deprecation_date": "2026-11-19", + "successor_model": "azure/us/gpt-5.6-sol", + "cache_read_input_token_cost": 5.5e-7, + "input_cost_per_token": 0.0000022, + "input_cost_per_token_batches": 0.0000011, "litellm_provider": "azure", - "max_input_tokens": 128000, - "max_output_tokens": 32768, - "max_tokens": 32768, + "max_input_tokens": 200000, + "max_output_tokens": 100000, "mode": "chat", - "output_cost_per_token": 0.000066, + "output_cost_per_token": 0.0000088, + "output_cost_per_token_batches": 0.0000044, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ - "/v1/chat/completions" + "/v1/chat/completions", + "/v1/batch", + "/v1/responses" ], - "supports_prompt_caching": true + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": false, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true }, "azure/us/o3-2025-04-16": { "deprecation_date": "2026-11-19", + "successor_model": "azure/us/gpt-5.6-sol", "cache_read_input_token_cost": 5.5e-7, "input_cost_per_token": 0.0000022, "input_cost_per_token_batches": 0.0000011, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.0000088, "output_cost_per_token_batches": 0.0000044, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supported_endpoints": [ "/v1/chat/completions", @@ -9116,6 +10109,8 @@ }, "azure/us/o3-deep-research": { "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.6-sol", "cache_read_input_token_cost": 0.00000275, "input_cost_per_token": 0.000011, "litellm_provider": "azure", @@ -9123,15 +10118,35 @@ "output_cost_per_token": 0.000044, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" }, + "azure/us/o3-mini": { + "cache_read_input_token_cost": 6.05e-7, + "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.6-terra", + "input_cost_per_token": 0.00000121, + "input_cost_per_token_batches": 6.05e-7, + "litellm_provider": "azure", + "max_input_tokens": 200000, + "max_output_tokens": 100000, + "mode": "chat", + "output_cost_per_token": 0.00000484, + "output_cost_per_token_batches": 0.00000242, + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": false + }, "azure/us/o3-mini-2025-01-31": { "cache_read_input_token_cost": 6.05e-7, "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.6-terra", "input_cost_per_token": 0.00000121, "input_cost_per_token_batches": 6.05e-7, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.00000484, "output_cost_per_token_batches": 0.00000242, @@ -9141,18 +10156,51 @@ "supports_tool_choice": true, "supports_vision": false }, + "azure/us/o4-mini": { + "cache_read_input_token_cost": 3.03e-7, + "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.6-terra", + "input_cost_per_token": 0.00000121, + "input_cost_per_token_batches": 6.05e-7, + "litellm_provider": "azure", + "max_input_tokens": 200000, + "max_output_tokens": 100000, + "mode": "chat", + "output_cost_per_token": 0.00000484, + "output_cost_per_token_batches": 0.00000242, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_function_calling": true, + "supports_parallel_function_calling": false, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, "azure/us/o4-mini-2025-04-16": { "cache_read_input_token_cost": 3.03e-7, "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule", + "successor_model": "azure/us/gpt-5.6-terra", "input_cost_per_token": 0.00000121, "input_cost_per_token_batches": 6.05e-7, "litellm_provider": "azure", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.00000484, "output_cost_per_token_batches": 0.00000242, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, "supports_parallel_function_calling": false, @@ -9163,11 +10211,12 @@ "supports_vision": true }, "azure_ai/Codestral-2501": { + "deprecation_date": "2027-02-15", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 3e-7, "litellm_provider": "azure_ai", "max_input_tokens": 256000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -9180,34 +10229,38 @@ "supported_output_modalities": [ "text" ], - "supports_native_streaming": true + "supports_native_streaming": true, + "supports_pdf_input": false }, "azure_ai/Cohere-command-a-plus-05-2026": { "deprecation_date": "2026-10-16", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "coherelabs-command-a-plus-05-2026-fp81", "input_cost_per_token": 8e-7, "litellm_provider": "azure_ai", "max_input_tokens": 128000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000032, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_reasoning": true, "supports_tool_choice": true }, "azure_ai/DeepSeek-V4-Flash-0731": { "cache_read_input_token_cost": 1.4e-8, "deprecation_date": "2026-12-03", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 4.4e-7, "litellm_provider": "azure_ai", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 0.00000132, "source": "https://learn.microsoft.com/en-us/azure/foundry/foundry-models/concepts/models-sold-directly-by-azure", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -9219,11 +10272,11 @@ "litellm_provider": "azure_ai", "max_input_tokens": 163840, "max_output_tokens": 163840, - "max_tokens": 163840, "mode": "chat", "output_cost_per_token": 0.00000185, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -9234,11 +10287,11 @@ "litellm_provider": "azure_ai", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 3.1e-7, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -9249,11 +10302,11 @@ "litellm_provider": "azure_ai", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 0.000003828, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -9264,43 +10317,45 @@ "litellm_provider": "azure_ai", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true }, "azure_ai/FW-GLM-5": { "deprecation_date": "2027-07-01", + "successor_model": "azure_ai/FW-GLM-5.2", "cache_read_input_token_cost": 2.2e-7, "input_cost_per_token": 0.0000011, "litellm_provider": "azure_ai", "max_input_tokens": 200000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000352, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true }, "azure_ai/FW-GLM-5.1": { "deprecation_date": "2027-07-01", + "successor_model": "azure_ai/FW-GLM-5.2", "cache_read_input_token_cost": 2.86e-7, "input_cost_per_token": 0.00000154, "litellm_provider": "azure_ai", "max_input_tokens": 202800, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00000484, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -9311,11 +10366,11 @@ "litellm_provider": "azure_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00000484, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -9326,11 +10381,11 @@ "litellm_provider": "azure_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00000726, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -9341,11 +10396,11 @@ "litellm_provider": "azure_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000055, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -9356,11 +10411,11 @@ "litellm_provider": "azure_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 6.25e-7, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -9372,12 +10427,12 @@ "litellm_provider": "azure_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 6.6e-7, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, "supports_parallel_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, @@ -9389,7 +10444,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.00000446, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -9400,6 +10454,7 @@ "text" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -9411,7 +10466,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000033, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -9423,6 +10477,7 @@ "text" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, @@ -9434,7 +10489,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -9446,6 +10500,7 @@ "text" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, @@ -9457,7 +10512,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -9469,6 +10523,7 @@ "text" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, @@ -9480,7 +10535,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000015, "reasoning_effort_levels": [ @@ -9497,6 +10551,7 @@ "text" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, @@ -9509,11 +10564,11 @@ "litellm_provider": "azure_ai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.00000132, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -9524,7 +10579,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 512000, "max_output_tokens": 512000, - "max_tokens": 512000, "mode": "chat", "output_cost_per_token": 0.00000132, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -9536,6 +10590,7 @@ "text" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, @@ -9547,7 +10602,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.00000264, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -9558,6 +10612,7 @@ "text" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -9577,46 +10632,80 @@ "text" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, "supports_vision": false }, "azure_ai/Llama-3.3-70B-Instruct": { + "deprecation_date": "2027-01-31", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 7.1e-7, "litellm_provider": "azure_ai", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 7.1e-7, "source": "https://learn.microsoft.com/en-us/azure/foundry/foundry-models/concepts/models-sold-directly-by-azure", "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true }, "azure_ai/Llama-4-Maverick-17B-128E-Instruct-FP8": { + "deprecation_date": "2026-11-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 2.5e-7, "litellm_provider": "azure_ai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.000001, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true, "supports_vision": true }, "azure_ai/Llama-4-Scout-17B-16E-Instruct": { + "deprecation_date": "2027-01-31", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 2e-7, "litellm_provider": "azure_ai", "max_input_tokens": 10000000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 7.8e-7, "source": "https://azure.microsoft.com/en-us/blog/introducing-the-llama-4-herd-in-azure-ai-foundry-and-azure-databricks/", "supports_function_calling": true, + "supports_pdf_input": false, + "supports_tool_choice": true, + "supports_vision": true + }, + "azure_ai/MAI-Code-1.1-Flash": { + "cache_read_input_token_cost": 2e-8, + "deprecation_date": "2026-12-09", + "input_cost_per_token": 2e-7, + "litellm_provider": "azure_ai", + "max_input_tokens": 256000, + "max_output_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 0.0000012, + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, "supports_tool_choice": true, "supports_vision": true }, @@ -9626,25 +10715,26 @@ "litellm_provider": "azure_ai", "max_input_tokens": 256000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000035, "source": "https://azure.microsoft.com/en-us/pricing/details/ai-foundry-models/microsoft/", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true }, "azure_ai/MAI-DS-R1": { "deprecation_date": "2026-02-27", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", "input_cost_per_token": 0.00000135, "litellm_provider": "azure_ai", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000054, "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", + "supports_pdf_input": false, "supports_reasoning": true, "supports_tool_choice": true }, @@ -9654,7 +10744,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 256000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000008, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -9668,222 +10757,97 @@ "text" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true }, - "azure_ai/Meta-Llama-3-70B-Instruct": { - "deprecation_date": "2025-06-30", - "input_cost_per_token": 0.0000011, - "litellm_provider": "azure_ai", - "max_input_tokens": 8192, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 3.7e-7, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_tool_choice": true - }, - "azure_ai/Meta-Llama-3.1-70B-Instruct": { - "deprecation_date": "2025-06-30", - "input_cost_per_token": 0.00000268, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 2048, - "max_tokens": 2048, - "mode": "chat", - "output_cost_per_token": 0.00000354, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_tool_choice": true - }, - "azure_ai/Phi-3-medium-128k-instruct": { - "deprecation_date": "2025-08-30", - "input_cost_per_token": 1.7e-7, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6.8e-7, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3-medium-4k-instruct": { - "deprecation_date": "2025-08-30", - "input_cost_per_token": 1.7e-7, - "litellm_provider": "azure_ai", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6.8e-7, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3-mini-128k-instruct": { - "deprecation_date": "2025-08-30", - "input_cost_per_token": 1.3e-7, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 5.2e-7, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3-mini-4k-instruct": { - "deprecation_date": "2025-08-30", - "input_cost_per_token": 1.3e-7, - "litellm_provider": "azure_ai", - "max_input_tokens": 4096, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 5.2e-7, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3-small-128k-instruct": { - "deprecation_date": "2025-08-30", - "input_cost_per_token": 1.5e-7, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-7, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3-small-8k-instruct": { - "deprecation_date": "2025-08-30", - "input_cost_per_token": 1.5e-7, - "litellm_provider": "azure_ai", - "max_input_tokens": 8192, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6e-7, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3.5-MoE-instruct": { - "deprecation_date": "2025-08-30", - "input_cost_per_token": 1.6e-7, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 6.4e-7, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3.5-mini-instruct": { - "deprecation_date": "2025-08-30", - "input_cost_per_token": 1.3e-7, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 5.2e-7, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_tool_choice": true, - "supports_vision": false - }, - "azure_ai/Phi-3.5-vision-instruct": { - "deprecation_date": "2025-08-30", - "input_cost_per_token": 1.3e-7, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 5.2e-7, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_tool_choice": true, - "supports_vision": true - }, "azure_ai/Phi-4": { + "deprecation_date": "2027-01-17", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "microsoft--phi-4", "input_cost_per_token": 1.25e-7, "litellm_provider": "azure_ai", "max_input_tokens": 16384, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true, "supports_vision": false }, "azure_ai/Phi-4-mini-instruct": { + "deprecation_date": "2027-01-17", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "microsoft--phi-4", "input_cost_per_token": 7.5e-8, "litellm_provider": "azure_ai", "max_input_tokens": 131072, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 3e-7, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", - "supports_function_calling": true + "supports_function_calling": true, + "supports_pdf_input": false }, "azure_ai/Phi-4-mini-reasoning": { + "deprecation_date": "2027-01-17", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "microsoft--phi-4", "input_cost_per_token": 7.5e-8, "litellm_provider": "azure_ai", "max_input_tokens": 131072, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 3e-7, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", - "supports_function_calling": true + "supports_function_calling": true, + "supports_pdf_input": false }, "azure_ai/Phi-4-multimodal-instruct": { + "deprecation_date": "2027-01-17", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "microsoft--phi-4", "input_cost_per_audio_token": 0.000004, "input_cost_per_token": 8e-8, "litellm_provider": "azure_ai", "max_input_tokens": 131072, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 3.2e-7, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_audio_input": true, "supports_function_calling": true, + "supports_pdf_input": false, "supports_vision": true }, "azure_ai/Phi-4-reasoning": { + "deprecation_date": "2027-01-17", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "microsoft--phi-4", "input_cost_per_token": 1.25e-7, "litellm_provider": "azure_ai", "max_input_tokens": 32768, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true, "supports_reasoning": true }, "azure_ai/claude-fable-5": { "deprecation_date": "2027-12-05", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "supports_mid_conversation_system": true, "input_cost_per_token": 0.00001, "output_cost_per_token": 0.00005, "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, @@ -9906,7 +10870,7 @@ "supports_tool_choice": true, "supports_vision": true, "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true, + "supports_max_reasoning_effort": false, "prompt_cache_min_tokens": 512 }, "azure_ai/claude-fable-5-1": { @@ -9916,7 +10880,6 @@ "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, @@ -9941,12 +10904,15 @@ "supports_tool_choice": true, "supports_vision": true, "supports_xhigh_reasoning_effort": true, - "supports_max_reasoning_effort": true, + "supports_max_reasoning_effort": false, "prompt_cache_min_tokens": 512, - "deprecation_date": "2027-12-05" + "deprecation_date": "2027-12-05", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement" }, "azure_ai/claude-haiku-4-5": { "deprecation_date": "2026-11-15", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/claude-haiku-5-5", "cache_creation_input_token_cost": 0.00000125, "cache_creation_input_token_cost_above_1hr": 0.000002, "cache_read_input_token_cost": 1e-7, @@ -9954,7 +10920,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000005, "supports_assistant_prefill": true, @@ -9984,7 +10949,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "search_context_cost_per_query": { @@ -10010,8 +10974,40 @@ "prompt_cache_min_tokens": 512, "source": "https://platform.claude.com/docs/en/models/haiku-5-5/migration-guide" }, + "azure_ai/claude-mythos-5-1": { + "input_cost_per_token": 0.00001, + "output_cost_per_token": 0.00005, + "cache_creation_input_token_cost": 0.0000125, + "cache_creation_input_token_cost_above_1hr": 0.00002, + "cache_read_input_token_cost": 2.5e-7, + "litellm_provider": "azure_ai", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "supports_adaptive_thinking": true, + "thinking_always_on": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_forced_tool_use": false, + "supports_function_calling": true, + "supports_native_structured_output": 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": false, + "prompt_cache_min_tokens": 512, + "source": "https://learn.microsoft.com/en-us/azure/foundry/foundry-models/concepts/claude-models" + }, "azure_ai/claude-opus-4-5": { "deprecation_date": "2026-11-24", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/claude-opus-5-5", "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_read_input_token_cost": 5e-7, @@ -10019,7 +11015,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000025, "supports_assistant_prefill": true, @@ -10037,6 +11032,7 @@ }, "azure_ai/claude-opus-4-6": { "deprecation_date": "2027-02-02", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "supports_adaptive_thinking": true, "supports_legacy_thinking": true, "input_cost_per_token": 0.000005, @@ -10044,7 +11040,6 @@ "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, @@ -10069,13 +11064,13 @@ }, "azure_ai/claude-opus-4-7": { "deprecation_date": "2027-04-06", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "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, @@ -10101,6 +11096,7 @@ }, "azure_ai/claude-opus-4-8": { "deprecation_date": "2027-09-01", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "supports_mid_conversation_system": true, "supports_adaptive_thinking": true, "input_cost_per_token": 0.000005, @@ -10108,7 +11104,6 @@ "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, @@ -10134,6 +11129,7 @@ }, "azure_ai/claude-opus-5": { "deprecation_date": "2027-07-08", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "supports_mid_conversation_system": true, "supports_adaptive_thinking": true, "input_cost_per_token": 0.000005, @@ -10141,7 +11137,6 @@ "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, @@ -10172,7 +11167,6 @@ "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, @@ -10207,11 +11201,11 @@ "cache_creation_input_token_cost_above_1hr": 0.000016, "cache_read_input_token_cost": 4e-7, "deprecation_date": "2027-10-01", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 0.000008, "litellm_provider": "azure_ai", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00004, "prompt_cache_min_tokens": 512, @@ -10241,6 +11235,8 @@ }, "azure_ai/claude-sonnet-4-5": { "deprecation_date": "2026-11-30", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/claude-sonnet-5-5", "cache_creation_input_token_cost": 0.00000375, "cache_creation_input_token_cost_above_1hr": 0.000006, "cache_read_input_token_cost": 3e-7, @@ -10248,7 +11244,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -10265,6 +11260,7 @@ }, "azure_ai/claude-sonnet-4-6": { "deprecation_date": "2027-02-10", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "supports_adaptive_thinking": true, "supports_legacy_thinking": true, "cache_creation_input_token_cost": 0.00000375, @@ -10274,7 +11270,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": false, @@ -10293,6 +11288,7 @@ }, "azure_ai/claude-sonnet-5": { "deprecation_date": "2027-06-30", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "supports_mid_conversation_system": true, "cache_creation_input_token_cost": 0.0000025, "cache_creation_input_token_cost_above_1hr": 0.000004, @@ -10301,7 +11297,6 @@ "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": { @@ -10328,13 +11323,12 @@ "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, + "cache_read_input_token_cost": 1e-7, "deprecation_date": "2027-09-29", "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": { @@ -10361,94 +11355,102 @@ "source": "https://management.azure.com/subscriptions/c873328e-b572-4770-8dff-aaeb6f1f0e79/providers/Microsoft.CognitiveServices/locations/eastus2/models?api-version=2024-10-01" }, "azure_ai/cohere-command-a": { + "deprecation_date": "2027-02-15", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "coherelabs-command-a-plus-05-2026-fp81", "input_cost_per_token": 0.0000025, "litellm_provider": "azure_ai", "max_input_tokens": 131072, "max_output_tokens": 8182, - "max_tokens": 8182, "mode": "chat", "output_cost_per_token": 0.00001, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true }, "azure_ai/deepseek-r1": { "deprecation_date": "2026-08-13", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/deepseek-v4-pro", "input_cost_per_token": 0.00000135, "output_cost_per_token": 0.0000054, "litellm_provider": "azure_ai", "mode": "chat", - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" - }, - "azure_ai/deepseek-v3": { - "deprecation_date": "2025-08-31", - "input_cost_per_token": 0.00000114, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 0.00000456, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_tool_choice": true + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_pdf_input": false }, "azure_ai/deepseek-v3-0324": { "deprecation_date": "2026-07-13", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/deepseek-v4-flash", "input_cost_per_token": 0.00000114, "output_cost_per_token": 0.00000456, "litellm_provider": "azure_ai", "mode": "chat", - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_pdf_input": false }, "azure_ai/deepseek-v3.1": { "deprecation_date": "2026-07-13", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/deepseek-v4-flash", "input_cost_per_token": 0.00000123, "output_cost_per_token": 0.00000494, "litellm_provider": "azure_ai", "mode": "chat", - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_pdf_input": false }, "azure_ai/deepseek-v3.2": { + "deprecation_date": "2027-11-01", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/deepseek-v4.1-flash", "input_cost_per_token": 5.8e-7, "litellm_provider": "azure_ai", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000168, "source": "https://learn.microsoft.com/en-us/azure/foundry/foundry-models/concepts/models-sold-directly-by-azure", "supports_assistant_prefill": true, "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true }, "azure_ai/deepseek-v3.2-speciale": { + "deprecation_date": "2027-11-01", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/deepseek-v4-pro", "input_cost_per_token": 5.8e-7, "litellm_provider": "azure_ai", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000168, "source": "https://learn.microsoft.com/en-us/azure/foundry/foundry-models/concepts/models-sold-directly-by-azure", "supports_assistant_prefill": true, "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true }, "azure_ai/deepseek-v4-flash": { "deprecation_date": "2028-02-20", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/DeepSeek-V4-Flash-0731", "input_cost_per_token": 1.9e-7, "litellm_provider": "azure_ai", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 5.1e-7, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_reasoning": true, "supports_tool_choice": true, "cache_read_input_token_cost": 2.8e-8, @@ -10456,15 +11458,16 @@ }, "azure_ai/deepseek-v4-pro": { "deprecation_date": "2028-02-20", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 0.00000174, "litellm_provider": "azure_ai", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 0.00000348, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_reasoning": true, "supports_tool_choice": true, "cache_read_input_token_cost": 1.45e-7, @@ -10476,18 +11479,21 @@ "litellm_provider": "azure_ai", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 0.0000012, "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, "deprecation_date": "2026-12-15", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "source": "https://techcommunity.microsoft.com/blog/azure-ai-foundry-blog/deepseek-v4-1-flash-is-coming-to-microsoft-foundry/4556431" }, "azure_ai/gpt-5.4": { "deprecation_date": "2027-09-02", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/gpt-5.5", "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, @@ -10499,7 +11505,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_above_272k_tokens": 0.0000225, @@ -10536,6 +11541,8 @@ }, "azure_ai/gpt-5.4-2026-03-05": { "deprecation_date": "2027-09-02", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/gpt-5.5", "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, @@ -10547,7 +11554,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_above_272k_tokens": 0.0000225, @@ -10584,6 +11590,7 @@ }, "azure_ai/gpt-5.4-mini": { "deprecation_date": "2027-09-21", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "cache_read_input_token_cost": 7.5e-8, "cache_read_input_token_cost_priority": 1.5e-7, "input_cost_per_token": 7.5e-7, @@ -10591,7 +11598,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000045, "output_cost_per_token_priority": 0.000009, @@ -10626,6 +11632,7 @@ }, "azure_ai/gpt-5.4-mini-2026-03-17": { "deprecation_date": "2027-09-21", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "cache_read_input_token_cost": 7.5e-8, "cache_read_input_token_cost_priority": 1.5e-7, "input_cost_per_token": 7.5e-7, @@ -10633,7 +11640,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000045, "output_cost_per_token_priority": 0.000009, @@ -10668,6 +11674,7 @@ }, "azure_ai/gpt-5.4-nano": { "deprecation_date": "2027-09-21", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "cache_read_input_token_cost": 2e-8, "cache_read_input_token_cost_priority": 4e-8, "input_cost_per_token": 2e-7, @@ -10675,7 +11682,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000125, "output_cost_per_token_priority": 0.0000025, @@ -10710,6 +11716,7 @@ }, "azure_ai/gpt-5.4-nano-2026-03-17": { "deprecation_date": "2027-09-21", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "cache_read_input_token_cost": 2e-8, "cache_read_input_token_cost_priority": 4e-8, "input_cost_per_token": 2e-7, @@ -10717,7 +11724,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000125, "output_cost_per_token_priority": 0.0000025, @@ -10752,6 +11758,7 @@ }, "azure_ai/gpt-5.5": { "deprecation_date": "2027-10-26", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "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, @@ -10763,7 +11770,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "output_cost_per_token_above_272k_tokens": 0.000045, @@ -10809,7 +11815,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "output_cost_per_token_above_272k_tokens": 0.000045, @@ -10845,6 +11850,7 @@ }, "azure_ai/gpt-5.5-2026-04-24": { "deprecation_date": "2027-10-26", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "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, @@ -10856,7 +11862,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "output_cost_per_token_above_272k_tokens": 0.000045, @@ -10900,7 +11905,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "output_cost_per_token_above_272k_tokens": 0.000075, @@ -10926,7 +11930,7 @@ "supports_max_reasoning_effort": false, "supports_minimal_reasoning_effort": false, "supports_native_streaming": true, - "supports_none_reasoning_effort": true, + "supports_none_reasoning_effort": false, "supports_parallel_function_calling": true, "supports_pdf_input": true, "supports_prompt_cache_breakpoint": true, @@ -10949,7 +11953,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "output_cost_per_token_above_272k_tokens": 7.5e-7, @@ -10998,7 +12001,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_above_272k_tokens": 0.000015, @@ -11047,7 +12049,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_above_272k_tokens": 0.000015, @@ -11086,14 +12087,62 @@ "supports_web_search": true, "supports_xhigh_reasoning_effort": true }, + "azure_ai/gpt-6.1-terra": { + "cache_creation_input_token_cost": 0.00000125, + "cache_creation_input_token_cost_above_272k_tokens": 0.0000025, + "cache_read_input_token_cost": 5e-8, + "cache_read_input_token_cost_above_272k_tokens": 1e-7, + "input_cost_per_token": 0.000001, + "input_cost_per_token_above_272k_tokens": 0.000002, + "litellm_provider": "azure_ai", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000005, + "output_cost_per_token_above_272k_tokens": 0.0000075, + "search_context_cost_per_query": { + "search_context_size_high": 0.014, + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014 + }, + "source": "https://techcommunity.microsoft.com/blog/azure-ai-foundry-blog/gpt-6-1-terra-now-generally-available-in-microsoft-foundry-build-agents-that-see/4567769", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_computer_use": true, + "supports_function_calling": true, + "supports_max_reasoning_effort": true, + "supports_minimal_reasoning_effort": false, + "supports_native_streaming": true, + "supports_none_reasoning_effort": false, + "supports_parallel_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_cache_breakpoint": 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 + }, "azure_ai/gpt-chat-latest": { "cache_read_input_token_cost": 5e-7, "deprecation_date": "2027-05-18", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 0.000005, "litellm_provider": "azure_ai", - "max_input_tokens": 272000, + "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "source": "https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/", @@ -11121,73 +12170,92 @@ "supports_web_search": true }, "azure_ai/gpt-oss-120b": { + "deprecation_date": "2027-09-15", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 1.5e-7, "output_cost_per_token": 6e-7, "litellm_provider": "azure_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, "supports_parallel_function_calling": true, + "supports_pdf_input": false, "supports_response_schema": true, "supports_tool_choice": true }, "azure_ai/grok-3": { "deprecation_date": "2026-05-01", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/grok-4", "input_cost_per_token": 0.000003, "output_cost_per_token": 0.000015, "litellm_provider": "azure_ai", "mode": "chat", - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_pdf_input": false }, "azure_ai/grok-3-mini": { "deprecation_date": "2026-05-01", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/grok-4-1-fast-reasoning", "input_cost_per_token": 2.5e-7, "output_cost_per_token": 0.00000127, "litellm_provider": "azure_ai", "mode": "chat", - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_pdf_input": false }, "azure_ai/grok-4": { + "deprecation_date": "2027-01-31", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/grok-4.3", "input_cost_per_token": 0.000003, "litellm_provider": "azure_ai", "max_input_tokens": 262000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000015, "source": "https://learn.microsoft.com/en-us/azure/foundry/foundry-models/concepts/models-sold-directly-by-azure", "supports_function_calling": true, + "supports_pdf_input": false, "supports_response_schema": true, "supports_tool_choice": true, "supports_web_search": true }, "azure_ai/grok-4-1-fast-non-reasoning": { + "deprecation_date": "2027-05-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 2e-7, "output_cost_per_token": 5e-7, "litellm_provider": "azure_ai", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_response_schema": true, "supports_tool_choice": true, "supports_web_search": true }, "azure_ai/grok-4-1-fast-reasoning": { + "deprecation_date": "2027-05-19", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 2e-7, "output_cost_per_token": 5e-7, "litellm_provider": "azure_ai", + "token_count_framing": 149, + "token_count_tool_framing": 302, + "token_count_responses_framing": 145, + "token_count_responses_tool_framing": 100, "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -11196,15 +12264,16 @@ "azure_ai/grok-4-20-non-reasoning": { "cache_read_input_token_cost": 0.00000125, "deprecation_date": "2027-04-06", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 0.00000125, "litellm_provider": "azure_ai", "max_input_tokens": 262000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -11214,15 +12283,16 @@ "azure_ai/grok-4-20-reasoning": { "cache_read_input_token_cost": 0.00000125, "deprecation_date": "2027-04-06", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 0.00000125, "litellm_provider": "azure_ai", "max_input_tokens": 262000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -11232,19 +12302,25 @@ }, "azure_ai/grok-4-fast-non-reasoning": { "deprecation_date": "2026-05-01", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/grok-4-1-fast-non-reasoning", "input_cost_per_token": 2e-7, "output_cost_per_token": 5e-7, "litellm_provider": "azure_ai", "mode": "chat", - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_pdf_input": false }, "azure_ai/grok-4-fast-reasoning": { "deprecation_date": "2026-05-01", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/grok-4-1-fast-reasoning", "input_cost_per_token": 2e-7, "output_cost_per_token": 5e-7, "litellm_provider": "azure_ai", "mode": "chat", - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_pdf_input": false }, "azure_ai/grok-4.3": { "cache_read_input_token_cost": 2e-7, @@ -11254,12 +12330,12 @@ "litellm_provider": "azure_ai", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_above_200k_tokens": 0.000005, "source": "https://learn.microsoft.com/en-us/azure/foundry/foundry-models/concepts/models-sold-directly-by-azure", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, @@ -11275,12 +12351,12 @@ "litellm_provider": "azure_ai", "max_input_tokens": 200000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000006, "output_cost_per_token_above_200k_tokens": 0.000012, "source": "https://azure.microsoft.com/en-us/pricing/details/ai-foundry-models/grok/", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, @@ -11297,12 +12373,12 @@ "litellm_provider": "azure_ai", "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/developers/models/grok-4.7", "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, @@ -11311,49 +12387,41 @@ "supports_web_search": true }, "azure_ai/grok-code-fast-1": { + "deprecation_date": "2027-01-31", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 2e-7, "litellm_provider": "azure_ai", "max_input_tokens": 256000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://learn.microsoft.com/en-us/azure/foundry/foundry-models/concepts/models-sold-directly-by-azure", "supports_function_calling": true, + "supports_pdf_input": false, "supports_response_schema": true, "supports_tool_choice": true, "supports_web_search": true }, "azure_ai/jais-30b-chat": { "deprecation_date": "2026-01-30", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", "input_cost_per_token": 0.0032, "litellm_provider": "azure_ai", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00971, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models" - }, - "azure_ai/jamba-instruct": { - "deprecation_date": "2025-03-01", - "input_cost_per_token": 5e-7, - "litellm_provider": "azure_ai", - "max_input_tokens": 70000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 7e-7, "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_tool_choice": true + "supports_pdf_input": false }, "azure_ai/kimi-k2-thinking": { "deprecation_date": "2026-03-29", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", + "successor_model": "azure_ai/kimi-k2.5", "input_cost_per_token": 6e-7, "litellm_provider": "azure_ai", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://azure.microsoft.com/en-us/pricing/details/ai-foundry-models/kimi/", @@ -11364,6 +12432,7 @@ "text" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": false, "supports_reasoning": true, "supports_tool_choice": true, @@ -11372,15 +12441,16 @@ }, "azure_ai/kimi-k2.5": { "deprecation_date": "2027-01-26", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 6e-7, "litellm_provider": "azure_ai", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000003, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true, "supports_video_input": true, "supports_vision": true, @@ -11389,11 +12459,11 @@ }, "azure_ai/kimi-k2.6": { "deprecation_date": "2027-04-16", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 9.5e-7, "litellm_provider": "azure_ai", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -11405,6 +12475,7 @@ "text" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_reasoning": true, "supports_tool_choice": true, "supports_vision": true, @@ -11414,11 +12485,11 @@ "azure_ai/kimi-k2.7-code": { "cache_read_input_token_cost": 1.9e-7, "deprecation_date": "2027-04-16", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 9.5e-7, "litellm_provider": "azure_ai", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -11430,6 +12501,7 @@ "text" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, @@ -11437,41 +12509,17 @@ }, "azure_ai/ministral-3b": { "deprecation_date": "2026-12-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "ministral-ministral-4b-instruct", "input_cost_per_token": 4e-8, "litellm_provider": "azure_ai", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 4e-8, "source": "https://marketplace.microsoft.com/en/marketplace/apps/000-000.ministral-3b-2410-offer?tab=Overview", "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure_ai/mistral-large": { - "deprecation_date": "2025-04-15", - "input_cost_per_token": 0.000004, - "litellm_provider": "azure_ai", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 0.000012, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_function_calling": true, - "supports_tool_choice": true - }, - "azure_ai/mistral-large-2407": { - "deprecation_date": "2025-05-13", - "input_cost_per_token": 0.000002, - "litellm_provider": "azure_ai", - "max_input_tokens": 128000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.000006, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true }, "azure_ai/mistral-large-3": { @@ -11479,11 +12527,11 @@ "litellm_provider": "azure_ai", "max_input_tokens": 256000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true, "supports_vision": true }, @@ -11492,24 +12540,26 @@ "litellm_provider": "azure_ai", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://marketplace.microsoft.com/en/marketplace/apps/000-000.mistral-ai-large-2407-offer?tab=Overview", "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true }, "azure_ai/mistral-medium-2505": { "deprecation_date": "2026-12-09", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "azure_ai/mistral-medium-3-5", "input_cost_per_token": 4e-7, "litellm_provider": "azure_ai", "max_input_tokens": 131072, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000002, "supports_assistant_prefill": true, "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true }, "azure_ai/mistral-medium-3-5": { @@ -11517,7 +12567,6 @@ "litellm_provider": "azure_ai", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000075, "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", @@ -11528,84 +12577,79 @@ "supported_output_modalities": [ "text" ], + "supports_pdf_input": false, "supports_response_schema": true, "supports_vision": true }, "azure_ai/mistral-nemo": { "deprecation_date": "2026-01-30", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", + "successor_model": "azure_ai/mistral-small-2503", "input_cost_per_token": 1.5e-7, "litellm_provider": "azure_ai", "max_input_tokens": 131072, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", - "supports_function_calling": true - }, - "azure_ai/mistral-small": { - "deprecation_date": "2025-07-31", - "input_cost_per_token": 0.000001, - "litellm_provider": "azure_ai", - "max_input_tokens": 32000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat", - "output_cost_per_token": 0.000003, - "source": "https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models", "supports_function_calling": true, - "supports_tool_choice": true + "supports_pdf_input": false }, "azure_ai/mistral-small-2503": { - "deprecation_date": "2026-12-09", + "deprecation_date": "2027-02-15", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", + "successor_model": "mistralai-mistral-small-4-119b-2603", "input_cost_per_token": 1e-7, "litellm_provider": "azure_ai", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true, "supports_vision": true }, "azure_ai/model-router": { "deprecation_date": "2027-05-20", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 1.4e-7, "output_cost_per_token": 0, "litellm_provider": "azure_ai", "max_input_tokens": 200000, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://azure.microsoft.com/en-us/pricing/details/ai-foundry-models/aoai/", "comment": "Catalog-name twin of azure_ai/model_router: the flat $0.14 per M input tokens is the router's own fee, the routed model is priced on top of it" }, "azure_ai/model_router": { "deprecation_date": "2027-05-20", + "deprecation_source": "https://learn.microsoft.com/en-us/azure/foundry/concepts/model-lifecycle-retirement", "input_cost_per_token": 1.4e-7, "output_cost_per_token": 0, "litellm_provider": "azure_ai", "max_input_tokens": 200000, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://azure.microsoft.com/en-us/pricing/details/ai-foundry-models/aoai/", "comment": "Flat cost of $0.14 per M input tokens for Azure AI Foundry Model Router infrastructure. Use pattern: azure_ai/model_router/ where deployment-name is your Azure deployment (e.g., azure-model-router)" }, "baseten/MiniMaxAI/MiniMax-M2.5": { + "deprecation_date": "2026-10-16", "input_cost_per_token": 3e-7, "litellm_provider": "baseten", "mode": "chat", "output_cost_per_token": 0.0000012 }, "baseten/deepseek-ai/DeepSeek-V3-0324": { + "deprecation_date": "2026-10-16", "input_cost_per_token": 7.7e-7, "litellm_provider": "baseten", "mode": "chat", "output_cost_per_token": 7.7e-7 }, "baseten/deepseek-ai/DeepSeek-V3.1": { + "deprecation_date": "2026-10-16", "input_cost_per_token": 5e-7, "litellm_provider": "baseten", "mode": "chat", @@ -11617,7 +12661,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 2.6e-7, "source": "https://inference.baseten.co/v1/models", @@ -11629,12 +12672,12 @@ "supports_vision": false }, "baseten/deepseek-ai/DeepSeek-V4-Pro": { + "deprecation_date": "2026-10-16", "cache_read_input_token_cost": 1.45e-7, "input_cost_per_token": 0.00000174, "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.00000348, "source": "https://inference.baseten.co/v1/models", @@ -11651,7 +12694,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.00000396, "source": "https://inference.baseten.co/v1/models", @@ -11668,7 +12710,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://inference.baseten.co/v1/models", @@ -11685,7 +12726,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://inference.baseten.co/v1/models", @@ -11702,7 +12742,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000024, "source": "https://inference.baseten.co/v1/models", @@ -11719,7 +12758,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000024, "source": "https://inference.baseten.co/v1/models", @@ -11736,7 +12774,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.00000425, "source": "https://inference.baseten.co/v1/models", @@ -11749,30 +12786,33 @@ "supports_vision": true }, "baseten/moonshotai/Kimi-K2-Instruct-0905": { + "deprecation_date": "2026-10-16", "input_cost_per_token": 6e-7, "litellm_provider": "baseten", "mode": "chat", "output_cost_per_token": 0.0000025 }, "baseten/moonshotai/Kimi-K2-Thinking": { + "deprecation_date": "2026-10-16", "input_cost_per_token": 6e-7, "litellm_provider": "baseten", "mode": "chat", "output_cost_per_token": 0.0000025 }, "baseten/moonshotai/Kimi-K2.5": { + "deprecation_date": "2026-10-16", "input_cost_per_token": 6e-7, "litellm_provider": "baseten", "mode": "chat", "output_cost_per_token": 0.000003 }, "baseten/moonshotai/Kimi-K2.6": { + "deprecation_date": "2026-10-16", "cache_read_input_token_cost": 1.6e-7, "input_cost_per_token": 9.5e-7, "litellm_provider": "baseten", "max_input_tokens": 262000, "max_output_tokens": 262000, - "max_tokens": 262000, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://inference.baseten.co/v1/models", @@ -11784,12 +12824,12 @@ "supports_vision": true }, "baseten/moonshotai/Kimi-K2.7-Code": { + "deprecation_date": "2026-10-16", "cache_read_input_token_cost": 1.6e-7, "input_cost_per_token": 9.5e-7, "litellm_provider": "baseten", "max_input_tokens": 262000, "max_output_tokens": 262000, - "max_tokens": 262000, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://inference.baseten.co/v1/models", @@ -11806,7 +12846,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000015, "source": "https://inference.baseten.co/v1/models", @@ -11823,7 +12862,6 @@ "litellm_provider": "baseten", "max_input_tokens": 202800, "max_output_tokens": 202800, - "max_tokens": 202800, "mode": "chat", "output_cost_per_token": 0.0000024, "source": "https://inference.baseten.co/v1/models", @@ -11840,7 +12878,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://inference.baseten.co/v1/models", @@ -11852,6 +12889,7 @@ "supports_vision": true }, "baseten/nvidia/Nemotron-120B-A12B": { + "deprecation_date": "2026-10-16", "input_cost_per_token": 3e-7, "litellm_provider": "baseten", "mode": "chat", @@ -11863,7 +12901,6 @@ "litellm_provider": "baseten", "max_input_tokens": 128072, "max_output_tokens": 128072, - "max_tokens": 128072, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://inference.baseten.co/v1/models", @@ -11875,14 +12912,13 @@ "supports_vision": false }, "baseten/reflection/Beam-1.0": { - "cache_read_input_token_cost": 1.3e-7, - "input_cost_per_token": 0.0000013, + "cache_read_input_token_cost": 4e-8, + "input_cost_per_token": 4e-7, "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", - "output_cost_per_token": 0.0000043, + "output_cost_per_token": 0.0000012, "source": "https://inference.baseten.co/v1/models", "supports_function_calling": true, "supports_prompt_caching": true, @@ -11891,12 +12927,12 @@ "supports_tool_choice": true }, "baseten/thinkingmachines/inkling": { + "deprecation_date": "2026-10-16", "cache_read_input_token_cost": 1.7e-7, "input_cost_per_token": 0.000001, "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.00000405, "source": "https://inference.baseten.co/v1/models", @@ -11908,12 +12944,12 @@ "supports_vision": true }, "baseten/thinkingmachines/inkling-small": { + "deprecation_date": "2026-10-16", "cache_read_input_token_cost": 1e-7, "input_cost_per_token": 5e-7, "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://inference.baseten.co/v1/models", @@ -11925,18 +12961,19 @@ "supports_vision": true }, "baseten/zai-org/GLM-4.6": { + "deprecation_date": "2026-10-16", "input_cost_per_token": 6e-7, "litellm_provider": "baseten", "mode": "chat", "output_cost_per_token": 0.0000022 }, "baseten/zai-org/GLM-4.7": { + "deprecation_date": "2026-10-16", "cache_read_input_token_cost": 1.2e-7, "input_cost_per_token": 6e-7, "litellm_provider": "baseten", "max_input_tokens": 200000, "max_output_tokens": 200000, - "max_tokens": 200000, "mode": "chat", "output_cost_per_token": 0.0000022, "source": "https://inference.baseten.co/v1/models", @@ -11948,6 +12985,7 @@ "supports_vision": false }, "baseten/zai-org/GLM-5": { + "deprecation_date": "2026-10-16", "input_cost_per_token": 9.5e-7, "litellm_provider": "baseten", "mode": "chat", @@ -11959,7 +12997,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://inference.baseten.co/v1/models", @@ -11976,7 +13013,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000066, "source": "https://inference.baseten.co/v1/models", @@ -11993,7 +13029,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://inference.baseten.co/v1/models", @@ -12017,7 +13052,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000066, "source": "https://inference.baseten.co/v1/models", @@ -12041,7 +13075,6 @@ "litellm_provider": "baseten", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://inference.baseten.co/v1/models", @@ -12058,7 +13091,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "supports_tool_choice": true }, @@ -12068,7 +13100,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "supports_tool_choice": true }, @@ -12078,7 +13109,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "supports_tool_choice": true }, @@ -12088,7 +13118,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "supports_tool_choice": true }, @@ -12098,7 +13127,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "supports_tool_choice": true }, @@ -12108,7 +13136,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat" }, "bedrock/ap-northeast-1/1-month-commitment/anthropic.claude-v2:1": { @@ -12117,7 +13144,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "supports_tool_choice": true }, @@ -12127,7 +13153,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "supports_tool_choice": true }, @@ -12137,7 +13162,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat" }, "bedrock/ap-northeast-1/6-month-commitment/anthropic.claude-v2:1": { @@ -12146,7 +13170,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "supports_tool_choice": true }, @@ -12155,7 +13178,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.00000755, "supports_tool_choice": true @@ -12165,7 +13187,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000024, "supports_tool_choice": true @@ -12175,21 +13196,23 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000024, "supports_tool_choice": true }, "bedrock/ap-northeast-1/deepseek.v3.2": { "input_cost_per_token": 7.4e-7, + "input_cost_per_token_batches": 3.7e-7, "input_cost_per_token_flex": 3.7e-7, + "input_cost_per_token_priority": 0.000001295, "litellm_provider": "bedrock", - "max_input_tokens": 163840, + "max_input_tokens": 156000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.00000222, + "output_cost_per_token_batches": 0.00000111, "output_cost_per_token_flex": 0.00000111, + "output_cost_per_token_priority": 0.000003885, "supports_function_calling": true, "supports_reasoning": true, "supports_native_structured_output": true, @@ -12197,36 +13220,41 @@ "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.html" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.md" }, "bedrock/ap-northeast-1/minimax.minimax-m2.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 3.6e-7, + "input_cost_per_token_batches": 1.8e-7, "input_cost_per_token_flex": 1.8e-7, + "input_cost_per_token_priority": 6.3e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000144, + "output_cost_per_token_batches": 7.2e-7, "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000252, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/ap-northeast-1/minimax.minimax-m2.5": { "input_cost_per_token": 3.6e-7, + "input_cost_per_token_batches": 1.8e-7, "input_cost_per_token_flex": 1.8e-7, + "input_cost_per_token_priority": 6.3e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-5.html", + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_reasoning": true, "supports_system_messages": true, @@ -12235,16 +13263,58 @@ "supports_response_schema": true, "supports_vision": false, "output_cost_per_token": 0.00000144, - "output_cost_per_token_flex": 7.2e-7 + "output_cost_per_token_batches": 7.2e-7, + "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000252 + }, + "bedrock/ap-northeast-1/mistral.voxtral-mini-3b-2507": { + "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "input_cost_per_token": 5e-8, + "input_cost_per_token_batches": 3e-8, + "input_cost_per_token_flex": 3e-8, + "input_cost_per_token_priority": 9e-8, + "litellm_provider": "bedrock", + "max_input_tokens": 32768, + "max_output_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 5e-8, + "output_cost_per_token_batches": 3e-8, + "output_cost_per_token_flex": 3e-8, + "output_cost_per_token_priority": 9e-8, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/ap-northeast-1/index.json", + "supports_audio_input": true, + "supports_system_messages": true, + "supports_native_structured_output": true + }, + "bedrock/ap-northeast-1/mistral.voxtral-small-24b-2507": { + "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "input_cost_per_token": 1.2e-7, + "input_cost_per_token_batches": 6e-8, + "input_cost_per_token_flex": 6e-8, + "input_cost_per_token_priority": 2.1e-7, + "litellm_provider": "bedrock", + "max_input_tokens": 32768, + "max_output_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 3.6e-7, + "output_cost_per_token_batches": 1.8e-7, + "output_cost_per_token_flex": 1.8e-7, + "output_cost_per_token_priority": 6.3e-7, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/ap-northeast-1/index.json", + "supports_audio_input": true, + "supports_system_messages": true, + "supports_native_structured_output": true }, "bedrock/ap-northeast-1/moonshotai.kimi-k2-thinking": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-thinking.html", "input_cost_per_token": 7.3e-7, "input_cost_per_token_flex": 3.6e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.00000303, "output_cost_per_token_flex": 0.00000152, @@ -12254,21 +13324,24 @@ }, "bedrock/ap-northeast-1/moonshotai.kimi-k2.5": { "input_cost_per_token": 7.2e-7, + "input_cost_per_token_batches": 3.6e-7, "input_cost_per_token_flex": 3.6e-7, + "input_cost_per_token_priority": 0.00000126, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.0000036, + "output_cost_per_token_batches": 0.0000018, "output_cost_per_token_flex": 0.0000018, + "output_cost_per_token_priority": 0.0000063, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_audio_input": false, "supports_response_schema": true, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-5.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/ap-northeast-1/qwen.qwen3-coder-next": { "input_cost_per_token": 6e-7, @@ -12276,27 +13349,29 @@ "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00000144, "output_cost_per_token_flex": 7.2e-7, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html", + "supports_audio_input": false, "supports_function_calling": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_audio_input": false, - "supports_response_schema": true, - "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html" + "supports_vision": false }, "bedrock/ap-northeast-1/qwen.qwen3-next-80b-a3b": { "input_cost_per_token": 1.8e-7, + "input_cost_per_token_flex": 9e-8, + "input_cost_per_token_priority": 3.2e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000145, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-next-80b-a3b.html", + "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000254, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_native_structured_output": true, "supports_system_messages": true, @@ -12306,14 +13381,17 @@ }, "bedrock/ap-south-1/deepseek.v3.2": { "input_cost_per_token": 7.4e-7, + "input_cost_per_token_batches": 3.7e-7, "input_cost_per_token_flex": 3.7e-7, + "input_cost_per_token_priority": 0.000001295, "litellm_provider": "bedrock", - "max_input_tokens": 163840, + "max_input_tokens": 156000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.00000222, + "output_cost_per_token_batches": 0.00000111, "output_cost_per_token_flex": 0.00000111, + "output_cost_per_token_priority": 0.000003885, "supports_function_calling": true, "supports_reasoning": true, "supports_native_structured_output": true, @@ -12321,58 +13399,63 @@ "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.html" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.md" }, "bedrock/ap-south-1/meta.llama3-70b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md", "input_cost_per_token": 0.00000318, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000042, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md" }, "bedrock/ap-south-1/meta.llama3-8b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md", "input_cost_per_token": 3.6e-7, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md" }, "bedrock/ap-south-1/minimax.minimax-m2.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 3.6e-7, + "input_cost_per_token_batches": 1.8e-7, "input_cost_per_token_flex": 1.8e-7, + "input_cost_per_token_priority": 6.3e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000144, + "output_cost_per_token_batches": 7.2e-7, "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000252, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/ap-south-1/minimax.minimax-m2.5": { "input_cost_per_token": 3.6e-7, + "input_cost_per_token_batches": 1.8e-7, "input_cost_per_token_flex": 1.8e-7, + "input_cost_per_token_priority": 6.3e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-5.html", + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_reasoning": true, "supports_system_messages": true, @@ -12381,16 +13464,18 @@ "supports_response_schema": true, "supports_vision": false, "output_cost_per_token": 0.00000144, - "output_cost_per_token_flex": 7.2e-7 + "output_cost_per_token_batches": 7.2e-7, + "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000252 }, "bedrock/ap-south-1/moonshotai.kimi-k2-thinking": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-thinking.html", "input_cost_per_token": 7.1e-7, "input_cost_per_token_flex": 3.6e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.00000294, "output_cost_per_token_flex": 0.00000147, @@ -12400,21 +13485,24 @@ }, "bedrock/ap-south-1/moonshotai.kimi-k2.5": { "input_cost_per_token": 7.2e-7, + "input_cost_per_token_batches": 3.6e-7, "input_cost_per_token_flex": 3.6e-7, + "input_cost_per_token_priority": 0.00000126, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.0000036, + "output_cost_per_token_batches": 0.0000018, "output_cost_per_token_flex": 0.0000018, + "output_cost_per_token_priority": 0.0000063, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_audio_input": false, "supports_response_schema": true, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-5.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/ap-south-1/qwen.qwen3-coder-next": { "input_cost_per_token": 6e-7, @@ -12422,27 +13510,31 @@ "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00000144, "output_cost_per_token_flex": 7.2e-7, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html", + "supports_audio_input": false, "supports_function_calling": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_audio_input": false, - "supports_response_schema": true, - "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html" + "supports_vision": false }, "bedrock/ap-south-1/qwen.qwen3-next-80b-a3b": { "input_cost_per_token": 1.8e-7, + "input_cost_per_token_batches": 9e-8, + "input_cost_per_token_flex": 9e-8, + "input_cost_per_token_priority": 3.2e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000141, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-next-80b-a3b.html", + "output_cost_per_token_batches": 7.1e-7, + "output_cost_per_token_flex": 7.1e-7, + "output_cost_per_token_priority": 0.00000247, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_native_structured_output": true, "supports_system_messages": true, @@ -12452,13 +13544,14 @@ }, "bedrock/ap-southeast-2/minimax.minimax-m2.5": { "input_cost_per_token": 3.1e-7, + "input_cost_per_token_batches": 1.55e-7, "input_cost_per_token_flex": 1.55e-7, + "input_cost_per_token_priority": 5.425e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-5.html", + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_reasoning": true, "supports_system_messages": true, @@ -12467,14 +13560,55 @@ "supports_response_schema": true, "supports_vision": false, "output_cost_per_token": 0.00000124, - "output_cost_per_token_flex": 6.2e-7 + "output_cost_per_token_batches": 6.2e-7, + "output_cost_per_token_flex": 6.2e-7, + "output_cost_per_token_priority": 0.00000217 + }, + "bedrock/ap-southeast-2/mistral.voxtral-mini-3b-2507": { + "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "input_cost_per_token": 4.12e-8, + "input_cost_per_token_batches": 2.06e-8, + "input_cost_per_token_flex": 2.06e-8, + "input_cost_per_token_priority": 7.21e-8, + "litellm_provider": "bedrock", + "max_input_tokens": 32768, + "max_output_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 4.12e-8, + "output_cost_per_token_batches": 2.06e-8, + "output_cost_per_token_flex": 2.06e-8, + "output_cost_per_token_priority": 7.21e-8, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/ap-southeast-2/index.json", + "supports_audio_input": true, + "supports_system_messages": true, + "supports_native_structured_output": true + }, + "bedrock/ap-southeast-2/mistral.voxtral-small-24b-2507": { + "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "input_cost_per_token": 1.03e-7, + "input_cost_per_token_batches": 5.15e-8, + "input_cost_per_token_flex": 5.15e-8, + "input_cost_per_token_priority": 1.8025e-7, + "litellm_provider": "bedrock", + "max_input_tokens": 32768, + "max_output_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 3.09e-7, + "output_cost_per_token_batches": 1.545e-7, + "output_cost_per_token_flex": 1.545e-7, + "output_cost_per_token_priority": 5.4075e-7, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/ap-southeast-2/index.json", + "supports_audio_input": true, + "supports_system_messages": true, + "supports_native_structured_output": true }, "bedrock/ap-southeast-2/qwen.qwen3-next-80b-a3b": { "input_cost_per_token": 1.545e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000001236, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-next-80b-a3b.html", @@ -12489,39 +13623,38 @@ "input_cost_per_token": 7.4e-7, "input_cost_per_token_flex": 3.7e-7, "litellm_provider": "bedrock", - "max_input_tokens": 163840, + "max_input_tokens": 156000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.00000222, "output_cost_per_token_flex": 0.00000111, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.md", + "supports_audio_input": false, "supports_function_calling": true, - "supports_reasoning": true, "supports_native_structured_output": true, - "supports_tool_choice": true, - "supports_audio_input": false, + "supports_reasoning": true, "supports_response_schema": true, - "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.html" + "supports_tool_choice": true, + "supports_vision": false }, "bedrock/ap-southeast-3/minimax.minimax-m2.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html", "input_cost_per_token": 3.6e-7, "input_cost_per_token_flex": 1.8e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000144, "output_cost_per_token_flex": 7.2e-7, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html", + "supports_audio_input": false, "supports_function_calling": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_audio_input": false, - "supports_response_schema": true, - "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html" + "supports_vision": false }, "bedrock/ap-southeast-3/minimax.minimax-m2.5": { "input_cost_per_token": 3.6e-7, @@ -12529,18 +13662,17 @@ "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", + "output_cost_per_token": 0.00000144, + "output_cost_per_token_flex": 7.2e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-5.html", + "supports_audio_input": false, "supports_function_calling": true, "supports_reasoning": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_audio_input": false, - "supports_response_schema": true, - "supports_vision": false, - "output_cost_per_token": 0.00000144, - "output_cost_per_token_flex": 7.2e-7 + "supports_vision": false }, "bedrock/ap-southeast-3/moonshotai.kimi-k2.5": { "input_cost_per_token": 7.2e-7, @@ -12548,17 +13680,16 @@ "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.0000036, "output_cost_per_token_flex": 0.0000018, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-5.html", + "supports_audio_input": false, "supports_function_calling": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_vision": true, - "supports_audio_input": false, - "supports_response_schema": true, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-5.html" + "supports_vision": true }, "bedrock/ap-southeast-3/qwen.qwen3-coder-next": { "input_cost_per_token": 6e-7, @@ -12566,95 +13697,676 @@ "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00000144, "output_cost_per_token_flex": 7.2e-7, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html", + "supports_audio_input": false, "supports_function_calling": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_audio_input": false, - "supports_response_schema": true, - "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html" + "supports_vision": false }, "bedrock/ca-central-1/meta.llama3-70b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md", "input_cost_per_token": 0.00000305, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000403, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md" }, "bedrock/ca-central-1/meta.llama3-8b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md", "input_cost_per_token": 3.5e-7, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 6.9e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md" }, - "bedrock/eu-central-1/1-month-commitment/anthropic.claude-instant-v1": { - "cost_per_second": 0.01635, - "input_cost_per_second": 0.01635, + "bedrock/claude_platform/claude-fable-5": { + "supports_web_search": true, + "supports_anthropic_compaction": true, + "cache_creation_input_token_cost": 0.0000125, + "cache_creation_input_token_cost_above_1hr": 0.00002, + "cache_creation_input_token_cost_batches": 0.00000625, + "cache_read_input_token_cost": 0.000001, + "cache_read_input_token_cost_batches": 5e-7, + "input_cost_per_token": 0.00001, + "input_cost_per_token_batches": 0.000005, "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, + "max_input_tokens": 1000000, + "max_output_tokens": 128000, "mode": "chat", - "supports_tool_choice": true - }, - "bedrock/eu-central-1/1-month-commitment/anthropic.claude-v1": { - "cost_per_second": 0.0415, - "input_cost_per_second": 0.0415, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat" + "output_cost_per_token": 0.00005, + "output_cost_per_token_batches": 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, + "thinking_always_on": 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_max_reasoning_effort": true, + "provider_specific_entry": { + "us": 1.1 + }, + "supports_output_config": true, + "prompt_cache_min_tokens": 512, + "supports_native_structured_output": true, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing" }, - "bedrock/eu-central-1/1-month-commitment/anthropic.claude-v2:1": { - "cost_per_second": 0.0415, - "input_cost_per_second": 0.0415, + "bedrock/claude_platform/claude-fable-5-1": { + "supports_web_search": true, + "supports_anthropic_compaction": true, + "cache_creation_input_token_cost": 0.0000125, + "cache_creation_input_token_cost_above_1hr": 0.00002, + "cache_creation_input_token_cost_batches": 0.00000625, + "cache_read_input_token_cost": 2.5e-7, + "cache_read_input_token_cost_batches": 1.25e-7, + "input_cost_per_token": 0.00001, + "input_cost_per_token_batches": 0.000005, "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, + "max_input_tokens": 1000000, + "max_output_tokens": 128000, "mode": "chat", - "supports_tool_choice": true + "output_cost_per_token": 0.00005, + "output_cost_per_token_batches": 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, + "thinking_always_on": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_forced_tool_use": false, + "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": 512, + "supports_native_structured_output": true, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing" }, - "bedrock/eu-central-1/6-month-commitment/anthropic.claude-instant-v1": { - "cost_per_second": 0.009083, - "input_cost_per_second": 0.009083, + "bedrock/claude_platform/claude-haiku-4-5": { + "cache_creation_input_token_cost": 0.00000125, + "cache_creation_input_token_cost_above_1hr": 0.000002, + "cache_creation_input_token_cost_batches": 6.25e-7, + "cache_read_input_token_cost": 1e-7, + "cache_read_input_token_cost_batches": 5e-8, + "input_cost_per_token": 0.000001, + "input_cost_per_token_batches": 5e-7, "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, + "max_input_tokens": 200000, + "max_output_tokens": 64000, "mode": "chat", - "supports_tool_choice": true - }, - "bedrock/eu-central-1/6-month-commitment/anthropic.claude-v1": { - "cost_per_second": 0.02305, - "input_cost_per_second": 0.02305, - "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, - "mode": "chat" + "output_cost_per_token": 0.000005, + "output_cost_per_token_batches": 0.0000025, + "supports_assistant_prefill": true, + "supports_function_calling": true, + "supports_native_structured_output": true, + "supports_computer_use": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "prompt_cache_min_tokens": 4096, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing" }, - "bedrock/eu-central-1/6-month-commitment/anthropic.claude-v2:1": { - "cost_per_second": 0.02305, - "input_cost_per_second": 0.02305, + "bedrock/claude_platform/claude-haiku-5-5": { + "input_cost_per_token_above_100k_tokens_batches": 2.5e-7, + "output_cost_per_token_above_100k_tokens_batches": 0.00000125, + "cache_creation_input_token_cost_above_100k_tokens_batches": 3.125e-7, + "cache_read_input_token_cost_above_100k_tokens_batches": 2.5e-8, + "supports_anthropic_compaction": true, + "cache_creation_input_token_cost": 1.25e-7, + "cache_creation_input_token_cost_above_1hr": 2e-7, + "cache_creation_input_token_cost_batches": 6.25e-8, + "cache_read_input_token_cost": 1e-8, + "cache_read_input_token_cost_batches": 5e-9, + "input_cost_per_token": 1e-7, + "input_cost_per_token_batches": 5e-8, "litellm_provider": "bedrock", - "max_input_tokens": 100000, - "max_output_tokens": 8191, - "max_tokens": 8191, + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 5e-7, + "output_cost_per_token_batches": 2.5e-7, + "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_native_structured_output": 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, + "supports_forced_tool_use": true, + "thinking_always_on": false, + "prompt_cache_min_tokens": 512, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing", + "supports_web_search": true, + "input_cost_per_token_above_100k_tokens": 5e-7, + "output_cost_per_token_above_100k_tokens": 0.0000025, + "cache_creation_input_token_cost_above_100k_tokens": 6.25e-7, + "cache_creation_input_token_cost_above_1hr_above_100k_tokens": 0.000001, + "cache_read_input_token_cost_above_100k_tokens": 5e-8 + }, + "bedrock/claude_platform/claude-opus-4-5": { + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_1hr": 0.00001, + "cache_creation_input_token_cost_batches": 0.000003125, + "cache_read_input_token_cost": 5e-7, + "cache_read_input_token_cost_batches": 2.5e-7, + "input_cost_per_token": 0.000005, + "input_cost_per_token_batches": 0.0000025, + "litellm_provider": "bedrock", + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 0.000025, + "output_cost_per_token_batches": 0.0000125, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_assistant_prefill": true, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_thinking_cache_preservation": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_native_structured_output": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_output_config": true, + "prompt_cache_min_tokens": 4096, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing" + }, + "bedrock/claude_platform/claude-opus-4-6": { + "supports_web_search": true, + "supports_anthropic_compaction": true, + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_1hr": 0.00001, + "cache_creation_input_token_cost_batches": 0.000003125, + "cache_read_input_token_cost": 5e-7, + "cache_read_input_token_cost_batches": 2.5e-7, + "input_cost_per_token": 0.000005, + "input_cost_per_token_batches": 0.0000025, + "litellm_provider": "bedrock", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000025, + "output_cost_per_token_batches": 0.0000125, + "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_legacy_thinking": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_thinking_cache_preservation": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_native_structured_output": true, + "supports_tool_choice": true, + "supports_vision": true, + "provider_specific_entry": { + "us": 1.1 + }, + "supports_output_config": true, + "supports_max_reasoning_effort": true, + "prompt_cache_min_tokens": 4096, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing" + }, + "bedrock/claude_platform/claude-opus-4-7": { + "supports_web_search": true, + "supports_anthropic_compaction": true, + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_1hr": 0.00001, + "cache_creation_input_token_cost_batches": 0.000003125, + "cache_read_input_token_cost": 5e-7, + "cache_read_input_token_cost_batches": 2.5e-7, + "input_cost_per_token": 0.000005, + "input_cost_per_token_batches": 0.0000025, + "litellm_provider": "bedrock", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000025, + "output_cost_per_token_batches": 0.0000125, + "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_thinking_cache_preservation": 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 + }, + "supports_output_config": true, + "prompt_cache_min_tokens": 2048, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing" + }, + "bedrock/claude_platform/claude-opus-4-8": { + "supports_web_search": true, + "supports_anthropic_compaction": true, + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_1hr": 0.00001, + "cache_creation_input_token_cost_batches": 0.000003125, + "cache_read_input_token_cost": 5e-7, + "cache_read_input_token_cost_batches": 2.5e-7, + "input_cost_per_token": 0.000005, + "input_cost_per_token_batches": 0.0000025, + "litellm_provider": "bedrock", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000025, + "output_cost_per_token_batches": 0.0000125, + "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_thinking_cache_preservation": 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 + }, + "supports_output_config": true, + "prompt_cache_min_tokens": 1024, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing" + }, + "bedrock/claude_platform/claude-opus-5": { + "supports_web_search": true, + "supports_anthropic_compaction": true, + "cache_creation_input_token_cost": 0.00000625, + "cache_creation_input_token_cost_above_1hr": 0.00001, + "cache_creation_input_token_cost_batches": 0.000003125, + "cache_read_input_token_cost": 5e-7, + "cache_read_input_token_cost_batches": 2.5e-7, + "input_cost_per_token": 0.000005, + "input_cost_per_token_batches": 0.0000025, + "litellm_provider": "bedrock", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000025, + "output_cost_per_token_batches": 0.0000125, + "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_thinking_cache_preservation": 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 + }, + "supports_output_config": true, + "prompt_cache_min_tokens": 512, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing" + }, + "bedrock/claude_platform/claude-opus-5-5": { + "supports_web_search": true, + "supports_anthropic_compaction": true, + "cache_creation_input_token_cost": 0.000005, + "cache_creation_input_token_cost_above_1hr": 0.000008, + "cache_creation_input_token_cost_batches": 0.0000025, + "cache_read_input_token_cost": 2e-7, + "cache_read_input_token_cost_batches": 1e-7, + "input_cost_per_token": 0.000004, + "input_cost_per_token_batches": 0.000002, + "litellm_provider": "bedrock", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.00002, + "output_cost_per_token_batches": 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, + "thinking_always_on": true, + "supports_mid_conversation_system": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_forced_tool_use": false, + "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 + }, + "supports_output_config": true, + "prompt_cache_min_tokens": 512, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing" + }, + "bedrock/claude_platform/claude-sonnet-4-5": { + "cache_creation_input_token_cost": 0.00000375, + "cache_creation_input_token_cost_above_1hr": 0.000006, + "cache_read_input_token_cost": 3e-7, + "input_cost_per_token": 0.000003, + "cache_creation_input_token_cost_batches": 0.000001875, + "cache_read_input_token_cost_batches": 1.5e-7, + "deprecation_date": "2026-11-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "successor_model": "bedrock/claude_platform/claude-sonnet-5-5", + "input_cost_per_token_batches": 0.0000015, + "litellm_provider": "bedrock", + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 0.000015, + "output_cost_per_token_batches": 0.0000075, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_assistant_prefill": true, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_native_structured_output": true, + "supports_tool_choice": true, + "supports_vision": true, + "prompt_cache_min_tokens": 1024, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing" + }, + "bedrock/claude_platform/claude-sonnet-4-6": { + "supports_web_search": true, + "supports_anthropic_compaction": true, + "cache_creation_input_token_cost": 0.00000375, + "cache_creation_input_token_cost_above_1hr": 0.000006, + "cache_creation_input_token_cost_batches": 0.000001875, + "cache_read_input_token_cost": 3e-7, + "cache_read_input_token_cost_batches": 1.5e-7, + "input_cost_per_token": 0.000003, + "input_cost_per_token_batches": 0.0000015, + "litellm_provider": "bedrock", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000015, + "output_cost_per_token_batches": 0.0000075, + "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_legacy_thinking": true, + "supports_assistant_prefill": false, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_thinking_cache_preservation": 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, + "prompt_cache_min_tokens": 1024, + "provider_specific_entry": { + "us": 1.1 + }, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing" + }, + "bedrock/claude_platform/claude-sonnet-5": { + "supports_web_search": true, + "supports_anthropic_compaction": true, + "cache_creation_input_token_cost": 0.0000025, + "cache_creation_input_token_cost_above_1hr": 0.000004, + "cache_creation_input_token_cost_batches": 0.00000125, + "cache_read_input_token_cost": 2e-7, + "cache_read_input_token_cost_batches": 1e-7, + "input_cost_per_token": 0.000002, + "input_cost_per_token_batches": 0.000001, + "litellm_provider": "bedrock", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.00001, + "output_cost_per_token_batches": 0.000005, + "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_native_structured_output": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_thinking_cache_preservation": 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, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing" + }, + "bedrock/claude_platform/claude-sonnet-5-5": { + "supports_anthropic_compaction": true, + "cache_creation_input_token_cost": 0.0000025, + "cache_creation_input_token_cost_above_1hr": 0.000004, + "cache_creation_input_token_cost_batches": 0.00000125, + "cache_read_input_token_cost": 1e-7, + "cache_read_input_token_cost_batches": 5e-8, + "input_cost_per_token": 0.000002, + "input_cost_per_token_batches": 0.000001, + "litellm_provider": "bedrock", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.00001, + "output_cost_per_token_batches": 0.000005, + "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_native_structured_output": 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, + "supports_forced_tool_use": false, + "thinking_always_on": true, + "prompt_cache_min_tokens": 512, + "source": "https://platform.claude.com/docs/en/about-claude/pricing#claude-platform-on-aws-pricing", + "supports_web_search": true + }, + "bedrock/eu-central-1/1-month-commitment/anthropic.claude-instant-v1": { + "cost_per_second": 0.01635, + "input_cost_per_second": 0.01635, + "litellm_provider": "bedrock", + "max_input_tokens": 100000, + "max_output_tokens": 8191, + "mode": "chat", + "supports_tool_choice": true + }, + "bedrock/eu-central-1/1-month-commitment/anthropic.claude-v1": { + "cost_per_second": 0.0415, + "input_cost_per_second": 0.0415, + "litellm_provider": "bedrock", + "max_input_tokens": 100000, + "max_output_tokens": 8191, + "mode": "chat" + }, + "bedrock/eu-central-1/1-month-commitment/anthropic.claude-v2:1": { + "cost_per_second": 0.0415, + "input_cost_per_second": 0.0415, + "litellm_provider": "bedrock", + "max_input_tokens": 100000, + "max_output_tokens": 8191, + "mode": "chat", + "supports_tool_choice": true + }, + "bedrock/eu-central-1/6-month-commitment/anthropic.claude-instant-v1": { + "cost_per_second": 0.009083, + "input_cost_per_second": 0.009083, + "litellm_provider": "bedrock", + "max_input_tokens": 100000, + "max_output_tokens": 8191, + "mode": "chat", + "supports_tool_choice": true + }, + "bedrock/eu-central-1/6-month-commitment/anthropic.claude-v1": { + "cost_per_second": 0.02305, + "input_cost_per_second": 0.02305, + "litellm_provider": "bedrock", + "max_input_tokens": 100000, + "max_output_tokens": 8191, + "mode": "chat" + }, + "bedrock/eu-central-1/6-month-commitment/anthropic.claude-v2:1": { + "cost_per_second": 0.02305, + "input_cost_per_second": 0.02305, + "litellm_provider": "bedrock", + "max_input_tokens": 100000, + "max_output_tokens": 8191, "mode": "chat", "supports_tool_choice": true }, @@ -12663,7 +14375,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.00000838, "supports_tool_choice": true @@ -12673,7 +14384,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000024 }, @@ -12682,39 +14392,43 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000024, "supports_tool_choice": true }, "bedrock/eu-central-1/minimax.minimax-m2.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 3.6e-7, + "input_cost_per_token_batches": 1.8e-7, "input_cost_per_token_flex": 1.8e-7, + "input_cost_per_token_priority": 6.3e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000144, + "output_cost_per_token_batches": 7.2e-7, "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000252, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/eu-central-1/minimax.minimax-m2.5": { "input_cost_per_token": 3.6e-7, + "input_cost_per_token_batches": 1.8e-7, "input_cost_per_token_flex": 1.8e-7, + "input_cost_per_token_priority": 6.3e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-5.html", + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_reasoning": true, "supports_system_messages": true, @@ -12723,7 +14437,9 @@ "supports_response_schema": true, "supports_vision": false, "output_cost_per_token": 0.00000144, - "output_cost_per_token_flex": 7.2e-7 + "output_cost_per_token_batches": 7.2e-7, + "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000252 }, "bedrock/eu-central-1/qwen.qwen3-coder-next": { "input_cost_per_token": 6e-7, @@ -12731,28 +14447,30 @@ "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00000144, "output_cost_per_token_flex": 7.2e-7, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html", + "supports_audio_input": false, "supports_function_calling": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_audio_input": false, - "supports_response_schema": true, - "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html" + "supports_vision": false }, "bedrock/eu-north-1/deepseek.v3.2": { "input_cost_per_token": 7.4e-7, + "input_cost_per_token_batches": 3.7e-7, "input_cost_per_token_flex": 3.7e-7, + "input_cost_per_token_priority": 0.000001295, "litellm_provider": "bedrock", - "max_input_tokens": 163840, + "max_input_tokens": 156000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.00000222, + "output_cost_per_token_batches": 0.00000111, "output_cost_per_token_flex": 0.00000111, + "output_cost_per_token_priority": 0.000003885, "supports_function_calling": true, "supports_reasoning": true, "supports_native_structured_output": true, @@ -12760,36 +14478,41 @@ "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.html" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.md" }, "bedrock/eu-north-1/minimax.minimax-m2.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 3.6e-7, + "input_cost_per_token_batches": 1.8e-7, "input_cost_per_token_flex": 1.8e-7, + "input_cost_per_token_priority": 6.3e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000144, + "output_cost_per_token_batches": 7.2e-7, "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000252, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/eu-north-1/minimax.minimax-m2.5": { "input_cost_per_token": 3.6e-7, + "input_cost_per_token_batches": 1.8e-7, "input_cost_per_token_flex": 1.8e-7, + "input_cost_per_token_priority": 6.3e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-5.html", + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_reasoning": true, "supports_system_messages": true, @@ -12798,44 +14521,49 @@ "supports_response_schema": true, "supports_vision": false, "output_cost_per_token": 0.00000144, - "output_cost_per_token_flex": 7.2e-7 + "output_cost_per_token_batches": 7.2e-7, + "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000252 }, "bedrock/eu-north-1/moonshotai.kimi-k2.5": { "input_cost_per_token": 7.2e-7, + "input_cost_per_token_batches": 3.6e-7, "input_cost_per_token_flex": 3.6e-7, + "input_cost_per_token_priority": 0.00000126, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.0000036, + "output_cost_per_token_batches": 0.0000018, "output_cost_per_token_flex": 0.0000018, + "output_cost_per_token_priority": 0.0000063, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_audio_input": false, "supports_response_schema": true, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-5.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/eu-south-1/minimax.minimax-m2.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html", "input_cost_per_token": 3.6e-7, "input_cost_per_token_flex": 1.8e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000144, "output_cost_per_token_flex": 7.2e-7, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html", + "supports_audio_input": false, "supports_function_calling": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_audio_input": false, - "supports_response_schema": true, - "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html" + "supports_vision": false }, "bedrock/eu-south-1/minimax.minimax-m2.5": { "input_cost_per_token": 3.6e-7, @@ -12843,18 +14571,17 @@ "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", + "output_cost_per_token": 0.00000144, + "output_cost_per_token_flex": 7.2e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-5.html", + "supports_audio_input": false, "supports_function_calling": true, "supports_reasoning": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_audio_input": false, - "supports_response_schema": true, - "supports_vision": false, - "output_cost_per_token": 0.00000144, - "output_cost_per_token_flex": 7.2e-7 + "supports_vision": false }, "bedrock/eu-south-1/qwen.qwen3-coder-next": { "input_cost_per_token": 6e-7, @@ -12862,68 +14589,72 @@ "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00000144, "output_cost_per_token_flex": 7.2e-7, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html", + "supports_audio_input": false, "supports_function_calling": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_audio_input": false, - "supports_response_schema": true, - "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html" + "supports_vision": false }, "bedrock/eu-west-1/meta.llama3-70b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md", "input_cost_per_token": 0.00000286, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000378, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md" }, "bedrock/eu-west-1/meta.llama3-8b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md", "input_cost_per_token": 3.2e-7, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 6.5e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md" }, "bedrock/eu-west-1/minimax.minimax-m2.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 3.6e-7, + "input_cost_per_token_batches": 1.8e-7, "input_cost_per_token_flex": 1.8e-7, + "input_cost_per_token_priority": 6.3e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000144, + "output_cost_per_token_batches": 7.2e-7, "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000252, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/eu-west-1/minimax.minimax-m2.5": { "input_cost_per_token": 3.6e-7, + "input_cost_per_token_batches": 1.8e-7, "input_cost_per_token_flex": 1.8e-7, + "input_cost_per_token_priority": 6.3e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-5.html", + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_reasoning": true, "supports_system_messages": true, @@ -12932,7 +14663,9 @@ "supports_response_schema": true, "supports_vision": false, "output_cost_per_token": 0.00000144, - "output_cost_per_token_flex": 7.2e-7 + "output_cost_per_token_batches": 7.2e-7, + "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000252 }, "bedrock/eu-west-1/qwen.qwen3-coder-next": { "input_cost_per_token": 6e-7, @@ -12940,27 +14673,29 @@ "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00000144, "output_cost_per_token_flex": 7.2e-7, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html", + "supports_audio_input": false, "supports_function_calling": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_audio_input": false, - "supports_response_schema": true, - "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html" + "supports_vision": false }, "bedrock/eu-west-1/qwen.qwen3-next-80b-a3b": { "input_cost_per_token": 1.8e-7, + "input_cost_per_token_flex": 9e-8, + "input_cost_per_token_priority": 3.2e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000141, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-next-80b-a3b.html", + "output_cost_per_token_flex": 7.1e-7, + "output_cost_per_token_priority": 0.00000247, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_native_structured_output": true, "supports_system_messages": true, @@ -12970,54 +14705,59 @@ }, "bedrock/eu-west-2/meta.llama3-70b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md", "input_cost_per_token": 0.00000345, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000455, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md" }, "bedrock/eu-west-2/meta.llama3-8b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md", "input_cost_per_token": 3.9e-7, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 7.8e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md" }, "bedrock/eu-west-2/minimax.minimax-m2.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 4.7e-7, + "input_cost_per_token_batches": 2.35e-7, "input_cost_per_token_flex": 2.35e-7, + "input_cost_per_token_priority": 8.225e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000186, + "output_cost_per_token_batches": 9.3e-7, "output_cost_per_token_flex": 9.3e-7, + "output_cost_per_token_priority": 0.000003255, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/eu-west-2/minimax.minimax-m2.5": { "input_cost_per_token": 4.7e-7, + "input_cost_per_token_batches": 2.35e-7, "input_cost_per_token_flex": 2.35e-7, + "input_cost_per_token_priority": 8.225e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-5.html", + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_reasoning": true, "supports_system_messages": true, @@ -13026,19 +14766,64 @@ "supports_response_schema": true, "supports_vision": false, "output_cost_per_token": 0.00000186, - "output_cost_per_token_flex": 9.3e-7 + "output_cost_per_token_batches": 9.3e-7, + "output_cost_per_token_flex": 9.3e-7, + "output_cost_per_token_priority": 0.000003255 + }, + "bedrock/eu-west-2/mistral.voxtral-mini-3b-2507": { + "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "input_cost_per_token": 6e-8, + "input_cost_per_token_batches": 3e-8, + "input_cost_per_token_flex": 3e-8, + "input_cost_per_token_priority": 1.1e-7, + "litellm_provider": "bedrock", + "max_input_tokens": 32768, + "max_output_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 6e-8, + "output_cost_per_token_batches": 3e-8, + "output_cost_per_token_flex": 3e-8, + "output_cost_per_token_priority": 1.1e-7, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/eu-west-2/index.json", + "supports_audio_input": true, + "supports_system_messages": true, + "supports_native_structured_output": true + }, + "bedrock/eu-west-2/mistral.voxtral-small-24b-2507": { + "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "input_cost_per_token": 1.6e-7, + "input_cost_per_token_batches": 8e-8, + "input_cost_per_token_flex": 8e-8, + "input_cost_per_token_priority": 2.8e-7, + "litellm_provider": "bedrock", + "max_input_tokens": 32768, + "max_output_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 4.7e-7, + "output_cost_per_token_batches": 2.3e-7, + "output_cost_per_token_flex": 2.3e-7, + "output_cost_per_token_priority": 8.2e-7, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/eu-west-2/index.json", + "supports_audio_input": true, + "supports_system_messages": true, + "supports_native_structured_output": true }, "bedrock/eu-west-2/nvidia.nemotron-super-3-120b": { "input_cost_per_token": 2.3e-7, + "input_cost_per_token_batches": 1.15e-7, "input_cost_per_token_flex": 1.15e-7, + "input_cost_per_token_priority": 4.025e-7, "litellm_provider": "bedrock", "max_input_tokens": 256000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.00000101, + "output_cost_per_token_batches": 5.05e-7, "output_cost_per_token_flex": 5.05e-7, - "source": "https://aws.amazon.com/bedrock/pricing/", + "output_cost_per_token_priority": 0.0000017675, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_audio_input": false, "supports_function_calling": true, "supports_reasoning": true, @@ -13049,31 +14834,37 @@ }, "bedrock/eu-west-2/qwen.qwen3-coder-next": { "input_cost_per_token": 7.8e-7, + "input_cost_per_token_batches": 3.9e-7, "input_cost_per_token_flex": 3.9e-7, + "input_cost_per_token_priority": 0.000001365, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00000186, + "output_cost_per_token_batches": 9.3e-7, "output_cost_per_token_flex": 9.3e-7, + "output_cost_per_token_priority": 0.000003255, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/eu-west-2/qwen.qwen3-next-80b-a3b": { "input_cost_per_token": 2.3e-7, + "input_cost_per_token_flex": 1.2e-7, + "input_cost_per_token_priority": 4e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000186, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-next-80b-a3b.html", + "output_cost_per_token_flex": 9.3e-7, + "output_cost_per_token_priority": 0.00000326, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_native_structured_output": true, "supports_system_messages": true, @@ -13083,11 +14874,11 @@ }, "bedrock/eu-west-3/mistral.mistral-7b-instruct-v0:2": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mistral-7b-instruct.md", "input_cost_per_token": 2e-7, "litellm_provider": "bedrock", "max_input_tokens": 32000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2.6e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mistral-7b-instruct.md", @@ -13098,7 +14889,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 32000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.0000156, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mistral-large.md", @@ -13106,11 +14896,11 @@ }, "bedrock/eu-west-3/mistral.mixtral-8x7b-instruct-v0:1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mixtral-8x7b-instruct.md", "input_cost_per_token": 5.9e-7, "litellm_provider": "bedrock", "max_input_tokens": 32000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 9.1e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mixtral-8x7b-instruct.md", @@ -13121,7 +14911,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 4096, - "max_tokens": 4096, "metadata": { "notes": "Anthropic via Invoke route does not currently support pdf input." }, @@ -13136,12 +14925,12 @@ }, "bedrock/moonshotai.kimi-k2-thinking": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 6e-7, "input_cost_per_token_flex": 3e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_flex": 0.00000125, @@ -13155,7 +14944,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.000003, "output_cost_per_token_flex": 0.0000015, @@ -13171,14 +14959,17 @@ }, "bedrock/sa-east-1/deepseek.v3.2": { "input_cost_per_token": 7.4e-7, + "input_cost_per_token_batches": 3.7e-7, "input_cost_per_token_flex": 3.7e-7, + "input_cost_per_token_priority": 0.000001295, "litellm_provider": "bedrock", - "max_input_tokens": 163840, + "max_input_tokens": 156000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.00000222, + "output_cost_per_token_batches": 0.00000111, "output_cost_per_token_flex": 0.00000111, + "output_cost_per_token_priority": 0.000003885, "supports_function_calling": true, "supports_reasoning": true, "supports_native_structured_output": true, @@ -13186,58 +14977,63 @@ "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.html" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.md" }, "bedrock/sa-east-1/meta.llama3-70b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md", "input_cost_per_token": 0.00000445, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000588, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md" }, "bedrock/sa-east-1/meta.llama3-8b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md", "input_cost_per_token": 5e-7, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000101, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md" }, "bedrock/sa-east-1/minimax.minimax-m2.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 3.6e-7, + "input_cost_per_token_batches": 1.8e-7, "input_cost_per_token_flex": 1.8e-7, + "input_cost_per_token_priority": 6.3e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000144, + "output_cost_per_token_batches": 7.2e-7, "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000252, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/sa-east-1/minimax.minimax-m2.5": { "input_cost_per_token": 3.6e-7, + "input_cost_per_token_batches": 1.8e-7, "input_cost_per_token_flex": 1.8e-7, + "input_cost_per_token_priority": 6.3e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-5.html", + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_reasoning": true, "supports_system_messages": true, @@ -13246,16 +15042,18 @@ "supports_response_schema": true, "supports_vision": false, "output_cost_per_token": 0.00000144, - "output_cost_per_token_flex": 7.2e-7 + "output_cost_per_token_batches": 7.2e-7, + "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000252 }, "bedrock/sa-east-1/moonshotai.kimi-k2-thinking": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-thinking.html", "input_cost_per_token": 7.3e-7, "input_cost_per_token_flex": 3.6e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.00000303, "output_cost_per_token_flex": 0.00000152, @@ -13265,21 +15063,24 @@ }, "bedrock/sa-east-1/moonshotai.kimi-k2.5": { "input_cost_per_token": 7.2e-7, + "input_cost_per_token_batches": 3.6e-7, "input_cost_per_token_flex": 3.6e-7, + "input_cost_per_token_priority": 0.00000126, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.0000036, + "output_cost_per_token_batches": 0.0000018, "output_cost_per_token_flex": 0.0000018, + "output_cost_per_token_priority": 0.0000063, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_audio_input": false, "supports_response_schema": true, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-5.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/sa-east-1/qwen.qwen3-coder-next": { "input_cost_per_token": 6e-7, @@ -13287,27 +15088,29 @@ "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00000144, "output_cost_per_token_flex": 7.2e-7, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html", + "supports_audio_input": false, "supports_function_calling": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_audio_input": false, - "supports_response_schema": true, - "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html" + "supports_vision": false }, "bedrock/sa-east-1/qwen.qwen3-next-80b-a3b": { "input_cost_per_token": 1.8e-7, + "input_cost_per_token_flex": 9e-8, + "input_cost_per_token_priority": 3.2e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000145, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-next-80b-a3b.html", + "output_cost_per_token_flex": 7.2e-7, + "output_cost_per_token_priority": 0.00000254, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_native_structured_output": true, "supports_system_messages": true, @@ -13321,7 +15124,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "supports_tool_choice": true }, @@ -13331,7 +15133,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat" }, "bedrock/us-east-1/1-month-commitment/anthropic.claude-v2:1": { @@ -13340,7 +15141,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "supports_tool_choice": true }, @@ -13350,7 +15150,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "supports_tool_choice": true }, @@ -13360,7 +15159,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat" }, "bedrock/us-east-1/6-month-commitment/anthropic.claude-v2:1": { @@ -13369,7 +15167,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "supports_tool_choice": true }, @@ -13378,7 +15175,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.0000024, "supports_tool_choice": true @@ -13388,7 +15184,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000024, "supports_tool_choice": true @@ -13398,21 +15193,23 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000024, "supports_tool_choice": true }, "bedrock/us-east-1/deepseek.v3.2": { "input_cost_per_token": 6.2e-7, + "input_cost_per_token_batches": 3.1e-7, "input_cost_per_token_flex": 3.1e-7, + "input_cost_per_token_priority": 0.000001085, "litellm_provider": "bedrock", - "max_input_tokens": 163840, + "max_input_tokens": 156000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.00000185, + "output_cost_per_token_batches": 9.25e-7, "output_cost_per_token_flex": 9.25e-7, + "output_cost_per_token_priority": 0.0000032375, "supports_function_calling": true, "supports_reasoning": true, "supports_native_structured_output": true, @@ -13420,74 +15217,81 @@ "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.html" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.md" }, "bedrock/us-east-1/meta.llama3-70b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md", "input_cost_per_token": 0.00000265, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000035, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md" }, "bedrock/us-east-1/meta.llama3-8b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md", "input_cost_per_token": 3e-7, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 6e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md" }, "bedrock/us-east-1/minimax.minimax-m2.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "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.25e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000012, + "output_cost_per_token_batches": 6e-7, "output_cost_per_token_flex": 6e-7, + "output_cost_per_token_priority": 0.0000021, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/us-east-1/minimax.minimax-m2.5": { "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.25e-7, "output_cost_per_token": 0.0000012, "output_cost_per_token_flex": 6e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", + "output_cost_per_token_batches": 6e-7, + "output_cost_per_token_priority": 0.0000021, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-5.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/us-east-1/mistral.mistral-7b-instruct-v0:2": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mistral-7b-instruct.md", "input_cost_per_token": 1.5e-7, "litellm_provider": "bedrock", "max_input_tokens": 32000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mistral-7b-instruct.md", @@ -13498,7 +15302,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 32000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000012, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mistral-large.md", @@ -13506,11 +15309,11 @@ }, "bedrock/us-east-1/mistral.mixtral-8x7b-instruct-v0:1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mixtral-8x7b-instruct.md", "input_cost_per_token": 4.5e-7, "litellm_provider": "bedrock", "max_input_tokens": 32000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 7e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mixtral-8x7b-instruct.md", @@ -13518,12 +15321,12 @@ }, "bedrock/us-east-1/moonshotai.kimi-k2-thinking": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-thinking.html", "input_cost_per_token": 6e-7, "input_cost_per_token_flex": 3e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_flex": 0.00000125, @@ -13533,48 +15336,59 @@ }, "bedrock/us-east-1/moonshotai.kimi-k2.5": { "input_cost_per_token": 6e-7, + "input_cost_per_token_batches": 3e-7, "input_cost_per_token_flex": 3e-7, + "input_cost_per_token_priority": 0.00000105, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.000003, + "output_cost_per_token_batches": 0.0000015, "output_cost_per_token_flex": 0.0000015, + "output_cost_per_token_priority": 0.00000525, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_audio_input": false, "supports_response_schema": true, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-5.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/us-east-1/qwen.qwen3-coder-next": { "input_cost_per_token": 5e-7, + "input_cost_per_token_batches": 2.5e-7, "input_cost_per_token_flex": 2.5e-7, + "input_cost_per_token_priority": 8.75e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000012, + "output_cost_per_token_batches": 6e-7, "output_cost_per_token_flex": 6e-7, + "output_cost_per_token_priority": 0.0000021, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/us-east-1/zai.glm-5": { "input_cost_per_token": 0.000001, + "input_cost_per_token_batches": 5e-7, + "input_cost_per_token_flex": 5e-7, + "input_cost_per_token_priority": 0.00000175, "output_cost_per_token": 0.0000032, "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", + "output_cost_per_token_batches": 0.0000016, + "output_cost_per_token_flex": 0.0000016, + "output_cost_per_token_priority": 0.0000056, "supports_function_calling": true, "supports_reasoning": true, "supports_system_messages": true, @@ -13583,18 +15397,21 @@ "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/us-east-2/deepseek.v3.2": { "input_cost_per_token": 6.2e-7, + "input_cost_per_token_batches": 3.1e-7, "input_cost_per_token_flex": 3.1e-7, + "input_cost_per_token_priority": 0.000001085, "litellm_provider": "bedrock", - "max_input_tokens": 163840, + "max_input_tokens": 156000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.00000185, + "output_cost_per_token_batches": 9.25e-7, "output_cost_per_token_flex": 9.25e-7, + "output_cost_per_token_priority": 0.0000032375, "supports_function_calling": true, "supports_reasoning": true, "supports_native_structured_output": true, @@ -13602,36 +15419,41 @@ "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.html" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.md" }, "bedrock/us-east-2/minimax.minimax-m2.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "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.25e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000012, + "output_cost_per_token_batches": 6e-7, "output_cost_per_token_flex": 6e-7, + "output_cost_per_token_priority": 0.0000021, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/us-east-2/minimax.minimax-m2.5": { "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.25e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-5.html", + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_function_calling": true, "supports_reasoning": true, "supports_system_messages": true, @@ -13640,16 +15462,18 @@ "supports_response_schema": true, "supports_vision": false, "output_cost_per_token": 0.0000012, - "output_cost_per_token_flex": 6e-7 + "output_cost_per_token_batches": 6e-7, + "output_cost_per_token_flex": 6e-7, + "output_cost_per_token_priority": 0.0000021 }, "bedrock/us-east-2/moonshotai.kimi-k2-thinking": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-thinking.html", "input_cost_per_token": 6e-7, "input_cost_per_token_flex": 3e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_flex": 0.00000125, @@ -13659,21 +15483,24 @@ }, "bedrock/us-east-2/moonshotai.kimi-k2.5": { "input_cost_per_token": 6e-7, + "input_cost_per_token_batches": 3e-7, "input_cost_per_token_flex": 3e-7, + "input_cost_per_token_priority": 0.00000105, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.000003, + "output_cost_per_token_batches": 0.0000015, "output_cost_per_token_flex": 0.0000015, + "output_cost_per_token_priority": 0.00000525, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_audio_input": false, "supports_response_schema": true, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-5.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/us-east-2/qwen.qwen3-coder-next": { "input_cost_per_token": 5e-7, @@ -13681,17 +15508,16 @@ "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_flex": 6e-7, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html", + "supports_audio_input": false, "supports_function_calling": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_audio_input": false, - "supports_response_schema": true, - "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html" + "supports_vision": false }, "bedrock/us-gov-east-1/amazon.nova-pro-v1:0": { "cache_read_input_token_cost": 2.4e-7, @@ -13699,7 +15525,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 300000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 0.00000384, "supports_function_calling": true, @@ -13714,7 +15539,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 42000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.0000017 }, @@ -13723,7 +15547,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 42000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 4e-7 }, @@ -13732,7 +15555,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 42000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.0000015 }, @@ -13744,7 +15566,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00006, "supports_adaptive_thinking": true, @@ -13763,6 +15584,7 @@ "supports_vision": true, "supports_xhigh_reasoning_effort": true, "supports_native_structured_output": false, + "supports_bedrock_native_structured_output": false, "supports_max_reasoning_effort": true, "supports_output_config": true, "bedrock_output_config_effort_ceiling": "xhigh", @@ -13778,7 +15600,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock", @@ -13793,7 +15614,11 @@ "supports_native_structured_output": true, "supports_pdf_input": true, "supports_parallel_tool_use_config": true, - "prompt_cache_min_tokens": 4096 + "prompt_cache_min_tokens": 4096, + "token_count_model": { + "model": "anthropic.claude-haiku-4-5-20251001-v1:0", + "litellm_provider": "bedrock" + } }, "bedrock/us-gov-east-1/anthropic.claude-haiku-5-5": { "input_cost_per_token_above_100k_tokens": 6e-7, @@ -13811,7 +15636,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 6e-7, "supports_forced_tool_use": true, @@ -13848,7 +15672,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "prompt_cache_min_tokens": 1024, @@ -13881,7 +15704,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "prompt_cache_min_tokens": 512, @@ -13901,7 +15723,10 @@ "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, - "supports_xhigh_reasoning_effort": true + "supports_xhigh_reasoning_effort": true, + "input_cost_per_token_batches": 0.000003, + "output_cost_per_token_batches": 0.000015, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/us-gov-east-1/index.json" }, "bedrock/us-gov-east-1/anthropic.claude-opus-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -13913,7 +15738,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000024, "prompt_cache_min_tokens": 512, @@ -13924,6 +15748,7 @@ "supports_max_reasoning_effort": true, "supports_mid_conversation_system": true, "supports_native_structured_output": false, + "supports_bedrock_native_structured_output": false, "supports_output_config": true, "supports_parallel_tool_use_config": true, "supports_pdf_input": true, @@ -13942,12 +15767,14 @@ "cache_creation_input_token_cost": 0.0000045, "cache_creation_input_token_cost_above_1hr": 0.0000072, "cache_read_input_token_cost": 3.6e-7, + "deprecation_date": "2027-04-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-4-5.md", + "successor_model": "bedrock/us-gov-east-1/anthropic.claude-sonnet-5-5", "input_cost_per_token": 0.0000036, "litellm_provider": "bedrock", "supports_tool_search": true, "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, + "max_output_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000018, "supports_assistant_prefill": true, @@ -13961,7 +15788,12 @@ "supports_vision": true, "supports_native_structured_output": true, "supports_parallel_tool_use_config": true, - "prompt_cache_min_tokens": 1024 + "prompt_cache_min_tokens": 1024, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-4-5.md", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-5-20250929-v1:0", + "litellm_provider": "bedrock" + } }, "bedrock/us-gov-east-1/anthropic.claude-sonnet-5": { "bedrock_converse_supports_strict_tools": false, @@ -13974,7 +15806,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "prompt_cache_min_tokens": 1024, @@ -14008,7 +15839,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "supports_forced_tool_use": false, @@ -14038,12 +15868,13 @@ "cache_creation_input_token_cost": 0.0000045, "cache_creation_input_token_cost_above_1hr": 0.0000072, "cache_read_input_token_cost": 3.6e-7, + "deprecation_date": "2027-04-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-4-5.md", "input_cost_per_token": 0.0000036, "litellm_provider": "bedrock", "supports_tool_search": true, "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, + "max_output_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000018, "supports_assistant_prefill": true, @@ -14057,14 +15888,18 @@ "supports_vision": true, "supports_native_structured_output": true, "supports_parallel_tool_use_config": true, - "prompt_cache_min_tokens": 1024 + "prompt_cache_min_tokens": 1024, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-4-5.md", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-5-20250929-v1:0", + "litellm_provider": "bedrock" + } }, "bedrock/us-gov-east-1/meta.llama3-70b-instruct-v1:0": { "input_cost_per_token": 0.00000265, "litellm_provider": "bedrock", "max_input_tokens": 8000, "max_output_tokens": 2048, - "max_tokens": 2048, "mode": "chat", "output_cost_per_token": 0.0000035, "supports_pdf_input": true @@ -14074,18 +15909,17 @@ "litellm_provider": "bedrock", "max_input_tokens": 8000, "max_output_tokens": 2048, - "max_tokens": 2048, "mode": "chat", "output_cost_per_token": 0.00000265, "supports_pdf_input": true }, "bedrock/us-gov-east-1/nvidia.nemotron-nano-12b-v2": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-nvidia-nvidia-nemotron-nano-12b-v2-vl-bf16.html", "input_cost_per_token": 2.4e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-nvidia-nvidia-nemotron-nano-12b-v2-vl-bf16.html", @@ -14100,7 +15934,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 2.88e-7, "source": "https://aws.amazon.com/bedrock/pricing/", @@ -14114,11 +15947,11 @@ }, "bedrock/us-gov-east-1/nvidia.nemotron-nano-9b-v2": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-nvidia-nvidia-nemotron-nano-9b-v2.html", "input_cost_per_token": 7.2e-8, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 2.76e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-nvidia-nvidia-nemotron-nano-9b-v2.html", @@ -14133,7 +15966,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 256000, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 7.8e-7, "source": "https://aws.amazon.com/bedrock/pricing/", @@ -14146,11 +15978,11 @@ "supports_vision": false }, "bedrock/us-gov-east-1/openai.gpt-oss-120b-1:0": { + "supports_vision": false, "input_cost_per_token": 1.8e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-oss-120b.html", @@ -14165,11 +15997,11 @@ "supports_tool_choice": true }, "bedrock/us-gov-east-1/openai.gpt-oss-20b-1:0": { + "supports_vision": false, "input_cost_per_token": 8.4e-8, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 3.6e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-oss-20b.html", @@ -14189,7 +16021,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 300000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 2.88e-7, "supports_function_calling": true, @@ -14205,7 +16036,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 1.68e-7, "supports_function_calling": true, @@ -14219,7 +16049,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 300000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 0.00000384, "supports_function_calling": true, @@ -14234,7 +16063,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 42000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.0000016 }, @@ -14243,7 +16071,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 42000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 4e-7 }, @@ -14252,7 +16079,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 42000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.0000015 }, @@ -14264,7 +16090,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00006, "supports_adaptive_thinking": true, @@ -14283,11 +16108,17 @@ "supports_vision": true, "supports_xhigh_reasoning_effort": true, "supports_native_structured_output": false, + "supports_bedrock_native_structured_output": false, "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 + "prompt_cache_min_tokens": 512, + "token_count_model": { + "model": "anthropic.claude-fable-5-1", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "bedrock/us-gov-west-1/anthropic.claude-haiku-4-5-20251001-v1:0": { "cache_creation_input_token_cost": 0.0000015, @@ -14298,7 +16129,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock", @@ -14313,7 +16143,11 @@ "supports_native_structured_output": true, "supports_pdf_input": true, "supports_parallel_tool_use_config": true, - "prompt_cache_min_tokens": 4096 + "prompt_cache_min_tokens": 4096, + "token_count_model": { + "model": "anthropic.claude-haiku-4-5-20251001-v1:0", + "litellm_provider": "bedrock" + } }, "bedrock/us-gov-west-1/anthropic.claude-haiku-5-5": { "input_cost_per_token_above_100k_tokens": 6e-7, @@ -14331,7 +16165,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 6e-7, "supports_forced_tool_use": true, @@ -14355,7 +16188,12 @@ "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, - "supports_xhigh_reasoning_effort": true + "supports_xhigh_reasoning_effort": true, + "token_count_model": { + "model": "anthropic.claude-haiku-5-5", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "bedrock/us-gov-west-1/anthropic.claude-opus-4-8": { "bedrock_converse_supports_strict_tools": false, @@ -14368,7 +16206,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "prompt_cache_min_tokens": 1024, @@ -14389,7 +16226,12 @@ "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, - "supports_xhigh_reasoning_effort": true + "supports_xhigh_reasoning_effort": true, + "token_count_model": { + "model": "anthropic.claude-opus-4-8", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "bedrock/us-gov-west-1/anthropic.claude-opus-5": { "bedrock_converse_supports_strict_tools": false, @@ -14401,7 +16243,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "prompt_cache_min_tokens": 512, @@ -14421,7 +16262,15 @@ "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, - "supports_xhigh_reasoning_effort": true + "supports_xhigh_reasoning_effort": true, + "token_count_model": { + "model": "anthropic.claude-opus-5", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + }, + "input_cost_per_token_batches": 0.000003, + "output_cost_per_token_batches": 0.000015, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/us-gov-west-1/index.json" }, "bedrock/us-gov-west-1/anthropic.claude-opus-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -14433,7 +16282,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000024, "prompt_cache_min_tokens": 512, @@ -14444,6 +16292,7 @@ "supports_max_reasoning_effort": true, "supports_mid_conversation_system": true, "supports_native_structured_output": false, + "supports_bedrock_native_structured_output": false, "supports_output_config": true, "supports_parallel_tool_use_config": true, "supports_pdf_input": true, @@ -14456,18 +16305,25 @@ "supports_xhigh_reasoning_effort": true, "thinking_always_on": true, "supports_forced_tool_use": false, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "bedrock/us-gov-west-1/anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.0000045, "cache_creation_input_token_cost_above_1hr": 0.0000072, "cache_read_input_token_cost": 3.6e-7, + "deprecation_date": "2027-04-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-4-5.md", + "successor_model": "bedrock/us-gov-west-1/anthropic.claude-sonnet-5-5", "input_cost_per_token": 0.0000036, "litellm_provider": "bedrock", "supports_tool_search": true, "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, + "max_output_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000018, "supports_assistant_prefill": true, @@ -14481,7 +16337,12 @@ "supports_vision": true, "supports_native_structured_output": true, "supports_parallel_tool_use_config": true, - "prompt_cache_min_tokens": 1024 + "prompt_cache_min_tokens": 1024, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-4-5.md", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-5-20250929-v1:0", + "litellm_provider": "bedrock" + } }, "bedrock/us-gov-west-1/anthropic.claude-sonnet-5": { "bedrock_converse_supports_strict_tools": false, @@ -14494,7 +16355,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "prompt_cache_min_tokens": 1024, @@ -14515,7 +16375,12 @@ "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, - "supports_xhigh_reasoning_effort": true + "supports_xhigh_reasoning_effort": true, + "token_count_model": { + "model": "anthropic.claude-sonnet-5", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "bedrock/us-gov-west-1/anthropic.claude-sonnet-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -14528,7 +16393,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "supports_forced_tool_use": false, @@ -14552,18 +16416,24 @@ "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, - "supports_xhigh_reasoning_effort": true + "supports_xhigh_reasoning_effort": true, + "token_count_model": { + "model": "anthropic.claude-sonnet-5-5", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "bedrock/us-gov-west-1/claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.0000045, "cache_creation_input_token_cost_above_1hr": 0.0000072, "cache_read_input_token_cost": 3.6e-7, + "deprecation_date": "2027-04-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-4-5.md", "input_cost_per_token": 0.0000036, "litellm_provider": "bedrock", "supports_tool_search": true, "max_input_tokens": 200000, - "max_output_tokens": 8192, - "max_tokens": 8192, + "max_output_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000018, "supports_assistant_prefill": true, @@ -14577,35 +16447,44 @@ "supports_vision": true, "supports_native_structured_output": true, "supports_parallel_tool_use_config": true, - "prompt_cache_min_tokens": 1024 + "prompt_cache_min_tokens": 1024, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-4-5.md", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-5-20250929-v1:0", + "litellm_provider": "bedrock" + } }, "bedrock/us-gov-west-1/meta.llama3-70b-instruct-v1:0": { + "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md", "input_cost_per_token": 0.00000265, "litellm_provider": "bedrock", "max_input_tokens": 8000, - "max_output_tokens": 2048, - "max_tokens": 2048, + "max_output_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000035, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md", "supports_pdf_input": true }, "bedrock/us-gov-west-1/meta.llama3-8b-instruct-v1:0": { + "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md", "input_cost_per_token": 3e-7, "litellm_provider": "bedrock", "max_input_tokens": 8000, - "max_output_tokens": 2048, - "max_tokens": 2048, + "max_output_tokens": 8192, "mode": "chat", "output_cost_per_token": 6e-7, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md", "supports_pdf_input": true }, "bedrock/us-gov-west-1/nvidia.nemotron-nano-12b-v2": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-nvidia-nvidia-nemotron-nano-12b-v2-vl-bf16.html", "input_cost_per_token": 2.4e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-nvidia-nvidia-nemotron-nano-12b-v2-vl-bf16.html", @@ -14620,7 +16499,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 2.88e-7, "source": "https://aws.amazon.com/bedrock/pricing/", @@ -14634,11 +16512,11 @@ }, "bedrock/us-gov-west-1/nvidia.nemotron-nano-9b-v2": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-nvidia-nvidia-nemotron-nano-9b-v2.html", "input_cost_per_token": 7.2e-8, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 2.76e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-nvidia-nvidia-nemotron-nano-9b-v2.html", @@ -14653,7 +16531,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 256000, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 7.8e-7, "source": "https://aws.amazon.com/bedrock/pricing/", @@ -14666,11 +16543,11 @@ "supports_vision": false }, "bedrock/us-gov-west-1/openai.gpt-oss-120b-1:0": { + "supports_vision": false, "input_cost_per_token": 1.8e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-oss-120b.html", @@ -14685,11 +16562,11 @@ "supports_tool_choice": true }, "bedrock/us-gov-west-1/openai.gpt-oss-20b-1:0": { + "supports_vision": false, "input_cost_per_token": 8.4e-8, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 3.6e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-oss-20b.html", @@ -14705,22 +16582,22 @@ }, "bedrock/us-west-1/meta.llama3-70b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md", "input_cost_per_token": 0.00000265, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000035, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md" }, "bedrock/us-west-1/meta.llama3-8b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md", "input_cost_per_token": 3e-7, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 6e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md" @@ -14731,7 +16608,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "supports_tool_choice": true }, @@ -14741,7 +16617,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat" }, "bedrock/us-west-2/1-month-commitment/anthropic.claude-v2:1": { @@ -14750,7 +16625,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "supports_tool_choice": true }, @@ -14760,7 +16634,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "supports_tool_choice": true }, @@ -14770,7 +16643,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat" }, "bedrock/us-west-2/6-month-commitment/anthropic.claude-v2:1": { @@ -14779,7 +16651,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "supports_tool_choice": true }, @@ -14788,7 +16659,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.0000024, "supports_tool_choice": true @@ -14798,7 +16668,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000024, "supports_tool_choice": true @@ -14808,21 +16677,23 @@ "litellm_provider": "bedrock", "max_input_tokens": 100000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000024, "supports_tool_choice": true }, "bedrock/us-west-2/deepseek.v3.2": { "input_cost_per_token": 6.2e-7, + "input_cost_per_token_batches": 3.1e-7, "input_cost_per_token_flex": 3.1e-7, + "input_cost_per_token_priority": 0.000001085, "litellm_provider": "bedrock", - "max_input_tokens": 163840, + "max_input_tokens": 156000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.00000185, + "output_cost_per_token_batches": 9.25e-7, "output_cost_per_token_flex": 9.25e-7, + "output_cost_per_token_priority": 0.0000032375, "supports_function_calling": true, "supports_reasoning": true, "supports_native_structured_output": true, @@ -14830,52 +16701,59 @@ "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.html" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.md" }, "bedrock/us-west-2/minimax.minimax-m2.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "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.25e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000012, + "output_cost_per_token_batches": 6e-7, "output_cost_per_token_flex": 6e-7, + "output_cost_per_token_priority": 0.0000021, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-1.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/us-west-2/minimax.minimax-m2.5": { "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.25e-7, "output_cost_per_token": 0.0000012, "output_cost_per_token_flex": 6e-7, "litellm_provider": "bedrock", "max_input_tokens": 196000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", + "output_cost_per_token_batches": 6e-7, + "output_cost_per_token_priority": 0.0000021, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-minimax-minimax-m2-5.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/us-west-2/mistral.mistral-7b-instruct-v0:2": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mistral-7b-instruct.md", "input_cost_per_token": 1.5e-7, "litellm_provider": "bedrock", "max_input_tokens": 32000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mistral-7b-instruct.md", @@ -14886,7 +16764,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 32000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000012, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mistral-large.md", @@ -14894,11 +16771,11 @@ }, "bedrock/us-west-2/mistral.mixtral-8x7b-instruct-v0:1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mixtral-8x7b-instruct.md", "input_cost_per_token": 4.5e-7, "litellm_provider": "bedrock", "max_input_tokens": 32000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 7e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mixtral-8x7b-instruct.md", @@ -14906,12 +16783,12 @@ }, "bedrock/us-west-2/moonshotai.kimi-k2-thinking": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-thinking.html", "input_cost_per_token": 6e-7, "input_cost_per_token_flex": 3e-7, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_flex": 0.00000125, @@ -14921,21 +16798,24 @@ }, "bedrock/us-west-2/moonshotai.kimi-k2.5": { "input_cost_per_token": 6e-7, + "input_cost_per_token_batches": 3e-7, "input_cost_per_token_flex": 3e-7, + "input_cost_per_token_priority": 0.00000105, "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.000003, + "output_cost_per_token_batches": 0.0000015, "output_cost_per_token_flex": 0.0000015, + "output_cost_per_token_priority": 0.00000525, "supports_function_calling": true, "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_audio_input": false, "supports_response_schema": true, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k2-5.html" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/us-west-2/qwen.qwen3-coder-next": { "input_cost_per_token": 5e-7, @@ -14943,26 +16823,30 @@ "litellm_provider": "bedrock", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_flex": 6e-7, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html", + "supports_audio_input": false, "supports_function_calling": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_audio_input": false, - "supports_response_schema": true, - "supports_vision": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-next.html" + "supports_vision": false }, "bedrock/us-west-2/zai.glm-5": { "input_cost_per_token": 0.000001, + "input_cost_per_token_batches": 5e-7, + "input_cost_per_token_flex": 5e-7, + "input_cost_per_token_priority": 0.00000175, "output_cost_per_token": 0.0000032, "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", + "output_cost_per_token_batches": 0.0000016, + "output_cost_per_token_flex": 0.0000016, + "output_cost_per_token_priority": 0.0000056, "supports_function_calling": true, "supports_reasoning": true, "supports_system_messages": true, @@ -14971,7 +16855,7 @@ "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json" }, "bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0": { "cache_creation_input_token_cost": 0.000001, @@ -14980,7 +16864,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000004, "supports_assistant_prefill": true, @@ -15000,7 +16883,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000005, "source": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock", @@ -15017,7 +16899,11 @@ "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, "input_cost_per_token_batches": 5e-7, - "output_cost_per_token_batches": 0.0000025 + "output_cost_per_token_batches": 0.0000025, + "token_count_model": { + "model": "anthropic.claude-haiku-4-5-20251001-v1:0", + "litellm_provider": "bedrock" + } }, "bedrock_mantle/anthropic.claude-haiku-5-5": { "input_cost_per_token_above_100k_tokens": 5.5e-7, @@ -15034,7 +16920,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5.5e-7, "search_context_cost_per_query": { @@ -15077,7 +16962,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000022, "search_context_cost_per_query": { @@ -15103,7 +16987,12 @@ "prompt_cache_min_tokens": 512, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-5-5.html", "thinking_always_on": true, - "supports_forced_tool_use": false + "supports_forced_tool_use": false, + "token_count_model": { + "model": "anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "bedrock_mantle/anthropic.claude-sonnet-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -15115,7 +17004,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000011, "search_context_cost_per_query": { @@ -15148,6 +17036,7 @@ }, "bedrock_mantle/deepseek.v3.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 5.8e-7, "input_cost_per_token_batches": 2.9e-7, "input_cost_per_token_flex": 2.9e-7, @@ -15157,7 +17046,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 128000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token_batches": 8.4e-7, "output_cost_per_token_priority": 0.00000294, @@ -15178,7 +17066,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token_batches": 2e-7, "output_cost_per_token_priority": 7e-7, @@ -15204,7 +17091,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token_batches": 2e-7, "output_cost_per_token_priority": 7e-7, @@ -15230,7 +17116,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token_batches": 4e-8, "output_cost_per_token_priority": 1.4e-7, @@ -15248,6 +17133,7 @@ }, "bedrock_mantle/moonshotai.kimi-k2-thinking": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 6e-7, "input_cost_per_token_batches": 3e-7, "input_cost_per_token_flex": 3e-7, @@ -15257,7 +17143,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 256000, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token_batches": 0.00000125, "output_cost_per_token_priority": 0.00000438, @@ -15282,9 +17167,8 @@ "search_context_size_medium": 0.012 }, "litellm_provider": "bedrock_mantle", - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", "use_openai_responses_path": true, "supported_endpoints": [ @@ -15322,9 +17206,8 @@ "search_context_size_medium": 0.012 }, "litellm_provider": "bedrock_mantle", - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", "use_openai_responses_path": true, "supported_endpoints": [ @@ -15349,6 +17232,44 @@ "supports_web_search": true, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-55.html" }, + "bedrock_mantle/openai.gpt-5.6-cyber": { + "input_cost_per_token": 0.00001375, + "cache_creation_input_token_cost": 0.0000171875, + "cache_read_input_token_cost": 0.000001375, + "output_cost_per_token": 0.0000825, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "mode": "responses", + "search_context_cost_per_query": { + "search_context_size_high": 0.012, + "search_context_size_low": 0.012, + "search_context_size_medium": 0.012 + }, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-56-cyber.html", + "use_openai_responses_path": true, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_minimal_reasoning_effort": false, + "supports_prompt_caching": true, + "supports_prompt_cache_breakpoint": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_xhigh_reasoning_effort": true, + "supports_vision": true, + "supports_web_search": true + }, "bedrock_mantle/openai.gpt-5.6-luna": { "input_cost_per_token": 2.2e-7, "input_cost_per_token_above_272k_tokens": 4.4e-7, @@ -15364,9 +17285,8 @@ "search_context_size_medium": 0.012 }, "litellm_provider": "bedrock_mantle", - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", "use_openai_responses_path": true, "supported_endpoints": [ @@ -15408,9 +17328,8 @@ "search_context_size_medium": 0.012 }, "litellm_provider": "bedrock_mantle", - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", "use_openai_responses_path": true, "supported_endpoints": [ @@ -15452,9 +17371,8 @@ "search_context_size_medium": 0.012 }, "litellm_provider": "bedrock_mantle", - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", "use_openai_responses_path": true, "supported_endpoints": [ @@ -15497,12 +17415,16 @@ "output_cost_per_token": 0.000055, "output_cost_per_token_above_272k_tokens": 0.0000825, "litellm_provider": "bedrock_mantle", - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", "output_cost_per_token_above_272k_tokens_ultrafast": 0.000495, "output_cost_per_token_ultrafast": 0.00033, + "search_context_cost_per_query": { + "search_context_size_high": 0.012, + "search_context_size_low": 0.012, + "search_context_size_medium": 0.012 + }, "use_openai_responses_path": true, "supported_endpoints": [ "/v1/chat/completions", @@ -15526,7 +17448,8 @@ "supports_tool_choice": true, "supports_xhigh_reasoning_effort": true, "supports_vision": true, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-6-astra.html" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-6-astra.html", + "supports_web_search": true }, "bedrock_mantle/openai.gpt-6-luna": { "input_cost_per_token": 1.1e-7, @@ -15538,10 +17461,14 @@ "output_cost_per_token": 5.5e-7, "output_cost_per_token_above_272k_tokens": 8.25e-7, "litellm_provider": "bedrock_mantle", - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", + "search_context_cost_per_query": { + "search_context_size_high": 0.012, + "search_context_size_low": 0.012, + "search_context_size_medium": 0.012 + }, "use_openai_responses_path": true, "supported_endpoints": [ "/v1/chat/completions", @@ -15565,7 +17492,8 @@ "supports_tool_choice": true, "supports_xhigh_reasoning_effort": true, "supports_vision": true, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-cards-openai.html" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-cards-openai.html", + "supports_web_search": true }, "bedrock_mantle/openai.gpt-6-sol": { "input_cost_per_token": 0.0000022, @@ -15577,10 +17505,14 @@ "output_cost_per_token": 0.000011, "output_cost_per_token_above_272k_tokens": 0.0000165, "litellm_provider": "bedrock_mantle", - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", + "search_context_cost_per_query": { + "search_context_size_high": 0.012, + "search_context_size_low": 0.012, + "search_context_size_medium": 0.012 + }, "use_openai_responses_path": true, "supported_endpoints": [ "/v1/chat/completions", @@ -15604,7 +17536,8 @@ "supports_tool_choice": true, "supports_xhigh_reasoning_effort": true, "supports_vision": true, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-cards-openai.html" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-cards-openai.html", + "supports_web_search": true }, "bedrock_mantle/openai.gpt-6.1-sol": { "cache_creation_input_token_cost": 0.00000275, @@ -15622,12 +17555,16 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "responses", "output_cost_per_token": 0.000011, "output_cost_per_token_above_272k_tokens": 0.0000165, "output_cost_per_token_above_272k_tokens_ultrafast": 0.000099, "output_cost_per_token_ultrafast": 0.000066, + "search_context_cost_per_query": { + "search_context_size_high": 0.012, + "search_context_size_low": 0.012, + "search_context_size_medium": 0.012 + }, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-6-1-sol.html", "supported_endpoints": [ "/v1/chat/completions", @@ -15650,10 +17587,56 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, + "supports_web_search": true, + "supports_xhigh_reasoning_effort": true, + "use_openai_responses_path": true + }, + "bedrock_mantle/openai.gpt-6.1-terra": { + "cache_creation_input_token_cost": 0.000001375, + "cache_creation_input_token_cost_above_272k_tokens": 0.00000275, + "cache_read_input_token_cost": 5.5e-8, + "cache_read_input_token_cost_above_272k_tokens": 1.1e-7, + "input_cost_per_token": 0.0000011, + "input_cost_per_token_above_272k_tokens": 0.0000022, + "litellm_provider": "bedrock_mantle", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "mode": "responses", + "output_cost_per_token": 0.0000055, + "output_cost_per_token_above_272k_tokens": 0.00000825, + "search_context_cost_per_query": { + "search_context_size_high": 0.012, + "search_context_size_low": 0.012, + "search_context_size_medium": 0.012 + }, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-6-1-terra.html", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_max_reasoning_effort": true, + "supports_minimal_reasoning_effort": false, + "supports_none_reasoning_effort": true, + "supports_prompt_cache_breakpoint": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_web_search": true, "supports_xhigh_reasoning_effort": true, "use_openai_responses_path": true }, "bedrock_mantle/openai.gpt-oss-120b": { + "supports_vision": false, "input_cost_per_token": 1.5e-7, "input_cost_per_token_batches": 7.5e-8, "input_cost_per_token_flex": 7.5e-8, @@ -15663,7 +17646,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token_batches": 3e-7, "output_cost_per_token_priority": 0.00000105, @@ -15679,6 +17661,7 @@ "supports_tool_choice": true }, "bedrock_mantle/openai.gpt-oss-20b": { + "supports_vision": false, "input_cost_per_token": 7e-8, "input_cost_per_token_batches": 3.5e-8, "input_cost_per_token_flex": 3.5e-8, @@ -15688,7 +17671,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token_batches": 1.5e-7, "output_cost_per_token_priority": 5.25e-7, @@ -15704,6 +17686,7 @@ "supports_tool_choice": true }, "bedrock_mantle/openai.gpt-oss-safeguard-120b": { + "supports_vision": false, "input_cost_per_token": 1.5e-7, "input_cost_per_token_batches": 7e-8, "input_cost_per_token_flex": 7e-8, @@ -15713,7 +17696,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 131072, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token_batches": 3e-7, "output_cost_per_token_priority": 0.00000105, @@ -15727,6 +17709,7 @@ "supports_tool_choice": true }, "bedrock_mantle/openai.gpt-oss-safeguard-20b": { + "supports_vision": false, "input_cost_per_token": 7e-8, "input_cost_per_token_batches": 3e-8, "input_cost_per_token_flex": 3e-8, @@ -15736,7 +17719,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 131072, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token_batches": 1e-7, "output_cost_per_token_priority": 3.5e-7, @@ -15759,7 +17741,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 256000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token_batches": 4.4e-7, "output_cost_per_token_priority": 0.00000154, @@ -15781,7 +17762,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 32000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token_batches": 3e-7, "output_cost_per_token_priority": 0.00000105, @@ -15795,6 +17775,7 @@ }, "bedrock_mantle/qwen.qwen3-coder-30b-a3b-instruct": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 1.5e-7, "input_cost_per_token_batches": 7.5e-8, "input_cost_per_token_flex": 7.5e-8, @@ -15804,7 +17785,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 256000, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token_batches": 3e-7, "output_cost_per_token_priority": 0.00000105, @@ -15817,6 +17797,7 @@ }, "bedrock_mantle/qwen.qwen3-coder-480b-a35b-instruct": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-480b-a35b-instruct.html", "input_cost_per_token": 4.5e-7, "input_cost_per_token_batches": 2.25e-7, "input_cost_per_token_flex": 2.25e-7, @@ -15826,7 +17807,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 262144, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token_batches": 9e-7, "output_cost_per_token_priority": 0.00000315, @@ -15847,7 +17827,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 256000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token_batches": 6e-7, "output_cost_per_token_priority": 0.0000021, @@ -15869,7 +17848,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 256000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token_batches": 0.00000133, "output_cost_per_token_priority": 0.00000466, @@ -15882,12 +17860,12 @@ "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/us-east-1/index.json" }, "bedrock_mantle/us-gov-east-1/openai.gpt-oss-120b": { + "supports_vision": false, "input_cost_per_token": 1.8e-7, "output_cost_per_token": 7.2e-7, "litellm_provider": "bedrock_mantle", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-oss-120b.html", "supported_endpoints": [ @@ -15901,12 +17879,12 @@ "supports_tool_choice": true }, "bedrock_mantle/us-gov-east-1/openai.gpt-oss-20b": { + "supports_vision": false, "input_cost_per_token": 8.4e-8, "output_cost_per_token": 3.6e-7, "litellm_provider": "bedrock_mantle", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-oss-20b.html", "supported_endpoints": [ @@ -15927,7 +17905,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 500000, "max_output_tokens": 500000, - "max_tokens": 500000, "mode": "chat", "supported_endpoints": [ "/v1/chat/completions", @@ -15956,7 +17933,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 6e-7, "supports_forced_tool_use": true, @@ -15979,7 +17955,12 @@ "supports_tool_choice": true, "supports_vision": true, "supports_xhigh_reasoning_effort": true, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-haiku-5-5.html" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-haiku-5-5.html", + "token_count_model": { + "model": "anthropic.claude-haiku-5-5", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "bedrock_mantle/us-gov-west-1/anthropic.claude-opus-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -15991,7 +17972,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000024, "prompt_cache_min_tokens": 512, @@ -16014,7 +17994,12 @@ "supports_xhigh_reasoning_effort": true, "thinking_always_on": true, "supports_forced_tool_use": false, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-5-5.html" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-5-5.html", + "token_count_model": { + "model": "anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "bedrock_mantle/us-gov-west-1/anthropic.claude-sonnet-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -16027,7 +18012,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "supports_forced_tool_use": false, @@ -16050,7 +18034,12 @@ "supports_tool_choice": true, "supports_vision": true, "supports_xhigh_reasoning_effort": true, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-sonnet-5-5", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "bedrock_mantle/us-gov-west-1/google.gemma-4-26b-a4b": { "input_cost_per_token": 1.56e-7, @@ -16058,7 +18047,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "use_openai_responses_path": true, "supported_endpoints": [ @@ -16077,7 +18065,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "use_openai_responses_path": true, "supported_endpoints": [ @@ -16096,7 +18083,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "use_openai_responses_path": true, "supported_endpoints": [ @@ -16111,9 +18097,8 @@ }, "bedrock_mantle/us-gov-west-1/openai.gpt-5.6-luna": { "litellm_provider": "bedrock_mantle", - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", "use_openai_responses_path": true, "supported_endpoints": [ @@ -16143,13 +18128,18 @@ "cache_read_input_token_cost_above_272k_tokens": 5.4e-8, "output_cost_per_token": 0.00000162, "output_cost_per_token_above_272k_tokens": 0.00000243, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-56-luna.html" + "search_context_cost_per_query": { + "search_context_size_high": 0.0144, + "search_context_size_low": 0.0144, + "search_context_size_medium": 0.0144 + }, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-56-luna.html", + "supports_web_search": true }, "bedrock_mantle/us-gov-west-1/openai.gpt-5.6-terra": { "litellm_provider": "bedrock_mantle", - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", "use_openai_responses_path": true, "supported_endpoints": [ @@ -16179,15 +18169,21 @@ "cache_read_input_token_cost_above_272k_tokens": 5.4e-7, "output_cost_per_token": 0.0000162, "output_cost_per_token_above_272k_tokens": 0.0000243, - "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-56-terra.html" + "search_context_cost_per_query": { + "search_context_size_high": 0.0144, + "search_context_size_low": 0.0144, + "search_context_size_medium": 0.0144 + }, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-56-terra.html", + "supports_web_search": true }, "bedrock_mantle/us-gov-west-1/openai.gpt-oss-120b": { + "supports_vision": false, "input_cost_per_token": 1.8e-7, "output_cost_per_token": 7.2e-7, "litellm_provider": "bedrock_mantle", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-oss-120b.html", "supported_endpoints": [ @@ -16201,12 +18197,12 @@ "supports_tool_choice": true }, "bedrock_mantle/us-gov-west-1/openai.gpt-oss-20b": { + "supports_vision": false, "input_cost_per_token": 8.4e-8, "output_cost_per_token": 3.6e-7, "litellm_provider": "bedrock_mantle", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-oss-20b.html", "supported_endpoints": [ @@ -16224,7 +18220,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 1048576, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "supported_endpoints": [ "/v1/chat/completions", @@ -16248,7 +18243,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 500000, "max_output_tokens": 500000, - "max_tokens": 500000, "mode": "chat", "supported_endpoints": [ "/v1/chat/completions", @@ -16275,7 +18269,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 1048576, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token_batches": 0.00000125, "output_cost_per_token_flex": 0.00000125, @@ -16303,7 +18296,6 @@ "litellm_provider": "bedrock_mantle", "max_input_tokens": 500000, "max_output_tokens": 500000, - "max_tokens": 500000, "mode": "chat", "output_cost_per_token_flex": 0.0000033, "output_cost_per_token_priority": 0.00001155, @@ -16319,13 +18311,88 @@ "supports_vision": true, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-xai-grok-4-6.html" }, + "bigmodel/glm-5.3": { + "input_cost_per_token": 0.0000011428571428571428, + "output_cost_per_token": 0.000004, + "cache_read_input_token_cost": 2.857142857142857e-7, + "litellm_provider": "bigmodel", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "source": "https://docs.bigmodel.cn/cn/guide/start/pricing", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "thinking_always_on": true, + "metadata": { + "comment": "Official API list price checked 2026-10-27: input 8, output 28, cached input 2 CNY per million tokens; converted at 7.0 CNY/USD. Cache storage is temporarily free and is not encoded." + }, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses", + "/v1/messages" + ], + "supports_native_streaming": true + }, + "bigmodel/glm-5.3-flash": { + "input_cost_per_token": 1.142857142857143e-7, + "output_cost_per_token": 4e-7, + "cache_read_input_token_cost": 3.2857142857142855e-8, + "litellm_provider": "bigmodel", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "source": "https://docs.bigmodel.cn/cn/guide/start/pricing", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "thinking_always_on": true, + "supports_vision": true, + "supports_video_input": true, + "metadata": { + "comment": "Official API list price checked 2026-10-27: input 0.8, output 2.8, cached input 0.23 CNY per million tokens; converted at 7.0 CNY/USD. Cache storage is temporarily free and is not encoded." + }, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses", + "/v1/messages" + ], + "supports_native_streaming": true + }, + "bigmodel/glm-5.3-flashx": { + "input_cost_per_token": 2.857142857142857e-7, + "output_cost_per_token": 0.000001, + "cache_read_input_token_cost": 8.142857142857142e-8, + "litellm_provider": "bigmodel", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "source": "https://docs.bigmodel.cn/cn/guide/start/pricing", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "thinking_always_on": true, + "supports_vision": true, + "supports_video_input": true, + "metadata": { + "comment": "Official API list price checked 2026-10-27: input 2, output 7, cached input 0.57 CNY per million tokens; converted at 7.0 CNY/USD. Cache storage is temporarily free and is not encoded." + }, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses", + "/v1/messages" + ], + "supports_native_streaming": true + }, "c4ai-aya-expanse-32b": { "input_cost_per_token": 5e-7, "output_cost_per_token": 0.0000015, "litellm_provider": "cohere_chat", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "source": "https://docs.cohere.com/docs/models" }, @@ -16334,7 +18401,6 @@ "litellm_provider": "cerebras", "max_input_tokens": 131072, "max_output_tokens": 40960, - "max_tokens": 40960, "mode": "chat", "output_cost_per_token": 0.00000149, "source": "https://api.cerebras.ai/public/v1/models/gemma-4-31b", @@ -16350,7 +18416,6 @@ "litellm_provider": "cerebras", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 7.5e-7, "source": "https://www.cerebras.ai/blog/openai-gpt-oss-120b-runs-fastest-on-cerebras", @@ -16360,45 +18425,54 @@ "supports_response_schema": true, "supports_tool_choice": true }, - "cerebras/llama-3.3-70b": { - "input_cost_per_token": 8.5e-7, + "cerebras/llama-3.1-70b": { + "input_cost_per_token": 6e-7, "litellm_provider": "cerebras", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", - "output_cost_per_token": 0.0000012, + "output_cost_per_token": 6e-7, "supports_function_calling": true, "supports_tool_choice": true }, - "cerebras/llama3.1-70b": { - "input_cost_per_token": 6e-7, + "cerebras/llama-3.1-8b": { + "input_cost_per_token": 1e-7, "litellm_provider": "cerebras", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", - "output_cost_per_token": 6e-7, + "output_cost_per_token": 1e-7, + "supports_function_calling": true, + "supports_tool_choice": true + }, + "cerebras/llama-3.3-70b": { + "deprecation_date": "2026-02-16", + "input_cost_per_token": 8.5e-7, + "litellm_provider": "cerebras", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000012, "supports_function_calling": true, "supports_tool_choice": true }, "cerebras/llama3.1-8b": { + "deprecation_date": "2026-05-27", "input_cost_per_token": 1e-7, "litellm_provider": "cerebras", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 1e-7, "supports_function_calling": true, "supports_tool_choice": true }, "cerebras/qwen-3-32b": { + "deprecation_date": "2026-02-16", "input_cost_per_token": 4e-7, "litellm_provider": "cerebras", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 8e-7, "source": "https://inference-docs.cerebras.ai/support/pricing", @@ -16411,7 +18485,6 @@ "litellm_provider": "cerebras", "max_input_tokens": 65536, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.00000149, "source": "https://api.cerebras.ai/public/v1/models/qwen-3.8-27b", @@ -16428,12 +18501,19 @@ "litellm_provider": "openai", "max_input_tokens": 400000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "reasoning_effort_levels": [ "medium" ], + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard" + ], "source": "https://developers.openai.com/api/docs/pricing", "supported_endpoints": [ "/v1/chat/completions", @@ -16463,7 +18543,6 @@ "litellm_provider": "nlp_cloud", "max_input_tokens": 16384, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 5e-7 }, @@ -16471,7 +18550,6 @@ "litellm_provider": "chatgpt", "max_input_tokens": 128000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "responses", "supported_endpoints": [ "/v1/chat/completions", @@ -16491,7 +18569,6 @@ "litellm_provider": "chatgpt", "max_input_tokens": 128000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "responses", "supported_endpoints": [ "/v1/chat/completions", @@ -16507,7 +18584,6 @@ "litellm_provider": "chatgpt", "max_input_tokens": 128000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "responses", "supported_endpoints": [ "/v1/chat/completions", @@ -16522,7 +18598,6 @@ "litellm_provider": "chatgpt", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", "supported_endpoints": [ "/v1/chat/completions", @@ -16543,7 +18618,6 @@ "source": "https://platform.openai.com/docs/models/gpt-5.5", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", "supported_endpoints": [ "/v1/chat/completions", @@ -16563,7 +18637,6 @@ "source": "https://platform.openai.com/docs/models/gpt-5.6-luna", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", "supported_endpoints": [ "/v1/chat/completions", @@ -16583,7 +18656,6 @@ "source": "https://platform.openai.com/docs/models/gpt-5.6-sol", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", "supported_endpoints": [ "/v1/chat/completions", @@ -16603,7 +18675,6 @@ "source": "https://platform.openai.com/docs/models/gpt-5.6-terra", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "responses", "supported_endpoints": [ "/v1/chat/completions", @@ -16627,7 +18698,6 @@ ], "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "source": "https://developers.openai.com/api/docs/pricing", "supports_function_calling": true, "supports_max_reasoning_effort": true, @@ -16639,6 +18709,26 @@ "supports_vision": true, "supports_xhigh_reasoning_effort": true }, + "chatgpt/gpt-6-astra-law": { + "litellm_provider": "chatgpt", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "mode": "responses", + "source": "https://developers.openai.com/api/docs/pricing", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_max_reasoning_effort": true, + "supports_minimal_reasoning_effort": false, + "supports_none_reasoning_effort": false, + "supports_parallel_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true + }, "chatgpt/gpt-6-luna": { "litellm_provider": "chatgpt", "mode": "responses", @@ -16648,7 +18738,6 @@ ], "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "source": "https://developers.openai.com/api/docs/pricing", "supports_function_calling": true, "supports_max_reasoning_effort": true, @@ -16669,7 +18758,6 @@ ], "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "source": "https://developers.openai.com/api/docs/pricing", "supports_function_calling": true, "supports_max_reasoning_effort": true, @@ -16690,7 +18778,6 @@ ], "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "source": "https://developers.openai.com/api/docs/pricing", "supports_function_calling": true, "supports_max_reasoning_effort": true, @@ -16702,6 +18789,26 @@ "supports_vision": true, "supports_xhigh_reasoning_effort": true }, + "chatgpt/gpt-6.1-terra": { + "litellm_provider": "chatgpt", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "mode": "responses", + "source": "https://developers.openai.com/api/docs/pricing", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_max_reasoning_effort": true, + "supports_minimal_reasoning_effort": false, + "supports_none_reasoning_effort": true, + "supports_parallel_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true + }, "claude-fable-5": { "supports_web_search": true, "supports_anthropic_compaction": true, @@ -16715,7 +18822,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "output_cost_per_token_batches": 0.000025, @@ -16760,7 +18866,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "output_cost_per_token_batches": 0.000025, @@ -16804,7 +18909,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000005, "output_cost_per_token_batches": 0.0000025, @@ -16833,7 +18937,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000005, "output_cost_per_token_batches": 0.0000025, @@ -16865,7 +18968,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "output_cost_per_token_batches": 2.5e-7, @@ -16916,7 +19018,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "output_cost_per_token_batches": 0.000025, @@ -16960,7 +19061,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "output_cost_per_token_batches": 0.000025, @@ -16995,6 +19095,7 @@ }, "claude-mythos-preview": { "deprecation_date": "2026-06-09", + "deprecation_source": "https://platform.claude.com/docs/en/about-claude/model-deprecations", "supports_anthropic_compaction": true, "cache_creation_input_token_cost": 0.0000125, "cache_creation_input_token_cost_above_1hr": 0.00002, @@ -17003,7 +19104,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "prompt_cache_min_tokens": 512, @@ -17044,7 +19144,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000025, "output_cost_per_token_batches": 0.0000125, @@ -17080,7 +19179,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000025, "output_cost_per_token_batches": 0.0000125, @@ -17116,7 +19214,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "output_cost_per_token_batches": 0.0000125, @@ -17159,7 +19256,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "output_cost_per_token_batches": 0.0000125, @@ -17202,7 +19298,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "output_cost_per_token_batches": 0.0000125, @@ -17230,7 +19325,6 @@ "us": 1.1 }, "supports_output_config": true, - "supports_speed": true, "prompt_cache_min_tokens": 2048, "source": "https://platform.claude.com/docs/en/about-claude/pricing" }, @@ -17246,7 +19340,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "output_cost_per_token_batches": 0.0000125, @@ -17274,7 +19367,6 @@ "us": 1.1 }, "supports_output_config": true, - "supports_speed": true, "prompt_cache_min_tokens": 2048 }, "claude-opus-4-8": { @@ -17290,7 +19382,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "output_cost_per_token_batches": 0.0000125, @@ -17338,7 +19429,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "output_cost_per_token_batches": 0.0000125, @@ -17386,7 +19476,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00002, "output_cost_per_token_batches": 0.00001, @@ -17430,11 +19519,12 @@ "cache_creation_input_token_cost_batches": 0.000001875, "cache_read_input_token_cost_batches": 1.5e-7, "deprecation_date": "2026-11-30", + "deprecation_source": "https://platform.claude.com/docs/en/about-claude/model-deprecations", + "successor_model": "claude-sonnet-5-5", "input_cost_per_token_batches": 0.0000015, "litellm_provider": "anthropic", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_batches": 0.0000075, @@ -17464,11 +19554,12 @@ "cache_creation_input_token_cost_batches": 0.000001875, "cache_read_input_token_cost_batches": 1.5e-7, "deprecation_date": "2026-11-30", + "deprecation_source": "https://platform.claude.com/docs/en/about-claude/model-deprecations", + "successor_model": "claude-sonnet-5-5", "input_cost_per_token_batches": 0.0000015, "litellm_provider": "anthropic", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_batches": 0.0000075, @@ -17501,11 +19592,12 @@ "output_cost_per_token_above_200k_tokens": 0.0000225, "cache_creation_input_token_cost_above_200k_tokens": 0.0000075, "cache_read_input_token_cost_above_200k_tokens": 6e-7, + "deprecation_date": "2027-04-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-4-5.md", "litellm_provider": "bedrock", "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -17520,7 +19612,12 @@ "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, "input_cost_per_token_batches": 0.0000015, - "output_cost_per_token_batches": 0.0000075 + "output_cost_per_token_batches": 0.0000075, + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-4-5.md", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-5-20250929-v1:0", + "litellm_provider": "bedrock" + } }, "claude-sonnet-4-6": { "supports_web_search": true, @@ -17535,7 +19632,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_batches": 0.0000075, @@ -17578,7 +19674,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, @@ -17622,7 +19717,6 @@ "litellm_provider": "anthropic", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, @@ -17656,12 +19750,277 @@ "source": "https://platform.claude.com/docs/en/about-claude/pricing", "supports_web_search": true }, + "clf_ai_gateway/deepseek-v4-flash": { + "metadata": { + "comment": "Billed price checked 2026-10-29, which the gateway shows as 60% off a list price 2.5x higher. Update the rows when the discount ends." + }, + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "input_cost_per_token": 1.76e-7, + "output_cost_per_token": 5.28e-7, + "cache_read_input_token_cost": 5e-9, + "litellm_provider": "clf_ai_gateway", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "reasoning_effort_levels": [ + "low", + "medium", + "high", + "xhigh", + "max" + ], + "supports_response_schema": true, + "supports_system_messages": true, + "supports_prompt_caching": true, + "source": "https://clfaigateway.dev/models" + }, + "clf_ai_gateway/deepseek-v4-pro": { + "metadata": { + "comment": "Billed price checked 2026-10-29, which the gateway shows as 60% off a list price 2.5x higher. Update the rows when the discount ends." + }, + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "input_cost_per_token": 5.28e-7, + "output_cost_per_token": 0.000001584, + "cache_read_input_token_cost": 1.7e-8, + "litellm_provider": "clf_ai_gateway", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "reasoning_effort_levels": [ + "low", + "medium", + "high", + "xhigh", + "max" + ], + "supports_response_schema": true, + "supports_system_messages": true, + "supports_prompt_caching": true, + "source": "https://clfaigateway.dev/models" + }, + "clf_ai_gateway/deepseek-v4.1-flash": { + "metadata": { + "comment": "Billed price checked 2026-10-29, which the gateway shows as 60% off a list price 2.5x higher. Update the rows when the discount ends." + }, + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "input_cost_per_token": 1.2e-7, + "output_cost_per_token": 4.8e-7, + "cache_read_input_token_cost": 2e-9, + "litellm_provider": "clf_ai_gateway", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "reasoning_effort_levels": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "supports_response_schema": true, + "supports_system_messages": true, + "supports_prompt_caching": true, + "supports_vision": true, + "source": "https://clfaigateway.dev/models" + }, + "clf_ai_gateway/glm-4.7-flash": { + "metadata": { + "comment": "Billed price checked 2026-10-29, which the gateway shows as 60% off a list price 2.5x higher. Update the rows when the discount ends." + }, + "max_input_tokens": 131072, + "max_output_tokens": 131072, + "input_cost_per_token": 2.4e-8, + "output_cost_per_token": 1.6e-7, + "litellm_provider": "clf_ai_gateway", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "reasoning_effort_levels": [ + "low", + "medium", + "high" + ], + "supports_response_schema": true, + "supports_system_messages": true, + "source": "https://clfaigateway.dev/models" + }, + "clf_ai_gateway/glm-5.2": { + "metadata": { + "comment": "Billed price checked 2026-10-29, which the gateway shows as 60% off a list price 2.5x higher. Update the rows when the discount ends." + }, + "max_input_tokens": 262144, + "max_output_tokens": 131072, + "input_cost_per_token": 5.6e-7, + "output_cost_per_token": 0.00000176, + "cache_read_input_token_cost": 1.04e-7, + "litellm_provider": "clf_ai_gateway", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "reasoning_effort_levels": [ + "low", + "medium", + "high", + "xhigh", + "max" + ], + "supports_response_schema": true, + "supports_system_messages": true, + "supports_prompt_caching": true, + "source": "https://clfaigateway.dev/models" + }, + "clf_ai_gateway/glm-5.3": { + "metadata": { + "comment": "Billed price checked 2026-10-29, which the gateway shows as 60% off a list price 2.5x higher. Update the rows when the discount ends." + }, + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "input_cost_per_token": 5.6e-7, + "output_cost_per_token": 0.00000176, + "cache_read_input_token_cost": 1.04e-7, + "litellm_provider": "clf_ai_gateway", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "reasoning_effort_levels": [ + "low", + "medium", + "high", + "max" + ], + "supports_response_schema": true, + "supports_system_messages": true, + "supports_prompt_caching": true, + "source": "https://clfaigateway.dev/models" + }, + "clf_ai_gateway/glm-5.3-flash": { + "metadata": { + "comment": "Billed price checked 2026-10-29, which the gateway shows as 60% off a list price 2.5x higher. Update the rows when the discount ends." + }, + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "input_cost_per_token": 6e-8, + "output_cost_per_token": 2e-7, + "cache_read_input_token_cost": 1.2e-8, + "litellm_provider": "clf_ai_gateway", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "reasoning_effort_levels": [ + "low", + "medium", + "high", + "xhigh", + "max" + ], + "supports_response_schema": true, + "supports_system_messages": true, + "supports_prompt_caching": true, + "supports_vision": true, + "source": "https://clfaigateway.dev/models" + }, + "clf_ai_gateway/kimi-k2.6": { + "metadata": { + "comment": "Billed price checked 2026-10-29, which the gateway shows as 60% off a list price 2.5x higher. Update the rows when the discount ends." + }, + "max_input_tokens": 262144, + "max_output_tokens": 131072, + "input_cost_per_token": 3.8e-7, + "output_cost_per_token": 0.0000016, + "cache_read_input_token_cost": 6.4e-8, + "litellm_provider": "clf_ai_gateway", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "reasoning_effort_levels": [ + "none", + "low", + "medium", + "high" + ], + "supports_response_schema": true, + "supports_system_messages": true, + "supports_prompt_caching": true, + "supports_vision": true, + "source": "https://clfaigateway.dev/models" + }, + "clf_ai_gateway/kimi-k2.7-code": { + "metadata": { + "comment": "Billed price checked 2026-10-29, which the gateway shows as 60% off a list price 2.5x higher. Update the rows when the discount ends." + }, + "max_input_tokens": 262144, + "max_output_tokens": 131072, + "input_cost_per_token": 3.8e-7, + "output_cost_per_token": 0.0000016, + "cache_read_input_token_cost": 7.6e-8, + "litellm_provider": "clf_ai_gateway", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "reasoning_effort_levels": [ + "low", + "medium", + "high" + ], + "supports_response_schema": true, + "supports_system_messages": true, + "supports_prompt_caching": true, + "supports_vision": true, + "source": "https://clfaigateway.dev/models" + }, + "clf_ai_gateway/qwen3.8-27b": { + "metadata": { + "comment": "Billed price checked 2026-10-29, which the gateway shows as 60% off a list price 2.5x higher. Update the rows when the discount ends." + }, + "max_input_tokens": 262144, + "max_output_tokens": 131072, + "input_cost_per_token": 1.8e-7, + "output_cost_per_token": 0.00000128, + "cache_read_input_token_cost": 2e-8, + "litellm_provider": "clf_ai_gateway", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "reasoning_effort_levels": [ + "low", + "medium", + "xhigh" + ], + "supports_response_schema": true, + "supports_system_messages": true, + "supports_prompt_caching": true, + "supports_vision": true, + "source": "https://clfaigateway.dev/models" + }, "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, "rpm": 300 @@ -17671,7 +20030,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 80000, "max_output_tokens": 80000, - "max_tokens": 80000, "mode": "chat", "output_cost_per_token": 0.000004881, "rpm": 300, @@ -17682,7 +20040,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "rpm": 300 @@ -17692,7 +20049,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 3e-7, "rpm": 300, @@ -17704,7 +20060,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 3500, "max_output_tokens": 3500, - "max_tokens": 3500, "mode": "chat", "output_cost_per_token": 0, "rpm": 300 @@ -17714,7 +20069,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 131000, "max_output_tokens": 131000, - "max_tokens": 131000, "mode": "chat", "output_cost_per_token": 1.12e-7, "rpm": 300, @@ -17725,7 +20079,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "rpm": 300 @@ -17735,7 +20088,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 3072, "max_output_tokens": 3072, - "max_tokens": 3072, "mode": "chat", "output_cost_per_token": 0.000001923, "rpm": 300 @@ -17745,7 +20097,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 2048, "max_output_tokens": 2048, - "max_tokens": 2048, "mode": "chat", "output_cost_per_token": 0.000001923, "rpm": 300 @@ -17755,7 +20106,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 32000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 2.87e-7, "rpm": 300 @@ -17765,7 +20115,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 6.76e-7, "rpm": 300, @@ -17776,7 +20125,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 60000, "max_output_tokens": 60000, - "max_tokens": 60000, "mode": "chat", "output_cost_per_token": 2.01e-7, "rpm": 300 @@ -17786,7 +20134,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 80000, "max_output_tokens": 80000, - "max_tokens": 80000, "mode": "chat", "output_cost_per_token": 3.35e-7, "rpm": 300 @@ -17796,7 +20143,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 24000, "max_output_tokens": 24000, - "max_tokens": 24000, "mode": "chat", "output_cost_per_token": 0.000002253, "rpm": 300, @@ -17807,7 +20153,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 131000, "max_output_tokens": 131000, - "max_tokens": 131000, "mode": "chat", "output_cost_per_token": 8.5e-7, "rpm": 300, @@ -17818,7 +20163,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 3e-8, "rpm": 300 @@ -17828,7 +20172,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000001923, "rpm": 300 @@ -17838,7 +20181,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 15000, "max_output_tokens": 15000, - "max_tokens": 15000, "mode": "chat", "output_cost_per_token": 0, "rpm": 300 @@ -17848,7 +20190,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5.55e-7, "rpm": 300, @@ -17860,7 +20201,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000004, "rpm": 20, @@ -17873,7 +20213,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000004, "rpm": 20, @@ -17885,7 +20224,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.0000015, "rpm": 300, @@ -17897,7 +20235,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 7.5e-7, "rpm": 300, @@ -17909,7 +20246,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 3e-7, "rpm": 300, @@ -17921,7 +20257,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000001, "rpm": 300 @@ -17931,7 +20266,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 3.35e-7, "rpm": 300, @@ -17943,7 +20277,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 24000, "max_output_tokens": 24000, - "max_tokens": 24000, "mode": "chat", "output_cost_per_token": 0.000001, "rpm": 300, @@ -17954,7 +20287,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 4e-7, "rpm": 300, @@ -17967,7 +20299,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000044, "rpm": 20, @@ -17979,7 +20310,6 @@ "litellm_provider": "cloudflare", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000001923, "rpm": 300 @@ -17989,7 +20319,6 @@ "litellm_provider": "codestral", "max_input_tokens": 32000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0, "source": "https://docs.mistral.ai/capabilities/code_generation/", @@ -18001,7 +20330,6 @@ "litellm_provider": "codestral", "max_input_tokens": 32000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0, "source": "https://docs.mistral.ai/capabilities/code_generation/", @@ -18043,7 +20371,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 6e-7, "source": "https://aws.amazon.com/bedrock/pricing/", @@ -18054,7 +20381,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://aws.amazon.com/bedrock/pricing/", @@ -18065,7 +20391,6 @@ "litellm_provider": "cohere_chat", "max_input_tokens": 256000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.00001, "supports_function_calling": true, @@ -18076,7 +20401,6 @@ "litellm_provider": "cohere_chat", "max_input_tokens": 128000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0, "source": "https://docs.cohere.com/docs/command-a-plus", @@ -18091,7 +20415,6 @@ "litellm_provider": "cohere_chat", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 6e-7, "supports_function_calling": true, @@ -18102,7 +20425,6 @@ "litellm_provider": "cohere_chat", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00001, "supports_function_calling": true, @@ -18113,7 +20435,6 @@ "litellm_provider": "cohere_chat", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://docs.cohere.com/v2/docs/command-r7b", @@ -18122,11 +20443,12 @@ }, "computer-use-preview": { "deprecation_date": "2026-07-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "input_cost_per_token": 0.000003, "litellm_provider": "openai", "max_input_tokens": 8192, "max_output_tokens": 1024, - "max_tokens": 1024, "mode": "chat", "output_cost_per_token": 0.000012, "supported_endpoints": [ @@ -18152,11 +20474,12 @@ }, "computer-use-preview-2025-03-11": { "deprecation_date": "2026-07-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "input_cost_per_token": 0.000003, "litellm_provider": "openai", "max_input_tokens": 8192, "max_output_tokens": 1024, - "max_tokens": 1024, "mode": "chat", "output_cost_per_token": 0.000012, "supported_endpoints": [ @@ -18186,7 +20509,7 @@ "input_cost_per_token": 1e-8, "litellm_provider": "coralbricks", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.coralbricks.ai/pricing", @@ -18209,7 +20532,7 @@ "input_cost_per_token": 1e-8, "litellm_provider": "coralbricks", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.coralbricks.ai/pricing", @@ -18232,7 +20555,7 @@ "input_cost_per_token": 1e-8, "litellm_provider": "coralbricks", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.coralbricks.ai/pricing", @@ -18255,7 +20578,7 @@ "input_cost_per_token": 0.00000112, "litellm_provider": "coralbricks", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://www.coralbricks.ai/pricing", @@ -18278,7 +20601,7 @@ "input_cost_per_token": 0.00000112, "litellm_provider": "coralbricks", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://www.coralbricks.ai/pricing", @@ -18301,7 +20624,7 @@ "input_cost_per_token": 0.00000112, "litellm_provider": "coralbricks", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://www.coralbricks.ai/pricing", @@ -18323,7 +20646,6 @@ "litellm_provider": "crusoe", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000003, "supports_function_calling": true, @@ -18336,7 +20658,6 @@ "litellm_provider": "crusoe", "max_input_tokens": 163840, "max_output_tokens": 163840, - "max_tokens": 163840, "mode": "chat", "output_cost_per_token": 0.000007, "supports_function_calling": false, @@ -18349,7 +20670,6 @@ "litellm_provider": "crusoe", "max_input_tokens": 163840, "max_output_tokens": 163840, - "max_tokens": 163840, "mode": "chat", "output_cost_per_token": 0.0000015, "supports_function_calling": true, @@ -18362,7 +20682,6 @@ "litellm_provider": "crusoe", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 1e-7, "supports_function_calling": true, @@ -18376,7 +20695,6 @@ "litellm_provider": "crusoe", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 2e-7, "supports_function_calling": true, @@ -18389,7 +20707,6 @@ "litellm_provider": "crusoe", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000025, "supports_function_calling": false, @@ -18402,7 +20719,6 @@ "litellm_provider": "crusoe", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 8e-7, "supports_function_calling": true, @@ -18415,7 +20731,6 @@ "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/", @@ -18432,7 +20747,6 @@ "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/", @@ -18450,7 +20764,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 4e-7, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -18466,7 +20779,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 4e-7, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -18482,7 +20794,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 0.0000048, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -18498,7 +20809,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 202745, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -18514,7 +20824,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -18530,7 +20839,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 229376, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -18546,7 +20854,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 1000000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -18558,7 +20865,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -18587,7 +20893,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -18617,7 +20922,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 30720, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000064, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -18630,7 +20934,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -18643,7 +20946,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 129024, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -18656,7 +20958,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 0.000004, "output_cost_per_token": 0.0000012, @@ -18670,7 +20971,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 0.000004, "output_cost_per_token": 0.0000012, @@ -18683,7 +20983,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -18714,7 +21013,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -18745,7 +21043,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -18777,7 +21074,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 5e-7, "output_cost_per_token": 2e-7, @@ -18791,7 +21087,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 1000000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 2e-7, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -18804,7 +21099,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 1000000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 5e-7, "output_cost_per_token": 2e-7, @@ -18818,7 +21112,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 1000000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 5e-7, "output_cost_per_token": 2e-7, @@ -18831,7 +21124,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -18842,7 +21134,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 997952, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -18891,7 +21182,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 997952, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -18936,7 +21226,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 997952, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -18985,7 +21274,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 997952, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -19030,7 +21318,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 258048, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -19067,7 +21354,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 258048, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -19104,7 +21390,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 258048, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -19142,7 +21427,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", @@ -19154,7 +21438,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", @@ -19167,7 +21450,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000016, "source": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", @@ -19180,7 +21462,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", @@ -19194,7 +21475,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 6.4e-7, "source": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", @@ -19207,7 +21487,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.00000287, "source": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", @@ -19220,7 +21499,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 260096, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -19258,7 +21536,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 991808, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -19285,12 +21562,13 @@ ] }, "dashscope/qwen3.7-max": { + "cache_creation_input_token_cost": 0.000003125, "cache_read_input_token_cost": 5e-7, + "explicit_cache_read_input_token_cost": 2.5e-7, "input_cost_per_token": 0.0000025, "litellm_provider": "dashscope", "max_input_tokens": 991808, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000075, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -19304,7 +21582,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 991808, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -19341,7 +21618,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 991808, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 4.7e-7, "source": "https://docs.modelstudio.console.alibabacloud.com/en/model-studio/model-pricing", @@ -19360,7 +21636,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 991808, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -19377,7 +21652,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 991808, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 4.7e-7, "source": "https://docs.modelstudio.console.alibabacloud.com/en/model-studio/model-pricing", @@ -19396,7 +21670,6 @@ "litellm_provider": "dashscope", "max_input_tokens": 98304, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000024, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -19405,20 +21678,20 @@ "supports_tool_choice": true }, "databricks/databricks-claude-fable-5": { - "cache_creation_input_token_cost": 0.00001250004, + "cache_creation_input_token_cost": 0.00001249997, + "cache_creation_input_token_cost_above_1hr": 0.00001999998, "cache_read_input_token_cost": 0.00000100002, - "input_cost_per_token": 0.00001000006, - "input_dbu_cost_per_token": 0.000142858, + "input_cost_per_token": 0.00000999999, + "input_dbu_cost_per_token": 0.00014286, "litellm_provider": "databricks", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", "output_cost_per_token": 0.00005000002, - "output_dbu_cost_per_token": 0.000714286, + "output_dbu_cost_per_token": 0.00071429, "prompt_cache_min_tokens": 512, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_adaptive_thinking": true, @@ -19434,20 +21707,20 @@ "thinking_always_on": true }, "databricks/databricks-claude-fable-5-1": { - "cache_creation_input_token_cost": 0.00001250004, - "cache_read_input_token_cost": 2.5004e-7, - "input_cost_per_token": 0.00001000006, - "input_dbu_cost_per_token": 0.000142858, + "cache_creation_input_token_cost": 0.00001249997, + "cache_creation_input_token_cost_above_1hr": 0.00001999998, + "cache_read_input_token_cost": 2.4997e-7, + "input_cost_per_token": 0.00000999999, + "input_dbu_cost_per_token": 0.00014286, "litellm_provider": "databricks", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", "output_cost_per_token": 0.00005000002, - "output_dbu_cost_per_token": 0.000714286, + "output_dbu_cost_per_token": 0.00071429, "prompt_cache_min_tokens": 512, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_adaptive_thinking": true, @@ -19465,13 +21738,13 @@ }, "databricks/databricks-claude-haiku-4-5": { "cache_creation_input_token_cost": 0.00000124999, + "cache_creation_input_token_cost_above_1hr": 0.00000199997, "cache_read_input_token_cost": 1.0003e-7, "input_cost_per_token": 0.00000100002, "input_dbu_cost_per_token": 0.000014286, "litellm_provider": "databricks", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, @@ -19487,21 +21760,55 @@ "supports_tool_choice": true, "prompt_cache_min_tokens": 4096 }, + "databricks/databricks-claude-haiku-5-5": { + "cache_creation_input_token_cost": 1.2502e-7, + "cache_creation_input_token_cost_above_100k_tokens": 6.2503e-7, + "cache_creation_input_token_cost_above_1hr": 1.9999e-7, + "cache_creation_input_token_cost_above_1hr_above_100k_tokens": 0.00000100002, + "cache_read_input_token_cost": 1.001e-8, + "cache_read_input_token_cost_above_100k_tokens": 4.998e-8, + "input_cost_per_token": 1.0003e-7, + "input_cost_per_token_above_100k_tokens": 5.0001e-7, + "input_dbu_cost_per_token": 0.000001429, + "litellm_provider": "databricks", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "metadata": { + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." + }, + "mode": "chat", + "output_cost_per_token": 5.0001e-7, + "output_cost_per_token_above_100k_tokens": 0.00000249998, + "output_dbu_cost_per_token": 0.000007143, + "prompt_cache_min_tokens": 512, + "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", + "supports_adaptive_thinking": true, + "supports_anthropic_thinking_payload": true, + "supports_assistant_prefill": false, + "supports_function_calling": true, + "supports_mid_conversation_system": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "thinking_always_on": false + }, "databricks/databricks-claude-opus-4": { "cache_creation_input_token_cost": 0.00001874999, + "cache_creation_input_token_cost_above_1hr": 0.00002999997, "cache_read_input_token_cost": 0.00000150003, - "input_cost_per_token": 0.000015000020000000002, - "input_dbu_cost_per_token": 0.000214286, + "input_cost_per_token": 0.00001500002, + "input_dbu_cost_per_token": 0.00021429, "litellm_provider": "databricks", "max_input_tokens": 200000, "max_output_tokens": 32000, - "max_tokens": 32000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 0.00007500003000000001, - "output_dbu_cost_per_token": 0.001071429, + "output_cost_per_token": 0.0000750001, + "output_dbu_cost_per_token": 0.0010714, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_assistant_prefill": true, "supports_function_calling": true, @@ -19513,19 +21820,19 @@ }, "databricks/databricks-claude-opus-4-1": { "cache_creation_input_token_cost": 0.00001874999, + "cache_creation_input_token_cost_above_1hr": 0.00002999997, "cache_read_input_token_cost": 0.00000150003, - "input_cost_per_token": 0.000015000020000000002, - "input_dbu_cost_per_token": 0.000214286, + "input_cost_per_token": 0.00001500002, + "input_dbu_cost_per_token": 0.00021429, "litellm_provider": "databricks", "max_input_tokens": 200000, "max_output_tokens": 32000, - "max_tokens": 32000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 0.00007500003000000001, - "output_dbu_cost_per_token": 0.001071429, + "output_cost_per_token": 0.0000750001, + "output_dbu_cost_per_token": 0.0010714, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_assistant_prefill": true, "supports_function_calling": true, @@ -19537,19 +21844,19 @@ }, "databricks/databricks-claude-opus-4-5": { "cache_creation_input_token_cost": 0.00000625002, + "cache_creation_input_token_cost_above_1hr": 0.00000999999, "cache_read_input_token_cost": 5.0001e-7, "input_cost_per_token": 0.00000500003, "input_dbu_cost_per_token": 0.000071429, "litellm_provider": "databricks", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 0.000025000010000000002, - "output_dbu_cost_per_token": 0.000357143, + "output_cost_per_token": 0.00002500001, + "output_dbu_cost_per_token": 0.00035714, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_assistant_prefill": true, "supports_function_calling": true, @@ -19562,19 +21869,19 @@ }, "databricks/databricks-claude-opus-4-6": { "cache_creation_input_token_cost": 0.00000625002, + "cache_creation_input_token_cost_above_1hr": 0.00000999999, "cache_read_input_token_cost": 5.0001e-7, "input_cost_per_token": 0.00000500003, "input_dbu_cost_per_token": 0.000071429, "litellm_provider": "databricks", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 0.000025000010000000002, - "output_dbu_cost_per_token": 0.000357143, + "output_cost_per_token": 0.00002500001, + "output_dbu_cost_per_token": 0.00035714, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_assistant_prefill": false, "supports_function_calling": true, @@ -19587,19 +21894,19 @@ }, "databricks/databricks-claude-opus-4-7": { "cache_creation_input_token_cost": 0.00000625002, + "cache_creation_input_token_cost_above_1hr": 0.00000999999, "cache_read_input_token_cost": 5.0001e-7, "input_cost_per_token": 0.00000500003, "input_dbu_cost_per_token": 0.000071429, "litellm_provider": "databricks", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", "output_cost_per_token": 0.00002500001, - "output_dbu_cost_per_token": 0.000357143, + "output_dbu_cost_per_token": 0.00035714, "prompt_cache_min_tokens": 2048, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_adaptive_thinking": true, @@ -19614,19 +21921,19 @@ }, "databricks/databricks-claude-opus-4-8": { "cache_creation_input_token_cost": 0.00000625002, + "cache_creation_input_token_cost_above_1hr": 0.00000999999, "cache_read_input_token_cost": 5.0001e-7, "input_cost_per_token": 0.00000500003, "input_dbu_cost_per_token": 0.000071429, "litellm_provider": "databricks", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", "output_cost_per_token": 0.00002500001, - "output_dbu_cost_per_token": 0.000357143, + "output_dbu_cost_per_token": 0.00035714, "prompt_cache_min_tokens": 1024, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_adaptive_thinking": true, @@ -19642,19 +21949,19 @@ }, "databricks/databricks-claude-opus-5": { "cache_creation_input_token_cost": 0.00000625002, + "cache_creation_input_token_cost_above_1hr": 0.00000999999, "cache_read_input_token_cost": 5.0001e-7, "input_cost_per_token": 0.00000500003, "input_dbu_cost_per_token": 0.000071429, "litellm_provider": "databricks", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", "output_cost_per_token": 0.00002500001, - "output_dbu_cost_per_token": 0.000357143, + "output_dbu_cost_per_token": 0.00035714, "prompt_cache_min_tokens": 512, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_adaptive_thinking": true, @@ -19677,7 +21984,6 @@ "litellm_provider": "databricks", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, @@ -19707,17 +22013,17 @@ "cache_creation_input_token_cost": 0.00000374997, "cache_read_input_token_cost": 3.0002e-7, "deprecation_date": "2026-10-09", - "input_cost_per_token": 0.0000029999900000000002, + "successor_model": "databricks/databricks-claude-sonnet-5", + "input_cost_per_token": 0.00000299999, "input_dbu_cost_per_token": 0.000042857, "litellm_provider": "databricks", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 0.000015000020000000002, + "output_cost_per_token": 0.00001500002, "output_dbu_cost_per_token": 0.000214286, "prompt_cache_min_tokens": 1024, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", @@ -19736,7 +22042,6 @@ "litellm_provider": "databricks", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, @@ -19753,19 +22058,19 @@ }, "databricks/databricks-claude-sonnet-4-5": { "cache_creation_input_token_cost": 0.00000374997, + "cache_creation_input_token_cost_above_1hr": 0.00000599998, "cache_read_input_token_cost": 3.0002e-7, - "input_cost_per_token": 0.0000029999900000000002, + "input_cost_per_token": 0.00000299999, "input_dbu_cost_per_token": 0.000042857, "litellm_provider": "databricks", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 0.000015000020000000002, - "output_dbu_cost_per_token": 0.000214286, + "output_cost_per_token": 0.00001500002, + "output_dbu_cost_per_token": 0.00021429, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_assistant_prefill": true, "supports_function_calling": true, @@ -19777,19 +22082,19 @@ }, "databricks/databricks-claude-sonnet-4-6": { "cache_creation_input_token_cost": 0.00000374997, + "cache_creation_input_token_cost_above_1hr": 0.00000599998, "cache_read_input_token_cost": 3.0002e-7, - "input_cost_per_token": 0.0000029999900000000002, + "input_cost_per_token": 0.00000299999, "input_dbu_cost_per_token": 0.000042857, "litellm_provider": "databricks", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 0.000015000020000000002, - "output_dbu_cost_per_token": 0.000214286, + "output_cost_per_token": 0.00001500002, + "output_dbu_cost_per_token": 0.00021429, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_assistant_prefill": false, "supports_function_calling": true, @@ -19801,20 +22106,20 @@ "prompt_cache_min_tokens": 1024 }, "databricks/databricks-claude-sonnet-5": { - "cache_creation_input_token_cost": 0.00000374997, - "cache_read_input_token_cost": 3.0002e-7, - "input_cost_per_token": 0.00000299999, - "input_dbu_cost_per_token": 0.000042857, + "cache_creation_input_token_cost": 0.00000249998, + "cache_creation_input_token_cost_above_1hr": 0.00000400001, + "cache_read_input_token_cost": 1.9999e-7, + "input_cost_per_token": 0.00000199997, + "input_dbu_cost_per_token": 0.000028571, "litellm_provider": "databricks", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { - "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields. Introductory launch rates of 28.571 input / 142.857 output / 35.714 cache write / 2.857 cache read DBU run through 2026-08-31; the standard rates are listed here because entries carry no expiry date." + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", - "output_cost_per_token": 0.00001500002, - "output_dbu_cost_per_token": 0.000214286, + "output_cost_per_token": 0.00000999999, + "output_dbu_cost_per_token": 0.00014286, "prompt_cache_min_tokens": 1024, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_adaptive_thinking": true, @@ -19828,23 +22133,115 @@ "supports_tool_choice": true, "supports_vision": true }, + "databricks/databricks-claude-sonnet-5-5": { + "cache_creation_input_token_cost": 0.00000249998, + "cache_creation_input_token_cost_above_1hr": 0.00000400001, + "cache_read_input_token_cost": 1.0003e-7, + "input_cost_per_token": 0.00000199997, + "input_dbu_cost_per_token": 0.000028571, + "litellm_provider": "databricks", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "metadata": { + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." + }, + "mode": "chat", + "output_cost_per_token": 0.00000999999, + "output_dbu_cost_per_token": 0.00014286, + "prompt_cache_min_tokens": 512, + "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", + "supports_adaptive_thinking": true, + "supports_anthropic_thinking_payload": true, + "supports_assistant_prefill": false, + "supports_function_calling": true, + "supports_mid_conversation_system": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": false, + "thinking_always_on": true + }, + "databricks/databricks-deepseek-v4-1-flash": { + "cache_creation_input_token_cost": 3.0002e-7, + "cache_read_input_token_cost": 3.003e-8, + "deprecation_date": "2026-11-19", + "deprecation_source": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/supported-models", + "input_cost_per_token": 3.0002e-7, + "input_dbu_cost_per_token": 0.000004286, + "litellm_provider": "databricks", + "max_input_tokens": 1000000, + "max_output_tokens": 384000, + "metadata": { + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields. The docs list only databricks-deepseek-v4-1-flash (retiring 2026-11-19) and databricks-deepseek-v4-1-flash-1017, so the pricing page's 'DeepSeek V4.1 Flash (0910)' row prices the unsuffixed endpoint." + }, + "mode": "chat", + "output_cost_per_token": 0.00000120001, + "output_dbu_cost_per_token": 0.000017143, + "source": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/supported-models", + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true, + "input_cost_per_token_priority": 5.25e-7, + "output_cost_per_token_priority": 0.0000021, + "cache_read_input_token_cost_priority": 5.25e-8, + "cache_creation_input_token_cost_priority": 5.25e-7 + }, + "databricks/databricks-deepseek-v4-1-flash-1017": { + "cache_creation_input_token_cost": 3.0002e-7, + "cache_read_input_token_cost": 7e-9, + "input_cost_per_token": 3.0002e-7, + "input_dbu_cost_per_token": 0.000004286, + "litellm_provider": "databricks", + "max_input_tokens": 1000000, + "max_output_tokens": 384000, + "metadata": { + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." + }, + "mode": "chat", + "output_cost_per_token": 0.00000120001, + "output_dbu_cost_per_token": 0.000017143, + "source": "https://www.databricks.com/product/pricing/foundation-model-serving", + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, "databricks/databricks-deepseek-v4-flash-0731": { "cache_creation_input_token_cost": 1.4e-7, "cache_read_input_token_cost": 2.8e-8, + "deprecation_date": "2026-11-05", + "deprecation_source": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/supported-models", "input_cost_per_token": 1.4e-7, "input_dbu_cost_per_token": 0.000002, "litellm_provider": "databricks", "token_count_framing": 97, "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Billing reads the per-token dollar fields; the '*_dbu_cost_per_token' fields are the published Databricks rates, kept for reference. Context/max output are the DeepSeek-published model limits (1M context, 384K max output)." }, "mode": "chat", "output_cost_per_token": 2.8e-7, "output_dbu_cost_per_token": 0.000004, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving", + "source": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/supported-models", "supported_modalities": [ "text" ], @@ -19860,19 +22257,20 @@ "databricks/databricks-deepseek-v4-pro-0813": { "cache_creation_input_token_cost": 0.00000131999, "cache_read_input_token_cost": 1.3202e-7, + "deprecation_date": "2026-10-30", + "deprecation_source": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/supported-models", "input_cost_per_token": 0.00000131999, "input_dbu_cost_per_token": 0.000018857, "litellm_provider": "databricks", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Billing reads the per-token dollar fields; the '*_dbu_cost_per_token' fields are the published Databricks rates, kept for reference. Context/max output are the DeepSeek-published model limits (1M context, 384K max output)." }, "mode": "chat", "output_cost_per_token": 0.00000395997, "output_dbu_cost_per_token": 0.000056571, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving", + "source": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/supported-models", "supported_modalities": [ "text" ], @@ -19889,12 +22287,12 @@ "cache_creation_input_token_cost": 3.0002e-7, "cache_read_input_token_cost": 3.0002e-8, "deprecation_date": "2026-10-02", + "successor_model": "databricks/databricks-gemini-3-5-flash", "input_cost_per_token": 3.0001999999999996e-7, "input_dbu_cost_per_token": 0.000004285999999999999, "litellm_provider": "databricks", "max_input_tokens": 1048576, "max_output_tokens": 65535, - "max_tokens": 65535, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, @@ -19920,6 +22318,41 @@ "supports_audio_input": true, "supports_video_input": true }, + "databricks/databricks-gemini-2-5-flash-lite": { + "cache_creation_input_token_cost": 1.2502e-7, + "cache_read_input_audio_token_cost": 3.752e-8, + "cache_read_input_token_cost": 1.253e-8, + "input_cost_per_audio_token": 3.7499e-7, + "input_cost_per_image_token": 1.2502e-7, + "input_cost_per_token": 1.2502e-7, + "input_dbu_cost_per_token": 0.000001786, + "litellm_provider": "databricks", + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "metadata": { + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." + }, + "mode": "chat", + "output_cost_per_token": 5.0001e-7, + "output_dbu_cost_per_token": 0.000007143, + "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", + "supported_modalities": [ + "text", + "image", + "audio", + "video" + ], + "supported_output_modalities": [ + "text" + ], + "supports_audio_input": true, + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_video_input": true, + "supports_vision": true + }, "databricks/databricks-gemini-2-5-pro": { "cache_creation_input_token_cost": 0.00000124999, "cache_read_input_token_cost": 1.24999e-7, @@ -19928,7 +22361,6 @@ "litellm_provider": "databricks", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, @@ -19956,14 +22388,19 @@ "supports_video_input": true }, "databricks/databricks-gemini-3-1-flash-image": { + "cache_creation_input_token_cost": 6.2503e-7, + "cache_read_input_token_cost": 6.2503e-7, + "input_cost_per_image_token": 6.2503e-7, + "input_cost_per_token": 6.2503e-7, "litellm_provider": "databricks", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "metadata": { - "notes": "Databricks DBU rates not yet published for this model; endpoint metadata only." + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", + "output_cost_per_image_token": 0.0000750001, + "output_cost_per_token": 0.00000374997, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supported_modalities": [ "text", @@ -19978,13 +22415,15 @@ }, "databricks/databricks-gemini-3-1-flash-lite": { "cache_creation_input_token_cost": 3.1248e-7, + "cache_read_input_audio_token_cost": 6.251e-8, "cache_read_input_token_cost": 3.122e-8, + "input_cost_per_audio_token": 6.2503e-7, + "input_cost_per_image_token": 3.1248e-7, "input_cost_per_token": 3.1248e-7, "input_dbu_cost_per_token": 0.000004464, "litellm_provider": "databricks", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, @@ -20006,28 +22445,60 @@ ], "supports_vision": true, "supports_audio_input": true, - "supports_video_input": true + "supports_video_input": true, + "input_cost_per_token_priority": 5.6252e-7, + "output_cost_per_token_priority": 0.00000337498, + "cache_read_input_token_cost_priority": 5.628e-8, + "cache_creation_input_token_cost_priority": 5.6252e-7, + "input_cost_per_audio_token_priority": 0.00000112497, + "cache_read_input_audio_token_cost_priority": 1.1249e-7 + }, + "databricks/databricks-gemini-3-1-flash-lite-image": { + "cache_creation_input_token_cost": 3.1248e-7, + "cache_read_input_token_cost": 3.1248e-7, + "input_cost_per_image_token": 3.1248e-7, + "input_cost_per_token": 3.1248e-7, + "input_dbu_cost_per_token": 0.000004464, + "litellm_provider": "databricks", + "max_input_tokens": 65536, + "max_output_tokens": 4096, + "metadata": { + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." + }, + "mode": "chat", + "output_cost_per_image_token": 0.00003749998, + "output_cost_per_token": 0.00000187502, + "output_dbu_cost_per_token": 0.000026786, + "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text", + "image" + ], + "supports_function_calling": false, + "supports_vision": true }, "databricks/databricks-gemini-3-1-pro": { "cache_creation_input_token_cost": 0.00000249998, "cache_read_input_token_cost": 2.4997e-7, + "cache_read_input_token_cost_above_200k_tokens": 5.0001e-7, "input_cost_per_token": 0.00000249998, + "input_cost_per_token_above_200k_tokens": 0.00000500003, "input_dbu_cost_per_token": 0.000035714, "litellm_provider": "databricks", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 0.000015000020000000002, + "output_cost_per_token": 0.00001500002, + "output_cost_per_token_above_200k_tokens": 0.0000225, "output_dbu_cost_per_token": 0.000214286, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_tool_choice": true, - "supports_reasoning": true, "supported_modalities": [ "text", "image", @@ -20037,9 +22508,20 @@ "supported_output_modalities": [ "text" ], - "supports_vision": true, "supports_audio_input": true, - "supports_video_input": true + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_video_input": true, + "supports_vision": true, + "input_cost_per_token_priority": 0.00000450002, + "output_cost_per_token_priority": 0.00002699998, + "cache_read_input_token_cost_priority": 4.5003e-7, + "cache_creation_input_token_cost_priority": 0.00000450002, + "input_cost_per_token_above_200k_tokens_priority": 0.00000899997, + "output_cost_per_token_above_200k_tokens_priority": 0.00004049997, + "cache_read_input_token_cost_above_200k_tokens_priority": 8.9999e-7 }, "databricks/databricks-gemini-3-5-flash": { "cache_creation_input_token_cost": 0.00000187502, @@ -20049,14 +22531,13 @@ "litellm_provider": "databricks", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", "output_cost_per_token": 0.00001124998, "output_dbu_cost_per_token": 0.000160714, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", + "source": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/supported-models", "supported_modalities": [ "text", "image", @@ -20070,7 +22551,13 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "input_cost_per_token_priority": 0.00000337498, + "output_cost_per_token_priority": 0.00002025002, + "cache_read_input_token_cost_priority": 3.3747e-7, + "cache_creation_input_token_cost_priority": 0.00000337498, + "supports_audio_input": true, + "supports_video_input": true }, "databricks/databricks-gemini-3-5-flash-lite": { "cache_creation_input_token_cost": 3.7499e-7, @@ -20080,14 +22567,13 @@ "litellm_provider": "databricks", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", "output_cost_per_token": 0.00000312501, "output_dbu_cost_per_token": 0.000044643, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", + "source": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/supported-models", "supported_modalities": [ "text", "image", @@ -20101,25 +22587,31 @@ "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, + "input_cost_per_token_priority": 6.7501e-7, + "output_cost_per_token_priority": 0.00000562499, + "cache_read_input_token_cost_priority": 6.748e-8, + "cache_creation_input_token_cost_priority": 6.7501e-7, + "supports_audio_input": true, + "supports_video_input": true }, "databricks/databricks-gemini-3-6-flash": { - "cache_creation_input_token_cost": 0.00000187502, - "cache_read_input_token_cost": 1.8753e-7, - "input_cost_per_token": 0.00000187502, - "input_dbu_cost_per_token": 0.000026786, + "cache_creation_input_token_cost": 7.4998e-7, + "cache_read_input_token_cost": 7.497e-8, + "input_cost_per_token": 7.4998e-7, + "input_dbu_cost_per_token": 0.000010714, "litellm_provider": "databricks", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", - "output_cost_per_token": 0.00000937503, - "output_dbu_cost_per_token": 0.000133929, - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", + "output_cost_per_token": 0.00000374997, + "output_dbu_cost_per_token": 0.000053571, + "source": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/supported-models", "supported_modalities": [ "text", "image", @@ -20132,19 +22624,29 @@ "supports_function_calling": true, "supports_prompt_caching": true, "supports_reasoning": true, + "supports_sampling_params": false, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "input_cost_per_token_priority": 0.00000135002, + "output_cost_per_token_priority": 0.00000675003, + "cache_read_input_token_cost_priority": 1.3503e-7, + "cache_creation_input_token_cost_priority": 0.00000135002, + "supports_audio_input": true, + "supports_video_input": true }, "databricks/databricks-gemini-3-7-flash": { + "cache_creation_input_token_cost": 7.4998e-7, + "cache_read_input_token_cost": 7.497e-8, + "input_cost_per_token": 7.4998e-7, "litellm_provider": "databricks", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "metadata": { - "notes": "Databricks DBU rates not yet published for this model; endpoint metadata only." + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", + "output_cost_per_token": 0.00000374997, + "source": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/supported-models", "supported_modalities": [ "text", "image", @@ -20156,19 +22658,29 @@ ], "supports_function_calling": true, "supports_reasoning": true, + "supports_sampling_params": false, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "input_cost_per_token_priority": 0.00000135002, + "output_cost_per_token_priority": 0.00000675003, + "cache_read_input_token_cost_priority": 1.3503e-7, + "cache_creation_input_token_cost_priority": 0.00000135002, + "supports_audio_input": true, + "supports_video_input": true }, "databricks/databricks-gemini-3-8-flash": { + "cache_creation_input_token_cost": 7.4998e-7, + "cache_read_input_token_cost": 7.497e-8, + "input_cost_per_token": 7.4998e-7, "litellm_provider": "databricks", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "metadata": { - "notes": "Databricks DBU rates not yet published for this model; endpoint metadata only." + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", - "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", + "output_cost_per_token": 0.00000374997, + "source": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/supported-models", "supported_modalities": [ "text", "image", @@ -20180,18 +22692,27 @@ ], "supports_function_calling": true, "supports_reasoning": true, + "supports_sampling_params": false, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "input_cost_per_token_priority": 0.00000135002, + "output_cost_per_token_priority": 0.00000675003, + "cache_read_input_token_cost_priority": 1.3503e-7, + "cache_creation_input_token_cost_priority": 0.00000135002, + "supports_audio_input": true, + "supports_video_input": true }, "databricks/databricks-gemini-3-flash": { "cache_creation_input_token_cost": 6.2503e-7, + "cache_read_input_audio_token_cost": 1.2502e-7, "cache_read_input_token_cost": 6.251e-8, + "input_cost_per_audio_token": 0.00000124999, + "input_cost_per_image_token": 6.2503e-7, "input_cost_per_token": 6.2503e-7, "input_dbu_cost_per_token": 0.000008929, "litellm_provider": "databricks", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, @@ -20213,7 +22734,13 @@ ], "supports_vision": true, "supports_audio_input": true, - "supports_video_input": true + "supports_video_input": true, + "input_cost_per_token_priority": 0.00000112497, + "output_cost_per_token_priority": 0.00000675003, + "cache_read_input_token_cost_priority": 1.1249e-7, + "cache_creation_input_token_cost_priority": 0.00000112497, + "input_cost_per_audio_token_priority": 0.00000225001, + "cache_read_input_audio_token_cost_priority": 2.2498e-7 }, "databricks/databricks-gemini-3-pro": { "cache_creation_input_token_cost": 0.00000249998, @@ -20223,7 +22750,6 @@ "litellm_provider": "databricks", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, @@ -20236,14 +22762,19 @@ "supports_tool_choice": true }, "databricks/databricks-gemini-3-pro-image": { + "cache_creation_input_token_cost": 0.00000249998, + "cache_read_input_token_cost": 0.00000249998, + "input_cost_per_image_token": 0.00000249998, + "input_cost_per_token": 0.00000249998, "litellm_provider": "databricks", "max_input_tokens": 65536, "max_output_tokens": 32768, - "max_tokens": 32768, "metadata": { - "notes": "Databricks DBU rates not yet published for this model; endpoint metadata only." + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", + "output_cost_per_image_token": 0.0001500002, + "output_cost_per_token": 0.00001500002, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supported_modalities": [ "text", @@ -20256,15 +22787,50 @@ "supports_function_calling": false, "supports_vision": true }, + "databricks/databricks-gemini-4-argon": { + "cache_creation_input_token_cost": 0.00000249998, + "cache_read_input_token_cost": 1.2502e-7, + "input_cost_per_token": 0.00000249998, + "input_dbu_cost_per_token": 0.000035714, + "litellm_provider": "databricks", + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, + "metadata": { + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." + }, + "mode": "chat", + "output_cost_per_token": 0.00001249997, + "output_dbu_cost_per_token": 0.00017857, + "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", + "supported_modalities": [ + "text", + "image", + "audio", + "video" + ], + "supported_output_modalities": [ + "text" + ], + "supports_audio_input": true, + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_video_input": true, + "supports_vision": true, + "input_cost_per_token_priority": 0.00000450002, + "output_cost_per_token_priority": 0.00002250003, + "cache_read_input_token_cost_priority": 2.2498e-7, + "cache_creation_input_token_cost_priority": 0.00000450002 + }, "databricks/databricks-gemma-3-12b": { "cache_creation_input_token_cost": 1.5001e-7, "cache_read_input_token_cost": 1.5001e-7, - "input_cost_per_token": 1.5000999999999998e-7, + "input_cost_per_token": 1.5001e-7, "input_dbu_cost_per_token": 0.0000021429999999999996, "litellm_provider": "databricks", "max_input_tokens": 128000, "max_output_tokens": 32000, - "max_tokens": 32000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, @@ -20281,7 +22847,6 @@ "litellm_provider": "databricks", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Billing reads the per-token dollar fields; the '*_dbu_cost_per_token' fields are the published Databricks rates, kept for reference." }, @@ -20299,7 +22864,11 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, - "supports_vision": false + "supports_vision": false, + "input_cost_per_token_priority": 0.00000245, + "output_cost_per_token_priority": 0.0000077, + "cache_read_input_token_cost_priority": 4.55e-7, + "cache_creation_input_token_cost_priority": 0.00000245 }, "databricks/databricks-glm-5-3": { "cache_creation_input_token_cost": 0.0000014, @@ -20309,7 +22878,6 @@ "litellm_provider": "databricks", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, @@ -20330,7 +22898,11 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": false, - "thinking_always_on": true + "thinking_always_on": true, + "input_cost_per_token_priority": 0.00000245, + "output_cost_per_token_priority": 0.0000077, + "cache_read_input_token_cost_priority": 4.55e-7, + "cache_creation_input_token_cost_priority": 0.00000245 }, "databricks/databricks-glm-5-3-flash": { "cache_creation_input_token_cost": 1.5001e-7, @@ -20340,7 +22912,6 @@ "litellm_provider": "databricks", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, @@ -20360,7 +22931,11 @@ "supports_reasoning": true, "supports_tool_choice": true, "supports_vision": true, - "thinking_always_on": true + "thinking_always_on": true, + "input_cost_per_token_priority": 2.625e-7, + "output_cost_per_token_priority": 8.75e-7, + "cache_read_input_token_cost_priority": 5.25e-8, + "cache_creation_input_token_cost_priority": 2.625e-7 }, "databricks/databricks-gpt-5": { "cache_creation_input_token_cost": 0.00000124999, @@ -20370,17 +22945,20 @@ "litellm_provider": "databricks", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 0.000009999990000000002, + "output_cost_per_token": 0.00000999999, "output_dbu_cost_per_token": 0.000142857, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_function_calling": true, "supports_prompt_caching": true, - "supports_tool_choice": true + "supports_tool_choice": true, + "input_cost_per_token_priority": 0.00000249998, + "output_cost_per_token_priority": 0.00001999998, + "cache_read_input_token_cost_priority": 2.4997e-7, + "cache_creation_input_token_cost_priority": 0.00000249998 }, "databricks/databricks-gpt-5-1": { "cache_creation_input_token_cost": 0.00000124999, @@ -20390,17 +22968,20 @@ "litellm_provider": "databricks", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 0.000009999990000000002, + "output_cost_per_token": 0.00000999999, "output_dbu_cost_per_token": 0.000142857, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_function_calling": true, "supports_prompt_caching": true, - "supports_tool_choice": true + "supports_tool_choice": true, + "input_cost_per_token_priority": 0.00000249998, + "output_cost_per_token_priority": 0.00001999998, + "cache_read_input_token_cost_priority": 2.4997e-7, + "cache_creation_input_token_cost_priority": 0.00000249998 }, "databricks/databricks-gpt-5-2": { "cache_creation_input_token_cost": 0.00000175, @@ -20410,7 +22991,6 @@ "litellm_provider": "databricks", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, @@ -20420,22 +23000,28 @@ "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_function_calling": true, "supports_prompt_caching": true, - "supports_tool_choice": true + "supports_tool_choice": true, + "input_cost_per_token_priority": 0.0000035, + "output_cost_per_token_priority": 0.000028, + "cache_read_input_token_cost_priority": 3.5e-7, + "cache_creation_input_token_cost_priority": 0.0000035 }, "databricks/databricks-gpt-5-4": { "cache_creation_input_token_cost": 0.00000249998, "cache_read_input_token_cost": 2.4997e-7, + "cache_read_input_token_cost_above_272k_tokens": 5.0001e-7, "input_cost_per_token": 0.00000249998, + "input_cost_per_token_above_272k_tokens": 0.00000500003, "input_dbu_cost_per_token": 0.000035714, "litellm_provider": "databricks", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 0.000015000020000000002, + "output_cost_per_token": 0.00001500002, + "output_cost_per_token_above_272k_tokens": 0.0000225, "output_dbu_cost_per_token": 0.000214286, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supported_modalities": [ @@ -20449,7 +23035,14 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "input_cost_per_token_priority": 0.00000500003, + "output_cost_per_token_priority": 0.00002999997, + "cache_read_input_token_cost_priority": 5.0001e-7, + "cache_creation_input_token_cost_priority": 0.00000500003, + "input_cost_per_token_above_272k_tokens_priority": 0.00000500003, + "output_cost_per_token_above_272k_tokens_priority": 0.00002999997, + "cache_read_input_token_cost_above_272k_tokens_priority": 5.0001e-7 }, "databricks/databricks-gpt-5-4-mini": { "cache_creation_input_token_cost": 7.4998e-7, @@ -20459,7 +23052,6 @@ "litellm_provider": "databricks", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, @@ -20478,7 +23070,11 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "input_cost_per_token_priority": 0.00000150003, + "output_cost_per_token_priority": 0.00000899997, + "cache_read_input_token_cost_priority": 1.5001e-7, + "cache_creation_input_token_cost_priority": 0.00000150003 }, "databricks/databricks-gpt-5-4-nano": { "cache_creation_input_token_cost": 1.9999e-7, @@ -20488,7 +23084,6 @@ "litellm_provider": "databricks", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, @@ -20510,20 +23105,23 @@ "supports_vision": true }, "databricks/databricks-gpt-5-6-luna": { - "cache_creation_input_token_cost": 0.00000124999, - "cache_read_input_token_cost": 1.0003e-7, - "input_cost_per_token": 0.00000100002, - "input_dbu_cost_per_token": 0.000014286, + "cache_creation_input_token_cost": 2.4997e-7, + "cache_creation_input_token_cost_above_272k_tokens": 5.0001e-7, + "cache_read_input_token_cost": 2.002e-8, + "cache_read_input_token_cost_above_272k_tokens": 3.997e-8, + "input_cost_per_token": 1.9999e-7, + "input_cost_per_token_above_272k_tokens": 3.9998e-7, + "input_dbu_cost_per_token": 0.000002857, "litellm_provider": "databricks", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", - "output_cost_per_token": 0.00000599998, - "output_dbu_cost_per_token": 0.000085714, + "output_cost_per_token": 0.00000120001, + "output_cost_per_token_above_272k_tokens": 0.00000179998, + "output_dbu_cost_per_token": 0.000017143, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supported_modalities": [ "text", @@ -20536,22 +23134,33 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "input_cost_per_token_priority": 3.9998e-7, + "output_cost_per_token_priority": 0.00000240002, + "cache_read_input_token_cost_priority": 3.997e-8, + "cache_creation_input_token_cost_priority": 5.0001e-7, + "input_cost_per_token_above_272k_tokens_priority": 8.0003e-7, + "output_cost_per_token_above_272k_tokens_priority": 0.00000360003, + "cache_read_input_token_cost_above_272k_tokens_priority": 8.001e-8, + "cache_creation_input_token_cost_above_272k_tokens_priority": 0.00000100002 }, "databricks/databricks-gpt-5-6-sol": { "cache_creation_input_token_cost": 0.00000500003, + "cache_creation_input_token_cost_above_272k_tokens": 0.00000999999, "cache_read_input_token_cost": 3.9998e-7, + "cache_read_input_token_cost_above_272k_tokens": 8.0003e-7, "input_cost_per_token": 0.00000400001, + "input_cost_per_token_above_272k_tokens": 0.00000800002, "input_dbu_cost_per_token": 0.000057143, "litellm_provider": "databricks", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields. Rates reflect OpenAI's promotional pricing in effect through November 21, 2026; afterwards input, cache and Batch rates are 25% higher and output rates 50% higher." }, "mode": "chat", "output_cost_per_token": 0.00001999998, + "output_cost_per_token_above_272k_tokens": 0.00003, "output_dbu_cost_per_token": 0.000285714, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supported_modalities": [ @@ -20565,23 +23174,34 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "input_cost_per_token_priority": 0.00000800002, + "output_cost_per_token_priority": 0.00004000003, + "cache_read_input_token_cost_priority": 8.0003e-7, + "cache_creation_input_token_cost_priority": 0.00000999999, + "input_cost_per_token_above_272k_tokens_priority": 0.00001599997, + "output_cost_per_token_above_272k_tokens_priority": 0.00006000001, + "cache_read_input_token_cost_above_272k_tokens_priority": 0.00000159999, + "cache_creation_input_token_cost_above_272k_tokens_priority": 0.00001999998 }, "databricks/databricks-gpt-5-6-terra": { - "cache_creation_input_token_cost": 0.00000312501, - "cache_read_input_token_cost": 2.4997e-7, - "input_cost_per_token": 0.00000249998, - "input_dbu_cost_per_token": 0.000035714, + "cache_creation_input_token_cost": 0.00000249998, + "cache_creation_input_token_cost_above_272k_tokens": 0.00000500003, + "cache_read_input_token_cost": 1.9999e-7, + "cache_read_input_token_cost_above_272k_tokens": 3.9998e-7, + "input_cost_per_token": 0.00000199997, + "input_cost_per_token_above_272k_tokens": 0.00000400001, + "input_dbu_cost_per_token": 0.000028571, "litellm_provider": "databricks", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, "mode": "chat", - "output_cost_per_token": 0.00001500002, - "output_dbu_cost_per_token": 0.000214286, + "output_cost_per_token": 0.00001200003, + "output_cost_per_token_above_272k_tokens": 0.000018, + "output_dbu_cost_per_token": 0.000171429, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supported_modalities": [ "text", @@ -20594,27 +23214,38 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "input_cost_per_token_priority": 0.00000400001, + "output_cost_per_token_priority": 0.00002399999, + "cache_read_input_token_cost_priority": 3.9998e-7, + "cache_creation_input_token_cost_priority": 0.00000500003, + "input_cost_per_token_above_272k_tokens_priority": 0.00000800002, + "output_cost_per_token_above_272k_tokens_priority": 0.00003600002, + "cache_read_input_token_cost_above_272k_tokens_priority": 8.0003e-7, + "cache_creation_input_token_cost_above_272k_tokens_priority": 0.00000999999 }, "databricks/databricks-gpt-5-mini": { "cache_creation_input_token_cost": 2.4997e-7, "cache_read_input_token_cost": 2.499e-8, - "input_cost_per_token": 2.4997000000000006e-7, + "input_cost_per_token": 2.4997e-7, "input_dbu_cost_per_token": 0.000003571, "litellm_provider": "databricks", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 0.0000019999700000000004, + "output_cost_per_token": 0.00000199997, "output_dbu_cost_per_token": 0.000028571, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_function_calling": true, "supports_prompt_caching": true, - "supports_tool_choice": true + "supports_tool_choice": true, + "input_cost_per_token_priority": 4.5003e-7, + "output_cost_per_token_priority": 0.00000360003, + "cache_read_input_token_cost_priority": 4.501e-8, + "cache_creation_input_token_cost_priority": 4.5003e-7 }, "databricks/databricks-gpt-5-nano": { "cache_creation_input_token_cost": 4.998e-8, @@ -20624,27 +23255,105 @@ "litellm_provider": "databricks", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 3.9998000000000007e-7, + "output_cost_per_token": 3.9998e-7, "output_dbu_cost_per_token": 0.000005714000000000001, "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", "supports_function_calling": true, "supports_prompt_caching": true, "supports_tool_choice": true }, + "databricks/databricks-gpt-6-1-terra": { + "cache_creation_input_token_cost": 0.00000124999, + "cache_creation_input_token_cost_above_272k_tokens": 0.00000249998, + "cache_read_input_token_cost": 4.998e-8, + "cache_read_input_token_cost_above_272k_tokens": 1.0003e-7, + "input_cost_per_token": 0.00000100002, + "input_cost_per_token_above_272k_tokens": 0.00000199997, + "input_dbu_cost_per_token": 0.000014286, + "litellm_provider": "databricks", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "metadata": { + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." + }, + "mode": "chat", + "output_cost_per_token": 0.00000500003, + "output_cost_per_token_above_272k_tokens": 0.00000750001, + "output_dbu_cost_per_token": 0.000071429, + "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true, + "input_cost_per_token_priority": 0.00000199997, + "output_cost_per_token_priority": 0.00000999999, + "cache_read_input_token_cost_priority": 1.0003e-7, + "cache_creation_input_token_cost_priority": 0.00000249998, + "input_cost_per_token_above_272k_tokens_priority": 0.00000400001, + "output_cost_per_token_above_272k_tokens_priority": 0.00001500002, + "cache_read_input_token_cost_above_272k_tokens_priority": 1.9999e-7, + "cache_creation_input_token_cost_above_272k_tokens_priority": 0.00000500003 + }, + "databricks/databricks-gpt-6-astra": { + "cache_creation_input_token_cost": 0.00001249997, + "cache_creation_input_token_cost_above_272k_tokens": 0.000025, + "cache_read_input_token_cost": 0.00000100002, + "cache_read_input_token_cost_above_272k_tokens": 0.00000199997, + "input_cost_per_token": 0.00000999999, + "input_cost_per_token_above_272k_tokens": 0.00002, + "input_dbu_cost_per_token": 0.00014286, + "litellm_provider": "databricks", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "metadata": { + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." + }, + "mode": "chat", + "output_cost_per_token": 0.00005000002, + "output_cost_per_token_above_272k_tokens": 0.0000750001, + "output_dbu_cost_per_token": 0.00071429, + "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true, + "input_cost_per_token_priority": 0.00001999998, + "output_cost_per_token_priority": 0.0000999999, + "cache_read_input_token_cost_priority": 0.00000199997, + "cache_creation_input_token_cost_priority": 0.00002500001, + "input_cost_per_token_above_272k_tokens_priority": 0.00004000003, + "output_cost_per_token_above_272k_tokens_priority": 0.0001500002, + "cache_read_input_token_cost_above_272k_tokens_priority": 0.00000400001, + "cache_creation_input_token_cost_above_272k_tokens_priority": 0.00005000002 + }, "databricks/databricks-gpt-oss-120b": { "cache_creation_input_token_cost": 1.5001e-7, "cache_read_input_token_cost": 1.5001e-7, - "input_cost_per_token": 1.5000999999999998e-7, + "input_cost_per_token": 1.5001e-7, "input_dbu_cost_per_token": 0.0000021429999999999996, "litellm_provider": "databricks", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, @@ -20661,12 +23370,11 @@ "litellm_provider": "databricks", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 3.0001999999999996e-7, + "output_cost_per_token": 3.0002e-7, "output_dbu_cost_per_token": 0.000004285999999999999, "source": "https://www.databricks.com/product/pricing/foundation-model-serving" }, @@ -20696,9 +23404,39 @@ "supports_tool_choice": true, "supports_vision": false }, + "databricks/databricks-grok-4-7": { + "cache_creation_input_token_cost": 0.00000249998, + "cache_read_input_token_cost": 6.2503e-7, + "input_cost_per_token": 0.00000249998, + "input_dbu_cost_per_token": 0.000035714, + "litellm_provider": "databricks", + "max_input_tokens": 500000, + "max_output_tokens": 500000, + "metadata": { + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." + }, + "mode": "chat", + "output_cost_per_token": 0.00000750001, + "output_dbu_cost_per_token": 0.00010714, + "source": "https://www.databricks.com/product/pricing/proprietary-foundation-model-serving", + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, "databricks/databricks-inkling": { "cache_creation_input_token_cost": 0.00000100002, "cache_read_input_token_cost": 1.7003e-7, + "deprecation_date": "2026-10-30", + "deprecation_source": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/supported-models", "input_cost_per_token": 0.00000100002, "input_dbu_cost_per_token": 0.000014286, "litellm_provider": "databricks", @@ -20709,7 +23447,7 @@ "mode": "chat", "output_cost_per_token": 0.00000404999, "output_dbu_cost_per_token": 0.000057857, - "source": "https://www.databricks.com/product/pricing/foundation-model-serving", + "source": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/supported-models", "supported_modalities": [ "text", "image" @@ -20724,6 +23462,34 @@ "supports_vision": true, "thinking_always_on": true }, + "databricks/databricks-kimi-k2-7": { + "cache_creation_input_token_cost": 9.4997e-7, + "cache_read_input_token_cost": 1.8998e-7, + "input_cost_per_token": 9.4997e-7, + "input_dbu_cost_per_token": 0.000013571, + "litellm_provider": "databricks", + "max_input_tokens": 262144, + "max_output_tokens": 262144, + "metadata": { + "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." + }, + "mode": "chat", + "output_cost_per_token": 0.00000400001, + "output_dbu_cost_per_token": 0.000057143, + "source": "https://www.databricks.com/product/pricing/foundation-model-serving", + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, "databricks/databricks-kimi-k3": { "cache_creation_input_token_cost": 0.00000299999, "cache_read_input_token_cost": 3.0002e-7, @@ -20733,7 +23499,6 @@ "token_count_framing": 100, "max_input_tokens": 1000000, "max_output_tokens": 1048576, - "max_tokens": 1048576, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Billing reads the per-token dollar fields; the '*_dbu_cost_per_token' fields are the published Databricks rates, kept for reference." }, @@ -20752,7 +23517,11 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "input_cost_per_token_priority": 0.00000525, + "output_cost_per_token_priority": 0.00002625, + "cache_read_input_token_cost_priority": 5.25e-7, + "cache_creation_input_token_cost_priority": 0.00000525 }, "databricks/databricks-llama-4-maverick": { "cache_creation_input_token_cost": 5.0001e-7, @@ -20762,12 +23531,11 @@ "litellm_provider": "databricks", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Databricks documentation now provides both DBU costs (_dbu_cost_per_token) and dollar costs(_cost_per_token)." }, "mode": "chat", - "output_cost_per_token": 0.0000015000300000000002, + "output_cost_per_token": 0.00000150003, "output_dbu_cost_per_token": 0.000021429, "source": "https://www.databricks.com/product/pricing/foundation-model-serving", "supports_tool_choice": true @@ -20775,17 +23543,16 @@ "databricks/databricks-meta-llama-3-1-8b-instruct": { "cache_creation_input_token_cost": 1.5001e-7, "cache_read_input_token_cost": 1.5001e-7, - "input_cost_per_token": 1.5000999999999998e-7, + "input_cost_per_token": 1.5001e-7, "input_dbu_cost_per_token": 0.0000021429999999999996, "litellm_provider": "databricks", "max_input_tokens": 200000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 4.5003000000000007e-7, + "output_cost_per_token": 4.5003e-7, "output_dbu_cost_per_token": 0.000006429000000000001, "source": "https://www.databricks.com/product/pricing/foundation-model-serving" }, @@ -20797,12 +23564,11 @@ "litellm_provider": "databricks", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "metadata": { "notes": "Input/output cost per token is dbu cost * $0.070, based on databricks Llama 3.1 70B conversion. Number provided for reference, '*_dbu_cost_per_token' used in actual calculation." }, "mode": "chat", - "output_cost_per_token": 0.0000015000300000000002, + "output_cost_per_token": 0.00000150003, "output_dbu_cost_per_token": 0.000021429, "source": "https://www.databricks.com/product/pricing/foundation-model-serving", "supports_tool_choice": true @@ -20838,7 +23604,6 @@ "litellm_provider": "databricks", "max_input_tokens": 262144, "max_output_tokens": 25000, - "max_tokens": 25000, "metadata": { "notes": "Costs per token are the published Global DBU rates times $0.070 per DBU. The '*_dbu_cost_per_token' fields are provided for reference; cost calculation reads the dollar '*_cost_per_token' fields." }, @@ -20856,7 +23621,11 @@ "supports_reasoning": true, "supports_tool_choice": true, "supports_vision": false, - "thinking_always_on": true + "thinking_always_on": true, + "input_cost_per_token_priority": 3.85e-7, + "output_cost_per_token_priority": 0.00000385, + "cache_read_input_token_cost_priority": 3.85e-7, + "cache_creation_input_token_cost_priority": 3.85e-7 }, "databricks/system.ai.deepseek-v4-flash-0731": { "litellm_provider": "databricks", @@ -20878,7 +23647,6 @@ "litellm_provider": "openai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00002, "output_cost_per_token_above_272k_tokens": 0.00003, @@ -20917,7 +23685,6 @@ "litellm_provider": "openai", "max_input_tokens": 400000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000075, "output_cost_per_token_above_272k_tokens": 0.0001125, @@ -20955,7 +23722,6 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 65536, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_image": 0.134, "output_cost_per_image_token": 0.00012, @@ -20983,7 +23749,7 @@ "supports_web_search": true }, "deepinfra/ByteDance/Seed-1.8": { - "max_tokens": 256000, + "max_output_tokens": 256000, "max_input_tokens": 256000, "input_cost_per_token": 2.5e-7, "output_cost_per_token": 0.000002, @@ -20999,7 +23765,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/ByteDance/Seed-2.0-code": { - "max_tokens": 256000, + "max_output_tokens": 256000, "max_input_tokens": 256000, "input_cost_per_token": 5e-7, "output_cost_per_token": 0.000003, @@ -21015,7 +23781,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/ByteDance/Seed-2.0-mini": { - "max_tokens": 256000, + "max_output_tokens": 256000, "max_input_tokens": 256000, "input_cost_per_token": 1e-7, "output_cost_per_token": 4e-7, @@ -21031,7 +23797,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/ByteDance/Seed-2.0-pro": { - "max_tokens": 256000, + "max_output_tokens": 256000, "max_input_tokens": 256000, "input_cost_per_token": 5e-7, "output_cost_per_token": 0.000003, @@ -21047,7 +23813,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Gryphe/MythoMax-L2-13b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 4e-7, @@ -21059,7 +23824,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/MiniMaxAI/MiniMax-M2.7": { - "max_tokens": 196608, + "max_output_tokens": 196608, "max_input_tokens": 196608, "input_cost_per_token": 2.5e-7, "output_cost_per_token": 0.000001, @@ -21075,7 +23840,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo": { - "max_tokens": 196608, + "max_output_tokens": 196608, "max_input_tokens": 196608, "input_cost_per_token": 3.8e-7, "output_cost_per_token": 0.0000017, @@ -21091,7 +23856,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/MiniMaxAI/MiniMax-M3": { - "max_tokens": 524288, + "max_output_tokens": 524288, "max_input_tokens": 524288, "input_cost_per_token": 2.8e-7, "output_cost_per_token": 0.0000011, @@ -21107,7 +23872,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/NousResearch/Hermes-3-Llama-3.1-405B": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 0.000001, @@ -21118,7 +23882,6 @@ "supports_function_calling": true }, "deepinfra/NousResearch/Hermes-3-Llama-3.1-70B": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 7e-7, @@ -21129,7 +23892,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/QwQ-32B": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1.5e-7, @@ -21140,7 +23902,6 @@ "supports_function_calling": true }, "deepinfra/Qwen/Qwen2.5-72B-Instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 3.6e-7, @@ -21152,7 +23913,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen2.5-7B-Instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 4e-8, @@ -21162,7 +23922,6 @@ "supports_tool_choice": false }, "deepinfra/Qwen/Qwen2.5-VL-32B-Instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 2e-7, @@ -21174,7 +23933,6 @@ "supports_function_calling": true }, "deepinfra/Qwen/Qwen3-14B": { - "max_tokens": 40960, "max_input_tokens": 40960, "max_output_tokens": 40960, "input_cost_per_token": 1.2e-7, @@ -21186,7 +23944,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3-235B-A22B": { - "max_tokens": 40960, "max_input_tokens": 40960, "max_output_tokens": 40960, "input_cost_per_token": 1.8e-7, @@ -21197,7 +23954,6 @@ "supports_function_calling": true }, "deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 9e-8, @@ -21209,7 +23965,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3-235B-A22B-Thinking-2507": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 3e-7, @@ -21220,7 +23975,6 @@ "supports_function_calling": true }, "deepinfra/Qwen/Qwen3-30B-A3B": { - "max_tokens": 40960, "max_input_tokens": 40960, "max_output_tokens": 40960, "input_cost_per_token": 1.2e-7, @@ -21232,7 +23986,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3-32B": { - "max_tokens": 40960, "max_input_tokens": 40960, "max_output_tokens": 40960, "input_cost_per_token": 8e-8, @@ -21244,7 +23997,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 4e-7, @@ -21255,7 +24007,6 @@ "supports_function_calling": true }, "deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 3e-7, @@ -21269,7 +24020,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3-Max": { - "max_tokens": 256000, + "max_output_tokens": 256000, "max_input_tokens": 256000, "input_cost_per_token": 0.0000012, "output_cost_per_token": 0.000006, @@ -21284,7 +24035,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3-Max-Thinking": { - "max_tokens": 256000, + "max_output_tokens": 256000, "max_input_tokens": 256000, "input_cost_per_token": 0.0000012, "output_cost_per_token": 0.000006, @@ -21299,7 +24050,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 9e-8, @@ -21311,7 +24061,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3-Next-80B-A3B-Thinking": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1.4e-7, @@ -21322,7 +24071,7 @@ "supports_function_calling": true }, "deepinfra/Qwen/Qwen3-VL-235B-A22B-Instruct": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 2e-7, "output_cost_per_token": 8.8e-7, @@ -21337,7 +24086,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3-VL-30B-A3B-Instruct": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 1.5e-7, "output_cost_per_token": 6e-7, @@ -21350,7 +24099,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3.5-122B-A10B": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 2.9e-7, "output_cost_per_token": 0.0000024, @@ -21364,7 +24113,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3.5-27B": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 2.6e-7, "output_cost_per_token": 0.0000026, @@ -21378,7 +24127,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3.5-35B-A3B": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 1.4e-7, "output_cost_per_token": 0.000001, @@ -21394,7 +24143,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3.5-397B-A17B": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 4.5e-7, "output_cost_per_token": 0.000003, @@ -21410,7 +24159,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3.5-9B": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 1e-7, "output_cost_per_token": 1.5e-7, @@ -21423,7 +24172,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3.6-27B": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 3.2e-7, "output_cost_per_token": 0.0000032, @@ -21437,7 +24186,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3.6-35B-A3B": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 1e-7, "output_cost_per_token": 9.5e-7, @@ -21451,7 +24200,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3.7-Max": { - "max_tokens": 256000, + "max_output_tokens": 256000, "max_input_tokens": 256000, "input_cost_per_token": 0.0000025, "output_cost_per_token": 0.0000075, @@ -21466,7 +24215,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3.8-2.4T-A95B": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 0.000002, "output_cost_per_token": 0.000006, @@ -21482,7 +24231,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3.8-27B": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 4e-7, "output_cost_per_token": 0.000003, @@ -21498,7 +24247,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Qwen/Qwen3.8-Max": { - "max_tokens": 256000, + "max_output_tokens": 256000, "max_input_tokens": 256000, "input_cost_per_token": 0.00000165, "output_cost_per_token": 0.000004951, @@ -21513,7 +24262,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Sao10K/L3-8B-Lunaris-v1-Turbo": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 4e-8, @@ -21523,7 +24271,6 @@ "supports_tool_choice": false }, "deepinfra/Sao10K/L3.1-70B-Euryale-v2.2": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 8.5e-7, @@ -21534,7 +24281,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/Sao10K/L3.3-70B-Euryale-v2.3": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 6.5e-7, @@ -21544,7 +24290,7 @@ "supports_tool_choice": false }, "deepinfra/XiaomiMiMo/MiMo-V2.5": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 4e-7, "output_cost_per_token": 0.000002, @@ -21560,7 +24306,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/XiaomiMiMo/MiMo-V2.5-Pro": { - "max_tokens": 1048576, + "max_output_tokens": 1048576, "max_input_tokens": 1048576, "input_cost_per_token": 0.000001, "output_cost_per_token": 0.000003, @@ -21576,7 +24322,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/allenai/olmOCR-7B-0725-FP8": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 2.7e-7, @@ -21586,7 +24331,6 @@ "supports_tool_choice": false }, "deepinfra/anthropic/claude-3-7-sonnet-latest": { - "max_tokens": 200000, "max_input_tokens": 200000, "max_output_tokens": 200000, "input_cost_per_token": 0.0000033, @@ -21598,7 +24342,6 @@ "supports_function_calling": true }, "deepinfra/anthropic/claude-4-opus": { - "max_tokens": 200000, "max_input_tokens": 200000, "max_output_tokens": 200000, "input_cost_per_token": 0.0000165, @@ -21609,7 +24352,6 @@ "supports_function_calling": true }, "deepinfra/anthropic/claude-4-sonnet": { - "max_tokens": 200000, "max_input_tokens": 200000, "max_output_tokens": 200000, "input_cost_per_token": 0.0000033, @@ -21623,7 +24365,7 @@ "input_cost_per_token": 0.00001, "litellm_provider": "deepinfra", "max_input_tokens": 1000000, - "max_tokens": 1000000, + "max_output_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.00005, "prompt_cache_min_tokens": 512, @@ -21638,7 +24380,7 @@ "thinking_always_on": true }, "deepinfra/anthropic/claude-haiku-4-5": { - "max_tokens": 200000, + "max_output_tokens": 200000, "max_input_tokens": 200000, "input_cost_per_token": 0.000001, "output_cost_per_token": 0.000005, @@ -21656,7 +24398,7 @@ "input_cost_per_token": 0.000005, "litellm_provider": "deepinfra", "max_input_tokens": 1000000, - "max_tokens": 1000000, + "max_output_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.000025, "prompt_cache_min_tokens": 2048, @@ -21673,7 +24415,7 @@ "input_cost_per_token": 0.000005, "litellm_provider": "deepinfra", "max_input_tokens": 1000000, - "max_tokens": 1000000, + "max_output_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.000025, "prompt_cache_min_tokens": 1024, @@ -21690,7 +24432,7 @@ "input_cost_per_token": 0.000005, "litellm_provider": "deepinfra", "max_input_tokens": 1000000, - "max_tokens": 1000000, + "max_output_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.000025, "prompt_cache_min_tokens": 512, @@ -21704,7 +24446,7 @@ "supports_vision": true }, "deepinfra/anthropic/claude-sonnet-4-6": { - "max_tokens": 1000000, + "max_output_tokens": 1000000, "max_input_tokens": 1000000, "input_cost_per_token": 0.000003, "output_cost_per_token": 0.000015, @@ -21723,7 +24465,7 @@ "input_cost_per_token": 0.000002, "litellm_provider": "deepinfra", "max_input_tokens": 1000000, - "max_tokens": 1000000, + "max_output_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.00001, "prompt_cache_min_tokens": 1024, @@ -21737,7 +24479,6 @@ "supports_vision": true }, "deepinfra/deepseek-ai/DeepSeek-R1": { - "max_tokens": 163840, "max_input_tokens": 163840, "max_output_tokens": 163840, "input_cost_per_token": 7e-7, @@ -21748,19 +24489,17 @@ "supports_function_calling": true }, "deepinfra/deepseek-ai/DeepSeek-R1-0528": { - "max_tokens": 163840, "max_input_tokens": 163840, "max_output_tokens": 163840, "input_cost_per_token": 5e-7, "output_cost_per_token": 0.00000215, - "cache_read_input_token_cost": 4e-7, + "cache_read_input_token_cost": 3.5e-7, "litellm_provider": "deepinfra", "mode": "chat", "supports_tool_choice": true, "supports_function_calling": true }, "deepinfra/deepseek-ai/DeepSeek-R1-0528-Turbo": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 0.000001, @@ -21771,7 +24510,6 @@ "supports_function_calling": true }, "deepinfra/deepseek-ai/DeepSeek-R1-Distill-Llama-70B": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-7, @@ -21781,7 +24519,6 @@ "supports_tool_choice": false }, "deepinfra/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2.7e-7, @@ -21792,7 +24529,6 @@ "supports_function_calling": true }, "deepinfra/deepseek-ai/DeepSeek-R1-Turbo": { - "max_tokens": 40960, "max_input_tokens": 40960, "max_output_tokens": 40960, "input_cost_per_token": 0.000001, @@ -21803,7 +24539,6 @@ "supports_function_calling": true }, "deepinfra/deepseek-ai/DeepSeek-V3": { - "max_tokens": 163840, "max_input_tokens": 163840, "max_output_tokens": 163840, "input_cost_per_token": 3.2e-7, @@ -21815,7 +24550,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/deepseek-ai/DeepSeek-V3-0324": { - "max_tokens": 163840, "max_input_tokens": 163840, "max_output_tokens": 163840, "input_cost_per_token": 2.4e-7, @@ -21829,12 +24563,11 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/deepseek-ai/DeepSeek-V3.1": { - "max_tokens": 163840, "max_input_tokens": 163840, "max_output_tokens": 163840, "input_cost_per_token": 2.5e-7, "output_cost_per_token": 9.5e-7, - "cache_read_input_token_cost": 2.16e-7, + "cache_read_input_token_cost": 1.3e-7, "litellm_provider": "deepinfra", "mode": "chat", "supports_tool_choice": true, @@ -21843,7 +24576,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/deepseek-ai/DeepSeek-V3.1-Terminus": { - "max_tokens": 163840, "max_input_tokens": 163840, "max_output_tokens": 163840, "input_cost_per_token": 2.7e-7, @@ -21855,7 +24587,7 @@ "supports_function_calling": true }, "deepinfra/deepseek-ai/DeepSeek-V3.2": { - "max_tokens": 163840, + "max_output_tokens": 163840, "max_input_tokens": 163840, "input_cost_per_token": 2.6e-7, "output_cost_per_token": 3.8e-7, @@ -21870,7 +24602,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/deepseek-ai/DeepSeek-V4-Flash": { - "max_tokens": 1048576, + "max_output_tokens": 1048576, "max_input_tokens": 1048576, "input_cost_per_token": 9e-8, "output_cost_per_token": 1.8e-7, @@ -21886,11 +24618,11 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/deepseek-ai/DeepSeek-V4-Flash-0731": { - "max_tokens": 1048576, + "max_output_tokens": 1048576, "max_input_tokens": 1048576, - "input_cost_per_token": 8e-8, + "input_cost_per_token": 6e-8, "output_cost_per_token": 1.8e-7, - "cache_read_input_token_cost": 1.6e-8, + "cache_read_input_token_cost": 1.5e-8, "supports_prompt_caching": true, "litellm_provider": "deepinfra", "mode": "chat", @@ -21902,7 +24634,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/deepseek-ai/DeepSeek-V4-Pro": { - "max_tokens": 1048576, + "max_output_tokens": 1048576, "max_input_tokens": 1048576, "input_cost_per_token": 0.0000013, "output_cost_per_token": 0.0000026, @@ -21917,7 +24649,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/deepseek-ai/DeepSeek-V4-Pro-0813": { - "max_tokens": 1048576, + "max_output_tokens": 1048576, "max_input_tokens": 1048576, "input_cost_per_token": 0.0000013, "output_cost_per_token": 0.0000026, @@ -21932,7 +24664,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/deepseek-ai/DeepSeek-V4.1-Flash": { - "max_tokens": 131072, "max_input_tokens": 1048576, "max_output_tokens": 131072, "input_cost_per_token": 1.4e-7, @@ -21949,7 +24680,6 @@ "source": "https://deepinfra.com/deepseek-ai/DeepSeek-V4.1-Flash" }, "deepinfra/deepseek-ai/DeepSeek-V4.1-Flash-1017": { - "max_tokens": 131072, "max_input_tokens": 1048576, "max_output_tokens": 131072, "input_cost_per_token": 1.4e-7, @@ -21966,7 +24696,6 @@ "source": "https://deepinfra.com/deepseek-ai/DeepSeek-V4.1-Flash-1017" }, "deepinfra/google/gemini-2.5-flash": { - "max_tokens": 1000000, "max_input_tokens": 1000000, "max_output_tokens": 1000000, "input_cost_per_token": 3e-7, @@ -21982,7 +24711,6 @@ "supports_audio_input": true }, "deepinfra/google/gemini-2.5-pro": { - "max_tokens": 1000000, "max_input_tokens": 1000000, "max_output_tokens": 1000000, "input_cost_per_token": 0.00000125, @@ -21997,7 +24725,7 @@ "supports_audio_input": true }, "deepinfra/google/gemini-3.1-flash-lite": { - "max_tokens": 1000000, + "max_output_tokens": 1000000, "max_input_tokens": 1000000, "input_cost_per_token": 2.5e-7, "output_cost_per_token": 0.0000015, @@ -22012,7 +24740,7 @@ "supports_audio_input": true }, "deepinfra/google/gemini-3.1-pro": { - "max_tokens": 1000000, + "max_output_tokens": 1000000, "max_input_tokens": 1000000, "input_cost_per_token": 0.000002, "output_cost_per_token": 0.000012, @@ -22027,7 +24755,7 @@ "supports_audio_input": true }, "deepinfra/google/gemini-3.5-flash": { - "max_tokens": 1000000, + "max_output_tokens": 1000000, "max_input_tokens": 1000000, "input_cost_per_token": 0.0000015, "output_cost_per_token": 0.000009, @@ -22042,7 +24770,7 @@ "supports_audio_input": true }, "deepinfra/google/gemini-3.7-flash": { - "max_tokens": 1000000, + "max_output_tokens": 1000000, "max_input_tokens": 1000000, "input_cost_per_token": 7.5e-7, "output_cost_per_token": 0.00000375, @@ -22052,12 +24780,12 @@ "supports_tool_choice": true, "supports_response_schema": true, "supports_reasoning": true, + "supports_sampling_params": false, "supports_vision": true, "source": "https://deepinfra.com/pricing", "supports_audio_input": true }, "deepinfra/google/gemma-3-12b-it": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 5e-8, @@ -22069,7 +24797,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/google/gemma-3-27b-it": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 8e-8, @@ -22081,7 +24808,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/google/gemma-3-4b-it": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 5e-8, @@ -22093,7 +24819,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/google/gemma-4-26B-A4B-it": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 7e-8, "output_cost_per_token": 3.4e-7, @@ -22107,10 +24833,10 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/google/gemma-4-31B-it": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, - "input_cost_per_token": 1.3e-7, - "output_cost_per_token": 3.8e-7, + "input_cost_per_token": 2e-7, + "output_cost_per_token": 4e-7, "litellm_provider": "deepinfra", "mode": "chat", "supports_function_calling": true, @@ -22121,7 +24847,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/google/gemma-4-31B-it-Ultra": { - "max_tokens": 131072, + "max_output_tokens": 131072, "max_input_tokens": 131072, "input_cost_per_token": 2.7e-7, "output_cost_per_token": 7.6e-7, @@ -22135,7 +24861,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/google/gemma-4-31B-it-turbo": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 9e-8, "output_cost_per_token": 3.4e-7, @@ -22150,7 +24876,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/google/gemma-4-E4B-it": { - "max_tokens": 131072, + "max_output_tokens": 131072, "max_input_tokens": 131072, "input_cost_per_token": 2e-8, "output_cost_per_token": 1e-7, @@ -22163,7 +24889,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/inclusionAI/Ling-3.0-flash": { - "max_tokens": 131072, + "max_output_tokens": 131072, "max_input_tokens": 131072, "input_cost_per_token": 6e-8, "output_cost_per_token": 1.8e-7, @@ -22179,7 +24905,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 4.9e-8, @@ -22189,7 +24914,6 @@ "supports_tool_choice": false }, "deepinfra/meta-llama/Llama-3.2-3B-Instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-8, @@ -22200,7 +24924,6 @@ "supports_function_calling": true }, "deepinfra/meta-llama/Llama-3.3-70B-Instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2.3e-7, @@ -22211,7 +24934,6 @@ "supports_function_calling": true }, "deepinfra/meta-llama/Llama-3.3-70B-Instruct-Turbo": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1e-7, @@ -22223,7 +24945,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8": { - "max_tokens": 1048576, "max_input_tokens": 1048576, "max_output_tokens": 1048576, "input_cost_per_token": 2e-7, @@ -22235,7 +24956,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct": { - "max_tokens": 327680, "max_input_tokens": 327680, "max_output_tokens": 327680, "input_cost_per_token": 1e-7, @@ -22247,7 +24967,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/meta-llama/Llama-Guard-3-8B": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 5.5e-8, @@ -22257,7 +24976,6 @@ "supports_tool_choice": false }, "deepinfra/meta-llama/Llama-Guard-4-12B": { - "max_tokens": 163840, "max_input_tokens": 163840, "max_output_tokens": 163840, "input_cost_per_token": 1.8e-7, @@ -22267,7 +24985,6 @@ "supports_tool_choice": false }, "deepinfra/meta-llama/Meta-Llama-3-8B-Instruct": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 3e-8, @@ -22278,7 +24995,6 @@ "supports_function_calling": true }, "deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 4e-7, @@ -22289,7 +25005,6 @@ "supports_function_calling": true }, "deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 4e-7, @@ -22301,7 +25016,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 3e-8, @@ -22312,7 +25026,6 @@ "supports_function_calling": true }, "deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-8, @@ -22324,7 +25037,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/meta-models/Muse-Glimmer-30B": { - "max_tokens": 131072, + "max_output_tokens": 131072, "max_input_tokens": 131072, "input_cost_per_token": 3e-7, "output_cost_per_token": 0.0000012, @@ -22340,7 +25053,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/microsoft/WizardLM-2-8x22B": { - "max_tokens": 65536, "max_input_tokens": 65536, "max_output_tokens": 65536, "input_cost_per_token": 4.8e-7, @@ -22350,7 +25062,6 @@ "supports_tool_choice": false }, "deepinfra/microsoft/phi-4": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 7e-8, @@ -22361,7 +25072,6 @@ "supports_function_calling": true }, "deepinfra/mistralai/Mistral-Nemo-Instruct-2407": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1.9e-8, @@ -22373,7 +25083,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/mistralai/Mistral-Small-24B-Instruct-2501": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 5e-8, @@ -22384,7 +25093,6 @@ "supports_function_calling": true }, "deepinfra/mistralai/Mistral-Small-3.2-24B-Instruct-2506": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 7.5e-8, @@ -22395,7 +25103,6 @@ "supports_function_calling": true }, "deepinfra/mistralai/Mixtral-8x7B-Instruct-v0.1": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 4e-7, @@ -22406,7 +25113,6 @@ "supports_function_calling": true }, "deepinfra/moonshotai/Kimi-K2-Instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 5e-7, @@ -22417,7 +25123,6 @@ "supports_function_calling": true }, "deepinfra/moonshotai/Kimi-K2-Instruct-0905": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 5e-7, @@ -22429,7 +25134,7 @@ "supports_function_calling": true }, "deepinfra/moonshotai/Kimi-K2.5": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 4.5e-7, "output_cost_per_token": 0.00000225, @@ -22445,7 +25150,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/moonshotai/Kimi-K2.6": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 7.5e-7, "output_cost_per_token": 0.0000035, @@ -22461,7 +25166,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/moonshotai/Kimi-K2.7-Code": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 6.8e-7, "output_cost_per_token": 0.0000034, @@ -22477,7 +25182,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/moonshotai/Kimi-K3": { - "max_tokens": 1048576, + "max_output_tokens": 1048576, "max_input_tokens": 1048576, "input_cost_per_token": 0.00000285, "output_cost_per_token": 0.00001425, @@ -22492,7 +25197,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 6e-7, @@ -22503,7 +25207,6 @@ "supports_function_calling": true }, "deepinfra/nvidia/Llama-3.3-Nemotron-Super-49B-v1.5": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1e-7, @@ -22514,7 +25217,7 @@ "supports_function_calling": true }, "deepinfra/nvidia/NVIDIA-Nemotron-3-Super-120B-A12B": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 8.5e-8, "output_cost_per_token": 4e-7, @@ -22528,7 +25231,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 5e-7, "output_cost_per_token": 0.0000022, @@ -22557,7 +25260,6 @@ "supports_prompt_caching": true }, "deepinfra/nvidia/NVIDIA-Nemotron-Nano-9B-v2": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 4e-8, @@ -22568,7 +25270,7 @@ "supports_function_calling": true }, "deepinfra/nvidia/Nemotron-3-Nano-30B-A3B": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 5e-8, "output_cost_per_token": 2e-7, @@ -22583,7 +25285,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/nvidia/Nemotron-Content-Safety-3.5": { - "max_tokens": 131072, + "max_output_tokens": 131072, "max_input_tokens": 131072, "input_cost_per_token": 2e-7, "output_cost_per_token": 2e-7, @@ -22593,7 +25295,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/openai/gpt-oss-120b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 3.7e-8, @@ -22605,7 +25306,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/openai/gpt-oss-120b-Turbo": { - "max_tokens": 131072, + "max_output_tokens": 131072, "max_input_tokens": 131072, "input_cost_per_token": 1.5e-7, "output_cost_per_token": 6e-7, @@ -22619,7 +25320,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/openai/gpt-oss-120b-Ultra": { - "max_tokens": 131072, + "max_output_tokens": 131072, "max_input_tokens": 131072, "input_cost_per_token": 2e-7, "output_cost_per_token": 9.5e-7, @@ -22633,7 +25334,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/openai/gpt-oss-20b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 3e-8, @@ -22645,7 +25345,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/stepfun-ai/Step-3.7-Flash": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 2e-7, "output_cost_per_token": 0.00000115, @@ -22659,7 +25359,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/tencent/Hy3": { - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262144, "input_cost_per_token": 1.4e-7, "output_cost_per_token": 5.8e-7, @@ -22675,7 +25375,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/thinkingmachines/Inkling": { - "max_tokens": 524288, + "max_output_tokens": 524288, "max_input_tokens": 524288, "input_cost_per_token": 9.5e-7, "output_cost_per_token": 0.00000405, @@ -22691,7 +25391,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/thinkingmachines/Inkling-Small": { - "max_tokens": 524288, + "max_output_tokens": 524288, "max_input_tokens": 524288, "input_cost_per_token": 4.5e-7, "output_cost_per_token": 0.0000012, @@ -22707,7 +25407,6 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/zai-org/GLM-4.5": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 4e-7, @@ -22718,7 +25417,7 @@ "supports_function_calling": true }, "deepinfra/zai-org/GLM-4.6": { - "max_tokens": 202752, + "max_output_tokens": 202752, "max_input_tokens": 202752, "input_cost_per_token": 5e-7, "output_cost_per_token": 0.000002, @@ -22734,7 +25433,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/zai-org/GLM-4.7": { - "max_tokens": 202752, + "max_output_tokens": 202752, "max_input_tokens": 202752, "input_cost_per_token": 4e-7, "output_cost_per_token": 0.00000175, @@ -22750,7 +25449,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/zai-org/GLM-4.7-Flash": { - "max_tokens": 202752, + "max_output_tokens": 202752, "max_input_tokens": 202752, "input_cost_per_token": 6e-8, "output_cost_per_token": 4e-7, @@ -22766,7 +25465,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/zai-org/GLM-5": { - "max_tokens": 202752, + "max_output_tokens": 202752, "max_input_tokens": 202752, "input_cost_per_token": 6e-7, "output_cost_per_token": 0.00000208, @@ -22782,7 +25481,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/zai-org/GLM-5.1": { - "max_tokens": 202752, + "max_output_tokens": 202752, "max_input_tokens": 202752, "input_cost_per_token": 0.00000105, "output_cost_per_token": 0.0000035, @@ -22798,7 +25497,7 @@ "source": "https://deepinfra.com/pricing" }, "deepinfra/zai-org/GLM-5.2": { - "max_tokens": 1048576, + "max_output_tokens": 1048576, "max_input_tokens": 1048576, "input_cost_per_token": 7.5e-7, "output_cost_per_token": 0.0000024, @@ -22816,11 +25515,11 @@ "deepseek-chat": { "cache_read_input_token_cost": 2.8e-8, "deprecation_date": "2026-07-24", + "deprecation_source": "https://api-docs.deepseek.com/updates", "input_cost_per_token": 2.8e-7, "litellm_provider": "deepseek", "max_input_tokens": 131072, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 4.2e-7, "source": "https://api-docs.deepseek.com/quick_start/pricing", @@ -22843,7 +25542,6 @@ "litellm_provider": "deepseek", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "off_peak_pricing": { "cache_read_input_token_cost": 3e-9, @@ -22892,11 +25590,11 @@ "deepseek-reasoner": { "cache_read_input_token_cost": 2.8e-8, "deprecation_date": "2026-07-24", + "deprecation_source": "https://api-docs.deepseek.com/updates", "input_cost_per_token": 2.8e-7, "litellm_provider": "deepseek", "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 4.2e-7, "source": "https://api-docs.deepseek.com/quick_start/pricing", @@ -22917,7 +25615,6 @@ "litellm_provider": "volcengine", "max_input_tokens": 98304, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0, "supports_assistant_prefill": true, @@ -22934,7 +25631,6 @@ "litellm_provider": "deepseek", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "off_peak_pricing": { "cache_read_input_token_cost": 3e-9, @@ -22988,7 +25684,6 @@ "litellm_provider": "deepseek", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "off_peak_pricing": { "cache_read_input_token_cost": 3e-9, @@ -23042,7 +25737,6 @@ "litellm_provider": "deepseek", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "off_peak_pricing": { "cache_read_input_token_cost": 2.2e-8, @@ -23090,11 +25784,11 @@ }, "deepseek.r1-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-r1.html", "input_cost_per_token": 0.00000135, "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000054, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-r1.html", @@ -23104,11 +25798,11 @@ }, "deepseek.v3-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-1.html", "input_cost_per_token": 5.8e-7, "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.00000168, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-1.html", @@ -23123,9 +25817,8 @@ "input_cost_per_token_flex": 3.1e-7, "input_cost_per_token_priority": 0.000001085, "litellm_provider": "bedrock_converse", - "max_input_tokens": 164000, + "max_input_tokens": 156000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.00000185, "output_cost_per_token_batches": 9.25e-7, @@ -23135,7 +25828,7 @@ "supports_reasoning": true, "supports_native_structured_output": true, "supports_tool_choice": true, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/us-east-1/index.json", + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-v3-2.md", "supports_audio_input": false, "supports_response_schema": true, "supports_vision": false @@ -23144,12 +25837,12 @@ "cache_creation_input_token_cost": 0, "cache_read_input_token_cost": 2.8e-8, "deprecation_date": "2026-07-24", + "deprecation_source": "https://api-docs.deepseek.com/updates", "input_cost_per_token": 2.8e-7, "input_cost_per_token_cache_hit": 2.8e-8, "litellm_provider": "deepseek", "max_input_tokens": 131072, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 4.2e-7, "source": "https://api-docs.deepseek.com/quick_start/pricing", @@ -23172,7 +25865,6 @@ "litellm_provider": "deepseek", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2.8e-7, "supports_assistant_prefill": true, @@ -23188,7 +25880,6 @@ "litellm_provider": "deepseek", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "off_peak_pricing": { "cache_read_input_token_cost": 3e-9, @@ -23241,7 +25932,6 @@ "litellm_provider": "deepseek", "max_input_tokens": 65536, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000219, "supports_assistant_prefill": true, @@ -23253,12 +25943,12 @@ "deepseek/deepseek-reasoner": { "cache_read_input_token_cost": 2.8e-8, "deprecation_date": "2026-07-24", + "deprecation_source": "https://api-docs.deepseek.com/updates", "input_cost_per_token": 2.8e-7, "input_cost_per_token_cache_hit": 2.8e-8, "litellm_provider": "deepseek", "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 4.2e-7, "source": "https://api-docs.deepseek.com/quick_start/pricing", @@ -23283,7 +25973,6 @@ "litellm_provider": "deepseek", "max_input_tokens": 65536, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000011, "supports_assistant_prefill": true, @@ -23298,7 +25987,6 @@ "litellm_provider": "deepseek", "max_input_tokens": 163840, "max_output_tokens": 163840, - "max_tokens": 163840, "mode": "chat", "output_cost_per_token": 4e-7, "supports_assistant_prefill": true, @@ -23315,7 +26003,6 @@ "litellm_provider": "deepseek", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "off_peak_pricing": { "cache_read_input_token_cost": 3e-9, @@ -23359,7 +26046,9 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "token_count_framing": 23, + "token_count_tool_framing": 12 }, "deepseek/deepseek-v4-flash-vision-exp": { "cache_creation_input_token_cost": 0, @@ -23369,7 +26058,6 @@ "litellm_provider": "deepseek", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "off_peak_pricing": { "cache_read_input_token_cost": 3e-9, @@ -23423,7 +26111,6 @@ "litellm_provider": "deepseek", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "off_peak_pricing": { "cache_read_input_token_cost": 2.2e-8, @@ -23467,7 +26154,9 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_vision": false + "supports_vision": false, + "token_count_framing": 76, + "token_count_tool_framing": 75 }, "deepseek/deepseek-v4.1-flash": { "cache_creation_input_token_cost": 0, @@ -23501,7 +26190,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000003597, "supports_function_calling": true, @@ -23521,7 +26209,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000011, "source": "https://aws.amazon.com/nova/pricing/", @@ -23540,7 +26227,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 300000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 3.12e-7, "supports_function_calling": true, @@ -23556,7 +26242,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 1.84e-7, "supports_function_calling": true, @@ -23572,7 +26257,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 300000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 0.0000042, "output_cost_per_token_flex": 0.0000021, @@ -23589,7 +26273,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000004, "supports_assistant_prefill": true, @@ -23607,7 +26290,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000015, "supports_function_calling": true, @@ -23623,7 +26305,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -23642,7 +26323,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -23662,7 +26342,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000075, "supports_function_calling": true, @@ -23680,7 +26359,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000055, "search_context_cost_per_query": { @@ -23718,7 +26396,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000055, "search_context_cost_per_query": { @@ -23754,11 +26431,11 @@ "cache_read_input_token_cost": 1.1e-7, "input_cost_per_token": 0.0000011, "deprecation_date": "2026-10-15", + "successor_model": "eu.anthropic.claude-haiku-5-5", "litellm_provider": "bedrock_converse", "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000055, "source": "https://aws.amazon.com/bedrock/pricing/", @@ -23775,7 +26452,11 @@ "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, "input_cost_per_token_batches": 5.5e-7, - "output_cost_per_token_batches": 0.00000275 + "output_cost_per_token_batches": 0.00000275, + "token_count_model": { + "model": "anthropic.claude-haiku-4-5-20251001-v1:0", + "litellm_provider": "bedrock" + } }, "eu.anthropic.claude-haiku-5-5": { "input_cost_per_token_above_100k_tokens": 5.5e-7, @@ -23792,7 +26473,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5.5e-7, "search_context_cost_per_query": { @@ -23831,7 +26511,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000075, "search_context_cost_per_query": { @@ -23849,7 +26528,12 @@ "supports_tool_choice": true, "supports_vision": true, "prompt_cache_min_tokens": 1024, - "deprecation_date": "2027-01-08" + "deprecation_date": "2027-01-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "token_count_model": { + "model": "anthropic.claude-opus-4-1-20250805-v1:0", + "litellm_provider": "bedrock" + } }, "eu.anthropic.claude-opus-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00001875, @@ -23858,7 +26542,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000075, "search_context_cost_per_query": { @@ -23886,7 +26569,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -23908,7 +26590,11 @@ "bedrock_output_config_effort_ceiling": "high", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-5-20251101-v1:0", + "litellm_provider": "bedrock" + } }, "eu.anthropic.claude-opus-4-6-v1": { "supports_adaptive_thinking": true, @@ -23921,7 +26607,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -23944,7 +26629,11 @@ "bedrock_output_config_effort_ceiling": "max", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-6-v1", + "litellm_provider": "bedrock" + } }, "eu.anthropic.claude-opus-4-7": { "bedrock_converse_supports_strict_tools": false, @@ -23957,7 +26646,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -23982,7 +26670,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 2048, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-7", + "litellm_provider": "bedrock_mantle", + "region": "eu-west-1" + } }, "eu.anthropic.claude-opus-4-8": { "bedrock_converse_supports_strict_tools": false, @@ -23996,7 +26689,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -24022,7 +26714,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-8", + "litellm_provider": "bedrock_mantle", + "region": "eu-west-1" + } }, "eu.anthropic.claude-opus-5": { "bedrock_converse_supports_strict_tools": false, @@ -24036,7 +26733,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -24060,7 +26756,14 @@ "supports_output_config": true, "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 512, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/eu-west-1/index.json", + "token_count_model": { + "model": "anthropic.claude-opus-5", + "litellm_provider": "bedrock_mantle", + "region": "eu-west-1" + }, + "input_cost_per_token_batches": 0.00000275, + "output_cost_per_token_batches": 0.00001375 }, "eu.anthropic.claude-opus-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -24074,7 +26777,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000022, "search_context_cost_per_query": { @@ -24106,6 +26808,8 @@ "cache_creation_input_token_cost": 0.00000375, "cache_read_input_token_cost": 3e-7, "deprecation_date": "2026-10-14", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "successor_model": "eu.anthropic.claude-sonnet-5", "input_cost_per_token": 0.000003, "input_cost_per_token_above_200k_tokens": 0.000006, "output_cost_per_token_above_200k_tokens": 0.0000225, @@ -24114,7 +26818,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "search_context_cost_per_query": { @@ -24133,7 +26836,11 @@ "supports_vision": true, "bedrock_converse_supports_strict_tools": false, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-20250514-v1:0", + "litellm_provider": "bedrock" + } }, "eu.anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.000004125, @@ -24146,11 +26853,12 @@ "cache_creation_input_token_cost_above_1hr_above_200k_tokens": 0.0000132, "cache_read_input_token_cost_above_200k_tokens": 6.6e-7, "deprecation_date": "2027-04-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "successor_model": "eu.anthropic.claude-sonnet-5-5", "litellm_provider": "bedrock_converse", "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000165, "search_context_cost_per_query": { @@ -24172,7 +26880,11 @@ "prompt_cache_min_tokens": 1024, "input_cost_per_token_batches": 0.00000165, "output_cost_per_token_batches": 0.00000825, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-5-20250929-v1:0", + "litellm_provider": "bedrock" + } }, "eu.anthropic.claude-sonnet-4-6": { "supports_adaptive_thinking": true, @@ -24185,7 +26897,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000165, "search_context_cost_per_query": { @@ -24207,7 +26918,11 @@ "supports_output_config": true, "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-6", + "litellm_provider": "bedrock" + } }, "eu.anthropic.claude-sonnet-5": { "bedrock_converse_supports_strict_tools": false, @@ -24219,7 +26934,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000011, "search_context_cost_per_query": { @@ -24247,7 +26961,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-5", + "litellm_provider": "bedrock_mantle", + "region": "eu-west-1" + } }, "eu.anthropic.claude-sonnet-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -24259,7 +26978,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000011, "search_context_cost_per_query": { @@ -24297,7 +27015,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 163840, "max_output_tokens": 163840, - "max_tokens": 163840, "mode": "chat", "output_cost_per_token": 0.00000222, "output_cost_per_token_flex": 0.00000111, @@ -24311,11 +27028,11 @@ }, "eu.meta.llama3-2-1b-instruct-v1:0": { "deprecation_date": "2026-07-07", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-2-1b-instruct.md", "input_cost_per_token": 1.3e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 1.3e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-2-1b-instruct.md", @@ -24324,11 +27041,11 @@ }, "eu.meta.llama3-2-3b-instruct-v1:0": { "deprecation_date": "2026-07-07", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-2-3b-instruct.md", "input_cost_per_token": 1.9e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 1.9e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-2-3b-instruct.md", @@ -24340,7 +27057,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-pixtral-large.md", @@ -24348,10 +27064,13 @@ "supports_tool_choice": false }, "eu.twelvelabs.pegasus-1-2-v1:0": { + "deprecation_date": "2027-03-22", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-twelvelabs-pegasus-v1-2.md", "input_cost_per_video_per_second": 0.00049, "output_cost_per_token": 0.0000075, "litellm_provider": "bedrock", "mode": "chat", + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-twelvelabs-pegasus-v1-2.md", "supports_video_input": true }, "fal_ai/fal-ai/moondream3-preview/query": { @@ -24370,18 +27089,15 @@ "litellm_provider": "featherless_ai", "max_input_tokens": 32768, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat" }, "featherless_ai/featherless-ai/Qwerky-QwQ-32B": { "litellm_provider": "featherless_ai", "max_input_tokens": 32768, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/chronos-hermes-13b-v2": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -24390,7 +27106,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/code-llama-13b": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 2e-7, @@ -24399,7 +27114,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/code-llama-13b-instruct": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 2e-7, @@ -24408,7 +27122,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/code-llama-13b-python": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 2e-7, @@ -24417,7 +27130,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/code-llama-34b": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 9e-7, @@ -24426,7 +27138,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/code-llama-34b-instruct": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 9e-7, @@ -24435,7 +27146,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/code-llama-34b-python": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 9e-7, @@ -24444,7 +27154,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/code-llama-70b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 9e-7, @@ -24453,7 +27162,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/code-llama-70b-instruct": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 9e-7, @@ -24462,7 +27170,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/code-llama-70b-python": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 9e-7, @@ -24471,7 +27178,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/code-llama-7b": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 2e-7, @@ -24480,7 +27186,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/code-llama-7b-instruct": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 2e-7, @@ -24489,7 +27194,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/code-llama-7b-python": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 2e-7, @@ -24498,7 +27202,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/code-qwen-1p5-7b": { - "max_tokens": 65536, "max_input_tokens": 65536, "max_output_tokens": 65536, "input_cost_per_token": 2e-7, @@ -24507,7 +27210,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/codegemma-2b": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 1e-7, @@ -24516,7 +27218,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/codegemma-7b": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 2e-7, @@ -24525,7 +27226,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/cogito-671b-v2-p1": { - "max_tokens": 163840, "max_input_tokens": 163840, "max_output_tokens": 163840, "input_cost_per_token": 0.0000012, @@ -24534,7 +27234,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-3b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1e-7, @@ -24543,7 +27242,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-70b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -24552,7 +27250,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/cogito-v1-preview-llama-8b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-7, @@ -24561,7 +27258,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-14b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-7, @@ -24570,7 +27266,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/cogito-v1-preview-qwen-32b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -24579,7 +27274,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/dbrx-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 0.0000012, @@ -24588,7 +27282,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-coder-1b-base": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 1e-7, @@ -24597,7 +27290,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-coder-33b-instruct": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 9e-7, @@ -24606,7 +27298,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -24615,7 +27306,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-base-v1p5": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -24624,7 +27314,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-coder-7b-instruct-v1p5": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -24637,7 +27326,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 65536, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://fireworks.ai/pricing", @@ -24646,7 +27334,6 @@ "supports_tool_choice": false }, "fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-base": { - "max_tokens": 163840, "max_input_tokens": 163840, "max_output_tokens": 163840, "input_cost_per_token": 5e-7, @@ -24655,7 +27342,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-coder-v2-lite-instruct": { - "max_tokens": 163840, "max_input_tokens": 163840, "max_output_tokens": 163840, "input_cost_per_token": 5e-7, @@ -24664,7 +27350,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-prover-v2": { - "max_tokens": 163840, "max_input_tokens": 163840, "max_output_tokens": 163840, "input_cost_per_token": 0.0000012, @@ -24677,7 +27362,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 163840, "max_output_tokens": 20480, - "max_tokens": 20480, "mode": "chat", "output_cost_per_token": 0.000008, "source": "https://fireworks.ai/pricing", @@ -24689,7 +27373,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 163840, "max_output_tokens": 160000, - "max_tokens": 160000, "mode": "chat", "output_cost_per_token": 0.000008, "source": "https://fireworks.ai/pricing", @@ -24697,7 +27380,6 @@ "supports_tool_choice": false }, "fireworks_ai/accounts/fireworks/models/deepseek-r1-0528-distill-qwen3-8b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-7, @@ -24710,7 +27392,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 163840, "max_output_tokens": 20480, - "max_tokens": 20480, "mode": "chat", "output_cost_per_token": 0.00000219, "source": "https://fireworks.ai/pricing", @@ -24718,7 +27399,6 @@ "supports_tool_choice": false }, "fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-70b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -24727,7 +27407,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-llama-8b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-7, @@ -24736,7 +27415,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-14b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-7, @@ -24745,7 +27423,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-1p5b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1e-7, @@ -24754,7 +27431,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-32b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -24763,7 +27439,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-r1-distill-qwen-7b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-7, @@ -24772,7 +27447,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-v2-lite-chat": { - "max_tokens": 163840, "max_input_tokens": 163840, "max_output_tokens": 163840, "input_cost_per_token": 5e-7, @@ -24781,7 +27455,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/deepseek-v2p5": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 0.0000012, @@ -24794,7 +27467,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://fireworks.ai/pricing", @@ -24806,7 +27478,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 163840, "max_output_tokens": 163840, - "max_tokens": 163840, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://fireworks.ai/models/fireworks/deepseek-v3-0324", @@ -24818,7 +27489,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000168, "source": "https://fireworks.ai/pricing", @@ -24831,7 +27501,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000168, "source": "https://fireworks.ai/pricing", @@ -24844,7 +27513,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 163840, "max_output_tokens": 163840, - "max_tokens": 163840, "mode": "chat", "output_cost_per_token": 0.00000168, "source": "https://fireworks.ai/models/fireworks/deepseek-v3p2", @@ -24855,11 +27523,11 @@ }, "fireworks_ai/accounts/fireworks/models/deepseek-v4-flash": { "cache_read_input_token_cost": 2.8e-8, + "deprecation_date": "2026-08-14", "input_cost_per_token": 1.4e-7, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 2.8e-7, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -24878,7 +27546,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 6.6e-7, "output_cost_per_token_priority": 8.25e-7, @@ -24897,7 +27564,7 @@ "input_cost_per_token_priority": 2.75e-7, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 6.6e-7, "output_cost_per_token_priority": 8.25e-7, @@ -24916,7 +27583,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_priority": 0.0000012, @@ -24936,7 +27602,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00000396, "output_cost_per_token_priority": 0.00000495, @@ -24953,14 +27618,15 @@ "input_cost_per_token": 3e-7, "input_cost_per_token_priority": 3.75e-7, "litellm_provider": "fireworks_ai", + "token_count_framing": 23, "max_input_tokens": 1048576, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_priority": 0.0000015, "source": "https://docs.fireworks.ai/serverless/pricing", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, @@ -24975,20 +27641,38 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_priority": 0.0000015, "source": "https://api.fireworks.ai/v1/serverless/models?format=nested", - "supports_function_calling": false, + "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, - "supports_tool_choice": false, + "supports_tool_choice": true, + "supports_vision": true + }, + "fireworks_ai/accounts/fireworks/models/deepseek-v4p1-flash-1017-us": { + "cache_read_input_token_cost": 9e-9, + "cache_read_input_token_cost_priority": 1.125e-8, + "input_cost_per_token": 4.5e-7, + "input_cost_per_token_priority": 5.625e-7, + "litellm_provider": "fireworks_ai", + "max_input_tokens": 1048576, + "max_output_tokens": 393216, + "mode": "chat", + "output_cost_per_token": 0.0000018, + "output_cost_per_token_priority": 0.00000225, + "source": "https://docs.fireworks.ai/serverless/us-only-serverless", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, "supports_vision": true }, "fireworks_ai/accounts/fireworks/models/devstral-small-2505": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -24997,7 +27681,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/dobby-mini-unhinged-plus-llama-3-1-8b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-7, @@ -25006,7 +27689,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/dobby-unhinged-llama-3-3-70b-new": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -25015,7 +27697,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/dolphin-2-9-2-qwen2-72b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -25024,7 +27705,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/dolphin-2p6-mixtral-8x7b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 5e-7, @@ -25044,13 +27724,13 @@ "output_cost_per_token_priority": 0.00001875, "source": "https://api.fireworks.ai/v1/serverless/models", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true }, "fireworks_ai/accounts/fireworks/models/ernie-4p5-21b-a3b-pt": { - "max_tokens": 4096, "max_input_tokens": 131072, "max_output_tokens": 4096, "input_cost_per_token": 1e-7, @@ -25059,7 +27739,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/ernie-4p5-300b-a47b-pt": { - "max_tokens": 4096, "max_input_tokens": 131072, "max_output_tokens": 4096, "input_cost_per_token": 1e-7, @@ -25068,7 +27747,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/fare-20b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -25077,7 +27755,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/firefunction-v1": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 5e-7, @@ -25090,7 +27767,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://fireworks.ai/pricing", @@ -25099,7 +27775,6 @@ "supports_tool_choice": true }, "fireworks_ai/accounts/fireworks/models/firellava-13b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -25108,7 +27783,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/firesearch-ocr-v6": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 2e-7, @@ -25117,7 +27791,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/flux-1-dev": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 1e-7, @@ -25126,7 +27799,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/flux-1-dev-controlnet-union": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 1e-9, @@ -25135,7 +27807,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/flux-1-schnell": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 1e-7, @@ -25144,7 +27815,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/gemma-2b-it": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 1e-7, @@ -25153,7 +27823,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/gemma-3-27b-it": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -25162,7 +27831,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/gemma-7b": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 2e-7, @@ -25171,7 +27839,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/gemma-7b-it": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 2e-7, @@ -25180,7 +27847,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/gemma2-9b-it": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 2e-7, @@ -25193,7 +27859,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 96000, - "max_tokens": 96000, "mode": "chat", "output_cost_per_token": 0.00000219, "source": "https://fireworks.ai/models/fireworks/glm-4p5", @@ -25207,7 +27872,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 96000, - "max_tokens": 96000, "mode": "chat", "output_cost_per_token": 8.8e-7, "source": "https://artificialanalysis.ai/models/glm-4-5-air", @@ -25217,7 +27881,6 @@ "supports_tool_choice": true }, "fireworks_ai/accounts/fireworks/models/glm-4p5v": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 0.0000012, @@ -25232,7 +27895,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 202752, "max_output_tokens": 202800, - "max_tokens": 202800, "mode": "chat", "source": "https://fireworks.ai/pricing", "supports_function_calling": true, @@ -25246,7 +27908,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 202752, "max_output_tokens": 202800, - "max_tokens": 202800, "mode": "chat", "output_cost_per_token": 0.0000022, "source": "https://fireworks.ai/models/fireworks/glm-4p7", @@ -25261,7 +27922,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 202752, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -25275,12 +27935,12 @@ "cache_read_input_token_cost": 1.4e-7, "cache_read_input_token_cost_priority": 1.75e-7, "deprecation_date": "2026-09-25", + "successor_model": "fireworks_ai/accounts/fireworks/models/glm-5p3", "input_cost_per_token": 0.0000014, "input_cost_per_token_priority": 0.00000175, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "output_cost_per_token_priority": 0.0000055, @@ -25299,12 +27959,12 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000044, "output_cost_per_token_priority": 0.0000055, "source": "https://api.fireworks.ai/v1/serverless/models", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -25317,12 +27977,13 @@ "input_cost_per_token_priority": 1.875e-7, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 5e-7, "output_cost_per_token_priority": 6.25e-7, "source": "https://api.fireworks.ai/v1/serverless/models", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true @@ -25330,16 +27991,16 @@ "fireworks_ai/accounts/fireworks/models/gpt-oss-120b": { "cache_read_input_token_cost": 1.5e-8, "cache_read_input_token_cost_priority": 1.8e-8, + "deprecation_date": "2026-11-07", "input_cost_per_token": 1.5e-7, "input_cost_per_token_priority": 1.8e-7, "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_priority": 7.2e-7, - "source": "https://api.fireworks.ai/v1/serverless/models", + "source": "https://api.fireworks.ai/v1/serverless/models?format=nested", "supports_function_calling": true, "supports_reasoning": true, "supports_response_schema": true, @@ -25352,7 +28013,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 3e-7, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -25363,7 +28023,6 @@ "supports_vision": false }, "fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-120b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 0.0000012, @@ -25372,7 +28031,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-20b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 5e-7, @@ -25381,7 +28039,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/hermes-2-pro-mistral-7b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -25392,22 +28049,23 @@ "fireworks_ai/accounts/fireworks/models/inkling": { "cache_read_input_token_cost": 1.7e-7, "cache_read_input_token_cost_priority": 1.7e-7, + "deprecation_date": "2026-11-07", "input_cost_per_token": 0.000001, "input_cost_per_token_priority": 0.000001, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.00000405, "output_cost_per_token_priority": 0.00000405, "source": "https://api.fireworks.ai/v1/serverless/models?format=nested", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true }, "fireworks_ai/accounts/fireworks/models/internvl3-38b": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 9e-7, @@ -25416,7 +28074,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/internvl3-78b": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 9e-7, @@ -25425,7 +28082,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/internvl3-8b": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 2e-7, @@ -25434,7 +28090,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/kat-coder": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 9e-7, @@ -25443,7 +28098,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/kat-dev-32b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -25452,7 +28106,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/kat-dev-72b-exp": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -25465,7 +28118,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://fireworks.ai/models/fireworks/kimi-k2-instruct", @@ -25478,7 +28130,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://app.fireworks.ai/models/fireworks/kimi-k2-instruct-0905", @@ -25491,7 +28142,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://fireworks.ai/pricing", @@ -25506,7 +28156,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000003, "source": "https://fireworks.ai/pricing", @@ -25523,7 +28172,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000004, "output_cost_per_token_priority": 0.000006, @@ -25543,7 +28191,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000004, "output_cost_per_token_priority": 0.000006, @@ -25562,7 +28209,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_priority": 0.00001875, @@ -25573,13 +28219,13 @@ ], "source": "https://api.fireworks.ai/v1/serverless/models", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true }, "fireworks_ai/accounts/fireworks/models/llama-guard-2-8b": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 2e-7, @@ -25588,7 +28234,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-guard-3-1b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1e-7, @@ -25597,7 +28242,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-guard-3-8b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-7, @@ -25606,7 +28250,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-v2-13b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -25615,7 +28258,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-v2-13b-chat": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -25624,7 +28266,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-v2-70b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 1e-7, @@ -25633,7 +28274,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-v2-70b-chat": { - "max_tokens": 2048, "max_input_tokens": 2048, "max_output_tokens": 2048, "input_cost_per_token": 9e-7, @@ -25642,7 +28282,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-v2-7b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -25651,7 +28290,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-v2-7b-chat": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -25660,7 +28298,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 9e-7, @@ -25669,7 +28306,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct-hf": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 9e-7, @@ -25678,7 +28314,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-v3-8b": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 2e-7, @@ -25687,7 +28322,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-v3-8b-instruct-hf": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 2e-7, @@ -25700,7 +28334,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000003, "source": "https://fireworks.ai/pricing", @@ -25709,7 +28342,6 @@ "supports_tool_choice": true }, "fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct-long": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 1e-7, @@ -25718,7 +28350,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -25727,7 +28358,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llama-v3p1-70b-instruct-1b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 1e-7, @@ -25740,7 +28370,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 1e-7, "source": "https://fireworks.ai/pricing", @@ -25749,7 +28378,6 @@ "supports_tool_choice": false }, "fireworks_ai/accounts/fireworks/models/llama-v3p1-nemotron-70b-instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -25762,7 +28390,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 2e-7, "source": "https://fireworks.ai/pricing", @@ -25772,7 +28399,6 @@ "supports_vision": true }, "fireworks_ai/accounts/fireworks/models/llama-v3p2-1b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1e-7, @@ -25785,7 +28411,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 1e-7, "source": "https://fireworks.ai/pricing", @@ -25794,7 +28419,6 @@ "supports_tool_choice": false }, "fireworks_ai/accounts/fireworks/models/llama-v3p2-3b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1e-7, @@ -25807,7 +28431,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 1e-7, "source": "https://fireworks.ai/pricing", @@ -25820,7 +28443,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://fireworks.ai/pricing", @@ -25829,7 +28451,6 @@ "supports_vision": true }, "fireworks_ai/accounts/fireworks/models/llama-v3p3-70b-instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -25842,7 +28463,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 8.8e-7, "source": "https://fireworks.ai/pricing", @@ -25854,7 +28474,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 6e-7, "source": "https://fireworks.ai/pricing", @@ -25862,7 +28481,6 @@ "supports_tool_choice": false }, "fireworks_ai/accounts/fireworks/models/llamaguard-7b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -25871,7 +28489,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/llava-yi-34b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 9e-7, @@ -25880,7 +28497,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/minimax-m1-80k": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 1e-7, @@ -25889,7 +28505,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/minimax-m2": { - "max_tokens": 4096, "max_input_tokens": 196608, "max_output_tokens": 4096, "input_cost_per_token": 3e-7, @@ -25903,7 +28518,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 196608, "max_output_tokens": 204800, - "max_tokens": 204800, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://fireworks.ai/models/fireworks/minimax-m2p1", @@ -25918,7 +28532,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 196608, "max_output_tokens": 196608, - "max_tokens": 196608, "mode": "chat", "output_cost_per_token_priority": 0.0000012, "source": "https://api.fireworks.ai/v1/serverless/models", @@ -25934,7 +28547,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 512000, "max_output_tokens": 512000, - "max_tokens": 512000, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_priority": 0.0000018, @@ -25943,10 +28555,28 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": false + "supports_vision": true + }, + "fireworks_ai/accounts/fireworks/models/minimax-m3p1-flash": { + "cache_read_input_token_cost": 1.5e-8, + "cache_read_input_token_cost_priority": 2.25e-8, + "input_cost_per_token": 1.5e-7, + "input_cost_per_token_priority": 2.25e-7, + "litellm_provider": "fireworks_ai", + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, + "mode": "chat", + "output_cost_per_token": 6e-7, + "output_cost_per_token_priority": 9e-7, + "source": "https://platform.minimax.io/docs/guides/pricing", + "supports_function_calling": true, + "supports_mid_conversation_system": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true }, "fireworks_ai/accounts/fireworks/models/ministral-3-14b-instruct-2512": { - "max_tokens": 256000, "max_input_tokens": 256000, "max_output_tokens": 256000, "input_cost_per_token": 2e-7, @@ -25955,7 +28585,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/ministral-3-3b-instruct-2512": { - "max_tokens": 256000, "max_input_tokens": 256000, "max_output_tokens": 256000, "input_cost_per_token": 1e-7, @@ -25964,7 +28593,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/ministral-3-8b-instruct-2512": { - "max_tokens": 256000, "max_input_tokens": 256000, "max_output_tokens": 256000, "input_cost_per_token": 2e-7, @@ -25973,7 +28601,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/mistral-7b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -25982,7 +28609,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-4k": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -25991,7 +28617,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v0p2": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26000,7 +28625,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/mistral-7b-instruct-v3": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26009,7 +28633,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/mistral-7b-v0p2": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26018,7 +28641,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/mistral-large-3-fp8": { - "max_tokens": 256000, "max_input_tokens": 256000, "max_output_tokens": 256000, "input_cost_per_token": 0.0000012, @@ -26027,7 +28649,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/mistral-nemo-base-2407": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 2e-7, @@ -26036,7 +28657,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/mistral-nemo-instruct-2407": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 2e-7, @@ -26045,7 +28665,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/mistral-small-24b-instruct-2501": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 9e-7, @@ -26054,7 +28673,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/mixtral-8x22b": { - "max_tokens": 65536, "max_input_tokens": 65536, "max_output_tokens": 65536, "input_cost_per_token": 0.0000012, @@ -26063,7 +28681,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/mixtral-8x22b-instruct": { - "max_tokens": 65536, "max_input_tokens": 65536, "max_output_tokens": 65536, "input_cost_per_token": 0.0000012, @@ -26076,7 +28693,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 65536, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://fireworks.ai/pricing", @@ -26085,7 +28701,6 @@ "supports_tool_choice": true }, "fireworks_ai/accounts/fireworks/models/mixtral-8x7b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 5e-7, @@ -26094,7 +28709,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 5e-7, @@ -26103,7 +28717,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct-hf": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 5e-7, @@ -26120,7 +28733,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000015, "output_cost_per_token_priority": 0.00000225, @@ -26133,17 +28745,21 @@ }, "fireworks_ai/accounts/fireworks/models/muse-spark-open": { "cache_read_input_token_cost": 1.5e-7, + "cache_read_input_token_cost_priority": 2.25e-7, "input_cost_per_token": 0.00000125, + "input_cost_per_token_priority": 0.000001875, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.00000425, - "source": "https://fireworks.ai/models/fireworks/muse-spark-open", + "output_cost_per_token_priority": 0.000006375, + "source": "https://docs.fireworks.ai/serverless/pricing", "supports_function_calling": true, + "supports_mid_conversation_system": true, + "supports_reasoning": true, "supports_vision": true }, "fireworks_ai/accounts/fireworks/models/mythomax-l2-13b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -26154,17 +28770,18 @@ "fireworks_ai/accounts/fireworks/models/nemotron-3-ultra-nvfp4": { "cache_read_input_token_cost": 1.2e-7, "cache_read_input_token_cost_priority": 1.5e-7, + "deprecation_date": "2026-11-07", "input_cost_per_token": 6e-7, "input_cost_per_token_priority": 7.5e-7, "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000024, "output_cost_per_token_priority": 0.000003, - "source": "https://api.fireworks.ai/v1/serverless/models", + "source": "https://api.fireworks.ai/v1/serverless/models?format=nested", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -26173,16 +28790,16 @@ "fireworks_ai/accounts/fireworks/models/nemotron-lightning-3p5-30b-a3b": { "cache_read_input_token_cost": 1e-8, "cache_read_input_token_cost_priority": 1.25e-8, + "deprecation_date": "2026-11-07", "input_cost_per_token": 5e-8, "input_cost_per_token_priority": 6.25e-8, "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 2e-7, "output_cost_per_token_priority": 2.5e-7, - "source": "https://docs.fireworks.ai/serverless/pricing", + "source": "https://api.fireworks.ai/v1/serverless/models?format=nested", "supports_function_calling": true, "supports_reasoning": true, "supports_response_schema": true, @@ -26190,7 +28807,6 @@ "supports_vision": false }, "fireworks_ai/accounts/fireworks/models/nemotron-nano-v2-12b-vl": { - "max_tokens": 4096, "max_input_tokens": 131072, "max_output_tokens": 4096, "input_cost_per_token": 1e-7, @@ -26199,7 +28815,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/nous-capybara-7b-v1p9": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26208,7 +28823,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/nous-hermes-2-mixtral-8x7b-dpo": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 5e-7, @@ -26217,7 +28831,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/nous-hermes-2-yi-34b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 9e-7, @@ -26226,7 +28839,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-13b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -26235,7 +28847,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-70b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 9e-7, @@ -26244,7 +28855,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/nous-hermes-llama2-7b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -26253,7 +28863,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-12b-v2": { - "max_tokens": 131072, "max_input_tokens": 128000, "max_output_tokens": 131072, "input_cost_per_token": 2e-7, @@ -26262,7 +28871,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-9b-v2": { - "max_tokens": 131072, "max_input_tokens": 128000, "max_output_tokens": 131072, "input_cost_per_token": 2e-7, @@ -26271,7 +28879,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/openchat-3p5-0106-7b": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 2e-7, @@ -26280,7 +28887,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/openhermes-2-mistral-7b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26289,7 +28895,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/openhermes-2p5-mistral-7b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26298,7 +28903,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/openorca-7b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26307,7 +28911,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/phi-2-3b": { - "max_tokens": 2048, "max_input_tokens": 2048, "max_output_tokens": 2048, "input_cost_per_token": 1e-7, @@ -26316,7 +28919,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/phi-3-mini-128k-instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1e-7, @@ -26325,7 +28927,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/phi-3-vision-128k-instruct": { - "max_tokens": 32064, "max_input_tokens": 32064, "max_output_tokens": 32064, "input_cost_per_token": 2e-7, @@ -26334,7 +28935,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-python-v1": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 9e-7, @@ -26343,7 +28943,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v1": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 9e-7, @@ -26352,7 +28951,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/phind-code-llama-34b-v2": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 9e-7, @@ -26361,7 +28959,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/pythia-12b": { - "max_tokens": 2048, "max_input_tokens": 2048, "max_output_tokens": 2048, "input_cost_per_token": 2e-7, @@ -26370,7 +28967,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen-qwq-32b-preview": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 9e-7, @@ -26379,7 +28975,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen-v2p5-14b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26388,7 +28983,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen-v2p5-7b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-7, @@ -26397,7 +28991,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen1p5-72b-chat": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 9e-7, @@ -26410,7 +29003,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://fireworks.ai/pricing", @@ -26419,7 +29011,6 @@ "supports_tool_choice": false }, "fireworks_ai/accounts/fireworks/models/qwen2-7b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26428,7 +29019,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2-vl-2b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 1e-7, @@ -26437,7 +29027,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2-vl-72b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 9e-7, @@ -26446,7 +29035,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2-vl-7b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26455,7 +29043,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-0p5b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 1e-7, @@ -26464,7 +29051,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-14b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-7, @@ -26473,7 +29059,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-1p5b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 1e-7, @@ -26482,7 +29067,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-32b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -26491,7 +29075,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-32b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 9e-7, @@ -26500,7 +29083,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-72b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -26509,7 +29091,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-72b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 9e-7, @@ -26518,7 +29099,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-7b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26527,7 +29107,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 1e-7, @@ -26536,7 +29115,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-0p5b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 1e-7, @@ -26545,7 +29123,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26554,7 +29131,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-14b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26563,7 +29139,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 1e-7, @@ -26572,7 +29147,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-1p5b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 1e-7, @@ -26581,7 +29155,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 9e-7, @@ -26594,7 +29167,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://fireworks.ai/pricing", @@ -26603,7 +29175,6 @@ "supports_tool_choice": false }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-128k": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -26612,7 +29183,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-32k-rope": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 9e-7, @@ -26621,7 +29191,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-32b-instruct-64k": { - "max_tokens": 65536, "max_input_tokens": 65536, "max_output_tokens": 65536, "input_cost_per_token": 9e-7, @@ -26630,7 +29199,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 1e-7, @@ -26639,7 +29207,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-3b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 1e-7, @@ -26648,7 +29215,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26657,7 +29223,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-coder-7b-instruct": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -26666,7 +29231,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-math-72b-instruct": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 9e-7, @@ -26675,7 +29239,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-vl-32b-instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 9e-7, @@ -26684,7 +29247,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-vl-3b-instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 2e-7, @@ -26693,7 +29255,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-vl-72b-instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 9e-7, @@ -26702,7 +29263,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen2p5-vl-7b-instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 2e-7, @@ -26711,7 +29271,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-0p6b": { - "max_tokens": 40960, "max_input_tokens": 40960, "max_output_tokens": 40960, "input_cost_per_token": 1e-7, @@ -26720,7 +29279,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-14b": { - "max_tokens": 40960, "max_input_tokens": 40960, "max_output_tokens": 40960, "input_cost_per_token": 2e-7, @@ -26729,7 +29287,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-1p7b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1e-7, @@ -26738,7 +29295,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1e-7, @@ -26747,7 +29303,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-131072": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1e-7, @@ -26756,7 +29311,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-1p7b-fp8-draft-40960": { - "max_tokens": 40960, "max_input_tokens": 40960, "max_output_tokens": 40960, "input_cost_per_token": 1e-7, @@ -26765,7 +29319,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2.2e-7, @@ -26774,7 +29327,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-instruct-2507": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 2.2e-7, @@ -26783,7 +29335,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-235b-a22b-thinking-2507": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 2.2e-7, @@ -26792,7 +29343,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1.5e-7, @@ -26801,7 +29351,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-instruct-2507": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 5e-7, @@ -26810,7 +29359,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-30b-a3b-thinking-2507": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 9e-7, @@ -26819,7 +29367,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-32b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -26829,7 +29376,6 @@ "supports_reasoning": true }, "fireworks_ai/accounts/fireworks/models/qwen3-4b": { - "max_tokens": 40960, "max_input_tokens": 40960, "max_output_tokens": 40960, "input_cost_per_token": 2e-7, @@ -26838,7 +29384,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-4b-instruct-2507": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 2e-7, @@ -26847,7 +29392,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-8b": { - "max_tokens": 40960, "max_input_tokens": 40960, "max_output_tokens": 40960, "input_cost_per_token": 2e-7, @@ -26857,7 +29401,6 @@ "supports_reasoning": true }, "fireworks_ai/accounts/fireworks/models/qwen3-coder-30b-a3b-instruct": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1.5e-7, @@ -26866,7 +29409,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-a35b-instruct": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 4.5e-7, @@ -26876,7 +29418,6 @@ "supports_reasoning": true }, "fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-instruct-bf16": { - "max_tokens": 4096, "max_input_tokens": 262144, "max_output_tokens": 4096, "input_cost_per_token": 9e-7, @@ -26885,7 +29426,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-instruct": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 9e-7, @@ -26894,7 +29434,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-next-80b-a3b-thinking": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 9e-7, @@ -26903,7 +29442,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-instruct": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 2.2e-7, @@ -26912,7 +29450,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-vl-235b-a22b-thinking": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 2.2e-7, @@ -26921,7 +29458,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-instruct": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1.5e-7, @@ -26930,7 +29466,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-vl-30b-a3b-thinking": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1.5e-7, @@ -26939,7 +29474,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-vl-32b-instruct": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 9e-7, @@ -26948,7 +29482,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/qwen3-vl-8b-instruct": { - "max_tokens": 4096, "max_input_tokens": 262144, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -26962,7 +29495,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000016, "source": "https://api.fireworks.ai/v1/serverless/models", @@ -26984,13 +29516,13 @@ "output_cost_per_token_priority": 0.000009, "source": "https://api.fireworks.ai/v1/serverless/models", "supports_function_calling": true, + "supports_mid_conversation_system": false, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true }, "fireworks_ai/accounts/fireworks/models/qwq-32b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-7, @@ -26999,7 +29531,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/rolm-ocr": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 2e-7, @@ -27008,7 +29539,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/snorkel-mistral-7b-pairrm-dpo": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -27017,7 +29547,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/stablecode-3b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 1e-7, @@ -27026,7 +29555,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/starcoder-16b": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 2e-7, @@ -27035,7 +29563,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/starcoder-7b": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 2e-7, @@ -27044,7 +29571,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/starcoder2-15b": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 2e-7, @@ -27053,7 +29579,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/starcoder2-3b": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 1e-7, @@ -27062,7 +29587,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/starcoder2-7b": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 2e-7, @@ -27071,7 +29595,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/toppy-m-7b": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -27079,8 +29602,24 @@ "litellm_provider": "fireworks_ai", "mode": "chat" }, + "fireworks_ai/accounts/fireworks/models/ultramarine-1-flash-us": { + "cache_read_input_token_cost": 4.5e-8, + "cache_read_input_token_cost_priority": 5.625e-8, + "input_cost_per_token": 2.25e-7, + "input_cost_per_token_priority": 2.8125e-7, + "litellm_provider": "fireworks_ai", + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, + "mode": "chat", + "output_cost_per_token": 7.5e-7, + "output_cost_per_token_priority": 9.375e-7, + "source": "https://docs.fireworks.ai/serverless/pricing", + "supports_function_calling": false, + "supports_response_schema": true, + "supports_tool_choice": false, + "supports_vision": true + }, "fireworks_ai/accounts/fireworks/models/yi-34b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 9e-7, @@ -27089,7 +29628,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/yi-34b-200k-capybara": { - "max_tokens": 200000, "max_input_tokens": 200000, "max_output_tokens": 200000, "input_cost_per_token": 9e-7, @@ -27098,7 +29636,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/yi-34b-chat": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 9e-7, @@ -27107,7 +29644,6 @@ "mode": "chat" }, "fireworks_ai/accounts/fireworks/models/yi-6b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 2e-7, @@ -27120,7 +29656,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000003, "source": "https://fireworks.ai/pricing", @@ -27129,7 +29664,6 @@ "supports_tool_choice": false }, "fireworks_ai/accounts/fireworks/models/zephyr-7b-beta": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 2e-7, @@ -27155,6 +29689,40 @@ "supports_response_schema": true, "supports_tool_choice": true }, + "fireworks_ai/accounts/fireworks/routers/deepseek-v4p1-flash-1017-spot": { + "cache_read_input_token_cost": 4.2e-9, + "input_cost_per_token": 2.1e-7, + "litellm_provider": "fireworks_ai", + "max_input_tokens": 1048576, + "max_output_tokens": 393216, + "mode": "chat", + "output_cost_per_token": 8.4e-7, + "source": "https://api.fireworks.ai/v1/serverless/models", + "supports_function_calling": true, + "supports_mid_conversation_system": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "fireworks_ai/accounts/fireworks/routers/deepseek-v4p1-flash-spot": { + "cache_read_input_token_cost": 4.2e-9, + "input_cost_per_token": 2.1e-7, + "litellm_provider": "fireworks_ai", + "max_input_tokens": 1048576, + "max_output_tokens": 393216, + "mode": "chat", + "output_cost_per_token": 8.4e-7, + "source": "https://api.fireworks.ai/v1/serverless/models", + "supports_function_calling": true, + "supports_mid_conversation_system": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, "fireworks_ai/accounts/fireworks/routers/deepseek-v4p1-flash-us": { "cache_read_input_token_cost": 9e-9, "cache_read_input_token_cost_priority": 1.125e-8, @@ -27163,12 +29731,12 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 0.0000018, "output_cost_per_token_priority": 0.00000225, "source": "https://docs.fireworks.ai/serverless/pricing", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, @@ -27190,7 +29758,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 202800, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000088, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -27203,11 +29770,11 @@ "fireworks_ai/accounts/fireworks/routers/glm-5p2-fast": { "cache_read_input_token_cost": 2.1e-7, "deprecation_date": "2026-09-25", + "successor_model": "fireworks_ai/accounts/fireworks/routers/glm-5p3-fast", "input_cost_per_token": 0.0000021, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000066, "source": "https://api.fireworks.ai/v1/serverless/models", @@ -27224,7 +29791,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000066, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -27239,11 +29805,12 @@ "input_cost_per_token": 0.0000021, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000066, "source": "https://api.fireworks.ai/v1/serverless/models", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -27252,20 +29819,39 @@ "fireworks_ai/accounts/fireworks/routers/glm-5p3-flash-us": { "cache_read_input_token_cost": 4.5e-8, "cache_read_input_token_cost_priority": 5.625e-8, + "deprecation_date": "2026-11-07", "input_cost_per_token": 2.25e-7, "input_cost_per_token_priority": 2.8125e-7, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 7.5e-7, "output_cost_per_token_priority": 9.375e-7, "source": "https://docs.fireworks.ai/serverless/pricing", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true }, + "fireworks_ai/accounts/fireworks/routers/glm-5p3-spot": { + "cache_read_input_token_cost": 1.82e-7, + "input_cost_per_token": 9.8e-7, + "litellm_provider": "fireworks_ai", + "max_input_tokens": 1048576, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.00000308, + "source": "https://api.fireworks.ai/v1/serverless/models", + "supports_function_calling": true, + "supports_mid_conversation_system": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false + }, "fireworks_ai/accounts/fireworks/routers/glm-5p3-us": { "cache_read_input_token_cost": 3.9e-7, "cache_read_input_token_cost_priority": 4.875e-7, @@ -27274,12 +29860,12 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000066, "output_cost_per_token_priority": 0.00000825, "source": "https://docs.fireworks.ai/serverless/pricing", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -27292,7 +29878,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000008, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -27309,7 +29894,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000008, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -27325,7 +29909,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000225, "reasoning_effort_levels": [ @@ -27335,6 +29918,29 @@ ], "source": "https://api.fireworks.ai/v1/serverless/models", "supports_function_calling": true, + "supports_mid_conversation_system": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "fireworks_ai/accounts/fireworks/routers/kimi-k3-spot": { + "cache_read_input_token_cost": 2.1e-7, + "input_cost_per_token": 0.0000021, + "litellm_provider": "fireworks_ai", + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 0.0000105, + "reasoning_effort_levels": [ + "low", + "high", + "max" + ], + "source": "https://api.fireworks.ai/v1/serverless/models", + "supports_function_calling": true, + "supports_mid_conversation_system": true, + "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -27348,7 +29954,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000225, "output_cost_per_token_priority": 0.000028125, @@ -27359,18 +29964,36 @@ ], "source": "https://docs.fireworks.ai/serverless/pricing", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true }, + "fireworks_ai/accounts/fireworks/routers/spot-deepseek-v4-flash": { + "cache_read_input_token_cost": 2.1e-8, + "deprecation_date": "2026-08-14", + "input_cost_per_token": 1.05e-7, + "litellm_provider": "fireworks_ai", + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 2.1e-7, + "source": "https://api.fireworks.ai/v1/serverless/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false + }, "fireworks_ai/deepseek-v4-flash": { "cache_read_input_token_cost": 2.8e-8, + "deprecation_date": "2026-08-14", "input_cost_per_token": 1.4e-7, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 2.8e-7, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -27389,7 +30012,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 6.6e-7, "output_cost_per_token_priority": 8.25e-7, @@ -27408,7 +30030,7 @@ "input_cost_per_token_priority": 2.75e-7, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 6.6e-7, "output_cost_per_token_priority": 8.25e-7, @@ -27427,7 +30049,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00000396, "output_cost_per_token_priority": 0.00000495, @@ -27444,14 +30065,15 @@ "input_cost_per_token": 3e-7, "input_cost_per_token_priority": 3.75e-7, "litellm_provider": "fireworks_ai", + "token_count_framing": 23, "max_input_tokens": 1048576, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_priority": 0.0000015, "source": "https://docs.fireworks.ai/serverless/pricing", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, @@ -27466,12 +30088,12 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 0.0000018, "output_cost_per_token_priority": 0.00000225, "source": "https://docs.fireworks.ai/serverless/pricing", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, @@ -27484,7 +30106,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 202752, "max_output_tokens": 202800, - "max_tokens": 202800, "mode": "chat", "output_cost_per_token": 0.0000022, "source": "https://fireworks.ai/models/fireworks/glm-4p7", @@ -27499,7 +30120,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 202752, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -27515,7 +30135,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 202800, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000088, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -27529,12 +30148,12 @@ "cache_read_input_token_cost": 1.4e-7, "cache_read_input_token_cost_priority": 1.75e-7, "deprecation_date": "2026-09-25", + "successor_model": "fireworks_ai/glm-5p3", "input_cost_per_token": 0.0000014, "input_cost_per_token_priority": 0.00000175, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "output_cost_per_token_priority": 0.0000055, @@ -27548,11 +30167,11 @@ "fireworks_ai/glm-5p2-fast": { "cache_read_input_token_cost": 2.1e-7, "deprecation_date": "2026-09-25", + "successor_model": "fireworks_ai/glm-5p3-fast", "input_cost_per_token": 0.0000021, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000066, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -27569,7 +30188,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000066, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -27587,12 +30205,12 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000044, "output_cost_per_token_priority": 0.0000055, "source": "https://api.fireworks.ai/v1/serverless/models", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -27603,11 +30221,12 @@ "input_cost_per_token": 0.0000021, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000066, "source": "https://docs.fireworks.ai/serverless/pricing", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -27620,12 +30239,13 @@ "input_cost_per_token_priority": 1.875e-7, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 5e-7, "output_cost_per_token_priority": 6.25e-7, "source": "https://api.fireworks.ai/v1/serverless/models", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true @@ -27633,16 +30253,18 @@ "fireworks_ai/glm-5p3-flash-us": { "cache_read_input_token_cost": 4.5e-8, "cache_read_input_token_cost_priority": 5.625e-8, + "deprecation_date": "2026-11-07", "input_cost_per_token": 2.25e-7, "input_cost_per_token_priority": 2.8125e-7, "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 7.5e-7, "output_cost_per_token_priority": 9.375e-7, "source": "https://docs.fireworks.ai/serverless/pricing", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true @@ -27655,12 +30277,12 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000066, "output_cost_per_token_priority": 0.00000825, "source": "https://docs.fireworks.ai/serverless/pricing", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -27669,16 +30291,16 @@ "fireworks_ai/gpt-oss-120b": { "cache_read_input_token_cost": 1.5e-8, "cache_read_input_token_cost_priority": 1.8e-8, + "deprecation_date": "2026-11-07", "input_cost_per_token": 1.5e-7, "input_cost_per_token_priority": 1.8e-7, "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_priority": 7.2e-7, - "source": "https://api.fireworks.ai/v1/serverless/models", + "source": "https://api.fireworks.ai/v1/serverless/models?format=nested", "supports_function_calling": true, "supports_reasoning": true, "supports_response_schema": true, @@ -27691,7 +30313,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 3e-7, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -27707,7 +30328,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000003, "source": "https://fireworks.ai/pricing", @@ -27724,7 +30344,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000004, "output_cost_per_token_priority": 0.000006, @@ -27742,7 +30361,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000008, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -27761,7 +30379,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000004, "output_cost_per_token_priority": 0.000006, @@ -27779,7 +30396,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000008, "source": "https://docs.fireworks.ai/serverless/pricing", @@ -27797,7 +30413,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_priority": 0.00001875, @@ -27808,6 +30423,7 @@ ], "source": "https://api.fireworks.ai/v1/serverless/models", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -27819,7 +30435,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000225, "reasoning_effort_levels": [ @@ -27829,6 +30444,7 @@ ], "source": "https://docs.fireworks.ai/serverless/pricing", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -27842,7 +30458,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000225, "output_cost_per_token_priority": 0.000028125, @@ -27853,6 +30468,7 @@ ], "source": "https://docs.fireworks.ai/serverless/pricing", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -27864,7 +30480,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 196608, "max_output_tokens": 204800, - "max_tokens": 204800, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://fireworks.ai/models/fireworks/minimax-m2p1", @@ -27880,7 +30495,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 512000, "max_output_tokens": 512000, - "max_tokens": 512000, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_priority": 0.0000018, @@ -27889,7 +30503,7 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": false + "supports_vision": true }, "fireworks_ai/muse-glimmer-30b": { "cache_read_input_token_cost": 4e-8, @@ -27900,7 +30514,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000015, "output_cost_per_token_priority": 0.00000225, @@ -27914,17 +30527,18 @@ "fireworks_ai/nemotron-3-ultra-nvfp4": { "cache_read_input_token_cost": 1.2e-7, "cache_read_input_token_cost_priority": 1.5e-7, + "deprecation_date": "2026-11-07", "input_cost_per_token": 6e-7, "input_cost_per_token_priority": 7.5e-7, "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000024, "output_cost_per_token_priority": 0.000003, - "source": "https://api.fireworks.ai/v1/serverless/models", + "source": "https://api.fireworks.ai/v1/serverless/models?format=nested", "supports_function_calling": true, + "supports_mid_conversation_system": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -27933,16 +30547,16 @@ "fireworks_ai/nemotron-lightning-3p5-30b-a3b": { "cache_read_input_token_cost": 1e-8, "cache_read_input_token_cost_priority": 1.25e-8, + "deprecation_date": "2026-11-07", "input_cost_per_token": 5e-8, "input_cost_per_token_priority": 6.25e-8, "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 2e-7, "output_cost_per_token_priority": 2.5e-7, - "source": "https://docs.fireworks.ai/serverless/pricing", + "source": "https://api.fireworks.ai/v1/serverless/models?format=nested", "supports_function_calling": true, "supports_reasoning": true, "supports_response_schema": true, @@ -27955,7 +30569,6 @@ "litellm_provider": "fireworks_ai", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000016, "source": "https://api.fireworks.ai/v1/serverless/models", @@ -27977,6 +30590,7 @@ "output_cost_per_token_priority": 0.000009, "source": "https://api.fireworks.ai/v1/serverless/models", "supports_function_calling": true, + "supports_mid_conversation_system": false, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -27986,7 +30600,6 @@ "litellm_provider": "friendliai", "max_input_tokens": 196608, "max_output_tokens": 196608, - "max_tokens": 196608, "input_cost_per_token": 3e-7, "output_cost_per_token": 0.0000012, "cache_read_input_token_cost": 6e-8, @@ -28010,7 +30623,6 @@ "litellm_provider": "friendliai", "max_input_tokens": 163840, "max_output_tokens": 163840, - "max_tokens": 163840, "input_cost_per_token": 5e-7, "output_cost_per_token": 0.0000015, "cache_read_input_token_cost": 2.5e-7, @@ -28034,7 +30646,6 @@ "litellm_provider": "friendliai", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "input_cost_per_token": 1.4e-7, "output_cost_per_token": 4e-7, "supports_prompt_caching": false, @@ -28057,7 +30668,6 @@ "litellm_provider": "friendliai", "max_input_tokens": 202752, "max_output_tokens": 202752, - "max_tokens": 202752, "input_cost_per_token": 0.0000014, "output_cost_per_token": 0.0000044, "cache_read_input_token_cost": 2.6e-7, @@ -28081,7 +30691,6 @@ "litellm_provider": "friendliai", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "input_cost_per_token": 0.0000014, "output_cost_per_token": 0.0000044, "cache_read_input_token_cost": 2.6e-7, @@ -28108,7 +30717,6 @@ "litellm_provider": "friendliai", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "input_cost_per_token": 0.00000126, "output_cost_per_token": 0.00000396, "cache_read_input_token_cost": 2.34e-7, @@ -28136,7 +30744,6 @@ "litellm_provider": "friendliai", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "input_cost_per_token": 1.5e-7, "output_cost_per_token": 5e-7, "cache_read_input_token_cost": 3e-8, @@ -28162,12 +30769,13 @@ }, "ft:gpt-3.5-turbo": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "input_cost_per_token": 0.000003, "input_cost_per_token_batches": 0.0000015, "litellm_provider": "openai", "max_input_tokens": 16385, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000006, "output_cost_per_token_batches": 0.000003, @@ -28177,11 +30785,12 @@ }, "ft:gpt-3.5-turbo-0125": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "input_cost_per_token": 0.000003, "litellm_provider": "openai", "max_input_tokens": 16385, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000006, "supports_system_messages": true, @@ -28189,11 +30798,12 @@ }, "ft:gpt-3.5-turbo-0613": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "ft:gpt-3.5-turbo", "input_cost_per_token": 0.000003, "litellm_provider": "openai", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000006, "supports_system_messages": true, @@ -28201,11 +30811,12 @@ }, "ft:gpt-3.5-turbo-1106": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "input_cost_per_token": 0.000003, "litellm_provider": "openai", "max_input_tokens": 16385, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000006, "supports_system_messages": true, @@ -28213,11 +30824,12 @@ }, "ft:gpt-4-0613": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.00003, "litellm_provider": "openai", "max_input_tokens": 8192, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00006, "source": "OpenAI needs to add pricing for this ft model, will be updated when added by OpenAI. Defaulting to base model pricing", @@ -28229,12 +30841,13 @@ "cache_read_input_token_cost": 7.5e-7, "cache_read_input_token_cost_batches": 5e-7, "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 0.000003, "input_cost_per_token_batches": 0.0000015, "litellm_provider": "openai", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000012, "output_cost_per_token_batches": 0.000006, @@ -28250,12 +30863,13 @@ "cache_read_input_token_cost": 2e-7, "cache_read_input_token_cost_batches": 1e-7, "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 8e-7, "input_cost_per_token_batches": 4e-7, "litellm_provider": "openai", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000032, "output_cost_per_token_batches": 0.0000016, @@ -28271,12 +30885,13 @@ "cache_read_input_token_cost": 5e-8, "cache_read_input_token_cost_batches": 2.5e-8, "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-luna", "input_cost_per_token": 2e-7, "input_cost_per_token_batches": 1e-7, "litellm_provider": "openai", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 8e-7, "output_cost_per_token_batches": 4e-7, @@ -28292,12 +30907,13 @@ "cache_read_input_token_cost": 0.000001875, "cache_read_input_token_cost_batches": 9e-7, "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 0.00000375, "input_cost_per_token_batches": 0.000002225, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_batches": 0.0000125, @@ -28314,11 +30930,12 @@ "ft:gpt-4o-2024-11-20": { "cache_creation_input_token_cost": 0.000001875, "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 0.00000375, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000015, "supports_function_calling": true, @@ -28333,12 +30950,13 @@ "cache_read_input_token_cost": 1.5e-7, "cache_read_input_token_cost_batches": 7.5e-8, "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 3e-7, "input_cost_per_token_batches": 1.5e-7, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_batches": 6e-7, @@ -28355,12 +30973,13 @@ "cache_read_input_token_cost": 0.000001, "cache_read_input_token_cost_batches": 5e-7, "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "input_cost_per_token": 0.000004, "input_cost_per_token_batches": 0.000002, "litellm_provider": "openai", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.000016, "output_cost_per_token_batches": 0.000008, @@ -28378,7 +30997,6 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 128000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_above_200k_tokens": 0.000015, @@ -28398,20 +31016,46 @@ }, "gemini-2.5-flash": { "cache_read_input_audio_token_cost": 1e-7, - "deprecation_date": "2026-10-20", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "cache_read_input_audio_token_cost_priority": 1.8e-7, "cache_read_input_token_cost": 3e-8, "cache_read_input_token_cost_flex": 3e-8, "cache_read_input_token_cost_priority": 5.4e-8, + "deprecation_date": "2026-10-20", + "google_maps_grounding_cost_per_query": 0.025, "input_cost_per_audio_token": 0.000001, + "input_cost_per_audio_token_above_200k_tokens": 3e-7, + "input_cost_per_audio_token_above_200k_tokens_batches": 5e-7, + "input_cost_per_audio_token_above_200k_tokens_flex": 5e-7, + "input_cost_per_audio_token_above_200k_tokens_priority": 0.0000018, + "input_cost_per_audio_token_batches": 5e-7, + "input_cost_per_audio_token_flex": 5e-7, + "input_cost_per_audio_token_priority": 0.0000018, "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": 65535, - "max_tokens": 65535, "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, + "search_context_cost_per_query": { + "search_context_size_low": 0.035, + "search_context_size_medium": 0.035, + "search_context_size_high": 0.035 + }, + "search_free_requests": { + "count": 1500, + "period": "day", + "shared_group": "gemini-2-flash" + }, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", + "successor_model": "gemini-3.8-flash", "supported_endpoints": [ "/v1/chat/completions", "/v1/completions", @@ -28428,6 +31072,7 @@ ], "supports_audio_output": false, "supports_function_calling": true, + "supports_image_size": false, "supports_parallel_function_calling": true, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -28437,25 +31082,12 @@ "supports_tool_choice": true, "supports_url_context": true, "supports_vision": true, - "supports_web_search": true, - "search_context_cost_per_query": { - "search_context_size_low": 0.035, - "search_context_size_medium": 0.035, - "search_context_size_high": 0.035 - }, - "google_maps_grounding_cost_per_query": 0.025, - "input_cost_per_audio_token_batches": 5e-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, - "input_cost_per_audio_token_priority": 0.0000018, - "output_cost_per_token_batches": 0.00000125, - "output_cost_per_token_flex": 0.00000125, - "output_cost_per_token_priority": 0.0000045, - "supports_image_size": false + "supports_web_search": true }, "gemini-2.5-flash-image": { "deprecation_date": "2027-03-15", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "successor_model": "gemini-3.1-flash-lite-image", "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 3e-7, "input_cost_per_token_batches": 1.5e-7, @@ -28463,10 +31095,10 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "image_generation", "output_cost_per_image": 0.039, "output_cost_per_image_token": 0.00003, + "output_cost_per_image_token_batches": 0.000015, "output_cost_per_reasoning_token": 0.0000025, "output_cost_per_token": 0.0000025, "output_cost_per_token_batches": 0.00000125, @@ -28505,20 +31137,46 @@ }, "gemini-2.5-flash-lite": { "cache_read_input_audio_token_cost": 3e-8, - "deprecation_date": "2026-10-20", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "cache_read_input_audio_token_cost_priority": 5.4e-8, "cache_read_input_token_cost": 1e-8, "cache_read_input_token_cost_flex": 1e-8, "cache_read_input_token_cost_priority": 1.8e-8, + "deprecation_date": "2026-10-20", + "google_maps_grounding_cost_per_query": 0.025, "input_cost_per_audio_token": 3e-7, + "input_cost_per_audio_token_above_200k_tokens": 3e-7, + "input_cost_per_audio_token_above_200k_tokens_batches": 5e-8, + "input_cost_per_audio_token_above_200k_tokens_flex": 5e-8, + "input_cost_per_audio_token_above_200k_tokens_priority": 5.4e-7, + "input_cost_per_audio_token_batches": 5e-8, + "input_cost_per_audio_token_flex": 5e-8, + "input_cost_per_audio_token_priority": 5.4e-7, "input_cost_per_token": 1e-7, + "input_cost_per_token_batches": 5e-8, + "input_cost_per_token_flex": 5e-8, + "input_cost_per_token_priority": 1.8e-7, "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 1048576, "max_output_tokens": 65535, - "max_tokens": 65535, "mode": "chat", "output_cost_per_reasoning_token": 4e-7, "output_cost_per_token": 4e-7, + "output_cost_per_token_batches": 2e-7, + "output_cost_per_token_flex": 2e-7, + "output_cost_per_token_priority": 7.2e-7, + "search_context_cost_per_query": { + "search_context_size_low": 0.035, + "search_context_size_medium": 0.035, + "search_context_size_high": 0.035 + }, + "search_free_requests": { + "count": 1500, + "period": "day", + "shared_group": "gemini-2-flash" + }, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", + "successor_model": "gemini-3.8-flash", "supported_endpoints": [ "/v1/chat/completions", "/v1/completions", @@ -28535,6 +31193,7 @@ ], "supports_audio_output": false, "supports_function_calling": true, + "supports_image_size": false, "supports_parallel_function_calling": true, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -28544,22 +31203,7 @@ "supports_tool_choice": true, "supports_url_context": true, "supports_vision": true, - "supports_web_search": true, - "search_context_cost_per_query": { - "search_context_size_low": 0.035, - "search_context_size_medium": 0.035, - "search_context_size_high": 0.035 - }, - "google_maps_grounding_cost_per_query": 0.025, - "input_cost_per_audio_token_batches": 5e-8, - "input_cost_per_token_batches": 5e-8, - "input_cost_per_token_flex": 5e-8, - "input_cost_per_token_priority": 1.8e-7, - "input_cost_per_audio_token_priority": 5.4e-7, - "output_cost_per_token_batches": 2e-7, - "output_cost_per_token_flex": 2e-7, - "output_cost_per_token_priority": 7.2e-7, - "supports_image_size": false + "supports_web_search": true }, "gemini-2.5-flash-lite-preview-09-2025": { "cache_read_input_token_cost": 1e-8, @@ -28568,7 +31212,6 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 1048576, "max_output_tokens": 65535, - "max_tokens": 65535, "mode": "chat", "output_cost_per_reasoning_token": 4e-7, "output_cost_per_token": 4e-7, @@ -28604,6 +31247,11 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, + "search_free_requests": { + "count": 1500, + "period": "day", + "shared_group": "gemini-2-flash" + }, "google_maps_grounding_cost_per_query": 0.025, "supports_image_size": false }, @@ -28614,7 +31262,6 @@ "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.0000025, "output_cost_per_token": 0.0000025, @@ -28650,11 +31297,18 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, + "search_free_requests": { + "count": 1500, + "period": "day", + "shared_group": "gemini-2-flash" + }, "google_maps_grounding_cost_per_query": 0.025, "supports_image_size": false }, "gemini-2.5-pro": { "deprecation_date": "2026-10-20", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "successor_model": "gemini-3.8-flash", "cache_read_input_token_cost": 1.25e-7, "cache_read_input_token_cost_above_200k_tokens": 2.5e-7, "cache_creation_input_token_cost_above_200k_tokens": 2.5e-7, @@ -28666,7 +31320,6 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 1048576, "max_output_tokens": 65535, - "max_tokens": 65535, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_above_200k_tokens": 0.000015, @@ -28701,11 +31354,20 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, + "search_free_requests": { + "count": 10000, + "period": "day", + "shared_group": "gemini-2.5-pro" + }, "google_maps_grounding_cost_per_query": 0.025, + "input_cost_per_token_above_200k_tokens_batches": 0.00000125, + "input_cost_per_token_above_200k_tokens_flex": 0.00000125, "input_cost_per_token_above_200k_tokens_priority": 0.0000045, "input_cost_per_token_batches": 6.25e-7, "input_cost_per_token_flex": 6.25e-7, "input_cost_per_token_priority": 0.00000225, + "output_cost_per_token_above_200k_tokens_batches": 0.0000075, + "output_cost_per_token_above_200k_tokens_flex": 0.0000075, "output_cost_per_token_above_200k_tokens_priority": 0.000027, "output_cost_per_token_batches": 0.000005, "output_cost_per_token_flex": 0.000005, @@ -28719,7 +31381,6 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 1048576, "max_output_tokens": 65535, - "max_tokens": 65535, "mode": "chat", "output_cost_per_audio_token": 0.00002, "output_cost_per_token": 0.00002, @@ -28747,11 +31408,17 @@ }, "gemini-3-flash-preview": { "cache_read_input_audio_token_cost": 1e-7, + "cache_read_input_audio_token_cost_priority": 1.8e-7, "cache_read_input_token_cost": 5e-8, "cache_read_input_token_cost_priority": 9e-8, "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_audio_token": 0.000001, + "input_cost_per_audio_token_above_200k_tokens": 0.000001, + "input_cost_per_audio_token_above_200k_tokens_batches": 5e-7, + "input_cost_per_audio_token_above_200k_tokens_flex": 5e-7, + "input_cost_per_audio_token_above_200k_tokens_priority": 0.0000018, "input_cost_per_audio_token_batches": 5e-7, + "input_cost_per_audio_token_flex": 5e-7, "input_cost_per_audio_token_priority": 0.0000018, "input_cost_per_token": 5e-7, "input_cost_per_token_batches": 2.5e-7, @@ -28760,7 +31427,6 @@ "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.000003, "output_cost_per_token": 0.000003, @@ -28772,6 +31438,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", "supported_endpoints": [ "/v1/chat/completions", @@ -28788,6 +31459,7 @@ "text" ], "supports_audio_output": false, + "supports_computer_use": true, "supports_function_calling": true, "supports_native_streaming": true, "supports_parallel_function_calling": true, @@ -28804,12 +31476,13 @@ }, "gemini-3-pro-image": { "cache_read_input_token_cost": 2e-7, + "cache_read_input_token_cost_batches": 1e-7, "cache_read_input_token_cost_above_200k_tokens": 4e-7, "cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-7, - "cache_read_input_token_cost_batches": 1e-7, "cache_read_input_token_cost_flex": 1e-7, "cache_read_input_token_cost_priority": 3.6e-7, "deprecation_date": "2027-05-28", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", "input_cost_per_image": 0.0011, "input_cost_per_token": 0.000002, "input_cost_per_token_above_200k_tokens": 0.000004, @@ -28820,10 +31493,11 @@ "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_image_token_batches": 0.00006, + "output_cost_per_image_token_priority": 0.000216, "output_cost_per_token": 0.000012, "output_cost_per_token_above_200k_tokens": 0.000018, "output_cost_per_token_above_200k_tokens_priority": 0.0000324, @@ -28856,6 +31530,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query" }, "gemini-3-pro-image-preview": { @@ -28873,16 +31552,17 @@ "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_image_token_batches": 0.00006, + "output_cost_per_image_token_priority": 0.000216, "output_cost_per_token": 0.000012, "output_cost_per_token_priority": 0.0000216, "output_cost_per_token_above_200k_tokens": 0.000018, "output_cost_per_token_above_200k_tokens_priority": 0.0000324, "output_cost_per_token_batches": 0.000006, - "source": "https://ai.google.dev/gemini-api/docs/pricing", + "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", "supported_endpoints": [ "/v1/chat/completions", "/v1/images/generations", @@ -28908,6 +31588,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query" }, "gemini-3.1-flash-image": { @@ -28916,6 +31601,7 @@ "cache_read_input_token_cost_flex": 2.5e-8, "cache_read_input_token_cost_priority": 9e-8, "deprecation_date": "2027-05-28", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", "input_cost_per_image": 0.00056, "input_cost_per_token": 5e-7, "input_cost_per_token_batches": 2.5e-7, @@ -28924,10 +31610,11 @@ "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_image_token_batches": 0.00003, + "output_cost_per_image_token_priority": 0.000108, "output_cost_per_token": 0.000003, "output_cost_per_token_batches": 0.0000015, "output_cost_per_token_flex": 0.0000015, @@ -28958,6 +31645,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query" }, "gemini-3.1-flash-image-preview": { @@ -28969,13 +31661,14 @@ "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_image_token_batches": 0.00003, + "output_cost_per_image_token_priority": 0.000108, "output_cost_per_token": 0.000003, "output_cost_per_token_batches": 0.0000015, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#gemini-models", + "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", "supported_endpoints": [ "/v1/chat/completions", "/v1/images/generations", @@ -29001,32 +31694,58 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query" }, "gemini-3.1-flash-lite": { "cache_read_input_audio_token_cost": 5e-8, - "deprecation_date": "2027-05-07", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "cache_read_input_audio_token_cost_batches": 2.5e-8, + "cache_read_input_audio_token_cost_flex": 2.5e-8, + "cache_read_input_audio_token_cost_priority": 9e-8, "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_priority": 4.5e-8, + "deprecation_date": "2027-05-07", + "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_audio_token": 5e-7, + "input_cost_per_audio_token_above_200k_tokens": 5e-7, + "input_cost_per_audio_token_above_200k_tokens_batches": 2.5e-7, + "input_cost_per_audio_token_above_200k_tokens_flex": 2.5e-7, + "input_cost_per_audio_token_above_200k_tokens_priority": 9e-7, + "input_cost_per_audio_token_batches": 2.5e-7, + "input_cost_per_audio_token_flex": 2.5e-7, + "input_cost_per_audio_token_priority": 9e-7, "input_cost_per_token": 2.5e-7, "input_cost_per_token_batches": 1.25e-7, "input_cost_per_token_flex": 1.25e-7, "input_cost_per_token_priority": 4.5e-7, - "input_cost_per_audio_token_priority": 9e-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.0000015, "output_cost_per_token": 0.0000015, "output_cost_per_token_batches": 7.5e-7, "output_cost_per_token_flex": 7.5e-7, "output_cost_per_token_priority": 0.0000027, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", + "successor_model": "gemini-3.5-flash-lite", "supported_endpoints": [ "/v1/chat/completions", "/v1/completions", @@ -29044,6 +31763,7 @@ "supports_audio_input": true, "supports_audio_output": false, "supports_function_calling": true, + "supports_native_streaming": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -29055,22 +31775,13 @@ "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", - "google_maps_grounding_cost_per_query": 0.014, - "input_cost_per_audio_token_batches": 2.5e-7 + "web_search_billing_unit": "per_query" }, "gemini-3.1-flash-lite-image": { "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_priority": 4.5e-8, - "deprecation_date": "2027-06-28", "input_cost_per_image": 0.00028, "input_cost_per_token": 2.5e-7, "input_cost_per_token_batches": 1.25e-7, @@ -29079,10 +31790,11 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 65536, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "image_generation", "output_cost_per_image": 0.0336, "output_cost_per_image_token": 0.00003, + "output_cost_per_image_token_batches": 0.000015, + "output_cost_per_image_token_priority": 0.000054, "output_cost_per_token": 0.0000015, "output_cost_per_token_batches": 7.5e-7, "output_cost_per_token_flex": 7.5e-7, @@ -29119,7 +31831,6 @@ "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.0000015, "output_cost_per_token": 0.0000015, @@ -29158,6 +31869,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014 }, @@ -29170,6 +31886,8 @@ "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_token": 0.000002, "input_cost_per_token_above_200k_tokens": 0.000004, + "input_cost_per_token_above_200k_tokens_batches": 0.000002, + "input_cost_per_token_above_200k_tokens_flex": 0.000002, "input_cost_per_token_above_200k_tokens_priority": 0.0000072, "input_cost_per_token_batches": 0.000001, "input_cost_per_token_flex": 0.000001, @@ -29177,11 +31895,12 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_image": 0.00012, "output_cost_per_token": 0.000012, "output_cost_per_token_above_200k_tokens": 0.000018, + "output_cost_per_token_above_200k_tokens_batches": 0.000009, + "output_cost_per_token_above_200k_tokens_flex": 0.000009, "output_cost_per_token_above_200k_tokens_priority": 0.0000324, "output_cost_per_token_batches": 0.000006, "output_cost_per_token_flex": 0.000006, @@ -29192,6 +31911,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", "supported_endpoints": [ "/v1/chat/completions", @@ -29233,7 +31957,6 @@ "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, @@ -29272,12 +31995,19 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014 }, "gemini-3.5-flash": { "prompt_cache_min_tokens": 4096, "deprecation_date": "2027-05-19", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "successor_model": "gemini-3.8-flash", "cache_read_input_token_cost": 1.5e-7, "cache_read_input_token_cost_batches": 7.5e-8, "input_cost_per_audio_token": 0.0000015, @@ -29285,7 +32015,6 @@ "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, @@ -29306,6 +32035,7 @@ ], "supports_audio_output": false, "supports_audio_input": true, + "supports_computer_use": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -29328,6 +32058,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_token_batches": 7.5e-7, @@ -29338,6 +32073,7 @@ }, "gemini-3.5-flash-lite": { "deprecation_date": "2027-07-21", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", "cache_read_input_token_cost": 3e-8, "cache_read_input_token_cost_batches": 1.5e-8, "cache_read_input_token_cost_flex": 1.5e-8, @@ -29349,7 +32085,6 @@ "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, @@ -29373,12 +32108,14 @@ ], "supports_audio_input": true, "supports_audio_output": false, + "supports_computer_use": 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_sampling_params": false, "supports_system_messages": true, "supports_tool_choice": true, "supports_url_context": true, @@ -29391,6 +32128,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014 }, @@ -29405,7 +32147,6 @@ "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.00000375, "output_cost_per_token": 0.00000375, @@ -29428,12 +32169,14 @@ ], "supports_audio_output": false, "supports_audio_input": true, + "supports_computer_use": 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_sampling_params": false, "supports_system_messages": true, "supports_tool_choice": true, "supports_url_context": true, @@ -29445,11 +32188,18 @@ "output_cost_per_token_priority": 0.00000675, "cache_read_input_token_cost_priority": 1.35e-7, "deprecation_date": "2026-11-19", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "successor_model": "gemini-3.8-flash", "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014 }, @@ -29464,7 +32214,6 @@ "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.00000375, "output_cost_per_token": 0.00000375, @@ -29487,6 +32236,7 @@ ], "supports_audio_output": false, "supports_audio_input": true, + "supports_computer_use": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -29494,6 +32244,7 @@ "supports_reasoning": true, "supports_minimal_reasoning_effort": false, "supports_response_schema": true, + "supports_sampling_params": false, "supports_system_messages": true, "supports_tool_choice": true, "supports_url_context": true, @@ -29505,32 +32256,51 @@ "output_cost_per_token_priority": 0.00000675, "cache_read_input_token_cost_priority": 1.35e-7, "deprecation_date": "2027-01-28", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "successor_model": "gemini-3.8-flash", "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014 }, "gemini-3.8-flash": { - "prompt_cache_min_tokens": 4096, - "deprecation_date": "2027-09-02", "cache_read_input_token_cost": 7.5e-8, "cache_read_input_token_cost_batches": 3.75e-8, "cache_read_input_token_cost_flex": 3.75e-8, + "cache_read_input_token_cost_priority": 1.35e-7, + "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_token": 7.5e-7, "input_cost_per_token_batches": 3.75e-7, "input_cost_per_token_flex": 3.75e-7, + "input_cost_per_token_priority": 0.00000135, "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.00000375, "output_cost_per_token": 0.00000375, "output_cost_per_token_batches": 0.000001875, "output_cost_per_token_flex": 0.000001875, + "output_cost_per_token_priority": 0.00000675, + "prompt_cache_min_tokens": 4096, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", "supported_endpoints": [ "/v1/chat/completions", @@ -29546,32 +32316,25 @@ "supported_output_modalities": [ "text" ], - "supports_audio_output": false, "supports_audio_input": true, + "supports_audio_output": false, + "supports_computer_use": true, "supports_function_calling": true, + "supports_minimal_reasoning_effort": false, + "supports_native_streaming": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, "supports_prompt_caching": true, "supports_reasoning": true, - "supports_minimal_reasoning_effort": false, "supports_response_schema": true, + "supports_sampling_params": false, "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.00000135, - "output_cost_per_token_priority": 0.00000675, - "cache_read_input_token_cost_priority": 1.35e-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", - "google_maps_grounding_cost_per_query": 0.014 + "web_search_billing_unit": "per_query" }, "gemini-3.8-flash-cyber": { "cache_read_input_token_cost": 1.5e-7, @@ -29585,7 +32348,6 @@ "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.0000075, "output_cost_per_token": 0.0000075, @@ -29614,6 +32376,7 @@ "supports_reasoning": true, "supports_minimal_reasoning_effort": false, "supports_response_schema": true, + "supports_sampling_params": false, "supports_system_messages": true, "supports_tool_choice": false, "supports_url_context": false, @@ -29629,7 +32392,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65535, - "max_tokens": 65535, "mode": "chat", "output_cost_per_reasoning_token": 0.0000025, "output_cost_per_token": 0.0000025, @@ -29674,7 +32436,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.00000375, "output_cost_per_token": 0.00000375, @@ -29733,7 +32494,6 @@ "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, @@ -29788,23 +32548,21 @@ "gemini-nano-banana-2.1": { "cache_read_input_token_cost": 1.5e-7, "cache_read_input_token_cost_batches": 7.5e-8, - "cache_read_input_token_cost_flex": 7.5e-8, "cache_read_input_token_cost_priority": 2.7e-7, "input_cost_per_image": 0.00168, "input_cost_per_token": 0.0000015, "input_cost_per_token_batches": 7.5e-7, - "input_cost_per_token_flex": 7.5e-7, "input_cost_per_token_priority": 0.0000027, "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "image_generation", "output_cost_per_image": 0.0336, "output_cost_per_image_token": 0.00003, + "output_cost_per_image_token_batches": 0.000015, + "output_cost_per_image_token_priority": 0.000054, "output_cost_per_token": 0.0000075, "output_cost_per_token_batches": 0.00000375, - "output_cost_per_token_flex": 0.00000375, "output_cost_per_token_priority": 0.0000135, "search_context_cost_per_query": { "search_context_size_low": 0.014, @@ -29842,14 +32600,13 @@ "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, + "max_input_tokens": 131072, + "max_output_tokens": 57920, "mode": "chat", "output_cost_per_reasoning_token": 0.000009, "output_cost_per_token": 0.000009, "output_cost_per_video_token": 0.0000175, - "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", + "source": "https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/omni-flash-preview", "supported_endpoints": [ "/v1/chat/completions" ], @@ -29867,7 +32624,8 @@ "supports_reasoning": true, "supports_system_messages": true, "supports_video_input": true, - "supports_vision": true + "supports_vision": true, + "deprecation_date": "2026-11-06" }, "gemini-pro-latest": { "cache_read_input_token_cost": 2e-7, @@ -29877,7 +32635,6 @@ "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, @@ -29938,7 +32695,6 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 1048576, "max_output_tokens": 65535, - "max_tokens": 65535, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_reasoning_token": 0.0000025, @@ -29969,18 +32725,14 @@ }, "gemini-robotics-er-2-preview": { "cache_read_input_token_cost": 1e-7, - "cache_read_input_token_cost_batches": 5e-8, "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 0.000001, - "input_cost_per_token_batches": 5e-7, "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.000005, "output_cost_per_token": 0.000005, - "output_cost_per_token_batches": 0.0000025, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -29989,8 +32741,7 @@ "source": "https://ai.google.dev/gemini-api/docs/pricing", "supported_endpoints": [ "/v1/chat/completions", - "/v1/completions", - "/v1/batch" + "/v1/completions" ], "supported_modalities": [ "text", @@ -30003,6 +32754,7 @@ ], "supports_audio_input": true, "supports_audio_output": false, + "supports_computer_use": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -30023,7 +32775,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000012, "rpm": 1000, @@ -30060,7 +32811,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000012, "rpm": 1000, @@ -30093,13 +32843,14 @@ }, "gemini/deep-research-pro-preview-12-2025": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://ai.google.dev/gemini-api/docs/deprecations", + "successor_model": "gemini/deep-research-preview-04-2026", "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": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000012, "output_cost_per_token_batches": 0.000006, @@ -30135,12 +32886,13 @@ }, "gemini/gemini-2.5-computer-use-preview-10-2025": { "deprecation_date": "2026-07-28", + "deprecation_source": "https://ai.google.dev/gemini-api/docs/deprecations", + "successor_model": "gemini/gemini-3.8-flash", "input_cost_per_token": 0.00000125, "input_cost_per_token_above_200k_tokens": 0.0000025, "litellm_provider": "gemini", "max_input_tokens": 128000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_above_200k_tokens": 0.000015, @@ -30166,16 +32918,22 @@ }, "gemini/gemini-2.5-flash": { "cache_read_input_audio_token_cost": 1e-7, + "cache_read_input_audio_token_cost_batches": 1e-7, + "cache_read_input_audio_token_cost_flex": 1e-7, + "cache_read_input_audio_token_cost_priority": 1.8e-7, "cache_read_input_token_cost": 3e-8, "cache_read_input_token_cost_batches": 3e-8, "cache_read_input_token_cost_flex": 3e-8, "cache_read_input_token_cost_priority": 5.4e-8, + "deprecation_date": "2026-12-01", + "deprecation_source": "https://ai.google.dev/gemini-api/docs/deprecations", + "successor_model": "gemini/gemini-3-flash-preview", "input_cost_per_audio_token": 0.000001, + "input_cost_per_audio_token_flex": 5e-7, "input_cost_per_token": 3e-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, @@ -30213,6 +32971,11 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, + "search_free_requests": { + "count": 1500, + "period": "day", + "shared_group": "gemini-2-flash" + }, "google_maps_grounding_cost_per_query": 0.025, "input_cost_per_audio_token_batches": 5e-7, "input_cost_per_audio_token_priority": 0.0000018, @@ -30228,6 +32991,8 @@ "gemini/gemini-2.5-flash-image": { "cache_read_input_token_cost": 3e-8, "deprecation_date": "2027-03-15", + "deprecation_source": "https://ai.google.dev/gemini-api/docs/deprecations", + "successor_model": "gemini/gemini-3.1-flash-lite-image", "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 3e-7, "input_cost_per_token_batches": 1.5e-7, @@ -30237,12 +33002,14 @@ "supports_reasoning": false, "max_input_tokens": 65536, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "image_generation", "output_cost_per_image": 0.039, "output_cost_per_image_token": 0.00003, "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": 100000, "source": "https://ai.google.dev/gemini-api/docs/pricing", "supported_endpoints": [ @@ -30282,16 +33049,19 @@ }, "gemini/gemini-2.5-flash-lite": { "cache_read_input_audio_token_cost": 3e-8, + "cache_read_input_audio_token_cost_batches": 3e-8, + "cache_read_input_audio_token_cost_flex": 3e-8, + "cache_read_input_audio_token_cost_priority": 5.4e-8, "cache_read_input_token_cost": 1e-8, "cache_read_input_token_cost_batches": 1e-8, "cache_read_input_token_cost_flex": 1e-8, "cache_read_input_token_cost_priority": 1.8e-8, "input_cost_per_audio_token": 3e-7, + "input_cost_per_audio_token_flex": 1.5e-7, "input_cost_per_token": 1e-7, "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 4e-7, "output_cost_per_token": 4e-7, @@ -30329,6 +33099,11 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, + "search_free_requests": { + "count": 1500, + "period": "day", + "shared_group": "gemini-2-flash" + }, "google_maps_grounding_cost_per_query": 0.025, "input_cost_per_audio_token_batches": 1.5e-7, "input_cost_per_audio_token_priority": 5.4e-7, @@ -30355,7 +33130,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_above_200k_tokens": 0.000015, @@ -30394,23 +33168,35 @@ "search_context_size_medium": 0.035, "search_context_size_high": 0.035 }, + "search_free_requests": { + "count": 10000, + "period": "day", + "shared_group": "gemini-2.5-pro" + }, "google_maps_grounding_cost_per_query": 0.025, "input_cost_per_token_batches": 6.25e-7, "input_cost_per_token_flex": 6.25e-7, "output_cost_per_token_batches": 0.000005, "output_cost_per_token_flex": 0.000005, - "supports_url_context": true + "supports_url_context": true, + "cache_read_input_token_cost_above_200k_tokens_batches": 2.5e-7, + "deprecation_date": "2026-12-01", + "deprecation_source": "https://ai.google.dev/gemini-api/docs/deprecations", + "successor_model": "gemini/gemini-3.1-pro-preview", + "input_cost_per_token_above_200k_tokens_batches": 0.00000125, + "output_cost_per_token_above_200k_tokens_batches": 0.0000075 }, "gemini/gemini-2.5-pro-preview-tts": { "cache_read_input_token_cost": 1.25e-7, "deprecation_date": "2026-11-17", + "deprecation_source": "https://ai.google.dev/gemini-api/docs/deprecations", + "successor_model": "gemini/gemini-3.8-flash-tts", "input_cost_per_audio_token": 7e-7, "input_cost_per_token": 0.000001, "input_cost_per_token_batches": 5e-7, "litellm_provider": "gemini", "max_input_tokens": 8192, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_audio_token": 0.00002, "output_cost_per_token": 0.00002, @@ -30441,15 +33227,18 @@ }, "gemini/gemini-3-flash-preview": { "cache_read_input_audio_token_cost": 1e-7, + "cache_read_input_audio_token_cost_batches": 1e-7, + "cache_read_input_audio_token_cost_flex": 1e-7, + "cache_read_input_audio_token_cost_priority": 1.8e-7, "cache_read_input_token_cost": 5e-8, "cache_read_input_token_cost_batches": 5e-8, "cache_read_input_token_cost_flex": 5e-8, "input_cost_per_audio_token": 0.000001, + "input_cost_per_audio_token_flex": 5e-7, "input_cost_per_token": 5e-7, "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.000003, "output_cost_per_token": 0.000003, @@ -30492,6 +33281,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_audio_token_batches": 5e-7, @@ -30499,7 +33293,8 @@ "input_cost_per_token_flex": 2.5e-7, "output_cost_per_token_batches": 0.0000015, "output_cost_per_token_flex": 0.0000015, - "supports_audio_input": true + "supports_audio_input": true, + "supports_computer_use": true }, "gemini/gemini-3-pro-image": { "input_cost_per_image": 0.0011, @@ -30510,7 +33305,6 @@ "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, @@ -30546,11 +33340,18 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "supports_reasoning": true }, "gemini/gemini-3-pro-image-preview": { "deprecation_date": "2026-06-25", + "deprecation_source": "https://ai.google.dev/gemini-api/docs/deprecations", + "successor_model": "gemini/gemini-3-pro-image", "input_cost_per_image": 0.0011, "input_cost_per_token": 0.000002, "input_cost_per_token_batches": 0.000001, @@ -30559,7 +33360,6 @@ "litellm_provider": "gemini", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "image_generation", "output_cost_per_image": 0.134, "output_cost_per_image_token": 0.00012, @@ -30594,6 +33394,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "supports_reasoning": false }, @@ -30603,7 +33408,6 @@ "litellm_provider": "gemini", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "image_generation", "output_cost_per_image": 0.045, "output_cost_per_image_token": 0.00006, @@ -30616,6 +33420,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "source": "https://ai.google.dev/gemini-api/docs/pricing", "supported_endpoints": [ "/v1/chat/completions", @@ -30643,12 +33452,13 @@ }, "gemini/gemini-3.1-flash-image-preview": { "deprecation_date": "2026-06-25", + "deprecation_source": "https://ai.google.dev/gemini-api/docs/deprecations", + "successor_model": "gemini/gemini-nano-banana-2.1", "input_cost_per_token": 5e-7, "input_cost_per_token_batches": 2.5e-7, "litellm_provider": "gemini", "max_input_tokens": 65536, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "image_generation", "output_cost_per_image": 0.045, "output_cost_per_image_token": 0.00006, @@ -30682,16 +33492,27 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query" }, "gemini/gemini-3.1-flash-lite": { "cache_read_input_audio_token_cost": 5e-8, + "cache_read_input_audio_token_cost_batches": 2.5e-8, + "cache_read_input_audio_token_cost_flex": 2.5e-8, + "cache_read_input_audio_token_cost_priority": 9e-8, "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_priority": 4.5e-8, "deprecation_date": "2027-05-07", + "deprecation_source": "https://ai.google.dev/gemini-api/docs/deprecations", + "successor_model": "gemini/gemini-3.5-flash-lite", "input_cost_per_audio_token": 5e-7, + "input_cost_per_audio_token_flex": 2.5e-7, "input_cost_per_token": 2.5e-7, "input_cost_per_token_batches": 1.25e-7, "input_cost_per_token_flex": 1.25e-7, @@ -30699,7 +33520,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.0000015, "output_cost_per_token": 0.0000015, @@ -30743,6 +33563,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_audio_token_batches": 2.5e-7, @@ -30755,10 +33580,10 @@ "litellm_provider": "gemini", "max_input_tokens": 65536, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "image_generation", "output_cost_per_image": 0.0336, "output_cost_per_image_token": 0.00003, + "output_cost_per_image_token_batches": 0.000015, "output_cost_per_token": 0.0000015, "output_cost_per_token_batches": 7.5e-7, "rpm": 1000, @@ -30793,6 +33618,8 @@ "cache_read_input_token_cost_flex": 1.25e-8, "cache_read_input_token_cost_priority": 4.5e-8, "deprecation_date": "2026-05-25", + "deprecation_source": "https://ai.google.dev/gemini-api/docs/deprecations", + "successor_model": "gemini/gemini-3.1-flash-lite", "input_cost_per_audio_token": 5e-7, "input_cost_per_token": 2.5e-7, "input_cost_per_token_batches": 1.25e-7, @@ -30801,7 +33628,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.0000015, "output_cost_per_token": 0.0000015, @@ -30845,6 +33671,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_audio_token_batches": 2.5e-7 @@ -30859,7 +33690,6 @@ "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, @@ -30907,10 +33737,18 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_token_flex": 0.000001, - "output_cost_per_token_flex": 0.000006 + "output_cost_per_token_flex": 0.000006, + "cache_read_input_token_cost_above_200k_tokens_batches": 4e-7, + "input_cost_per_token_above_200k_tokens_batches": 0.000002, + "output_cost_per_token_above_200k_tokens_batches": 0.000009 }, "gemini/gemini-3.1-pro-preview-customtools": { "prompt_cache_min_tokens": 4096, @@ -30922,7 +33760,6 @@ "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, @@ -30970,10 +33807,18 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_token_flex": 0.000001, - "output_cost_per_token_flex": 0.000006 + "output_cost_per_token_flex": 0.000006, + "cache_read_input_token_cost_above_200k_tokens_batches": 4e-7, + "input_cost_per_token_above_200k_tokens_batches": 0.000002, + "output_cost_per_token_above_200k_tokens_batches": 0.000009 }, "gemini/gemini-3.5-flash": { "prompt_cache_min_tokens": 4096, @@ -30984,7 +33829,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.000009, "output_cost_per_token": 0.000009, @@ -31029,6 +33873,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_token_batches": 7.5e-7, @@ -31039,7 +33888,7 @@ }, "gemini/gemini-3.5-flash-lite": { "cache_read_input_token_cost": 3e-8, - "cache_read_input_token_cost_batches": 2e-8, + "cache_read_input_token_cost_batches": 1.5e-8, "cache_read_input_token_cost_flex": 2e-8, "cache_read_input_token_cost_priority": 5e-8, "input_cost_per_token": 3e-7, @@ -31049,7 +33898,6 @@ "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, @@ -31080,6 +33928,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_sampling_params": false, "supports_system_messages": true, "supports_tool_choice": true, "supports_url_context": true, @@ -31093,8 +33942,14 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", - "google_maps_grounding_cost_per_query": 0.014 + "google_maps_grounding_cost_per_query": 0.014, + "supports_computer_use": true }, "gemini/gemini-3.6-flash": { "prompt_cache_min_tokens": 4096, @@ -31107,7 +33962,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.00000375, "output_cost_per_token": 0.00000375, @@ -31137,6 +33991,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_sampling_params": false, "supports_system_messages": true, "supports_tool_choice": true, "supports_url_context": true, @@ -31153,6 +34008,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014 }, @@ -31167,7 +34027,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.00000375, "output_cost_per_token": 0.00000375, @@ -31198,6 +34057,7 @@ "supports_reasoning": true, "supports_minimal_reasoning_effort": false, "supports_response_schema": true, + "supports_sampling_params": false, "supports_system_messages": true, "supports_tool_choice": true, "supports_url_context": true, @@ -31214,6 +34074,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014 }, @@ -31228,7 +34093,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.00000375, "output_cost_per_token": 0.00000375, @@ -31259,6 +34123,7 @@ "supports_reasoning": true, "supports_minimal_reasoning_effort": false, "supports_response_schema": true, + "supports_sampling_params": false, "supports_system_messages": true, "supports_tool_choice": true, "supports_url_context": true, @@ -31275,8 +34140,14 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", - "google_maps_grounding_cost_per_query": 0.014 + "google_maps_grounding_cost_per_query": 0.014, + "supports_computer_use": true }, "gemini/gemini-4-argon": { "cache_read_input_token_cost": 1e-7, @@ -31291,7 +34162,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "mode": "chat", "output_cost_per_reasoning_token": 0.00001, "output_cost_per_token": 0.00001, @@ -31321,6 +34191,8 @@ ], "supports_audio_input": true, "supports_audio_output": false, + "supports_computer_use": true, + "supports_continuation": true, "supports_function_calling": true, "supports_minimal_reasoning_effort": false, "supports_native_streaming": true, @@ -31344,7 +34216,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 8192, - "max_tokens": 8192, "metadata": { "notes": "Rate limits not documented for gemini-exp-1114. Assuming same as gemini-1.5-pro.", "supports_tool_choice": true @@ -31367,7 +34238,6 @@ "litellm_provider": "gemini", "max_input_tokens": 2097152, "max_output_tokens": 8192, - "max_tokens": 8192, "metadata": { "notes": "Rate limits not documented for gemini-exp-1206. Assuming same as gemini-1.5-pro.", "supports_tool_choice": true @@ -31390,7 +34260,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.00000375, "output_cost_per_token": 0.00000375, @@ -31449,7 +34318,6 @@ "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, @@ -31505,7 +34373,7 @@ "input_cost_per_token": 3.5e-7, "litellm_provider": "gemini", "max_output_tokens": 8192, - "max_tokens": 8192, + "max_input_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000105, "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", @@ -31519,7 +34387,7 @@ "input_cost_per_token": 3.5e-7, "litellm_provider": "gemini", "max_output_tokens": 8192, - "max_tokens": 8192, + "max_input_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000105, "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", @@ -31535,10 +34403,10 @@ "litellm_provider": "gemini", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "image_generation", "output_cost_per_image": 0.0336, "output_cost_per_image_token": 0.00003, + "output_cost_per_image_token_batches": 0.000015, "output_cost_per_token": 0.0000075, "output_cost_per_token_batches": 0.00000375, "rpm": 1000, @@ -31579,7 +34447,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.000009, "output_cost_per_token": 0.000009, @@ -31612,7 +34479,6 @@ "litellm_provider": "gemini", "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.000009, "output_cost_per_token": 0.000009, @@ -31638,7 +34504,9 @@ "supports_video_input": true, "supports_vision": true, "tpm": 800000, - "deprecation_date": "2026-10-22" + "deprecation_date": "2026-10-22", + "deprecation_source": "https://ai.google.dev/gemini-api/docs/deprecations", + "successor_model": "gemini/gemini-omni-1.1-flash" }, "gemini/gemini-pro-latest": { "cache_read_input_token_cost": 2e-7, @@ -31648,7 +34516,6 @@ "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, @@ -31711,7 +34578,6 @@ "litellm_provider": "gemini", "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.000005, "output_cost_per_token": 0.000005, @@ -31758,7 +34624,6 @@ "litellm_provider": "gemini", "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000005, "search_context_cost_per_query": { @@ -31801,7 +34666,6 @@ "litellm_provider": "gemini", "max_input_tokens": 131072, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_character": 0, "output_cost_per_character_above_128k_tokens": 0, @@ -31821,7 +34685,6 @@ "litellm_provider": "gemini", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, @@ -31837,7 +34700,6 @@ "litellm_provider": "gemini", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, @@ -31861,7 +34723,6 @@ "litellm_provider": "gemini", "max_input_tokens": 32767, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_character": 0, "output_cost_per_character_above_128k_tokens": 0, @@ -31880,7 +34741,6 @@ "litellm_provider": "gemini", "max_input_tokens": 131072, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_image": 0.04, "output_cost_per_token": 0, @@ -31905,7 +34765,6 @@ "litellm_provider": "gemini", "max_input_tokens": 131072, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "source": "https://ai.google.dev/gemini-api/docs/pricing", @@ -31930,7 +34789,6 @@ "litellm_provider": "gemini", "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0, "source": "https://ai.google.dev/gemini-api/docs/pricing", @@ -31955,7 +34813,6 @@ "litellm_provider": "gemini", "max_input_tokens": 131072, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_image": 0.04, "output_cost_per_token": 0, @@ -31980,7 +34837,6 @@ "litellm_provider": "gemini", "max_input_tokens": 131072, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "source": "https://ai.google.dev/gemini-api/docs/pricing", @@ -32005,7 +34861,6 @@ "litellm_provider": "gemini", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0, "source": "https://ai.google.dev/gemini-api/docs/models/lyria-realtime-exp", @@ -32034,7 +34889,6 @@ "litellm_provider": "gemini", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "image_generation", "output_cost_per_image": 0.134, "output_cost_per_image_token": 0.00012, @@ -32076,7 +34930,6 @@ "litellm_provider": "gigachat", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true, @@ -32098,7 +34951,6 @@ "litellm_provider": "gigachat", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true, @@ -32110,7 +34962,6 @@ "litellm_provider": "gigachat", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true, @@ -32124,7 +34975,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.00005, "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml", @@ -32147,7 +34997,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.00005, "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml", @@ -32170,7 +35019,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 128000, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.000005, "supported_endpoints": [ @@ -32191,7 +35039,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 128000, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 5e-7, "output_cost_per_token_above_100k_tokens": 0.0000025, @@ -32210,9 +35057,9 @@ }, "github_copilot/claude-opus-4.7": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 16000, - "max_tokens": 16000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "max_tokens": 64000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -32225,11 +35072,11 @@ "github_copilot/claude-opus-4.8": { "cache_creation_input_token_cost": 0.00000625, "cache_read_input_token_cost": 5e-7, + "deprecation_date": "2026-11-16", "input_cost_per_token": 0.000005, "litellm_provider": "github_copilot", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000025, "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml", @@ -32247,11 +35094,11 @@ "github_copilot/claude-opus-4.8-fast": { "cache_creation_input_token_cost": 0.0000125, "cache_read_input_token_cost": 0.000001, + "deprecation_date": "2026-11-16", "input_cost_per_token": 0.00001, "litellm_provider": "github_copilot", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.00005, "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml", @@ -32274,7 +35121,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000025, "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml", @@ -32296,7 +35142,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 200000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00002, "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml", @@ -32320,7 +35165,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml", @@ -32343,7 +35187,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.00001, "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml", @@ -32365,7 +35208,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 200000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml", @@ -32405,11 +35247,11 @@ }, "github_copilot/gemini-3.7-flash": { "cache_read_input_token_cost": 7.5e-8, + "deprecation_date": "2026-10-19", "input_cost_per_token": 7.5e-7, "litellm_provider": "github_copilot", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.00000375, "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml", @@ -32419,6 +35261,7 @@ "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_reasoning": true, + "supports_sampling_params": false, "supports_vision": true }, "github_copilot/gemini-3.8-flash": { @@ -32427,7 +35270,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 200000, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.00000375, "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml", @@ -32437,6 +35279,7 @@ "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_reasoning": true, + "supports_sampling_params": false, "supports_vision": true }, "github_copilot/gemini-4-argon": { @@ -32445,7 +35288,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 200000, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.00001, "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml", @@ -32461,7 +35303,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 16384, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "supports_function_calling": true }, @@ -32469,7 +35310,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 16384, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "supports_function_calling": true }, @@ -32477,7 +35317,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 32768, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "supports_function_calling": true }, @@ -32485,7 +35324,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 32768, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "supports_function_calling": true }, @@ -32493,28 +35331,31 @@ "litellm_provider": "github_copilot", "max_input_tokens": 64000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "supports_function_calling": true, "supports_parallel_function_calling": true }, "github_copilot/gpt-4.1": { + "deprecation_date": "2026-06-01", + "deprecation_source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/model-deprecation-history.yml", "litellm_provider": "github_copilot", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", + "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/model-deprecation-history.yml", "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_response_schema": true, "supports_vision": true }, "github_copilot/gpt-4.1-2025-04-14": { + "deprecation_date": "2026-06-01", + "deprecation_source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/model-deprecation-history.yml", "litellm_provider": "github_copilot", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", + "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/model-deprecation-history.yml", "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_response_schema": true, @@ -32524,7 +35365,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 64000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "supports_function_calling": true, "supports_parallel_function_calling": true, @@ -32534,7 +35374,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 64000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "supports_function_calling": true, "supports_parallel_function_calling": true, @@ -32544,7 +35383,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 64000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "supports_function_calling": true, "supports_parallel_function_calling": true @@ -32553,7 +35391,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 64000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "supports_function_calling": true, "supports_parallel_function_calling": true, @@ -32563,7 +35400,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 64000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "supports_function_calling": true, "supports_parallel_function_calling": true @@ -32572,20 +35408,20 @@ "litellm_provider": "github_copilot", "max_input_tokens": 64000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "supports_function_calling": true, "supports_parallel_function_calling": true }, "github_copilot/gpt-5-mini": { "cache_read_input_token_cost": 2.5e-8, + "deprecation_date": "2026-10-19", "input_cost_per_token": 2.5e-7, "litellm_provider": "github_copilot", "max_input_tokens": 128000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000002, + "source": "https://github.blog/changelog/2026-10-19-github-copilot-models-deprecated-on-october-19-2026", "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_response_schema": true, @@ -32593,9 +35429,9 @@ }, "github_copilot/gpt-5.3-codex": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -32610,12 +35446,13 @@ "github_copilot/gpt-5.4": { "cache_read_input_token_cost": 2.5e-7, "cache_read_input_token_cost_above_272k_tokens": 5e-7, + "deprecation_date": "2026-10-19", + "deprecation_source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/model-deprecation-history.yml", "input_cost_per_token": 0.0000025, "input_cost_per_token_above_272k_tokens": 0.000005, "litellm_provider": "github_copilot", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_above_272k_tokens": 0.0000225, @@ -32632,9 +35469,9 @@ }, "github_copilot/gpt-5.4-mini": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -32647,9 +35484,9 @@ }, "github_copilot/gpt-5.4-nano": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -32662,9 +35499,9 @@ }, "github_copilot/gpt-5.5": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -32678,9 +35515,9 @@ }, "github_copilot/gpt-5.6-luna": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -32694,9 +35531,9 @@ }, "github_copilot/gpt-5.6-sol": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -32710,9 +35547,9 @@ }, "github_copilot/gpt-5.6-terra": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -32726,9 +35563,9 @@ }, "github_copilot/gpt-6-astra": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -32742,9 +35579,9 @@ }, "github_copilot/gpt-6-luna": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -32758,9 +35595,9 @@ }, "github_copilot/gpt-6-sol": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -32775,12 +35612,12 @@ "github_copilot/grok-4.5": { "cache_read_input_token_cost": 5e-7, "cache_read_input_token_cost_above_200k_tokens": 0.000001, + "deprecation_date": "2026-10-19", "input_cost_per_token": 0.000002, "input_cost_per_token_above_200k_tokens": 0.000004, "litellm_provider": "github_copilot", "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, @@ -32802,7 +35639,6 @@ "litellm_provider": "github_copilot", "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, @@ -32824,7 +35660,6 @@ "litellm_provider": "github_copilot", "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, @@ -32840,9 +35675,9 @@ }, "github_copilot/kimi-k2.7-code": { "litellm_provider": "github_copilot", - "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_input_tokens": 262144, + "max_output_tokens": 131072, + "max_tokens": 131072, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -32858,7 +35693,6 @@ "litellm_provider": "github_copilot", "max_input_tokens": 917504, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000015, "source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml", @@ -32873,8 +35707,8 @@ "github_copilot/mai-code-1.1-flash": { "litellm_provider": "github_copilot", "max_input_tokens": 128000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_output_tokens": 128000, + "max_tokens": 128000, "mode": "chat", "source": "https://docs.github.com/en/copilot/reference/ai-models/supported-models", "supported_endpoints": [ @@ -32889,7 +35723,6 @@ "litellm_provider": "volcengine", "max_input_tokens": 204800, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0, "supports_assistant_prefill": true, @@ -32907,7 +35740,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_batches": 0.00000125, @@ -32930,7 +35762,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "search_context_cost_per_query": { @@ -32958,7 +35789,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 512, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "global.anthropic.claude-fable-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "global.anthropic.claude-fable-5-1": { "cache_creation_input_token_cost": 0.0000125, @@ -32968,7 +35804,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "search_context_cost_per_query": { @@ -33008,7 +35843,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000005, "source": "https://aws.amazon.com/bedrock/pricing/", @@ -33025,7 +35859,11 @@ "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, "input_cost_per_token_batches": 5e-7, - "output_cost_per_token_batches": 0.0000025 + "output_cost_per_token_batches": 0.0000025, + "token_count_model": { + "model": "anthropic.claude-haiku-4-5-20251001-v1:0", + "litellm_provider": "bedrock" + } }, "global.anthropic.claude-haiku-5-5": { "input_cost_per_token_above_100k_tokens": 5e-7, @@ -33041,12 +35879,12 @@ "litellm_provider": "bedrock_converse", "token_count_model": { "model": "global.anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", "region": "us-east-1" }, "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "search_context_cost_per_query": { @@ -33082,7 +35920,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supports_adaptive_thinking": true, "thinking_always_on": true, @@ -33120,7 +35957,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000025, "search_context_cost_per_query": { @@ -33142,7 +35978,11 @@ "bedrock_output_config_effort_ceiling": "high", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-5-20251101-v1:0", + "litellm_provider": "bedrock" + } }, "global.anthropic.claude-opus-4-6-v1": { "supports_adaptive_thinking": true, @@ -33155,7 +35995,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "search_context_cost_per_query": { @@ -33178,7 +36017,11 @@ "bedrock_output_config_effort_ceiling": "max", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-6-v1", + "litellm_provider": "bedrock" + } }, "global.anthropic.claude-opus-4-7": { "bedrock_converse_supports_strict_tools": false, @@ -33191,7 +36034,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "search_context_cost_per_query": { @@ -33216,7 +36058,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 2048, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "global.anthropic.claude-opus-4-7", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "global.anthropic.claude-opus-4-8": { "bedrock_converse_supports_strict_tools": false, @@ -33230,7 +36077,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "search_context_cost_per_query": { @@ -33256,7 +36102,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "global.anthropic.claude-opus-4-8", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "global.anthropic.claude-opus-5": { "bedrock_converse_supports_strict_tools": false, @@ -33270,7 +36121,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000025, "search_context_cost_per_query": { @@ -33294,7 +36144,14 @@ "supports_output_config": true, "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 512, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/us-east-1/index.json", + "token_count_model": { + "model": "global.anthropic.claude-opus-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + }, + "input_cost_per_token_batches": 0.0000025, + "output_cost_per_token_batches": 0.0000125 }, "global.anthropic.claude-opus-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -33308,7 +36165,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00002, "search_context_cost_per_query": { @@ -33334,12 +36190,19 @@ "prompt_cache_min_tokens": 512, "source": "https://aws.amazon.com/bedrock/pricing/", "thinking_always_on": true, - "supports_forced_tool_use": false + "supports_forced_tool_use": false, + "token_count_model": { + "model": "global.anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "global.anthropic.claude-sonnet-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00000375, "cache_read_input_token_cost": 3e-7, "deprecation_date": "2026-10-14", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "successor_model": "global.anthropic.claude-sonnet-5", "input_cost_per_token": 0.000003, "input_cost_per_token_above_200k_tokens": 0.000006, "output_cost_per_token_above_200k_tokens": 0.0000225, @@ -33348,7 +36211,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "search_context_cost_per_query": { @@ -33367,7 +36229,11 @@ "supports_vision": true, "bedrock_converse_supports_strict_tools": false, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-20250514-v1:0", + "litellm_provider": "bedrock" + } }, "global.anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.00000375, @@ -33380,11 +36246,12 @@ "cache_creation_input_token_cost_above_1hr_above_200k_tokens": 0.000012, "cache_read_input_token_cost_above_200k_tokens": 6e-7, "deprecation_date": "2027-04-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "successor_model": "global.anthropic.claude-sonnet-5-5", "litellm_provider": "bedrock_converse", "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "search_context_cost_per_query": { @@ -33406,7 +36273,11 @@ "prompt_cache_min_tokens": 1024, "input_cost_per_token_batches": 0.0000015, "output_cost_per_token_batches": 0.0000075, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-5-20250929-v1:0", + "litellm_provider": "bedrock" + } }, "global.anthropic.claude-sonnet-4-6": { "supports_adaptive_thinking": true, @@ -33419,7 +36290,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "search_context_cost_per_query": { @@ -33441,7 +36311,11 @@ "supports_output_config": true, "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-6", + "litellm_provider": "bedrock" + } }, "global.anthropic.claude-sonnet-5": { "bedrock_converse_supports_strict_tools": false, @@ -33453,7 +36327,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "search_context_cost_per_query": { @@ -33481,7 +36354,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "global.anthropic.claude-sonnet-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "global.anthropic.claude-sonnet-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -33492,12 +36370,12 @@ "litellm_provider": "bedrock_converse", "token_count_model": { "model": "global.anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", "region": "us-east-1" }, "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "search_context_cost_per_query": { @@ -33545,7 +36423,6 @@ "token_count_tokenizer": "kimi_k3", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_flex": 0.0000075, @@ -33570,9 +36447,8 @@ "output_cost_per_token_above_272k_tokens": 0.0000225, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-54.html", "supported_modalities": [ @@ -33602,9 +36478,8 @@ "output_cost_per_token_above_272k_tokens": 0.000045, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-55.html", "supported_modalities": [ @@ -33637,9 +36512,8 @@ "output_cost_per_token_above_272k_tokens": 0.0000018, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-56-luna.html", "supported_modalities": [ @@ -33674,9 +36548,8 @@ "output_cost_per_token_above_272k_tokens": 0.00003, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-56-sol.html", "supported_modalities": [ @@ -33711,9 +36584,8 @@ "output_cost_per_token_above_272k_tokens": 0.000018, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-56-terra.html", "supported_modalities": [ @@ -33754,9 +36626,8 @@ "output_cost_per_token_above_272k_tokens": 0.000075, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token_above_272k_tokens_ultrafast": 0.00045, "output_cost_per_token_ultrafast": 0.0003, @@ -33795,9 +36666,8 @@ "output_cost_per_token_above_272k_tokens": 7.5e-7, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supported_modalities": [ "text", @@ -33834,9 +36704,8 @@ "output_cost_per_token_above_272k_tokens": 0.000015, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supported_modalities": [ "text", @@ -33878,7 +36747,6 @@ "supports_bedrock_converse_tool_result_images": false, "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_above_272k_tokens": 0.000015, @@ -33908,20 +36776,59 @@ "supports_sampling_params": false, "supports_xhigh_reasoning_effort": true }, + "global.openai.gpt-6.1-terra": { + "cache_creation_input_token_cost": 0.00000125, + "cache_creation_input_token_cost_above_272k_tokens": 0.0000025, + "cache_read_input_token_cost": 5e-8, + "cache_read_input_token_cost_above_272k_tokens": 1e-7, + "input_cost_per_token": 0.000001, + "input_cost_per_token_above_272k_tokens": 0.000002, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000005, + "output_cost_per_token_above_272k_tokens": 0.0000075, + "source": "https://developers.openai.com/api/docs/models/gpt-6.1-terra", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_bedrock_converse_tool_result_images": false, + "supports_bedrock_runtime_chat_completions_response_format": true, + "supports_function_calling": true, + "supports_max_reasoning_effort": true, + "supports_minimal_reasoning_effort": false, + "supports_none_reasoning_effort": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true + }, "global.twelvelabs.pegasus-1-2-v1:0": { + "deprecation_date": "2027-03-22", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-twelvelabs-pegasus-v1-2.md", "input_cost_per_video_per_second": 0.00049, "output_cost_per_token": 0.0000075, "litellm_provider": "bedrock", "mode": "chat", "supports_video_input": true, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-twelvelabs-pegasus-v1-2.md" }, "global.twelvelabs.pegasus-1-5-v1:0": { "input_cost_per_video_per_second": 0.00049, "litellm_provider": "bedrock", "max_input_tokens": 261120, "max_output_tokens": 98304, - "max_tokens": 98304, "mode": "chat", "output_cost_per_token": 0.0000075, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-twelvelabs-pegasus-v1-5.html", @@ -33944,7 +36851,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 500000, "max_output_tokens": 500000, - "max_tokens": 500000, "mode": "chat", "output_cost_per_token_flex": 0.000003, "output_cost_per_token_priority": 0.0000105, @@ -33971,7 +36877,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 524288, "max_output_tokens": 524288, - "max_tokens": 524288, "mode": "chat", "output_cost_per_token": 0.000006, "output_cost_per_token_flex": 0.000003, @@ -33999,7 +36904,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000528, "output_cost_per_token_batches": 0.00000264, @@ -34021,7 +36925,6 @@ "litellm_provider": "gmi", "max_input_tokens": 196608, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000012 }, @@ -34030,7 +36933,6 @@ "litellm_provider": "gmi", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000014, "supports_vision": true @@ -34040,7 +36942,6 @@ "litellm_provider": "gmi", "max_input_tokens": 409600, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000075, "supports_function_calling": true, @@ -34051,7 +36952,6 @@ "litellm_provider": "gmi", "max_input_tokens": 409600, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000025, "supports_function_calling": true, @@ -34063,7 +36963,6 @@ "litellm_provider": "gmi", "max_input_tokens": 409600, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_function_calling": true, @@ -34074,7 +36973,6 @@ "litellm_provider": "gmi", "max_input_tokens": 409600, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_function_calling": true, @@ -34085,7 +36983,6 @@ "litellm_provider": "gmi", "max_input_tokens": 163840, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 8.8e-7, "supports_function_calling": true @@ -34095,7 +36992,6 @@ "litellm_provider": "gmi", "max_input_tokens": 163840, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 4e-7, "supports_function_calling": true @@ -34105,7 +37001,6 @@ "litellm_provider": "gmi", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000003, "supports_function_calling": true, @@ -34117,7 +37012,6 @@ "litellm_provider": "gmi", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000012 }, @@ -34126,7 +37020,6 @@ "litellm_provider": "gmi", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "supports_function_calling": true, @@ -34137,7 +37030,6 @@ "litellm_provider": "gmi", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6e-7, "supports_function_calling": true, @@ -34148,7 +37040,6 @@ "litellm_provider": "gmi", "max_input_tokens": 409600, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.00001, "supports_function_calling": true @@ -34158,7 +37049,6 @@ "litellm_provider": "gmi", "max_input_tokens": 409600, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.00001, "supports_function_calling": true @@ -34168,7 +37058,6 @@ "litellm_provider": "gmi", "max_input_tokens": 409600, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000014, "supports_function_calling": true @@ -34178,12 +37067,12 @@ "litellm_provider": "gmi", "max_input_tokens": 202752, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000002 }, "google.gemma-3-12b-it": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 9e-8, "input_cost_per_token_batches": 5e-8, "input_cost_per_token_flex": 5e-8, @@ -34191,7 +37080,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 2.9e-7, "output_cost_per_token_batches": 1.5e-7, @@ -34206,6 +37094,7 @@ }, "google.gemma-3-27b-it": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 2.3e-7, "input_cost_per_token_batches": 1.2e-7, "input_cost_per_token_flex": 1.2e-7, @@ -34213,7 +37102,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 3.8e-7, "output_cost_per_token_batches": 1.9e-7, @@ -34228,6 +37116,7 @@ }, "google.gemma-3-4b-it": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 4e-8, "input_cost_per_token_batches": 2e-8, "input_cost_per_token_flex": 2e-8, @@ -34235,7 +37124,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 8e-8, "output_cost_per_token_batches": 4e-8, @@ -34249,11 +37137,12 @@ }, "gpt-3.5-turbo": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "input_cost_per_token": 5e-7, "litellm_provider": "openai", "max_input_tokens": 16385, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://developers.openai.com/api/docs/pricing", @@ -34264,12 +37153,13 @@ }, "gpt-3.5-turbo-0125": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "input_cost_per_token": 5e-7, "input_cost_per_token_batches": 2.5e-7, "litellm_provider": "openai", "max_input_tokens": 16385, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.0000015, "output_cost_per_token_batches": 7.5e-7, @@ -34282,12 +37172,13 @@ }, "gpt-3.5-turbo-1106": { "deprecation_date": "2026-09-28", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "input_cost_per_token": 0.000001, "input_cost_per_token_batches": 0.000001, "litellm_provider": "openai", "max_input_tokens": 16385, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000002, "output_cost_per_token_batches": 0.000002, @@ -34300,11 +37191,11 @@ }, "gpt-3.5-turbo-16k": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", "input_cost_per_token": 0.000003, "litellm_provider": "openai", "max_input_tokens": 16385, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000004, "supports_prompt_caching": true, @@ -34313,11 +37204,12 @@ }, "gpt-4": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.00003, "litellm_provider": "openai", "max_input_tokens": 8192, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00006, "supports_function_calling": true, @@ -34327,12 +37219,13 @@ }, "gpt-4-0613": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.00003, "input_cost_per_token_batches": 0.000015, "litellm_provider": "openai", "max_input_tokens": 8192, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00006, "output_cost_per_token_batches": 0.00003, @@ -34344,11 +37237,12 @@ }, "gpt-4-1106-preview": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.00001, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00003, "supports_function_calling": true, @@ -34359,11 +37253,12 @@ }, "gpt-4-turbo": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.00001, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00003, "supports_function_calling": true, @@ -34376,12 +37271,13 @@ }, "gpt-4-turbo-2024-04-09": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.00001, "input_cost_per_token_batches": 0.000005, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00003, "output_cost_per_token_batches": 0.000015, @@ -34397,13 +37293,15 @@ "gpt-4.1": { "cache_read_input_token_cost": 5e-7, "cache_read_input_token_cost_priority": 8.75e-7, + "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 0.000002, "input_cost_per_token_batches": 0.000001, "input_cost_per_token_priority": 0.0000035, "litellm_provider": "openai", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000008, "output_cost_per_token_batches": 0.000004, @@ -34441,13 +37339,14 @@ "cache_read_input_token_cost": 5e-7, "cache_read_input_token_cost_priority": 8.75e-7, "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 0.000002, "input_cost_per_token_priority": 0.0000035, "input_cost_per_token_batches": 0.000001, "litellm_provider": "openai", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000008, "output_cost_per_token_priority": 0.000014, @@ -34484,13 +37383,15 @@ "gpt-4.1-mini": { "cache_read_input_token_cost": 1e-7, "cache_read_input_token_cost_priority": 1.75e-7, + "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 4e-7, "input_cost_per_token_batches": 2e-7, "input_cost_per_token_priority": 7e-7, "litellm_provider": "openai", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000016, "output_cost_per_token_batches": 8e-7, @@ -34528,13 +37429,14 @@ "cache_read_input_token_cost": 1e-7, "cache_read_input_token_cost_priority": 1.75e-7, "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 4e-7, "input_cost_per_token_priority": 7e-7, "input_cost_per_token_batches": 2e-7, "litellm_provider": "openai", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000016, "output_cost_per_token_priority": 0.0000028, @@ -34572,13 +37474,14 @@ "cache_read_input_token_cost": 2.5e-8, "cache_read_input_token_cost_priority": 5e-8, "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-luna", "input_cost_per_token": 1e-7, "input_cost_per_token_batches": 5e-8, "input_cost_per_token_priority": 2e-7, "litellm_provider": "openai", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 4e-7, "output_cost_per_token_batches": 2e-7, @@ -34610,13 +37513,14 @@ "cache_read_input_token_cost": 2.5e-8, "cache_read_input_token_cost_priority": 5e-8, "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-luna", "input_cost_per_token": 1e-7, "input_cost_per_token_priority": 2e-7, "input_cost_per_token_batches": 5e-8, "litellm_provider": "openai", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 4e-7, "output_cost_per_token_priority": 8e-7, @@ -34647,13 +37551,15 @@ "gpt-4o": { "cache_read_input_token_cost": 0.00000125, "cache_read_input_token_cost_priority": 0.000002125, + "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 0.0000025, "input_cost_per_token_batches": 0.00000125, "input_cost_per_token_priority": 0.00000425, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, @@ -34670,13 +37576,14 @@ }, "gpt-4o-2024-05-13": { "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.000005, "input_cost_per_token_batches": 0.0000025, "input_cost_per_token_priority": 0.00000875, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_batches": 0.0000075, @@ -34694,13 +37601,14 @@ "cache_read_input_token_cost": 0.00000125, "cache_read_input_token_cost_priority": 0.000002125, "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 0.0000025, "input_cost_per_token_priority": 0.00000425, "input_cost_per_token_batches": 0.00000125, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_priority": 0.000017, @@ -34719,13 +37627,14 @@ "cache_read_input_token_cost": 0.00000125, "cache_read_input_token_cost_priority": 0.000002125, "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 0.0000025, "input_cost_per_token_priority": 0.00000425, "input_cost_per_token_batches": 0.00000125, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_priority": 0.000017, @@ -34742,12 +37651,13 @@ }, "gpt-4o-audio-preview-2024-12-17": { "deprecation_date": "2027-01-20", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-audio-1.5", "input_cost_per_audio_token": 0.00004, "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.00008, "output_cost_per_token": 0.00001, @@ -34760,12 +37670,13 @@ }, "gpt-4o-audio-preview-2025-06-03": { "deprecation_date": "2027-01-20", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-audio-1.5", "input_cost_per_audio_token": 0.00004, "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.00008, "output_cost_per_token": 0.00001, @@ -34779,13 +37690,15 @@ "gpt-4o-mini": { "cache_read_input_token_cost": 7.5e-8, "cache_read_input_token_cost_priority": 1.25e-7, + "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 1.5e-7, "input_cost_per_token_batches": 7.5e-8, "input_cost_per_token_priority": 2.5e-7, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_batches": 3e-7, @@ -34809,13 +37722,14 @@ "cache_read_input_token_cost": 7.5e-8, "cache_read_input_token_cost_priority": 1.25e-7, "deprecation_date": "2027-01-14", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "input_cost_per_token": 1.5e-7, "input_cost_per_token_priority": 2.5e-7, "input_cost_per_token_batches": 7.5e-8, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_priority": 0.000001, @@ -34837,12 +37751,12 @@ }, "gpt-4o-mini-audio-preview-2024-12-17": { "deprecation_date": "2027-01-20", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", "input_cost_per_audio_token": 0.00001, "input_cost_per_token": 1.5e-7, "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": 6e-7, @@ -34860,7 +37774,6 @@ "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_batches": 3e-7, @@ -34881,13 +37794,14 @@ }, "gpt-4o-mini-search-preview-2025-03-11": { "deprecation_date": "2026-07-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "cache_read_input_token_cost": 7.5e-8, "input_cost_per_token": 1.5e-7, "input_cost_per_token_batches": 7.5e-8, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_batches": 3e-7, @@ -34914,7 +37828,6 @@ "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, @@ -34935,13 +37848,14 @@ }, "gpt-4o-search-preview-2025-03-11": { "deprecation_date": "2026-07-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "cache_read_input_token_cost": 0.00000125, "input_cost_per_token": 0.0000025, "input_cost_per_token_batches": 0.00000125, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, @@ -34962,62 +37876,13 @@ "source": "https://developers.openai.com/api/docs/models/gpt-4o-search-preview" }, "gpt-5": { - "cache_read_input_token_cost": 1.25e-7, - "cache_read_input_token_cost_batches": 6.25e-8, - "cache_read_input_token_cost_flex": 6.25e-8, - "cache_read_input_token_cost_priority": 2.5e-7, - "input_cost_per_token": 0.00000125, - "input_cost_per_token_batches": 6.25e-7, - "input_cost_per_token_flex": 6.25e-7, - "input_cost_per_token_priority": 0.0000025, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 0.00001, - "output_cost_per_token_batches": 0.000005, - "output_cost_per_token_flex": 0.000005, - "output_cost_per_token_priority": 0.00002, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "source": "https://developers.openai.com/api/docs/pricing", - "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": false, - "supports_xhigh_reasoning_effort": false, - "supports_minimal_reasoning_effort": true - }, - "gpt-5-2025-08-07": { "cache_read_input_token_cost": 1.25e-7, "cache_read_input_token_cost_batches": 6.25e-8, "cache_read_input_token_cost_flex": 6.25e-8, "cache_read_input_token_cost_priority": 2.5e-7, "deprecation_date": "2026-12-11", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.00000125, "input_cost_per_token_batches": 6.25e-7, "input_cost_per_token_flex": 6.25e-7, @@ -35025,131 +37890,208 @@ "litellm_provider": "openai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_batches": 0.000005, "output_cost_per_token_flex": 0.000005, "output_cost_per_token_priority": 0.00002, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "source": "https://developers.openai.com/api/docs/pricing", - "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": false, - "supports_xhigh_reasoning_effort": false, - "supports_minimal_reasoning_effort": true - }, - "gpt-5-chat": { - "cache_read_input_token_cost": 1.25e-7, - "deprecation_date": "2026-07-23", - "input_cost_per_token": 0.00000125, - "litellm_provider": "openai", - "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": false, - "supports_native_streaming": true, - "supports_parallel_function_calling": false, - "supports_pdf_input": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_system_messages": true, - "supports_tool_choice": false, - "supports_vision": true, - "supports_none_reasoning_effort": false, - "supports_xhigh_reasoning_effort": false, - "supports_minimal_reasoning_effort": true - }, - "gpt-5-chat-latest": { - "cache_read_input_token_cost": 1.25e-7, - "deprecation_date": "2026-07-23", - "input_cost_per_token": 0.00000125, - "litellm_provider": "openai", - "max_input_tokens": 128000, - "max_output_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 0.00001, - "source": "https://developers.openai.com/api/docs/models/gpt-5-chat-latest", - "supported_endpoints": [ - "/v1/chat/completions", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" + "reasoning_contexts": [ + "auto", + "current_turn" ], - "supported_output_modalities": [ - "text" + "reasoning_modes": [ + "standard" + ], + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "source": "https://developers.openai.com/api/docs/pricing", + "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": false, + "supports_xhigh_reasoning_effort": false, + "supports_minimal_reasoning_effort": true + }, + "gpt-5-2025-08-07": { + "cache_read_input_token_cost": 1.25e-7, + "cache_read_input_token_cost_batches": 6.25e-8, + "cache_read_input_token_cost_flex": 6.25e-8, + "cache_read_input_token_cost_priority": 2.5e-7, + "deprecation_date": "2026-12-11", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", + "input_cost_per_token": 0.00000125, + "input_cost_per_token_batches": 6.25e-7, + "input_cost_per_token_flex": 6.25e-7, + "input_cost_per_token_priority": 0.0000025, + "litellm_provider": "openai", + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.00001, + "output_cost_per_token_batches": 0.000005, + "output_cost_per_token_flex": 0.000005, + "output_cost_per_token_priority": 0.00002, + "reasoning_contexts": [ + "auto", + "current_turn" + ], + "reasoning_modes": [ + "standard" + ], + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "source": "https://developers.openai.com/api/docs/pricing", + "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": false, + "supports_xhigh_reasoning_effort": false, + "supports_minimal_reasoning_effort": true + }, + "gpt-5-chat": { + "cache_read_input_token_cost": 1.25e-7, + "deprecation_date": "2026-07-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.2-chat-latest", + "input_cost_per_token": 0.00000125, + "litellm_provider": "openai", + "max_input_tokens": 128000, + "max_output_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": false, + "supports_native_streaming": true, + "supports_parallel_function_calling": false, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": false, + "supports_vision": true, + "supports_none_reasoning_effort": false, + "supports_xhigh_reasoning_effort": false, + "supports_minimal_reasoning_effort": true + }, + "gpt-5-chat-latest": { + "cache_read_input_token_cost": 1.25e-7, + "deprecation_date": "2026-07-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", + "input_cost_per_token": 0.00000125, + "litellm_provider": "openai", + "max_input_tokens": 128000, + "max_output_tokens": 16384, + "mode": "chat", + "output_cost_per_token": 0.00001, + "source": "https://developers.openai.com/api/docs/models/gpt-5-chat-latest", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_parallel_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "gpt-5-mini": { + "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_priority": 4.5e-8, + "deprecation_date": "2026-12-11", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", + "input_cost_per_token": 2.5e-7, + "input_cost_per_token_batches": 1.25e-7, + "input_cost_per_token_flex": 1.25e-7, + "input_cost_per_token_priority": 4.5e-7, + "litellm_provider": "openai", + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000002, + "output_cost_per_token_batches": 0.000001, + "output_cost_per_token_flex": 0.000001, + "output_cost_per_token_priority": 0.0000036, + "reasoning_contexts": [ + "auto", + "current_turn" + ], + "reasoning_modes": [ + "standard" ], - "supports_function_calling": true, - "supports_native_streaming": true, - "supports_parallel_function_calling": true, - "supports_pdf_input": true, - "supports_prompt_caching": false, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "gpt-5-mini": { - "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_priority": 4.5e-8, - "input_cost_per_token": 2.5e-7, - "input_cost_per_token_batches": 1.25e-7, - "input_cost_per_token_flex": 1.25e-7, - "input_cost_per_token_priority": 4.5e-7, - "litellm_provider": "openai", - "max_input_tokens": 272000, - "max_output_tokens": 128000, - "max_tokens": 128000, - "mode": "chat", - "output_cost_per_token": 0.000002, - "output_cost_per_token_batches": 0.000001, - "output_cost_per_token_flex": 0.000001, - "output_cost_per_token_priority": 0.0000036, "search_context_cost_per_query": { "search_context_size_high": 0.01, "search_context_size_low": 0.01, @@ -35189,6 +38131,8 @@ "cache_read_input_token_cost_flex": 1.25e-8, "cache_read_input_token_cost_priority": 4.5e-8, "deprecation_date": "2026-12-11", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "input_cost_per_token": 2.5e-7, "input_cost_per_token_batches": 1.25e-7, "input_cost_per_token_flex": 1.25e-7, @@ -35196,12 +38140,18 @@ "litellm_provider": "openai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000002, "output_cost_per_token_batches": 0.000001, "output_cost_per_token_flex": 0.000001, "output_cost_per_token_priority": 0.0000036, + "reasoning_contexts": [ + "auto", + "current_turn" + ], + "reasoning_modes": [ + "standard" + ], "search_context_cost_per_query": { "search_context_size_high": 0.01, "search_context_size_low": 0.01, @@ -35239,18 +38189,26 @@ "cache_read_input_token_cost": 5e-9, "cache_read_input_token_cost_batches": 2.5e-9, "cache_read_input_token_cost_flex": 2.5e-9, + "deprecation_date": "2026-12-11", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-luna", "input_cost_per_token": 5e-8, "input_cost_per_token_batches": 2.5e-8, "input_cost_per_token_flex": 2.5e-8, - "input_cost_per_token_priority": 0.0000025, "litellm_provider": "openai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 4e-7, "output_cost_per_token_batches": 2e-7, "output_cost_per_token_flex": 2e-7, + "reasoning_contexts": [ + "auto", + "current_turn" + ], + "reasoning_modes": [ + "standard" + ], "search_context_cost_per_query": { "search_context_size_high": 0.01, "search_context_size_low": 0.01, @@ -35289,18 +38247,25 @@ "cache_read_input_token_cost_batches": 2.5e-9, "cache_read_input_token_cost_flex": 2.5e-9, "deprecation_date": "2026-12-11", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-luna", "input_cost_per_token": 5e-8, "input_cost_per_token_batches": 2.5e-8, - "input_cost_per_token_priority": 0.0000025, "input_cost_per_token_flex": 2.5e-8, "litellm_provider": "openai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 4e-7, "output_cost_per_token_batches": 2e-7, "output_cost_per_token_flex": 2e-7, + "reasoning_contexts": [ + "auto", + "current_turn" + ], + "reasoning_modes": [ + "standard" + ], "search_context_cost_per_query": { "search_context_size_high": 0.01, "search_context_size_low": 0.01, @@ -35340,7 +38305,6 @@ "litellm_provider": "openai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "search_context_cost_per_query": { @@ -35368,7 +38332,6 @@ "litellm_provider": "openai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "search_context_cost_per_query": { @@ -35399,10 +38362,16 @@ "litellm_provider": "openai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_priority": 0.00002, + "reasoning_contexts": [ + "auto", + "current_turn" + ], + "reasoning_modes": [ + "standard" + ], "search_context_cost_per_query": { "search_context_size_high": 0.01, "search_context_size_low": 0.01, @@ -35440,22 +38409,33 @@ "source": "https://developers.openai.com/api/docs/pricing", "supports_xhigh_reasoning_effort": false, "supports_minimal_reasoning_effort": false, - "deprecation_date": "2027-04-01" + "deprecation_date": "2027-04-01", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-sol" }, "gpt-5.1-2025-11-13": { "cache_read_input_token_cost": 1.25e-7, "cache_read_input_token_cost_batches": 6.25e-8, "cache_read_input_token_cost_flex": 6.25e-8, "cache_read_input_token_cost_priority": 2.5e-7, + "deprecation_date": "2027-04-01", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-sol", "input_cost_per_token": 0.00000125, "input_cost_per_token_priority": 0.0000025, "litellm_provider": "openai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_priority": 0.00002, + "reasoning_contexts": [ + "auto", + "current_turn" + ], + "reasoning_modes": [ + "standard" + ], "search_context_cost_per_query": { "search_context_size_high": 0.01, "search_context_size_low": 0.01, @@ -35497,11 +38477,12 @@ "gpt-5.1-chat-latest": { "cache_read_input_token_cost": 1.25e-7, "deprecation_date": "2026-07-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.00000125, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "source": "https://developers.openai.com/api/docs/models/gpt-5.1-chat-latest", @@ -35536,10 +38517,16 @@ "litellm_provider": "openai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000014, "output_cost_per_token_priority": 0.000028, + "reasoning_contexts": [ + "auto", + "current_turn" + ], + "reasoning_modes": [ + "standard" + ], "search_context_cost_per_query": { "search_context_size_high": 0.01, "search_context_size_low": 0.01, @@ -35590,10 +38577,16 @@ "litellm_provider": "openai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000014, "output_cost_per_token_priority": 0.000028, + "reasoning_contexts": [ + "auto", + "current_turn" + ], + "reasoning_modes": [ + "standard" + ], "search_context_cost_per_query": { "search_context_size_high": 0.01, "search_context_size_low": 0.01, @@ -35637,11 +38630,12 @@ "gpt-5.2-chat-latest": { "cache_read_input_token_cost": 1.75e-7, "deprecation_date": "2026-08-10", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.00000175, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000014, "source": "https://developers.openai.com/api/docs/models/gpt-5.2-chat-latest", @@ -35669,11 +38663,12 @@ "gpt-5.3-chat-latest": { "cache_read_input_token_cost": 1.75e-7, "deprecation_date": "2026-08-10", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.00000175, "litellm_provider": "openai", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000014, "source": "https://developers.openai.com/api/docs/models/gpt-5.3-chat-latest", @@ -35714,7 +38709,6 @@ "litellm_provider": "openai", "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, @@ -35722,64 +38716,79 @@ "output_cost_per_token_batches": 0.0000075, "output_cost_per_token_above_272k_tokens_batches": 0.00001125, "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", - "/v1/responses" - ], - "supported_modalities": [ - "text", - "image" + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" ], - "supported_output_modalities": [ - "text" + "reasoning_modes": [ + "standard" + ], + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, + "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_search": true, + "supports_vision": true, + "supports_none_reasoning_effort": true, + "default_reasoning_effort": "none", + "supports_xhigh_reasoning_effort": true, + "supports_minimal_reasoning_effort": false, + "input_cost_per_token_above_272k_tokens_flex": 0.0000025, + "output_cost_per_token_above_272k_tokens_flex": 0.00001125, + "cache_read_input_token_cost_above_272k_tokens_flex": 2.5e-7, + "source": "https://developers.openai.com/api/docs/pricing" + }, + "gpt-5.4-2026-03-05": { + "cache_read_input_token_cost": 2.5e-7, + "cache_read_input_token_cost_above_272k_tokens": 5e-7, + "cache_read_input_token_cost_batches": 1.3e-7, + "cache_read_input_token_cost_above_272k_tokens_batches": 2.5e-7, + "cache_read_input_token_cost_flex": 1.3e-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_flex": 0.00000125, + "input_cost_per_token_batches": 0.00000125, + "input_cost_per_token_above_272k_tokens_batches": 0.0000025, + "input_cost_per_token_priority": 0.000005, + "litellm_provider": "openai", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000015, + "output_cost_per_token_above_272k_tokens": 0.0000225, + "output_cost_per_token_flex": 0.0000075, + "output_cost_per_token_batches": 0.0000075, + "output_cost_per_token_above_272k_tokens_batches": 0.00001125, + "output_cost_per_token_priority": 0.00003, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard" ], - "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_search": true, - "supports_vision": true, - "supports_none_reasoning_effort": true, - "default_reasoning_effort": "none", - "supports_xhigh_reasoning_effort": true, - "supports_minimal_reasoning_effort": false, - "input_cost_per_token_above_272k_tokens_flex": 0.0000025, - "output_cost_per_token_above_272k_tokens_flex": 0.00001125, - "cache_read_input_token_cost_above_272k_tokens_flex": 2.5e-7, - "source": "https://developers.openai.com/api/docs/pricing" - }, - "gpt-5.4-2026-03-05": { - "cache_read_input_token_cost": 2.5e-7, - "cache_read_input_token_cost_above_272k_tokens": 5e-7, - "cache_read_input_token_cost_batches": 1.3e-7, - "cache_read_input_token_cost_above_272k_tokens_batches": 2.5e-7, - "cache_read_input_token_cost_flex": 1.3e-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_flex": 0.00000125, - "input_cost_per_token_batches": 0.00000125, - "input_cost_per_token_above_272k_tokens_batches": 0.0000025, - "input_cost_per_token_priority": 0.000005, - "litellm_provider": "openai", - "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_flex": 0.0000075, - "output_cost_per_token_batches": 0.0000075, - "output_cost_per_token_above_272k_tokens_batches": 0.00001125, - "output_cost_per_token_priority": 0.00003, "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "supported_endpoints": [ @@ -35826,12 +38835,19 @@ "litellm_provider": "openai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000045, "output_cost_per_token_flex": 0.00000225, "output_cost_per_token_batches": 0.00000225, "output_cost_per_token_priority": 0.000009, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -35881,12 +38897,19 @@ "litellm_provider": "openai", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000045, "output_cost_per_token_flex": 0.00000225, "output_cost_per_token_batches": 0.00000225, "output_cost_per_token_priority": 0.000009, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -35934,11 +38957,18 @@ "litellm_provider": "openai", "max_input_tokens": 272000, "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, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -35974,23 +39004,35 @@ "source": "https://developers.openai.com/api/docs/pricing", "supports_xhigh_reasoning_effort": true, "supports_minimal_reasoning_effort": false, - "deprecation_date": "2027-04-01" + "deprecation_date": "2027-04-01", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna" }, "gpt-5.4-nano-2026-03-17": { "cache_read_input_token_cost": 2e-8, "cache_read_input_token_cost_batches": 1e-8, "cache_read_input_token_cost_flex": 1e-8, + "deprecation_date": "2027-04-01", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-6-luna", "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_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, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -36043,7 +39085,6 @@ "litellm_provider": "openai", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "output_cost_per_token_above_272k_tokens": 0.000045, @@ -36051,6 +39092,14 @@ "output_cost_per_token_batches": 0.000015, "output_cost_per_token_above_272k_tokens_batches": 0.0000225, "output_cost_per_token_priority": 0.000075, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -36106,7 +39155,6 @@ "litellm_provider": "openai", "max_input_tokens": 1050000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "output_cost_per_token_above_272k_tokens": 0.000045, @@ -36114,6 +39162,14 @@ "output_cost_per_token_batches": 0.000015, "output_cost_per_token_above_272k_tokens_batches": 0.0000225, "output_cost_per_token_priority": 0.000075, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -36173,6 +39229,12 @@ }, "gpt-5.6": { "cache_creation_input_token_cost": 0.000005, + "cache_creation_input_token_cost_above_12hr": 0.00001, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens": 0.00002, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_flex": 0.00001, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_priority": 0.00004, + "cache_creation_input_token_cost_above_12hr_flex": 0.000005, + "cache_creation_input_token_cost_above_12hr_priority": 0.00002, "cache_creation_input_token_cost_above_272k_tokens": 0.00001, "cache_creation_input_token_cost_above_272k_tokens_flex": 0.000005, "cache_creation_input_token_cost_above_272k_tokens_priority": 0.00002, @@ -36199,7 +39261,6 @@ "litellm_provider": "openai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00002, "output_cost_per_token_above_272k_tokens": 0.00003, @@ -36209,6 +39270,15 @@ "output_cost_per_token_above_272k_tokens_batches": 0.000015, "output_cost_per_token_flex": 0.00001, "output_cost_per_token_priority": 0.00004, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard", + "pro" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -36247,6 +39317,7 @@ }, "gpt-5.6-cyber": { "cache_creation_input_token_cost": 0.000015625, + "cache_creation_input_token_cost_above_12hr": 0.00003125, "cache_creation_input_token_cost_above_272k_tokens": 0.00003125, "cache_read_input_token_cost": 0.00000125, "cache_read_input_token_cost_above_272k_tokens": 0.0000025, @@ -36255,7 +39326,6 @@ "litellm_provider": "openai", "max_input_tokens": 400000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000075, "output_cost_per_token_above_272k_tokens": 0.0001125, @@ -36286,6 +39356,14 @@ }, "gpt-5.6-luna": { "cache_creation_input_token_cost": 2.5e-7, + "cache_creation_input_token_cost_above_12hr": 5e-7, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens": 0.000001, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_batches": 5e-7, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_flex": 5e-7, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_priority": 0.000002, + "cache_creation_input_token_cost_above_12hr_batches": 2.5e-7, + "cache_creation_input_token_cost_above_12hr_flex": 2.5e-7, + "cache_creation_input_token_cost_above_12hr_priority": 0.000001, "cache_creation_input_token_cost_above_272k_tokens": 5e-7, "cache_creation_input_token_cost_above_272k_tokens_flex": 2.5e-7, "cache_creation_input_token_cost_above_272k_tokens_priority": 0.000001, @@ -36312,7 +39390,6 @@ "litellm_provider": "openai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_above_272k_tokens": 0.0000018, @@ -36322,6 +39399,15 @@ "output_cost_per_token_above_272k_tokens_batches": 9e-7, "output_cost_per_token_flex": 6e-7, "output_cost_per_token_priority": 0.0000024, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard", + "pro" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -36361,6 +39447,14 @@ }, "gpt-5.6-sol": { "cache_creation_input_token_cost": 0.000005, + "cache_creation_input_token_cost_above_12hr": 0.00001, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens": 0.00002, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_batches": 0.00001, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_flex": 0.00001, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_priority": 0.00004, + "cache_creation_input_token_cost_above_12hr_batches": 0.000005, + "cache_creation_input_token_cost_above_12hr_flex": 0.000005, + "cache_creation_input_token_cost_above_12hr_priority": 0.00002, "cache_creation_input_token_cost_above_272k_tokens": 0.00001, "cache_creation_input_token_cost_above_272k_tokens_flex": 0.000005, "cache_creation_input_token_cost_above_272k_tokens_priority": 0.00002, @@ -36387,7 +39481,6 @@ "litellm_provider": "openai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00002, "output_cost_per_token_above_272k_tokens": 0.00003, @@ -36397,6 +39490,15 @@ "output_cost_per_token_above_272k_tokens_batches": 0.000015, "output_cost_per_token_flex": 0.00001, "output_cost_per_token_priority": 0.00004, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard", + "pro" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -36437,6 +39539,14 @@ }, "gpt-5.6-terra": { "cache_creation_input_token_cost": 0.0000025, + "cache_creation_input_token_cost_above_12hr": 0.000005, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens": 0.00001, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_batches": 0.000005, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_flex": 0.000005, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_priority": 0.00002, + "cache_creation_input_token_cost_above_12hr_batches": 0.0000025, + "cache_creation_input_token_cost_above_12hr_flex": 0.0000025, + "cache_creation_input_token_cost_above_12hr_priority": 0.00001, "cache_creation_input_token_cost_above_272k_tokens": 0.000005, "cache_creation_input_token_cost_above_272k_tokens_flex": 0.0000025, "cache_creation_input_token_cost_above_272k_tokens_priority": 0.00001, @@ -36463,7 +39573,6 @@ "litellm_provider": "openai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "output_cost_per_token_above_272k_tokens": 0.000018, @@ -36473,6 +39582,15 @@ "output_cost_per_token_above_272k_tokens_batches": 0.000009, "output_cost_per_token_flex": 0.000006, "output_cost_per_token_priority": 0.000024, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard", + "pro" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -36512,6 +39630,16 @@ }, "gpt-6-astra": { "cache_creation_input_token_cost": 0.0000125, + "cache_creation_input_token_cost_above_12hr": 0.000025, + "cache_creation_input_token_cost_above_12hr_ultrafast": 0.00015, + "cache_creation_input_token_cost_above_12hr_batches": 0.0000125, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens": 0.00005, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_batches": 0.000025, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_flex": 0.000025, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_priority": 0.0001, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_ultrafast": 0.0003, + "cache_creation_input_token_cost_above_12hr_flex": 0.0000125, + "cache_creation_input_token_cost_above_12hr_priority": 0.00005, "cache_creation_input_token_cost_above_272k_tokens": 0.000025, "cache_creation_input_token_cost_above_272k_tokens_flex": 0.0000125, "cache_creation_input_token_cost_above_272k_tokens_priority": 0.00005, @@ -36544,7 +39672,6 @@ "litellm_provider": "openai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "output_cost_per_token_above_272k_tokens": 0.000075, @@ -36556,6 +39683,71 @@ "output_cost_per_token_flex": 0.000025, "output_cost_per_token_priority": 0.0001, "output_cost_per_token_ultrafast": 0.0003, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard", + "pro" + ], + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "source": "https://developers.openai.com/api/docs/pricing", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/batch", + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_computer_use": true, + "supports_function_calling": true, + "supports_max_reasoning_effort": true, + "supports_minimal_reasoning_effort": false, + "supports_native_streaming": true, + "supports_none_reasoning_effort": false, + "supports_parallel_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_cache_breakpoint": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_tool_search": true, + "supports_vision": true, + "supports_web_search": true, + "supports_xhigh_reasoning_effort": true + }, + "gpt-6-astra-law": { + "cache_read_input_token_cost": 0.000001, + "input_cost_per_token": 0.00001, + "litellm_provider": "openai", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.00005, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard", + "pro" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -36597,17 +39789,25 @@ }, "gpt-6-luna": { "cache_creation_input_token_cost": 1.25e-7, - "cache_creation_input_token_cost_decisions": 1e-7, + "cache_creation_input_token_cost_above_12hr": 2.5e-7, + "cache_creation_input_token_cost_above_12hr_batches": 1.25e-7, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens": 5e-7, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_batches": 2.5e-7, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_flex": 2.5e-7, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_priority": 0.000001, + "cache_creation_input_token_cost_above_12hr_flex": 1.25e-7, + "cache_creation_input_token_cost_above_12hr_priority": 5e-7, + "cache_creation_input_token_cost_decisions": 1.25e-7, "cache_creation_input_token_cost_above_272k_tokens": 2.5e-7, - "cache_creation_input_token_cost_above_272k_tokens_decisions": 2e-7, + "cache_creation_input_token_cost_above_272k_tokens_decisions": 2.5e-7, "cache_creation_input_token_cost_above_272k_tokens_flex": 1.25e-7, "cache_creation_input_token_cost_above_272k_tokens_priority": 5e-7, "cache_creation_input_token_cost_flex": 6.25e-8, "cache_creation_input_token_cost_priority": 2.5e-7, "cache_read_input_token_cost": 1e-8, - "cache_read_input_token_cost_decisions": 1e-7, + "cache_read_input_token_cost_decisions": 1e-8, "cache_read_input_token_cost_above_272k_tokens": 2e-8, - "cache_read_input_token_cost_above_272k_tokens_decisions": 2e-7, + "cache_read_input_token_cost_above_272k_tokens_decisions": 2e-8, "cache_read_input_token_cost_above_272k_tokens_flex": 1e-8, "cache_read_input_token_cost_above_272k_tokens_priority": 4e-8, "cache_read_input_token_cost_batches": 5e-9, @@ -36629,7 +39829,6 @@ "litellm_provider": "openai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "output_cost_per_token_decisions": 0, @@ -36641,6 +39840,15 @@ "output_cost_per_token_above_272k_tokens_batches": 3.75e-7, "output_cost_per_token_flex": 2.5e-7, "output_cost_per_token_priority": 0.000001, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard", + "pro" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -36681,8 +39889,53 @@ "supports_web_search": true, "supports_xhigh_reasoning_effort": true }, + "gpt-6-rosalind": { + "cache_creation_input_token_cost": 0.00001875, + "cache_creation_input_token_cost_above_12hr": 0.0000375, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens": 0.000075, + "cache_creation_input_token_cost_above_272k_tokens": 0.0000375, + "cache_read_input_token_cost": 0.0000015, + "cache_read_input_token_cost_above_272k_tokens": 0.000003, + "input_cost_per_token": 0.000015, + "input_cost_per_token_above_272k_tokens": 0.00003, + "litellm_provider": "openai", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000075, + "output_cost_per_token_above_272k_tokens": 0.0001125, + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, + "source": "https://developers.openai.com/api/docs/pricing", + "supports_computer_use": true, + "supports_function_calling": true, + "supports_max_reasoning_effort": true, + "supports_minimal_reasoning_effort": false, + "supports_native_streaming": true, + "supports_none_reasoning_effort": false, + "supports_parallel_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_cache_breakpoint": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_tool_search": true, + "supports_vision": true, + "supports_web_search": true, + "supports_xhigh_reasoning_effort": true + }, "gpt-6-sol": { "cache_creation_input_token_cost": 0.0000025, + "cache_creation_input_token_cost_above_12hr": 0.000005, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens": 0.00001, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_batches": 0.000005, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_flex": 0.000005, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_priority": 0.00002, + "cache_creation_input_token_cost_above_12hr_batches": 0.0000025, + "cache_creation_input_token_cost_above_12hr_flex": 0.0000025, + "cache_creation_input_token_cost_above_12hr_priority": 0.00001, "cache_creation_input_token_cost_above_272k_tokens": 0.000005, "cache_creation_input_token_cost_above_272k_tokens_flex": 0.0000025, "cache_creation_input_token_cost_above_272k_tokens_priority": 0.00001, @@ -36709,7 +39962,6 @@ "litellm_provider": "openai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_above_272k_tokens": 0.000015, @@ -36719,6 +39971,15 @@ "output_cost_per_token_above_272k_tokens_batches": 0.0000075, "output_cost_per_token_flex": 0.000005, "output_cost_per_token_priority": 0.00002, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard", + "pro" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -36760,6 +40021,16 @@ }, "gpt-6.1-sol": { "cache_creation_input_token_cost": 0.0000025, + "cache_creation_input_token_cost_above_12hr": 0.000005, + "cache_creation_input_token_cost_above_12hr_ultrafast": 0.00003, + "cache_creation_input_token_cost_above_12hr_batches": 0.0000025, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens": 0.00001, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_batches": 0.000005, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_flex": 0.000005, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_priority": 0.00002, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_ultrafast": 0.00006, + "cache_creation_input_token_cost_above_12hr_flex": 0.0000025, + "cache_creation_input_token_cost_above_12hr_priority": 0.00001, "cache_creation_input_token_cost_above_272k_tokens": 0.000005, "cache_creation_input_token_cost_above_272k_tokens_batches": 0.0000025, "cache_creation_input_token_cost_above_272k_tokens_flex": 0.0000025, @@ -36792,7 +40063,6 @@ "litellm_provider": "openai", "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "output_cost_per_token_above_272k_tokens": 0.000015, @@ -36804,6 +40074,15 @@ "output_cost_per_token_flex": 0.000005, "output_cost_per_token_priority": 0.00002, "output_cost_per_token_ultrafast": 0.00006, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard", + "pro" + ], "regional_processing_uplift_multiplier_eu": 1.1, "regional_processing_uplift_multiplier_us": 1.1, "search_context_cost_per_query": { @@ -36843,57 +40122,117 @@ "supports_web_search": true, "supports_xhigh_reasoning_effort": true }, - "gpt-audio": { - "deprecation_date": "2027-01-20", - "input_cost_per_audio_token": 0.000032, - "input_cost_per_token": 0.0000025, + "gpt-6.1-terra": { + "cache_creation_input_token_cost": 0.00000125, + "cache_creation_input_token_cost_above_12hr": 0.0000025, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens": 0.000005, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_batches": 0.0000025, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_flex": 0.0000025, + "cache_creation_input_token_cost_above_12hr_above_272k_tokens_priority": 0.00001, + "cache_creation_input_token_cost_above_12hr_batches": 0.00000125, + "cache_creation_input_token_cost_above_12hr_flex": 0.00000125, + "cache_creation_input_token_cost_above_12hr_priority": 0.000005, + "cache_creation_input_token_cost_above_272k_tokens": 0.0000025, + "cache_creation_input_token_cost_above_272k_tokens_batches": 0.00000125, + "cache_creation_input_token_cost_above_272k_tokens_flex": 0.00000125, + "cache_creation_input_token_cost_above_272k_tokens_priority": 0.000005, + "cache_creation_input_token_cost_batches": 6.25e-7, + "cache_creation_input_token_cost_flex": 6.25e-7, + "cache_creation_input_token_cost_priority": 0.0000025, + "cache_read_input_token_cost": 5e-8, + "cache_read_input_token_cost_above_272k_tokens": 1e-7, + "cache_read_input_token_cost_above_272k_tokens_batches": 5e-8, + "cache_read_input_token_cost_above_272k_tokens_flex": 5e-8, + "cache_read_input_token_cost_above_272k_tokens_priority": 2e-7, + "cache_read_input_token_cost_batches": 2.5e-8, + "cache_read_input_token_cost_flex": 2.5e-8, + "cache_read_input_token_cost_priority": 1e-7, + "input_cost_per_token": 0.000001, + "input_cost_per_token_above_272k_tokens": 0.000002, + "input_cost_per_token_above_272k_tokens_batches": 0.000001, + "input_cost_per_token_above_272k_tokens_flex": 0.000001, + "input_cost_per_token_above_272k_tokens_priority": 0.000004, + "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": 922000, + "max_output_tokens": 128000, "mode": "chat", - "output_cost_per_audio_token": 0.000064, - "output_cost_per_token": 0.00001, + "output_cost_per_token": 0.000005, + "output_cost_per_token_above_272k_tokens": 0.0000075, + "output_cost_per_token_above_272k_tokens_batches": 0.00000375, + "output_cost_per_token_above_272k_tokens_flex": 0.00000375, + "output_cost_per_token_above_272k_tokens_priority": 0.000015, + "output_cost_per_token_batches": 0.0000025, + "output_cost_per_token_flex": 0.0000025, + "output_cost_per_token_priority": 0.00001, + "reasoning_contexts": [ + "auto", + "current_turn", + "all_turns" + ], + "reasoning_modes": [ + "standard", + "pro" + ], + "regional_processing_uplift_multiplier_eu": 1.1, + "regional_processing_uplift_multiplier_us": 1.1, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, "source": "https://developers.openai.com/api/docs/pricing", "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_computer_use": true, "supports_function_calling": true, + "supports_max_reasoning_effort": 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_cache_breakpoint": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_vision": false + "supports_tool_search": true, + "supports_vision": true, + "supports_web_search": true, + "supports_xhigh_reasoning_effort": true }, - "gpt-audio-1.5": { + "gpt-audio": { + "deprecation_date": "2027-01-20", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "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, "source": "https://developers.openai.com/api/docs/pricing", "supported_endpoints": [ - "/v1/chat/completions" + "/v1/chat/completions", + "/v1/responses", + "/v1/realtime", + "/v1/batch" ], "supported_modalities": [ "text", @@ -36915,23 +40254,57 @@ "supports_tool_choice": true, "supports_vision": false }, - "gpt-audio-2025-08-28": { - "deprecation_date": "2027-01-20", + "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, "source": "https://developers.openai.com/api/docs/pricing", "supported_endpoints": [ - "/v1/chat/completions", - "/v1/responses", - "/v1/realtime", - "/v1/batch" + "/v1/chat/completions" + ], + "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-2025-08-28": { + "deprecation_date": "2027-01-20", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "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, + "mode": "chat", + "output_cost_per_audio_token": 0.000064, + "output_cost_per_token": 0.00001, + "source": "https://developers.openai.com/api/docs/pricing", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses", + "/v1/realtime", + "/v1/batch" ], "supported_modalities": [ "text", @@ -36955,12 +40328,13 @@ }, "gpt-audio-mini": { "deprecation_date": "2027-01-20", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-audio-1.5", "input_cost_per_audio_token": 0.00001, "input_cost_per_token": 6e-7, "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, @@ -36993,12 +40367,13 @@ }, "gpt-audio-mini-2025-10-06": { "deprecation_date": "2026-07-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-audio-1.5", "input_cost_per_audio_token": 0.00001, "input_cost_per_token": 6e-7, "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, @@ -37035,7 +40410,6 @@ "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, @@ -37065,6 +40439,8 @@ "supports_tool_choice": true, "supports_vision": false, "deprecation_date": "2027-01-20", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-audio-1.5", "source": "https://developers.openai.com/api/docs/pricing" }, "gpt-rosalind-discovery": { @@ -37085,7 +40461,6 @@ }, "gradient_ai/alibaba-qwen3-32b": { "litellm_provider": "gradient_ai", - "max_tokens": 40960, "mode": "chat", "supported_endpoints": [ "/v1/chat/completions" @@ -37100,7 +40475,6 @@ "gradient_ai/anthropic-claude-3-opus": { "input_cost_per_token": 0.000015, "litellm_provider": "gradient_ai", - "max_tokens": 1024, "mode": "chat", "output_cost_per_token": 0.000075, "supported_endpoints": [ @@ -37116,7 +40490,6 @@ "gradient_ai/anthropic-claude-3.5-haiku": { "input_cost_per_token": 8e-7, "litellm_provider": "gradient_ai", - "max_tokens": 1024, "mode": "chat", "output_cost_per_token": 0.000004, "supported_endpoints": [ @@ -37132,7 +40505,6 @@ "gradient_ai/anthropic-claude-3.5-sonnet": { "input_cost_per_token": 0.000003, "litellm_provider": "gradient_ai", - "max_tokens": 1024, "mode": "chat", "output_cost_per_token": 0.000015, "supported_endpoints": [ @@ -37148,7 +40520,6 @@ "gradient_ai/anthropic-claude-3.7-sonnet": { "input_cost_per_token": 0.000003, "litellm_provider": "gradient_ai", - "max_tokens": 1024, "mode": "chat", "output_cost_per_token": 0.000015, "supported_endpoints": [ @@ -37164,7 +40535,6 @@ "gradient_ai/deepseek-r1-distill-llama-70b": { "input_cost_per_token": 9.9e-7, "litellm_provider": "gradient_ai", - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 9.9e-7, "supported_endpoints": [ @@ -37180,7 +40550,6 @@ "gradient_ai/llama3-8b-instruct": { "input_cost_per_token": 2e-7, "litellm_provider": "gradient_ai", - "max_tokens": 512, "mode": "chat", "output_cost_per_token": 2e-7, "supported_endpoints": [ @@ -37196,7 +40565,6 @@ "gradient_ai/llama3.3-70b-instruct": { "input_cost_per_token": 6.5e-7, "litellm_provider": "gradient_ai", - "max_tokens": 2048, "mode": "chat", "output_cost_per_token": 6.5e-7, "supported_endpoints": [ @@ -37212,7 +40580,6 @@ "gradient_ai/mistral-nemo-instruct-2407": { "input_cost_per_token": 3e-7, "litellm_provider": "gradient_ai", - "max_tokens": 512, "mode": "chat", "output_cost_per_token": 3e-7, "supported_endpoints": [ @@ -37227,7 +40594,6 @@ }, "gradient_ai/openai-gpt-4o": { "litellm_provider": "gradient_ai", - "max_tokens": 16384, "mode": "chat", "supported_endpoints": [ "/v1/chat/completions" @@ -37241,7 +40607,6 @@ }, "gradient_ai/openai-gpt-4o-mini": { "litellm_provider": "gradient_ai", - "max_tokens": 16384, "mode": "chat", "supported_endpoints": [ "/v1/chat/completions" @@ -37256,7 +40621,6 @@ "gradient_ai/openai-o3": { "input_cost_per_token": 0.000002, "litellm_provider": "gradient_ai", - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.000008, "supported_endpoints": [ @@ -37272,7 +40636,6 @@ "gradient_ai/openai-o3-mini": { "input_cost_per_token": 0.0000011, "litellm_provider": "gradient_ai", - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.0000044, "supported_endpoints": [ @@ -37285,22 +40648,11 @@ "max_input_tokens": 200000, "max_output_tokens": 100000 }, - "groq/llama-guard-3-8b": { - "deprecation_date": "2025-06-06", - "input_cost_per_token": 2e-7, - "litellm_provider": "groq", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2e-7, - "source": "https://console.groq.com/docs/model/llama-guard-3-8b" - }, "groq/meta-llama/llama-prompt-guard-2-22m": { "input_cost_per_token": 3e-8, "litellm_provider": "groq", "max_input_tokens": 512, "max_output_tokens": 512, - "max_tokens": 512, "mode": "chat", "output_cost_per_token": 3e-8, "source": "https://console.groq.com/docs/models" @@ -37310,7 +40662,6 @@ "litellm_provider": "groq", "max_input_tokens": 512, "max_output_tokens": 512, - "max_tokens": 512, "mode": "chat", "output_cost_per_token": 4e-8, "source": "https://console.groq.com/docs/model/meta-llama/llama-prompt-guard-2-86m" @@ -37321,7 +40672,6 @@ "litellm_provider": "groq", "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 6e-7, "search_context_cost_per_query": { @@ -37331,6 +40681,7 @@ }, "supports_function_calling": true, "supports_parallel_function_calling": true, + "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -37342,7 +40693,6 @@ "litellm_provider": "groq", "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 3e-7, "search_context_cost_per_query": { @@ -37352,6 +40702,7 @@ }, "supports_function_calling": true, "supports_parallel_function_calling": true, + "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -37363,7 +40714,6 @@ "litellm_provider": "groq", "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 3e-7, "search_context_cost_per_query": { @@ -37372,6 +40722,7 @@ "search_context_size_medium": 0.005 }, "supports_function_calling": true, + "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, @@ -37382,7 +40733,6 @@ "litellm_provider": "groq", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://console.groq.com/docs/model/qwen/qwen3.8-27b", @@ -37394,7 +40744,6 @@ }, "heroku/claude-3-5-haiku": { "litellm_provider": "heroku", - "max_tokens": 8192, "mode": "chat", "supports_function_calling": true, "supports_system_messages": true, @@ -37404,7 +40753,6 @@ }, "heroku/claude-3-5-sonnet-latest": { "litellm_provider": "heroku", - "max_tokens": 8192, "mode": "chat", "supports_function_calling": true, "supports_system_messages": true, @@ -37414,7 +40762,6 @@ }, "heroku/claude-3-7-sonnet": { "litellm_provider": "heroku", - "max_tokens": 8192, "mode": "chat", "supports_function_calling": true, "supports_system_messages": true, @@ -37424,7 +40771,6 @@ }, "heroku/claude-4-sonnet": { "litellm_provider": "heroku", - "max_tokens": 8192, "mode": "chat", "supports_function_calling": true, "supports_system_messages": true, @@ -37432,12 +40778,52 @@ "max_input_tokens": 200000, "max_output_tokens": 8192 }, + "hostinger_router/claude-sonnet-5": { + "cache_creation_input_token_cost": 0.0000033, + "cache_creation_input_token_cost_above_1hr": 0.00000528, + "cache_read_input_token_cost": 2.64e-7, + "input_cost_per_token": 0.00000264, + "litellm_provider": "hostinger_router", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000132, + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_response_schema": true, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/messages" + ], + "source": "https://router.hostinger.com/v1/models" + }, + "hostinger_router/gpt-5.2": { + "cache_read_input_token_cost": 2.1e-7, + "input_cost_per_token": 0.0000021, + "litellm_provider": "hostinger_router", + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000168, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_response_schema": true, + "supports_vision": true, + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "source": "https://router.hostinger.com/v1/models" + }, "hyperbolic/NousResearch/Hermes-3-Llama-3.1-70B": { "input_cost_per_token": 1.2e-7, "litellm_provider": "hyperbolic", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -37450,7 +40836,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 2e-7, "supports_function_calling": true, @@ -37463,7 +40848,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -37476,7 +40860,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -37489,7 +40872,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000002, "supports_function_calling": true, @@ -37502,7 +40884,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 4e-7, "supports_function_calling": true, @@ -37515,7 +40896,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 2.5e-7, "supports_function_calling": true, @@ -37528,7 +40908,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 2e-7, "supports_function_calling": true, @@ -37541,7 +40920,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 4e-7, "supports_function_calling": true, @@ -37554,7 +40932,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -37567,7 +40944,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -37580,7 +40956,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -37593,7 +40968,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -37606,7 +40980,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -37619,7 +40992,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -37632,7 +41004,6 @@ "litellm_provider": "hyperbolic", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000002, "supports_function_calling": true, @@ -37655,7 +41026,6 @@ "token_count_tokenizer": "kimi_k3", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000165, "output_cost_per_token_flex": 0.00000825, @@ -37678,7 +41048,6 @@ "litellm_provider": "inception", "max_input_tokens": 128000, "max_output_tokens": 50000, - "max_tokens": 50000, "mode": "chat", "output_cost_per_token": 7.5e-7, "supports_function_calling": true, @@ -37693,7 +41062,6 @@ "litellm_provider": "inception", "max_input_tokens": 260000, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 7.5e-7, "source": "https://docs.inceptionlabs.ai/get-started/models", @@ -37708,7 +41076,7 @@ "input_cost_per_token": 3.9e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 524288, - "max_tokens": 524288, + "max_output_tokens": 524288, "mode": "chat", "output_cost_per_token": 0.00000156, "source": "https://inferenceapis.com/pricing", @@ -37728,7 +41096,7 @@ "input_cost_per_token": 2.6e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.00000115, "source": "https://inferenceapis.com/pricing", @@ -37748,7 +41116,7 @@ "input_cost_per_token": 1.5e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1000000, - "max_tokens": 1000000, + "max_output_tokens": 1000000, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://inferenceapis.com/pricing", @@ -37769,7 +41137,7 @@ "input_cost_per_token": 1.9e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 3.8e-7, "source": "https://inferenceapis.com/pricing", @@ -37790,7 +41158,7 @@ "input_cost_per_token": 1.9e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 3.8e-7, "source": "https://inferenceapis.com/pricing", @@ -37811,7 +41179,7 @@ "input_cost_per_token": 1.9e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 3.8e-7, "source": "https://inferenceapis.com/pricing", @@ -37832,7 +41200,7 @@ "input_cost_per_token": 0.00000172, "litellm_provider": "inferenceapis", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.00000515, "source": "https://inferenceapis.com/pricing", @@ -37853,7 +41221,7 @@ "input_cost_per_token": 0.00000172, "litellm_provider": "inferenceapis", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.00000515, "source": "https://inferenceapis.com/pricing", @@ -37874,7 +41242,7 @@ "input_cost_per_token": 4e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000016, "source": "https://inferenceapis.com/pricing", @@ -37895,7 +41263,7 @@ "input_cost_per_token": 1.9e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 3.8e-7, "source": "https://inferenceapis.com/pricing", @@ -37916,7 +41284,7 @@ "input_cost_per_token": 4e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000016, "source": "https://inferenceapis.com/pricing", @@ -37937,7 +41305,7 @@ "input_cost_per_token": 1.9e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 3.8e-7, "source": "https://inferenceapis.com/pricing", @@ -37958,7 +41326,7 @@ "input_cost_per_token": 1.9e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 3.8e-7, "source": "https://inferenceapis.com/pricing", @@ -37979,7 +41347,7 @@ "input_cost_per_token": 1.9e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 3.8e-7, "source": "https://inferenceapis.com/pricing", @@ -38000,7 +41368,7 @@ "input_cost_per_token": 0.00000172, "litellm_provider": "inferenceapis", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.00000515, "source": "https://inferenceapis.com/pricing", @@ -38021,7 +41389,7 @@ "input_cost_per_token": 4e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000016, "source": "https://inferenceapis.com/pricing", @@ -38042,7 +41410,7 @@ "input_cost_per_token": 0.00000182, "litellm_provider": "inferenceapis", "max_input_tokens": 1048575, - "max_tokens": 1048575, + "max_output_tokens": 1048575, "mode": "chat", "output_cost_per_token": 0.00000572, "source": "https://inferenceapis.com/pricing", @@ -38063,7 +41431,7 @@ "input_cost_per_token": 2e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1048575, - "max_tokens": 1048575, + "max_output_tokens": 1048575, "mode": "chat", "output_cost_per_token": 6.6e-7, "source": "https://inferenceapis.com/pricing", @@ -38083,7 +41451,7 @@ "input_cost_per_token": 2e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 8e-7, "source": "https://inferenceapis.com/pricing", @@ -38102,7 +41470,7 @@ "input_cost_per_token": 4e-8, "litellm_provider": "inferenceapis", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 1.9e-7, "source": "https://inferenceapis.com/pricing", @@ -38122,7 +41490,7 @@ "input_cost_per_token": 8.9e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.00000442, "source": "https://inferenceapis.com/pricing", @@ -38142,7 +41510,7 @@ "input_cost_per_token": 2e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://inferenceapis.com/pricing", @@ -38161,7 +41529,7 @@ "input_cost_per_token": 2e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://inferenceapis.com/pricing", @@ -38180,7 +41548,7 @@ "input_cost_per_token": 2e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://inferenceapis.com/pricing", @@ -38199,7 +41567,7 @@ "input_cost_per_token": 2e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://inferenceapis.com/pricing", @@ -38218,7 +41586,7 @@ "input_cost_per_token": 2e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://inferenceapis.com/pricing", @@ -38237,7 +41605,7 @@ "input_cost_per_token": 2e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://inferenceapis.com/pricing", @@ -38257,7 +41625,7 @@ "input_cost_per_token": 3.9e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 524288, - "max_tokens": 524288, + "max_output_tokens": 524288, "mode": "chat", "output_cost_per_token": 0.00000156, "source": "https://inferenceapis.com/pricing", @@ -38278,7 +41646,7 @@ "input_cost_per_token": 8.9e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.00000442, "source": "https://inferenceapis.com/pricing", @@ -38298,7 +41666,7 @@ "input_cost_per_token": 2e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 8e-7, "source": "https://inferenceapis.com/pricing", @@ -38317,7 +41685,7 @@ "input_cost_per_token": 4e-8, "litellm_provider": "inferenceapis", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 1.9e-7, "source": "https://inferenceapis.com/pricing", @@ -38336,7 +41704,7 @@ "input_cost_per_token": 2.6e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.00000115, "source": "https://inferenceapis.com/pricing", @@ -38355,7 +41723,7 @@ "input_cost_per_token": 2.6e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.00000115, "source": "https://inferenceapis.com/pricing", @@ -38375,7 +41743,7 @@ "input_cost_per_token": 1.5e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1000000, - "max_tokens": 1000000, + "max_output_tokens": 1000000, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://inferenceapis.com/pricing", @@ -38396,7 +41764,7 @@ "input_cost_per_token": 0.00000182, "litellm_provider": "inferenceapis", "max_input_tokens": 1048575, - "max_tokens": 1048575, + "max_output_tokens": 1048575, "mode": "chat", "output_cost_per_token": 0.00000572, "source": "https://inferenceapis.com/pricing", @@ -38417,7 +41785,7 @@ "input_cost_per_token": 2e-7, "litellm_provider": "inferenceapis", "max_input_tokens": 1048575, - "max_tokens": 1048575, + "max_output_tokens": 1048575, "mode": "chat", "output_cost_per_token": 6.6e-7, "source": "https://inferenceapis.com/pricing", @@ -38438,7 +41806,6 @@ "litellm_provider": "ai21", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 4e-7, "supports_tool_choice": true @@ -38448,7 +41815,6 @@ "litellm_provider": "ai21", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000008, "supports_tool_choice": true @@ -38458,7 +41824,6 @@ "litellm_provider": "ai21", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000008, "supports_tool_choice": true @@ -38468,7 +41833,6 @@ "litellm_provider": "ai21", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 4e-7, "supports_tool_choice": true @@ -38478,7 +41842,6 @@ "litellm_provider": "ai21", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 4e-7, "supports_tool_choice": true @@ -38488,7 +41851,6 @@ "litellm_provider": "ai21", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000008, "supports_tool_choice": true @@ -38498,7 +41860,6 @@ "litellm_provider": "ai21", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000008, "supports_tool_choice": true @@ -38508,7 +41869,6 @@ "litellm_provider": "ai21", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 4e-7, "supports_tool_choice": true @@ -38518,7 +41878,6 @@ "litellm_provider": "ai21", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 4e-7, "supports_tool_choice": true @@ -38534,7 +41893,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000003311, "output_cost_per_token_batches": 0.0000016555, @@ -38559,7 +41917,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000055, "source": "https://aws.amazon.com/bedrock/pricing/", @@ -38576,7 +41933,11 @@ "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, "input_cost_per_token_batches": 5.5e-7, - "output_cost_per_token_batches": 0.00000275 + "output_cost_per_token_batches": 0.00000275, + "token_count_model": { + "model": "anthropic.claude-haiku-4-5-20251001-v1:0", + "litellm_provider": "bedrock" + } }, "jp.anthropic.claude-haiku-5-5": { "input_cost_per_token_above_100k_tokens": 5.5e-7, @@ -38593,7 +41954,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5.5e-7, "search_context_cost_per_query": { @@ -38635,327 +41995,1587 @@ "supports_tool_search": true, "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_adaptive_thinking": true, - "supports_assistant_prefill": false, - "supports_computer_use": true, + "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_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_native_structured_output": false, + "supports_max_reasoning_effort": true, + "supports_minimal_reasoning_effort": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 2048, + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-7", + "litellm_provider": "bedrock_mantle", + "region": "ap-northeast-1" + } + }, + "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", + "supports_tool_search": true, + "max_input_tokens": 1000000, + "max_output_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": false, + "supports_bedrock_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, + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-8", + "litellm_provider": "bedrock_mantle", + "region": "ap-northeast-1" + } + }, + "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", + "supports_tool_search": true, + "max_input_tokens": 1000000, + "max_output_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": false, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/ap-northeast-1/index.json", + "input_cost_per_token_batches": 0.00000275, + "output_cost_per_token_batches": 0.00001375 + }, + "jp.anthropic.claude-opus-5-5": { + "bedrock_converse_supports_strict_tools": false, + "supports_adaptive_thinking": true, + "supports_mid_conversation_system": true, + "cache_creation_input_token_cost": 0.0000055, + "cache_creation_input_token_cost_above_1hr": 0.0000088, + "cache_read_input_token_cost": 2.2e-7, + "input_cost_per_token": 0.0000044, + "litellm_provider": "bedrock_converse", + "supports_tool_search": true, + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000022, + "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": false, + "supports_max_reasoning_effort": true, + "supports_output_config": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 512, + "thinking_always_on": true, + "supports_forced_tool_use": false, + "source": "https://aws.amazon.com/bedrock/pricing/" + }, + "jp.anthropic.claude-sonnet-4-5-20250929-v1:0": { + "cache_creation_input_token_cost": 0.000004125, + "cache_creation_input_token_cost_above_1hr": 0.0000066, + "cache_read_input_token_cost": 3.3e-7, + "input_cost_per_token": 0.0000033, + "input_cost_per_token_above_200k_tokens": 0.0000066, + "output_cost_per_token_above_200k_tokens": 0.00002475, + "cache_creation_input_token_cost_above_200k_tokens": 0.00000825, + "cache_creation_input_token_cost_above_1hr_above_200k_tokens": 0.0000132, + "cache_read_input_token_cost_above_200k_tokens": 6.6e-7, + "deprecation_date": "2027-04-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "successor_model": "jp.anthropic.claude-sonnet-5-5", + "litellm_provider": "bedrock_converse", + "supports_tool_search": true, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 0.0000165, + "search_context_cost_per_query": { + "search_context_size_high": 0.01, + "search_context_size_low": 0.01, + "search_context_size_medium": 0.01 + }, + "supports_assistant_prefill": true, + "supports_computer_use": true, + "supports_function_calling": true, + "supports_pdf_input": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_native_structured_output": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024, + "input_cost_per_token_batches": 0.00000165, + "output_cost_per_token_batches": 0.00000825, + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-5-20250929-v1:0", + "litellm_provider": "bedrock" + } + }, + "jp.anthropic.claude-sonnet-4-6": { + "supports_adaptive_thinking": true, + "supports_legacy_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, + "input_cost_per_token": 0.0000033, + "litellm_provider": "bedrock_converse", + "supports_tool_search": true, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 0.0000165, + "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_max_reasoning_effort": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_native_structured_output": true, + "supports_output_config": true, + "supports_parallel_tool_use_config": true, + "prompt_cache_min_tokens": 1024, + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-6", + "litellm_provider": "bedrock" + } + }, + "jp.anthropic.claude-sonnet-5": { + "bedrock_converse_supports_strict_tools": false, + "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", + "supports_tool_search": true, + "max_input_tokens": 1000000, + "max_output_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": false, + "supports_bedrock_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, + "source": "https://aws.amazon.com/bedrock/pricing/" + }, + "jp.anthropic.claude-sonnet-5-5": { + "bedrock_converse_supports_strict_tools": false, + "cache_creation_input_token_cost": 0.00000275, + "cache_creation_input_token_cost_above_1hr": 0.0000044, + "cache_read_input_token_cost": 1.1e-7, + "input_cost_per_token": 0.0000022, + "litellm_provider": "bedrock_converse", + "supports_tool_search": true, + "max_input_tokens": 1000000, + "max_output_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": false, + "supports_bedrock_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, + "supports_forced_tool_use": false, + "thinking_always_on": true, + "prompt_cache_min_tokens": 512, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + }, + "kimi-k2-thinking-251104": { + "input_cost_per_token": 0, + "litellm_provider": "volcengine", + "max_input_tokens": 229376, + "max_output_tokens": 32768, + "mode": "chat", + "output_cost_per_token": 0, + "supports_assistant_prefill": true, + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true + }, + "kyma/claude-fable-5": { + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000135, + "output_cost_per_token": 0.0000675, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true, + "supports_adaptive_thinking": true, + "thinking_always_on": true + }, + "kyma/claude-fable-5.1": { + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000135, + "output_cost_per_token": 0.0000675, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true, + "supports_adaptive_thinking": true, + "thinking_always_on": true + }, + "kyma/claude-haiku-4-5": { + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000135, + "cache_read_input_token_cost": 1.35e-7, + "output_cost_per_token": 0.00000675, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false, + "prompt_cache_min_tokens": 4096 + }, + "kyma/claude-haiku-5.5": { + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "input_cost_per_token": 1.35e-7, + "cache_read_input_token_cost": 1.35e-8, + "output_cost_per_token": 6.75e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true, + "supports_adaptive_thinking": true, + "thinking_always_on": false, + "prompt_cache_min_tokens": 512 + }, + "kyma/claude-opus-4-7": { + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.00000675, + "cache_read_input_token_cost": 6.75e-7, + "output_cost_per_token": 0.00003375, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false, + "supports_adaptive_thinking": true, + "prompt_cache_min_tokens": 2048 + }, + "kyma/claude-opus-5": { + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.00000675, + "cache_read_input_token_cost": 6.75e-7, + "output_cost_per_token": 0.00003375, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true, + "supports_adaptive_thinking": true, + "prompt_cache_min_tokens": 512 + }, + "kyma/claude-opus-5.5": { + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000054, + "cache_read_input_token_cost": 2.7e-7, + "output_cost_per_token": 0.000027, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true, + "supports_adaptive_thinking": true, + "thinking_always_on": true, + "prompt_cache_min_tokens": 512 + }, + "kyma/claude-sonnet-4-6": { + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.00000405, + "cache_read_input_token_cost": 4.05e-7, + "output_cost_per_token": 0.00002025, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false, + "supports_adaptive_thinking": true, + "prompt_cache_min_tokens": 1024 + }, + "kyma/claude-sonnet-5": { + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000027, + "cache_read_input_token_cost": 2.7e-7, + "output_cost_per_token": 0.0000135, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true, + "supports_adaptive_thinking": true, + "prompt_cache_min_tokens": 1024 + }, + "kyma/claude-sonnet-5.5": { + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000027, + "cache_read_input_token_cost": 1.35e-7, + "output_cost_per_token": 0.0000135, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true, + "supports_adaptive_thinking": true, + "thinking_always_on": true, + "prompt_cache_min_tokens": 512 + }, + "kyma/deepseek-r1": { + "max_input_tokens": 64000, + "max_output_tokens": 32768, + "input_cost_per_token": 7.425e-7, + "output_cost_per_token": 0.000002957, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/deepseek-v3": { + "max_input_tokens": 160000, + "max_output_tokens": 8192, + "input_cost_per_token": 5.18e-7, + "output_cost_per_token": 7.571e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/deepseek-v4-flash": { + "max_input_tokens": 1000000, + "max_output_tokens": 65536, + "input_cost_per_token": 1.23e-7, + "cache_read_input_token_cost": 2.43e-8, + "output_cost_per_token": 2.458e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/deepseek-v4-flash-vision-exp": { + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "input_cost_per_token": 3.892e-7, + "output_cost_per_token": 0.000001168, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/deepseek-v4.1-flash": { + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "input_cost_per_token": 2.7e-7, + "output_cost_per_token": 8.1e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/gemini-3-flash": { + "max_input_tokens": 1048576, + "max_output_tokens": 8192, + "input_cost_per_token": 6.75e-7, + "cache_read_input_token_cost": 6.75e-8, + "output_cost_per_token": 0.00000405, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/gemini-3.1-pro": { + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "input_cost_per_token": 0.0000027, + "cache_read_input_token_cost": 2.7e-7, + "output_cost_per_token": 0.0000162, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/gemini-3.5-flash": { + "max_input_tokens": 1048576, + "max_output_tokens": 8192, + "input_cost_per_token": 0.000002025, + "cache_read_input_token_cost": 2.025e-7, + "output_cost_per_token": 0.00001215, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/gemini-3.5-flash-lite": { + "max_input_tokens": 1048576, + "max_output_tokens": 8192, + "input_cost_per_token": 4.05e-7, + "cache_read_input_token_cost": 4.05e-8, + "output_cost_per_token": 0.000003375, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/gemini-3.6-flash": { + "max_input_tokens": 1048576, + "max_output_tokens": 8192, + "input_cost_per_token": 0.000001013, + "cache_read_input_token_cost": 1.0125e-7, + "output_cost_per_token": 0.000005063, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": false, + "supports_pdf_input": false + }, + "kyma/gemini-3.7-flash": { + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "input_cost_per_token": 0.000002026, + "cache_read_input_token_cost": 1.0125e-7, + "output_cost_per_token": 0.000010126, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/gemini-3.8-flash": { + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "input_cost_per_token": 0.000002026, + "output_cost_per_token": 0.000010126, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/gemini-4-argon": { + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "input_cost_per_token": 0.0000054, + "cache_read_input_token_cost": 2.7e-7, + "output_cost_per_token": 0.000027, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/gemma-4-31b": { + "max_input_tokens": 128000, + "max_output_tokens": 8192, + "input_cost_per_token": 1.642e-7, + "cache_read_input_token_cost": 1.642e-7, + "output_cost_per_token": 4.689e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/glm-4.5-air": { + "max_input_tokens": 131072, + "max_output_tokens": 8192, + "input_cost_per_token": 1.797e-7, + "cache_read_input_token_cost": 3.375e-8, + "output_cost_per_token": 0.000001175, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/glm-4.7-flash": { + "max_input_tokens": 203000, + "max_output_tokens": 65536, + "input_cost_per_token": 8.1e-8, + "cache_read_input_token_cost": 1.35e-8, + "output_cost_per_token": 5.4e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/glm-5.1": { + "max_input_tokens": 203000, + "max_output_tokens": 65536, + "input_cost_per_token": 0.00000189, + "cache_read_input_token_cost": 2.7675e-7, + "output_cost_per_token": 0.00000594, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/glm-5.2": { + "max_input_tokens": 1000000, + "max_output_tokens": 131072, + "input_cost_per_token": 9.029e-7, + "cache_read_input_token_cost": 2.9835e-7, + "output_cost_per_token": 0.000003083, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/glm-5.3": { + "max_input_tokens": 1310720, + "max_output_tokens": 131072, + "input_cost_per_token": 0.000001178, + "output_cost_per_token": 0.000003702, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/glm-5.3-flash": { + "max_input_tokens": 1310720, + "max_output_tokens": 65536, + "input_cost_per_token": 1.72e-7, + "output_cost_per_token": 5.733e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/gpt-5.6-luna": { + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 2.944e-7, + "cache_read_input_token_cost": 2.7e-8, + "output_cost_per_token": 0.000001767, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/gpt-5.6-luna-pro": { + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 2.703e-7, + "cache_read_input_token_cost": 2.7e-8, + "output_cost_per_token": 0.000001621, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/gpt-5.6-sol": { + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000054, + "cache_read_input_token_cost": 6.75e-7, + "output_cost_per_token": 0.000027, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/gpt-5.6-sol-pro": { + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000054, + "cache_read_input_token_cost": 6.75e-7, + "output_cost_per_token": 0.000027, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/gpt-5.6-terra": { + "max_input_tokens": 1050000, + "max_output_tokens": 8192, + "input_cost_per_token": 0.0000027, + "cache_read_input_token_cost": 2.7e-7, + "output_cost_per_token": 0.0000162, + "input_cost_per_token_above_272k_tokens": 0.0000054, + "output_cost_per_token_above_272k_tokens": 0.0000243, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/gpt-5.6-terra-pro": { + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000027, + "cache_read_input_token_cost": 2.7e-7, + "output_cost_per_token": 0.0000162, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/gpt-6-astra": { + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000135, + "cache_read_input_token_cost": 0.00000135, + "output_cost_per_token": 0.0000675, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/gpt-6-luna": { + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 1.639e-7, + "cache_read_input_token_cost": 1.35e-8, + "output_cost_per_token": 8.195e-7, + "input_cost_per_token_above_272k_tokens": 2.7e-7, + "output_cost_per_token_above_272k_tokens": 0.0000010125, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/gpt-6.1-sol": { + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000027, + "cache_read_input_token_cost": 1.35e-7, + "output_cost_per_token": 0.0000135, + "input_cost_per_token_above_272k_tokens": 0.0000054, + "output_cost_per_token_above_272k_tokens": 0.00002025, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/gpt-oss-120b": { + "max_input_tokens": 128000, + "max_output_tokens": 8192, + "input_cost_per_token": 4.73e-8, + "output_cost_per_token": 2.303e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/grok-4.20": { + "max_input_tokens": 2000000, + "max_output_tokens": 8192, + "input_cost_per_token": 0.000001763, + "output_cost_per_token": 0.000003528, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/grok-4.20-multi-agent": { + "max_input_tokens": 2000000, + "max_output_tokens": 8192, + "input_cost_per_token": 0.000001767, + "output_cost_per_token": 0.000003534, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": false, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/grok-4.3": { + "max_input_tokens": 1000000, + "max_output_tokens": 32768, + "input_cost_per_token": 0.00000192, + "cache_read_input_token_cost": 2.7e-7, + "output_cost_per_token": 0.000003838, + "input_cost_per_token_above_200k_tokens": 0.000003375, + "output_cost_per_token_above_200k_tokens": 0.00000675, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/grok-4.5": { + "max_input_tokens": 500000, + "max_output_tokens": 8192, + "input_cost_per_token": 0.00000273, + "output_cost_per_token": 0.000008189, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/grok-4.6": { + "max_input_tokens": 500000, + "max_output_tokens": 8192, + "input_cost_per_token": 0.000002758, + "output_cost_per_token": 0.000008274, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/grok-4.7": { + "max_input_tokens": 500000, + "max_output_tokens": 450000, + "input_cost_per_token": 0.00000216, + "cache_read_input_token_cost": 5.4e-7, + "output_cost_per_token": 0.00000648, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/grok-build": { + "max_input_tokens": 256000, + "max_output_tokens": 32768, + "input_cost_per_token": 0.000001389, + "cache_read_input_token_cost": 2.7e-7, + "output_cost_per_token": 0.000002777, + "input_cost_per_token_above_200k_tokens": 0.0000027, + "output_cost_per_token_above_200k_tokens": 0.0000054, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/hy3": { + "max_input_tokens": 262144, + "max_output_tokens": 8192, + "input_cost_per_token": 1.594e-7, + "output_cost_per_token": 6.576e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/hy4-preview": { + "max_input_tokens": 1048576, + "max_output_tokens": 64000, + "input_cost_per_token": 0.0000011259, + "output_cost_per_token": 0.0000033764, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/kimi-k2.6": { + "max_input_tokens": 262144, + "max_output_tokens": 32768, + "input_cost_per_token": 5.909e-7, + "output_cost_per_token": 0.000002758, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/kimi-k2.7-code": { + "max_input_tokens": 262144, + "max_output_tokens": 16384, + "input_cost_per_token": 0.000001009, + "output_cost_per_token": 0.000004774, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/kimi-k3": { + "max_input_tokens": 1048576, + "max_output_tokens": 32768, + "input_cost_per_token": 0.000003052, + "cache_read_input_token_cost": 4.05e-7, + "output_cost_per_token": 0.000015258, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/kimi-k3.1-pro": { + "max_input_tokens": 1048576, + "max_output_tokens": 943718, + "input_cost_per_token": 0.0000027, + "cache_read_input_token_cost": 2.7e-7, + "output_cost_per_token": 0.0000135, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/llama-3.3-70b": { + "max_input_tokens": 128000, + "max_output_tokens": 8192, + "input_cost_per_token": 1.35e-7, + "output_cost_per_token": 4.32e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": true, + "supports_reasoning": false, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/llama-4-maverick": { + "max_input_tokens": 1048576, + "max_output_tokens": 16384, + "input_cost_per_token": 3.344e-7, + "output_cost_per_token": 0.000001337, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": false, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/mimo-v2.5": { + "max_input_tokens": 1050000, + "max_output_tokens": 16384, + "input_cost_per_token": 1.859e-7, + "output_cost_per_token": 3.718e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/mimo-v2.6-flash": { + "max_input_tokens": 1050000, + "max_output_tokens": 131072, + "input_cost_per_token": 1.89e-7, + "output_cost_per_token": 3.78e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/mimo-v2.6-pro": { + "max_input_tokens": 1050000, + "max_output_tokens": 131072, + "input_cost_per_token": 5.805e-7, + "output_cost_per_token": 0.0000011745, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/minimax-m2.5": { + "max_input_tokens": 196608, + "max_output_tokens": 32768, + "input_cost_per_token": 4.188e-7, + "output_cost_per_token": 0.000001675, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/minimax-m2.7": { + "max_input_tokens": 204800, + "max_output_tokens": 32768, + "input_cost_per_token": 4.05e-7, + "output_cost_per_token": 0.00000162, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/minimax-m3": { + "max_input_tokens": 1048576, + "max_output_tokens": 32768, + "input_cost_per_token": 3.956e-7, + "cache_read_input_token_cost": 7.56e-8, + "output_cost_per_token": 0.000001582, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/minimax-m3.1-flash": { + "max_input_tokens": 1048576, + "max_output_tokens": 524288, + "input_cost_per_token": 2.025e-7, + "cache_read_input_token_cost": 2.025e-8, + "output_cost_per_token": 8.1e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/muse-glimmer-30b": { + "max_input_tokens": 131072, + "max_output_tokens": 8192, + "input_cost_per_token": 4.554e-7, + "output_cost_per_token": 0.000001821, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/muse-spark-1.1": { + "max_input_tokens": 1048576, + "max_output_tokens": 8192, + "input_cost_per_token": 0.000001542, + "output_cost_per_token": 0.000005243, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/muse-spark-1.2": { + "max_input_tokens": 1048576, + "max_output_tokens": 8192, + "input_cost_per_token": 0.000001773, + "output_cost_per_token": 0.000006025, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/muse-spark-1.3": { + "max_input_tokens": 1048576, + "max_output_tokens": 8192, + "input_cost_per_token": 0.000001688, + "output_cost_per_token": 0.000005738, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/muse-spark-open": { + "max_input_tokens": 1048576, + "max_output_tokens": 943718, + "input_cost_per_token": 0.000001688, + "output_cost_per_token": 0.000005738, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/muse-wonder": { + "max_input_tokens": 1048576, + "max_output_tokens": 943718, + "input_cost_per_token": 0.0000054, + "output_cost_per_token": 0.000027, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": true + }, + "kyma/nemotron-3-ultra-550b": { + "max_input_tokens": 1000000, + "max_output_tokens": 32768, + "input_cost_per_token": 6.75e-7, + "cache_read_input_token_cost": 1.35e-7, + "output_cost_per_token": 0.000003375, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/nemotron-3.5-super-vl": { + "max_input_tokens": 1048576, + "max_output_tokens": 235929, + "input_cost_per_token": 8.1e-8, + "cache_read_input_token_cost": 1.35e-8, + "output_cost_per_token": 4.725e-7, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/qwen-3-32b": { + "max_input_tokens": 32768, + "max_output_tokens": 8192, + "input_cost_per_token": 1.08e-7, + "output_cost_per_token": 3.78e-7, + "litellm_provider": "kyma", + "mode": "chat", "supports_function_calling": true, - "supports_pdf_input": true, + "supports_vision": false, "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": false, - "supports_max_reasoning_effort": true, - "supports_minimal_reasoning_effort": true, - "supports_parallel_tool_use_config": true, - "prompt_cache_min_tokens": 2048, - "source": "https://aws.amazon.com/bedrock/pricing/" + "supports_pdf_input": false }, - "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", - "supports_tool_search": true, + "kyma/qwen-3-coder": { + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "input_cost_per_token": 3.546e-7, + "cache_read_input_token_cost": 1.35e-7, + "output_cost_per_token": 0.000001612, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, + "supports_vision": false, + "supports_prompt_caching": true, + "supports_reasoning": false, + "supports_response_schema": true, + "supports_pdf_input": false + }, + "kyma/qwen-3.6-plus": { "max_input_tokens": 1000000, - "max_output_tokens": 128000, - "max_tokens": 128000, + "max_output_tokens": 65536, + "input_cost_per_token": 4.388e-7, + "output_cost_per_token": 0.000002633, + "input_cost_per_token_above_256k_tokens": 0.000001755, + "output_cost_per_token_above_256k_tokens": 0.000005265, + "litellm_provider": "kyma", "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_vision": 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": false, - "supports_bedrock_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, - "source": "https://aws.amazon.com/bedrock/pricing/" + "supports_pdf_input": false }, - "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", - "supports_tool_search": true, + "kyma/qwen-3.7-max": { "max_input_tokens": 1000000, - "max_output_tokens": 128000, - "max_tokens": 128000, + "max_output_tokens": 32768, + "input_cost_per_token": 0.000002071, + "cache_read_input_token_cost": 1.6875e-7, + "output_cost_per_token": 0.000006207, + "litellm_provider": "kyma", "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_vision": false, "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": false, - "supports_max_reasoning_effort": true, - "supports_output_config": true, - "supports_parallel_tool_use_config": true, - "prompt_cache_min_tokens": 512, - "source": "https://aws.amazon.com/bedrock/pricing/" + "supports_pdf_input": false }, - "jp.anthropic.claude-opus-5-5": { - "bedrock_converse_supports_strict_tools": false, - "supports_adaptive_thinking": true, - "supports_mid_conversation_system": true, - "cache_creation_input_token_cost": 0.0000055, - "cache_creation_input_token_cost_above_1hr": 0.0000088, - "cache_read_input_token_cost": 2.2e-7, - "input_cost_per_token": 0.0000044, - "litellm_provider": "bedrock_converse", - "supports_tool_search": true, + "kyma/qwen-3.7-plus": { "max_input_tokens": 1000000, - "max_output_tokens": 128000, - "max_tokens": 128000, + "max_output_tokens": 32768, + "input_cost_per_token": 4.325e-7, + "cache_read_input_token_cost": 8.64e-8, + "output_cost_per_token": 0.000001731, + "input_cost_per_token_above_256k_tokens": 0.000001296, + "output_cost_per_token_above_256k_tokens": 0.000005184, + "litellm_provider": "kyma", "mode": "chat", - "output_cost_per_token": 0.000022, - "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_vision": 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": false, - "supports_max_reasoning_effort": true, - "supports_output_config": true, - "supports_parallel_tool_use_config": true, - "prompt_cache_min_tokens": 512, - "thinking_always_on": true, - "supports_forced_tool_use": false, - "source": "https://aws.amazon.com/bedrock/pricing/" + "supports_pdf_input": false }, - "jp.anthropic.claude-sonnet-4-5-20250929-v1:0": { - "cache_creation_input_token_cost": 0.000004125, - "cache_creation_input_token_cost_above_1hr": 0.0000066, - "cache_read_input_token_cost": 3.3e-7, - "input_cost_per_token": 0.0000033, - "input_cost_per_token_above_200k_tokens": 0.0000066, - "output_cost_per_token_above_200k_tokens": 0.00002475, - "cache_creation_input_token_cost_above_200k_tokens": 0.00000825, - "cache_creation_input_token_cost_above_1hr_above_200k_tokens": 0.0000132, - "cache_read_input_token_cost_above_200k_tokens": 6.6e-7, - "deprecation_date": "2027-04-08", - "litellm_provider": "bedrock_converse", - "supports_tool_search": true, - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "kyma/qwen-3.8-max": { + "max_input_tokens": 1000000, + "max_output_tokens": 131072, + "input_cost_per_token": 0.000002228, + "cache_read_input_token_cost": 2.781e-7, + "output_cost_per_token": 0.000006684, + "litellm_provider": "kyma", "mode": "chat", - "output_cost_per_token": 0.0000165, - "search_context_cost_per_query": { - "search_context_size_high": 0.01, - "search_context_size_low": 0.01, - "search_context_size_medium": 0.01 - }, - "supports_assistant_prefill": true, - "supports_computer_use": true, "supports_function_calling": true, - "supports_pdf_input": true, + "supports_vision": true, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_native_structured_output": true, - "supports_parallel_tool_use_config": true, - "prompt_cache_min_tokens": 1024, - "input_cost_per_token_batches": 0.00000165, - "output_cost_per_token_batches": 0.00000825, - "source": "https://aws.amazon.com/bedrock/pricing/" + "supports_pdf_input": false }, - "jp.anthropic.claude-sonnet-4-6": { - "supports_adaptive_thinking": true, - "supports_legacy_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, - "input_cost_per_token": 0.0000033, - "litellm_provider": "bedrock_converse", - "supports_tool_search": true, + "kyma/qwen3.7-flash": { "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "max_tokens": 64000, + "max_output_tokens": 8192, + "input_cost_per_token": 4.35e-8, + "cache_read_input_token_cost": 8.1e-9, + "output_cost_per_token": 1.886e-7, + "input_cost_per_token_above_32k_tokens": 1.35e-7, + "output_cost_per_token_above_32k_tokens": 5.4e-7, + "input_cost_per_token_above_256k_tokens": 2.7e-7, + "output_cost_per_token_above_256k_tokens": 0.00000108, + "litellm_provider": "kyma", "mode": "chat", - "output_cost_per_token": 0.0000165, - "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_vision": true, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, - "supports_max_reasoning_effort": true, - "supports_tool_choice": true, + "supports_pdf_input": false + }, + "kyma/qwen3.8-27b": { + "max_input_tokens": 1000000, + "max_output_tokens": 131072, + "input_cost_per_token": 3.826e-7, + "output_cost_per_token": 0.000002732, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": true, "supports_vision": true, - "supports_native_structured_output": true, - "supports_output_config": true, - "supports_parallel_tool_use_config": true, - "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "supports_prompt_caching": false, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_pdf_input": false }, - "jp.anthropic.claude-sonnet-5": { - "bedrock_converse_supports_strict_tools": false, - "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", - "supports_tool_search": true, + "kyma/qwen3.8-flash": { "max_input_tokens": 1000000, - "max_output_tokens": 128000, - "max_tokens": 128000, + "max_output_tokens": 131072, + "input_cost_per_token": 2.045e-7, + "output_cost_per_token": 6.41e-7, + "litellm_provider": "kyma", "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_vision": true, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, - "supports_sampling_params": false, - "supports_tool_choice": true, + "supports_pdf_input": false + }, + "kyma/sonar": { + "max_input_tokens": 127072, + "max_output_tokens": 4096, + "input_cost_per_token": 0.00000135, + "output_cost_per_token": 0.00000135, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": false, "supports_vision": true, - "supports_xhigh_reasoning_effort": true, - "supports_native_structured_output": false, - "supports_bedrock_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, - "source": "https://aws.amazon.com/bedrock/pricing/" + "supports_prompt_caching": true, + "supports_reasoning": false, + "supports_response_schema": false, + "supports_pdf_input": false }, - "jp.anthropic.claude-sonnet-5-5": { - "bedrock_converse_supports_strict_tools": false, - "cache_creation_input_token_cost": 0.00000275, - "cache_creation_input_token_cost_above_1hr": 0.0000044, - "cache_read_input_token_cost": 1.1e-7, - "input_cost_per_token": 0.0000022, - "litellm_provider": "bedrock_converse", - "supports_tool_search": true, - "max_input_tokens": 1000000, - "max_output_tokens": 128000, - "max_tokens": 128000, + "kyma/sonar-pro": { + "max_input_tokens": 200000, + "max_output_tokens": 8000, + "input_cost_per_token": 0.00000405, + "output_cost_per_token": 0.00002025, + "litellm_provider": "kyma", + "mode": "chat", + "supports_function_calling": false, + "supports_vision": true, + "supports_prompt_caching": true, + "supports_reasoning": false, + "supports_response_schema": false, + "supports_pdf_input": false + }, + "kyma/step-3.7-flash": { + "max_input_tokens": 256000, + "max_output_tokens": 8192, + "input_cost_per_token": 2.229e-7, + "cache_read_input_token_cost": 5.4e-8, + "output_cost_per_token": 0.000001282, + "litellm_provider": "kyma", "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_vision": 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": false, - "supports_bedrock_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, - "supports_forced_tool_use": false, - "thinking_always_on": true, - "prompt_cache_min_tokens": 512, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "supports_pdf_input": false }, - "kimi-k2-thinking-251104": { - "input_cost_per_token": 0, - "litellm_provider": "volcengine", - "max_input_tokens": 229376, - "max_output_tokens": 32768, - "max_tokens": 32768, + "kyma/step-5-preview": { + "max_input_tokens": 1048576, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000135, + "cache_read_input_token_cost": 1.35e-7, + "output_cost_per_token": 0.000003645, + "litellm_provider": "kyma", "mode": "chat", - "output_cost_per_token": 0, - "supports_assistant_prefill": true, "supports_function_calling": true, + "supports_vision": true, "supports_prompt_caching": true, "supports_reasoning": true, - "supports_tool_choice": true + "supports_response_schema": true, + "supports_pdf_input": false }, "lambda_ai/deepseek-llama3.3-70b": { "input_cost_per_token": 2e-7, "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 6e-7, "supports_function_calling": true, @@ -38969,7 +43589,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 6e-7, "supports_function_calling": true, @@ -38983,7 +43602,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 8e-7, "supports_function_calling": true, @@ -38997,7 +43615,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 6e-7, "supports_function_calling": true, @@ -39010,7 +43627,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 8e-7, "supports_function_calling": true, @@ -39023,7 +43639,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -39036,7 +43651,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 4e-8, "supports_function_calling": true, @@ -39049,7 +43663,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 2e-7, "supports_function_calling": true, @@ -39062,7 +43675,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 4e-8, "supports_function_calling": true, @@ -39075,7 +43687,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 1e-7, "supports_function_calling": true, @@ -39088,7 +43699,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 16384, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 1e-7, "supports_function_calling": true, @@ -39101,7 +43711,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 8e-7, "supports_function_calling": true, @@ -39114,7 +43723,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -39127,7 +43735,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 4e-8, "supports_function_calling": true, @@ -39140,7 +43747,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -39153,7 +43759,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 2.5e-8, "supports_function_calling": true, @@ -39167,7 +43772,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 2.5e-8, "supports_function_calling": true, @@ -39180,7 +43784,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -39193,7 +43796,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 1e-7, "supports_function_calling": true, @@ -39206,7 +43808,6 @@ "litellm_provider": "lambda_ai", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 1e-7, "supports_function_calling": true, @@ -39218,7 +43819,6 @@ "lemonade/Gemma-3-4b-it-GGUF": { "input_cost_per_token": 0, "litellm_provider": "lemonade", - "max_tokens": 8192, "max_input_tokens": 128000, "max_output_tokens": 8192, "mode": "chat", @@ -39230,7 +43830,6 @@ "lemonade/Qwen3-4B-Instruct-2507-GGUF": { "input_cost_per_token": 0, "litellm_provider": "lemonade", - "max_tokens": 32768, "max_input_tokens": 262144, "max_output_tokens": 32768, "mode": "chat", @@ -39242,7 +43841,6 @@ "lemonade/Qwen3-Coder-30B-A3B-Instruct-GGUF": { "input_cost_per_token": 0, "litellm_provider": "lemonade", - "max_tokens": 32768, "max_input_tokens": 262144, "max_output_tokens": 32768, "mode": "chat", @@ -39254,7 +43852,6 @@ "lemonade/gpt-oss-120b-mxfp-GGUF": { "input_cost_per_token": 0, "litellm_provider": "lemonade", - "max_tokens": 32768, "max_input_tokens": 131072, "max_output_tokens": 32768, "mode": "chat", @@ -39266,7 +43863,6 @@ "lemonade/gpt-oss-20b-mxfp4-GGUF": { "input_cost_per_token": 0, "litellm_provider": "lemonade", - "max_tokens": 32768, "max_input_tokens": 131072, "max_output_tokens": 32768, "mode": "chat", @@ -39276,7 +43872,6 @@ "supports_tool_choice": true }, "libertai/deepseek-v4-flash": { - "max_tokens": 200000, "max_input_tokens": 200000, "max_output_tokens": 200000, "input_cost_per_token": 2.5e-7, @@ -39290,7 +43885,6 @@ "source": "https://docs.libertai.io/apis/text/" }, "libertai/deepseek-v4-flash-thinking": { - "max_tokens": 200000, "max_input_tokens": 200000, "max_output_tokens": 200000, "input_cost_per_token": 2.5e-7, @@ -39305,7 +43899,6 @@ "source": "https://docs.libertai.io/apis/text/" }, "libertai/gemma-4-31b-it": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1.5e-7, @@ -39319,7 +43912,6 @@ "source": "https://docs.libertai.io/apis/text/" }, "libertai/gemma-4-31b-it-thinking": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1.5e-7, @@ -39334,7 +43926,6 @@ "source": "https://docs.libertai.io/apis/text/" }, "libertai/hermes-3-8b-tee": { - "max_tokens": 16000, "max_input_tokens": 16000, "max_output_tokens": 16000, "input_cost_per_token": 1.5e-7, @@ -39348,7 +43939,6 @@ "source": "https://docs.libertai.io/apis/text/" }, "libertai/qwen3.5-122b-a10b": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 2.5e-7, @@ -39362,7 +43952,6 @@ "source": "https://docs.libertai.io/apis/text/" }, "libertai/qwen3.5-122b-a10b-thinking": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 2.5e-7, @@ -39377,7 +43966,6 @@ "source": "https://docs.libertai.io/apis/text/" }, "libertai/qwen3.6-27b": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1.5e-7, @@ -39391,7 +43979,6 @@ "source": "https://docs.libertai.io/apis/text/" }, "libertai/qwen3.6-27b-thinking": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1.5e-7, @@ -39406,7 +43993,6 @@ "source": "https://docs.libertai.io/apis/text/" }, "libertai/qwen3.6-35b-a3b": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1.5e-7, @@ -39420,7 +44006,6 @@ "source": "https://docs.libertai.io/apis/text/" }, "libertai/qwen3.6-35b-a3b-thinking": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1.5e-7, @@ -39435,7 +44020,6 @@ "source": "https://docs.libertai.io/apis/text/" }, "llamagate/codellama-7b": { - "max_tokens": 4096, "max_input_tokens": 16384, "max_output_tokens": 4096, "input_cost_per_token": 6e-8, @@ -39446,7 +44030,6 @@ "supports_response_schema": true }, "llamagate/deepseek-coder-6.7b": { - "max_tokens": 4096, "max_input_tokens": 16384, "max_output_tokens": 4096, "input_cost_per_token": 6e-8, @@ -39457,7 +44040,6 @@ "supports_response_schema": true }, "llamagate/deepseek-r1-7b-qwen": { - "max_tokens": 16384, "max_input_tokens": 131072, "max_output_tokens": 16384, "input_cost_per_token": 8e-8, @@ -39469,7 +44051,6 @@ "supports_reasoning": true }, "llamagate/deepseek-r1-8b": { - "max_tokens": 16384, "max_input_tokens": 65536, "max_output_tokens": 16384, "input_cost_per_token": 1e-7, @@ -39481,7 +44062,6 @@ "supports_reasoning": true }, "llamagate/dolphin3-8b": { - "max_tokens": 8192, "max_input_tokens": 128000, "max_output_tokens": 8192, "input_cost_per_token": 8e-8, @@ -39492,7 +44072,6 @@ "supports_response_schema": true }, "llamagate/gemma3-4b": { - "max_tokens": 8192, "max_input_tokens": 128000, "max_output_tokens": 8192, "input_cost_per_token": 3e-8, @@ -39504,7 +44083,6 @@ "supports_vision": true }, "llamagate/llama-3.1-8b": { - "max_tokens": 8192, "max_input_tokens": 131072, "max_output_tokens": 8192, "input_cost_per_token": 3e-8, @@ -39515,7 +44093,6 @@ "supports_response_schema": true }, "llamagate/llama-3.2-3b": { - "max_tokens": 8192, "max_input_tokens": 131072, "max_output_tokens": 8192, "input_cost_per_token": 4e-8, @@ -39526,7 +44103,6 @@ "supports_response_schema": true }, "llamagate/llava-7b": { - "max_tokens": 2048, "max_input_tokens": 4096, "max_output_tokens": 2048, "input_cost_per_token": 1e-7, @@ -39537,7 +44113,6 @@ "supports_vision": true }, "llamagate/mistral-7b-v0.3": { - "max_tokens": 8192, "max_input_tokens": 32768, "max_output_tokens": 8192, "input_cost_per_token": 1e-7, @@ -39548,7 +44123,6 @@ "supports_response_schema": true }, "llamagate/openthinker-7b": { - "max_tokens": 8192, "max_input_tokens": 32768, "max_output_tokens": 8192, "input_cost_per_token": 8e-8, @@ -39560,7 +44134,6 @@ "supports_reasoning": true }, "llamagate/qwen2.5-coder-7b": { - "max_tokens": 8192, "max_input_tokens": 32768, "max_output_tokens": 8192, "input_cost_per_token": 6e-8, @@ -39571,7 +44144,6 @@ "supports_response_schema": true }, "llamagate/qwen3-8b": { - "max_tokens": 8192, "max_input_tokens": 32768, "max_output_tokens": 8192, "input_cost_per_token": 4e-8, @@ -39582,7 +44154,6 @@ "supports_response_schema": true }, "llamagate/qwen3-vl-8b": { - "max_tokens": 8192, "max_input_tokens": 32768, "max_output_tokens": 8192, "input_cost_per_token": 1.5e-7, @@ -39598,7 +44169,6 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 8192, "max_output_tokens": 1024, - "max_tokens": 1024, "mode": "chat", "output_cost_per_character": 0.000015, "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", @@ -39609,7 +44179,6 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 32768, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_character": 0.000001, "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#foundation_models", @@ -39620,7 +44189,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000001, "source": "https://aws.amazon.com/bedrock/pricing/" @@ -39630,18 +44198,17 @@ "litellm_provider": "bedrock", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00000256, "source": "https://aws.amazon.com/bedrock/pricing/" }, "meta.llama3-1-405b-instruct-v1:0": { "deprecation_date": "2026-07-07", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 0.0000024, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.0000024, "source": "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/bedrock/USD/current/bedrock.json", @@ -39650,12 +44217,12 @@ }, "meta.llama3-1-70b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 7.2e-7, "input_cost_per_token_batches": 3.6e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 7.2e-7, "output_cost_per_token_batches": 3.6e-7, @@ -39665,12 +44232,12 @@ }, "meta.llama3-1-8b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 2.2e-7, "input_cost_per_token_batches": 1.1e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2.2e-7, "output_cost_per_token_batches": 1.1e-7, @@ -39680,11 +44247,11 @@ }, "meta.llama3-2-11b-instruct-v1:0": { "deprecation_date": "2026-07-07", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 1.6e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 1.6e-7, "source": "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/bedrock/USD/current/bedrock.json", @@ -39694,11 +44261,11 @@ }, "meta.llama3-2-1b-instruct-v1:0": { "deprecation_date": "2026-07-07", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-2-1b-instruct.md", "input_cost_per_token": 1e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 1e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-2-1b-instruct.md", @@ -39707,11 +44274,11 @@ }, "meta.llama3-2-3b-instruct-v1:0": { "deprecation_date": "2026-07-07", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-2-3b-instruct.md", "input_cost_per_token": 1.5e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-2-3b-instruct.md", @@ -39720,11 +44287,11 @@ }, "meta.llama3-2-90b-instruct-v1:0": { "deprecation_date": "2026-07-07", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 7.2e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/bedrock/USD/current/bedrock.json", @@ -39734,12 +44301,12 @@ }, "meta.llama3-3-70b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 7.2e-7, "input_cost_per_token_batches": 3.6e-7, "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 7.2e-7, "output_cost_per_token_batches": 3.6e-7, @@ -39749,34 +44316,34 @@ }, "meta.llama3-70b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md", "input_cost_per_token": 0.00000265, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000035, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-70b-instruct.md" }, "meta.llama3-8b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md", "input_cost_per_token": 3e-7, "litellm_provider": "bedrock", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 6e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-8b-instruct.md" }, "meta.llama4-maverick-17b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-4-maverick-17b-instruct.md", "input_cost_per_token": 2.4e-7, "input_cost_per_token_batches": 1.2e-7, "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 9.7e-7, "output_cost_per_token_batches": 4.85e-7, @@ -39794,12 +44361,12 @@ }, "meta.llama4-scout-17b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-4-scout-17b-instruct.md", "input_cost_per_token": 1.7e-7, "input_cost_per_token_batches": 8.5e-8, "litellm_provider": "bedrock_converse", "max_input_tokens": 10000000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 6.6e-7, "output_cost_per_token_batches": 3.3e-7, @@ -39821,7 +44388,6 @@ "litellm_provider": "meta", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00000425, "search_context_cost_per_query": { @@ -39862,7 +44428,6 @@ "litellm_provider": "meta", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00000425, "search_context_cost_per_query": { @@ -39903,7 +44468,6 @@ "litellm_provider": "meta", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 2e-7, "search_context_cost_per_query": { @@ -39944,7 +44508,6 @@ "litellm_provider": "meta", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00000425, "search_context_cost_per_query": { @@ -39985,7 +44548,6 @@ "litellm_provider": "meta", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 2e-7, "search_context_cost_per_query": { @@ -40026,7 +44588,6 @@ "litellm_provider": "meta", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00002, "search_context_cost_per_query": { @@ -40067,7 +44628,6 @@ "litellm_provider": "meta_llama", "max_input_tokens": 128000, "max_output_tokens": 4028, - "max_tokens": 4028, "mode": "chat", "source": "https://ai.developer.meta.com/docs/models", "supported_modalities": [ @@ -40083,7 +44643,6 @@ "litellm_provider": "meta_llama", "max_input_tokens": 128000, "max_output_tokens": 4028, - "max_tokens": 4028, "mode": "chat", "source": "https://ai.developer.meta.com/docs/models", "supported_modalities": [ @@ -40099,7 +44658,6 @@ "litellm_provider": "meta_llama", "max_input_tokens": 1000000, "max_output_tokens": 4028, - "max_tokens": 4028, "mode": "chat", "source": "https://ai.developer.meta.com/docs/models", "supported_modalities": [ @@ -40116,7 +44674,6 @@ "litellm_provider": "meta_llama", "max_input_tokens": 10000000, "max_output_tokens": 4028, - "max_tokens": 4028, "mode": "chat", "source": "https://ai.developer.meta.com/docs/models", "supported_modalities": [ @@ -40138,6 +44695,7 @@ }, "minimax.minimax-m2": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 3e-7, "input_cost_per_token_batches": 1.5e-7, "input_cost_per_token_flex": 1.5e-7, @@ -40145,7 +44703,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_batches": 6e-7, @@ -40161,6 +44718,7 @@ }, "minimax.minimax-m2.1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 3e-7, "input_cost_per_token_batches": 1.5e-7, "input_cost_per_token_flex": 1.5e-7, @@ -40168,7 +44726,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 196000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_batches": 6e-7, @@ -40192,7 +44749,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 196000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token_batches": 6e-7, "output_cost_per_token_priority": 0.0000021, @@ -40299,6 +44855,7 @@ }, "mistral.devstral-2-123b": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 4e-7, "input_cost_per_token_batches": 2e-7, "input_cost_per_token_flex": 2e-7, @@ -40306,7 +44863,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 256000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000002, "output_cost_per_token_batches": 0.000001, @@ -40328,7 +44884,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 40000, - "max_tokens": 40000, "mode": "chat", "output_cost_per_token": 0.0000015, "output_cost_per_token_batches": 7.5e-7, @@ -40350,7 +44905,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 2e-7, "output_cost_per_token_batches": 1e-7, @@ -40372,7 +44926,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 1e-7, "output_cost_per_token_batches": 5e-8, @@ -40394,7 +44947,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 1.5e-7, "output_cost_per_token_batches": 7e-8, @@ -40410,11 +44962,11 @@ }, "mistral.mistral-7b-instruct-v0:2": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mistral-7b-instruct.md", "input_cost_per_token": 1.5e-7, "litellm_provider": "bedrock", "max_input_tokens": 32000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mistral-7b-instruct.md", @@ -40425,7 +44977,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 32000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000012, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mistral-large.md", @@ -40436,7 +44987,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/bedrock/USD/current/bedrock.json", @@ -40451,7 +45001,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 256000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.0000015, "output_cost_per_token_batches": 7.5e-7, @@ -40471,7 +45020,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 32000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000003, "output_cost_per_token_batches": 0.0000015, @@ -40480,11 +45028,11 @@ }, "mistral.mixtral-8x7b-instruct-v0:1": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mixtral-8x7b-instruct.md", "input_cost_per_token": 4.5e-7, "litellm_provider": "bedrock", "max_input_tokens": 32000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 7e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-mixtral-8x7b-instruct.md", @@ -40495,7 +45043,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://aws.amazon.com/bedrock/pricing/", @@ -40504,6 +45051,7 @@ }, "mistral.voxtral-mini-3b-2507": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 4e-8, "input_cost_per_token_batches": 2e-8, "input_cost_per_token_flex": 2e-8, @@ -40511,7 +45059,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 32768, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 4e-8, "output_cost_per_token_batches": 2e-8, @@ -40524,6 +45071,7 @@ }, "mistral.voxtral-small-24b-2507": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 1e-7, "input_cost_per_token_batches": 5e-8, "input_cost_per_token_flex": 5e-8, @@ -40531,7 +45079,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 32768, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 3e-7, "output_cost_per_token_batches": 1.5e-7, @@ -40548,7 +45095,6 @@ "litellm_provider": "mistral", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://docs.mistral.ai/models/model-cards/codestral-25-08", @@ -40563,7 +45109,6 @@ "litellm_provider": "mistral", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://docs.mistral.ai/models/model-cards/codestral-25-08", @@ -40578,25 +45123,44 @@ "litellm_provider": "mistral", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 2.5e-7, "source": "https://mistral.ai/technology/", "supports_assistant_prefill": true, "supports_tool_choice": true }, + "mistral/deepseek-v4-1-flash-1017": { + "cache_read_input_token_cost": 7e-9, + "input_cost_per_token": 3e-7, + "litellm_provider": "mistral", + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 0.0000012, + "source": "https://docs.mistral.ai/models/deepseek-v4-flash-1017", + "supports_assistant_prefill": true, + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, "mistral/devstral-latest": { "cache_read_input_token_cost": 4e-8, "input_cost_per_token": 4e-7, "litellm_provider": "mistral", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000002, + "reasoning_effort_levels": [ + "none", + "high" + ], "source": "https://mistral.ai/news/devstral-2-vibe-cli", "supports_assistant_prefill": true, "supports_function_calling": true, + "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true }, @@ -40606,12 +45170,16 @@ "litellm_provider": "mistral", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000002, + "reasoning_effort_levels": [ + "none", + "high" + ], "source": "https://mistral.ai/news/devstral-2-vibe-cli", "supports_assistant_prefill": true, "supports_function_calling": true, + "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true }, @@ -40621,12 +45189,16 @@ "litellm_provider": "mistral", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 3e-7, + "reasoning_effort_levels": [ + "none", + "high" + ], "source": "https://docs.mistral.ai/models/devstral-small-2-25-12", "supports_assistant_prefill": true, "supports_function_calling": true, + "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true }, @@ -40636,7 +45208,6 @@ "litellm_provider": "mistral", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "reasoning_effort_levels": [ @@ -40662,7 +45233,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0, "source": "https://docs.mistral.ai/models/model-cards/leanstral-1-5", @@ -40675,7 +45245,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0, "source": "https://docs.mistral.ai/models/model-cards/leanstral-1-5", @@ -40689,7 +45258,6 @@ "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", @@ -40706,7 +45274,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 6e-7, "source": "https://docs.mistral.ai/models/model-cards/mistral-small-4-0-26-03", @@ -40722,7 +45289,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 2e-7, "source": "https://docs.mistral.ai/models/ministral-3-14b-25-12", @@ -40738,7 +45304,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 2e-7, "source": "https://docs.mistral.ai/models/ministral-3-14b-25-12", @@ -40755,7 +45320,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 2e-7, "source": "https://mistral.ai/pricing", @@ -40771,7 +45335,6 @@ "litellm_provider": "mistral", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 1e-7, "source": "https://mistral.ai/pricing", @@ -40787,7 +45350,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://mistral.ai/pricing", @@ -40802,7 +45364,6 @@ "litellm_provider": "mistral", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 1e-7, "source": "https://docs.mistral.ai/models/ministral-3-3b-25-12", @@ -40818,7 +45379,6 @@ "litellm_provider": "mistral", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 1e-7, "source": "https://docs.mistral.ai/models/ministral-3-3b-25-12", @@ -40835,7 +45395,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://mistral.ai/pricing", @@ -40851,7 +45410,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://mistral.ai/pricing", @@ -40867,12 +45425,16 @@ "litellm_provider": "mistral", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000002, + "reasoning_effort_levels": [ + "none", + "high" + ], "source": "https://mistral.ai/news/devstral-2-vibe-cli", "supports_assistant_prefill": true, "supports_function_calling": true, + "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true }, @@ -40882,7 +45444,6 @@ "litellm_provider": "mistral", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://docs.mistral.ai/models/model-cards/codestral-25-08", @@ -40897,7 +45458,6 @@ "litellm_provider": "mistral", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://docs.mistral.ai/models/model-cards/codestral-25-08", @@ -40912,7 +45472,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://docs.mistral.ai/models/mistral-large-3-25-12", @@ -40928,7 +45487,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://docs.mistral.ai/models/mistral-large-3-25-12", @@ -40939,18 +45497,18 @@ "supports_vision": true }, "mistral/mistral-large-4": { - "cache_read_input_token_cost": 6.8e-8, - "input_cost_per_token": 6.8e-7, + "cache_read_input_token_cost": 7e-8, + "input_cost_per_token": 7e-7, "litellm_provider": "mistral", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", - "output_cost_per_token": 0.00000209, + "output_cost_per_token": 0.0000021, "reasoning_effort_levels": [ "none", "high" ], - "source": "https://docs.mistral.ai/models/mistral-large-4", + "source": "https://docs.mistral.ai/models/mistral-large-4-0", "supports_assistant_prefill": true, "supports_function_calling": true, "supports_prompt_caching": true, @@ -40960,18 +45518,18 @@ "supports_vision": true }, "mistral/mistral-large-4-0": { - "cache_read_input_token_cost": 6.8e-8, - "input_cost_per_token": 6.8e-7, + "cache_read_input_token_cost": 7e-8, + "input_cost_per_token": 7e-7, "litellm_provider": "mistral", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", - "output_cost_per_token": 0.00000209, + "output_cost_per_token": 0.0000021, "reasoning_effort_levels": [ "none", "high" ], - "source": "https://docs.mistral.ai/models/mistral-large-4", + "source": "https://docs.mistral.ai/models/mistral-large-4-0", "supports_assistant_prefill": true, "supports_function_calling": true, "supports_prompt_caching": true, @@ -40986,7 +45544,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://docs.mistral.ai/models/mistral-large-3-25-12", @@ -41002,7 +45559,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000075, "reasoning_effort_levels": [ @@ -41023,7 +45579,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000075, "reasoning_effort_levels": [ @@ -41044,7 +45599,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000075, "reasoning_effort_levels": [ @@ -41065,7 +45619,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000075, "reasoning_effort_levels": [ @@ -41086,7 +45639,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000075, "reasoning_effort_levels": [ @@ -41107,7 +45659,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000075, "reasoning_effort_levels": [ @@ -41128,11 +45679,15 @@ "litellm_provider": "mistral", "max_input_tokens": 32000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 3e-7, + "reasoning_effort_levels": [ + "none", + "high" + ], "supports_assistant_prefill": true, "supports_function_calling": true, + "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true }, @@ -41142,7 +45697,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 6e-7, "reasoning_effort_levels": [ @@ -41163,7 +45717,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 6e-7, "reasoning_effort_levels": [ @@ -41184,7 +45737,6 @@ "litellm_provider": "mistral", "max_input_tokens": 32000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 2.5e-7, "supports_assistant_prefill": true, @@ -41197,7 +45749,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 6e-7, "reasoning_effort_levels": [ @@ -41218,7 +45769,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000075, "reasoning_effort_levels": [ @@ -41239,7 +45789,6 @@ "litellm_provider": "mistral", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000075, "reasoning_effort_levels": [ @@ -41260,7 +45809,6 @@ "litellm_provider": "mistral", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 3e-7, "source": "https://mistral.ai/technology/", @@ -41274,7 +45822,6 @@ "litellm_provider": "mistral", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000006, "supports_assistant_prefill": true, @@ -41289,7 +45836,6 @@ "litellm_provider": "mistral", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 4e-7, "source": "https://docs.mistral.ai/models/voxtral-small-25-07", @@ -41304,7 +45850,6 @@ "litellm_provider": "mistral", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 4e-7, "source": "https://docs.mistral.ai/models/voxtral-small-25-07", @@ -41319,7 +45864,6 @@ "litellm_provider": "mistral", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "reasoning_effort_levels": [ @@ -41338,11 +45882,11 @@ "mistral/zai-glm-5-2": { "cache_read_input_token_cost": 1.4e-7, "deprecation_date": "2026-10-31", + "deprecation_source": "https://docs.mistral.ai/getting-started/models/models_overview", "input_cost_per_token": 0.0000014, "litellm_provider": "mistral", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "reasoning_effort_levels": [ @@ -41368,7 +45912,6 @@ "litellm_provider": "mistral", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "reasoning_effort_levels": [ @@ -41384,13 +45927,34 @@ "supports_response_schema": true, "supports_tool_choice": true }, + "mistral/zai-glm-5-3-flash": { + "cache_read_input_token_cost": 3e-8, + "input_cost_per_token": 1.5e-7, + "litellm_provider": "mistral", + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 5e-7, + "reasoning_effort_levels": [ + "low", + "high", + "max" + ], + "source": "https://docs.mistral.ai/models/zai-glm-5-3-flash", + "supports_assistant_prefill": true, + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, "mistral/zai-glm-latest": { "cache_read_input_token_cost": 1.4e-7, "input_cost_per_token": 0.0000014, "litellm_provider": "mistral", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "reasoning_effort_levels": [ @@ -41408,13 +45972,13 @@ }, "moonshot.kimi-k2-thinking": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 6e-7, "input_cost_per_token_batches": 3e-7, "input_cost_per_token_priority": 0.00000105, "litellm_provider": "bedrock_converse", "max_input_tokens": 256000, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_batches": 0.00000125, @@ -41430,11 +45994,11 @@ }, "moonshot/kimi-k2.5": { "cache_read_input_token_cost": 1e-7, + "deprecation_date": "2026-08-31", "input_cost_per_token": 6e-7, "litellm_provider": "moonshot", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000003, "source": "https://platform.moonshot.ai/docs/guide/kimi-k2-5-quickstart", @@ -41451,7 +46015,6 @@ "litellm_provider": "moonshot", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://platform.kimi.ai/docs/pricing/chat-k26", @@ -41468,7 +46031,6 @@ "litellm_provider": "moonshot", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://platform.kimi.ai/docs/pricing/chat-k27-code", @@ -41481,12 +46043,13 @@ "supports_vision": true }, "moonshot/kimi-k3": { + "cache_creation_input_token_cost": 0.000003, + "cache_creation_input_token_cost_above_1hr": 0.000006, "cache_read_input_token_cost": 3e-7, "input_cost_per_token": 0.000003, "litellm_provider": "moonshot", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.000015, "reasoning_effort_levels": [ @@ -41496,18 +46059,41 @@ ], "source": "https://platform.kimi.ai/docs/pricing/chat-k3", "supports_function_calling": true, + "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, "supports_tool_choice": true, "supports_video_input": true, "supports_vision": true }, + "moonshot/kimi-k3.1-pro": { + "cache_creation_input_token_cost": 0.000002, + "cache_creation_input_token_cost_above_1hr": 0.000004, + "cache_read_input_token_cost": 2e-7, + "input_cost_per_token": 0.000002, + "litellm_provider": "moonshot", + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, + "mode": "chat", + "output_cost_per_token": 0.00001, + "reasoning_effort_levels": [ + "low", + "high", + "max" + ], + "source": "https://platform.kimi.ai/docs/pricing/chat", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_vision": true + }, "moonshot/moonshot-v1-128k": { + "deprecation_date": "2026-08-31", "input_cost_per_token": 0.000002, "litellm_provider": "moonshot", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000005, "source": "https://platform.moonshot.ai/docs/pricing", @@ -41516,11 +46102,11 @@ "supports_tool_choice": true }, "moonshot/moonshot-v1-128k-vision-preview": { + "deprecation_date": "2026-08-31", "input_cost_per_token": 0.000002, "litellm_provider": "moonshot", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000005, "source": "https://platform.moonshot.ai/docs/pricing", @@ -41530,11 +46116,11 @@ "supports_vision": true }, "moonshot/moonshot-v1-32k": { + "deprecation_date": "2026-08-31", "input_cost_per_token": 0.000001, "litellm_provider": "moonshot", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000003, "source": "https://platform.moonshot.ai/docs/pricing", @@ -41543,11 +46129,11 @@ "supports_tool_choice": true }, "moonshot/moonshot-v1-32k-vision-preview": { + "deprecation_date": "2026-08-31", "input_cost_per_token": 0.000001, "litellm_provider": "moonshot", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000003, "source": "https://platform.moonshot.ai/docs/pricing", @@ -41557,11 +46143,11 @@ "supports_vision": true }, "moonshot/moonshot-v1-8k": { + "deprecation_date": "2026-08-31", "input_cost_per_token": 2e-7, "litellm_provider": "moonshot", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://platform.moonshot.ai/docs/pricing", @@ -41570,11 +46156,11 @@ "supports_tool_choice": true }, "moonshot/moonshot-v1-8k-vision-preview": { + "deprecation_date": "2026-08-31", "input_cost_per_token": 2e-7, "litellm_provider": "moonshot", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://platform.moonshot.ai/docs/pricing", @@ -41584,11 +46170,11 @@ "supports_vision": true }, "moonshot/moonshot-v1-auto": { + "deprecation_date": "2026-08-31", "input_cost_per_token": 0.000002, "litellm_provider": "moonshot", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000005, "source": "https://platform.moonshot.ai/docs/pricing", @@ -41604,7 +46190,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 256000, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.000003, "output_cost_per_token_batches": 0.0000015, @@ -41634,7 +46219,6 @@ "token_count_tokenizer": "kimi_k3", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000165, "output_cost_per_token_flex": 0.00000825, @@ -41650,12 +46234,137 @@ "supports_tool_choice": true, "supports_vision": true }, + "morph/morph-dsv41flash": { + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, + "input_cost_per_token": 1.2e-7, + "output_cost_per_token": 8e-7, + "cache_read_input_token_cost": 8e-9, + "litellm_provider": "morph", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.morphllm.com/pricing", + "supports_vision": true + }, + "morph/morph-dsv41flash-1017": { + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, + "input_cost_per_token": 1.2e-7, + "output_cost_per_token": 8e-7, + "cache_read_input_token_cost": 8e-9, + "litellm_provider": "morph", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.morphllm.com/pricing", + "supports_vision": true + }, + "morph/morph-dsv41flash-abliterated": { + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, + "input_cost_per_token": 3e-7, + "output_cost_per_token": 0.0000012, + "cache_read_input_token_cost": 3e-8, + "litellm_provider": "morph", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.morphllm.com/pricing", + "supports_vision": true + }, + "morph/morph-dsv4flash": { + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, + "input_cost_per_token": 1.41953125e-7, + "output_cost_per_token": 3.99625e-7, + "cache_read_input_token_cost": 3.59375e-8, + "litellm_provider": "morph", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.morphllm.com/pricing" + }, + "morph/morph-glm53-744b": { + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, + "input_cost_per_token": 0.00000119, + "output_cost_per_token": 0.000006, + "cache_read_input_token_cost": 1.955e-7, + "litellm_provider": "morph", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.morphllm.com/pricing" + }, + "morph/morph-glm53flash": { + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, + "input_cost_per_token": 2e-7, + "output_cost_per_token": 7e-7, + "cache_read_input_token_cost": 4e-8, + "litellm_provider": "morph", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.morphllm.com/pricing", + "supports_vision": true + }, + "morph/morph-kimik3": { + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, + "input_cost_per_token": 0.0000025, + "output_cost_per_token": 0.000014, + "cache_read_input_token_cost": 2.9e-7, + "litellm_provider": "morph", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.morphllm.com/pricing", + "supports_vision": true + }, + "morph/morph-kimik3-fast": { + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, + "input_cost_per_token": 0.000006, + "output_cost_per_token": 0.0000225, + "cache_read_input_token_cost": 6e-7, + "litellm_provider": "morph", + "mode": "chat", + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.morphllm.com/pricing", + "supports_vision": true + }, "morph/morph-v3-fast": { "input_cost_per_token": 8e-7, "litellm_provider": "morph", "max_input_tokens": 16000, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.0000012, "supports_function_calling": false, @@ -41669,7 +46378,6 @@ "litellm_provider": "morph", "max_input_tokens": 16000, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.0000019, "supports_function_calling": false, @@ -41679,7 +46387,6 @@ "supports_vision": false }, "nebius/MiniMaxAI/MiniMax-M2.5": { - "max_tokens": 196608, "max_input_tokens": 196608, "max_output_tokens": 196608, "input_cost_per_token": 3e-7, @@ -41691,7 +46398,6 @@ "source": "https://tokenfactory.nebius.com/models/catalog/text2text/MiniMaxAI%2FMiniMax-M2.5" }, "nebius/MiniMaxAI/MiniMax-M3": { - "max_tokens": 1048576, "max_input_tokens": 1048576, "max_output_tokens": 1048576, "input_cost_per_token": 3e-7, @@ -41701,10 +46407,22 @@ "supports_function_calling": true, "supports_reasoning": true, "supports_vision": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/MiniMaxAI%2FMiniMax-M3" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 6e-8 + }, + "nebius/MiniMaxAI/MiniMax-M3.1-Flash": { + "max_input_tokens": 1048576, + "input_cost_per_token": 1.5e-7, + "cache_read_input_token_cost": 1.5e-8, + "output_cost_per_token": 6e-7, + "litellm_provider": "nebius", + "mode": "chat", + "supports_vision": true, + "supports_reasoning": true, + "supports_function_calling": true, + "source": "https://tokenfactory.nebius.com/api/public/models_info" }, "nebius/NousResearch/Hermes-3-Llama-3.1-405B": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 0.000001, @@ -41715,7 +46433,6 @@ "source": "https://nebius.com/prices" }, "nebius/NousResearch/Hermes-4-405B": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 0.000001, @@ -41724,10 +46441,10 @@ "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/NousResearch%2FHermes-4-405B" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 2e-7 }, "nebius/NousResearch/Hermes-4-70B": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1.3e-7, @@ -41739,7 +46456,6 @@ "source": "https://tokenfactory.nebius.com/models/catalog/text2text/NousResearch%2FHermes-4-70B" }, "nebius/Qwen/QwQ-32B": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 1.5e-7, @@ -41751,7 +46467,6 @@ "source": "https://nebius.com/prices" }, "nebius/Qwen/Qwen2-VL-72B-Instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1.3e-7, @@ -41763,7 +46478,6 @@ "source": "https://nebius.com/prices" }, "nebius/Qwen/Qwen2-VL-7B-Instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 2e-8, @@ -41774,7 +46488,6 @@ "source": "https://nebius.com/prices" }, "nebius/Qwen/Qwen2.5-32B-Instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 6e-8, @@ -41785,7 +46498,6 @@ "source": "https://nebius.com/prices" }, "nebius/Qwen/Qwen2.5-72B-Instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 1.3e-7, @@ -41796,7 +46508,6 @@ "source": "https://nebius.com/prices" }, "nebius/Qwen/Qwen2.5-Coder-7B": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 1e-8, @@ -41807,7 +46518,6 @@ "source": "https://nebius.com/prices" }, "nebius/Qwen/Qwen2.5-VL-72B-Instruct": { - "max_tokens": 32000, "max_input_tokens": 32000, "max_output_tokens": 32000, "input_cost_per_token": 2.5e-7, @@ -41819,7 +46529,6 @@ "source": "https://tokenfactory.nebius.com/models/catalog/image2text/Qwen%2FQwen2.5-VL-72B-Instruct" }, "nebius/Qwen/Qwen3-14B": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 8e-8, @@ -41830,7 +46539,6 @@ "source": "https://nebius.com/prices" }, "nebius/Qwen/Qwen3-235B-A22B": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 2e-7, @@ -41841,7 +46549,6 @@ "source": "https://nebius.com/prices" }, "nebius/Qwen/Qwen3-235B-A22B-Instruct-2507": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 2e-7, @@ -41849,10 +46556,10 @@ "litellm_provider": "nebius", "mode": "chat", "supports_function_calling": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/Qwen%2FQwen3-235B-A22B-Instruct-2507" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 5e-8 }, "nebius/Qwen/Qwen3-30B-A3B": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 1e-7, @@ -41863,7 +46570,6 @@ "source": "https://nebius.com/prices" }, "nebius/Qwen/Qwen3-30B-A3B-Instruct-2507": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1e-7, @@ -41871,10 +46577,10 @@ "litellm_provider": "nebius", "mode": "chat", "supports_function_calling": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/Qwen%2FQwen3-30B-A3B-Instruct-2507" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 1e-7 }, "nebius/Qwen/Qwen3-32B": { - "max_tokens": 40960, "max_input_tokens": 40960, "max_output_tokens": 40960, "input_cost_per_token": 1e-7, @@ -41885,7 +46591,6 @@ "source": "https://tokenfactory.nebius.com/models/catalog/text2text/Qwen%2FQwen3-32B" }, "nebius/Qwen/Qwen3-4B": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 8e-8, @@ -41896,7 +46601,6 @@ "source": "https://nebius.com/prices" }, "nebius/Qwen/Qwen3-Next-80B-A3B-Thinking": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 1.5e-7, @@ -41908,7 +46612,6 @@ "source": "https://tokenfactory.nebius.com/models/catalog/text2text/Qwen%2FQwen3-Next-80B-A3B-Thinking" }, "nebius/Qwen/Qwen3.5-397B-A17B": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 6e-7, @@ -41917,7 +46620,8 @@ "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/Qwen%2FQwen3.5-397B-A17B" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 1.2e-7 }, "nebius/Qwen/Qwen3.8-27B": { "input_cost_per_token": 4.5e-7, @@ -41925,12 +46629,12 @@ "max_input_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000003, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/Qwen%2FQwen3.8-27B", + "source": "https://tokenfactory.nebius.com/api/public/models_info", "supports_function_calling": true, - "supports_reasoning": true + "supports_reasoning": true, + "cache_read_input_token_cost": 1e-7 }, "nebius/deepseek-ai/DeepSeek-R1": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 8e-7, @@ -41942,7 +46646,6 @@ "source": "https://nebius.com/prices" }, "nebius/deepseek-ai/DeepSeek-R1-0528": { - "max_tokens": 164000, "max_input_tokens": 164000, "max_output_tokens": 164000, "input_cost_per_token": 8e-7, @@ -41954,7 +46657,6 @@ "source": "https://nebius.com/prices" }, "nebius/deepseek-ai/DeepSeek-R1-Distill-Llama-70B": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 2.5e-7, @@ -41965,7 +46667,6 @@ "source": "https://nebius.com/prices" }, "nebius/deepseek-ai/DeepSeek-V3": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 5e-7, @@ -41976,7 +46677,6 @@ "source": "https://nebius.com/prices" }, "nebius/deepseek-ai/DeepSeek-V3-0324": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 5e-7, @@ -41987,7 +46687,6 @@ "source": "https://nebius.com/prices" }, "nebius/deepseek-ai/DeepSeek-V4-Flash": { - "max_tokens": 1048576, "max_input_tokens": 1048576, "max_output_tokens": 1048576, "input_cost_per_token": 1.4e-7, @@ -41999,8 +46698,7 @@ "source": "https://tokenfactory.nebius.com/models/catalog/text2text/deepseek-ai%2FDeepSeek-V4-Flash" }, "nebius/deepseek-ai/DeepSeek-V4-Flash-0731": { - "max_tokens": 1024000, - "max_input_tokens": 1024000, + "max_input_tokens": 1048576, "max_output_tokens": 1024000, "input_cost_per_token": 1.4e-7, "output_cost_per_token": 2.8e-7, @@ -42008,10 +46706,10 @@ "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/deepseek-ai%2FDeepSeek-V4-Flash-0731" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 1e-8 }, "nebius/deepseek-ai/DeepSeek-V4-Pro": { - "max_tokens": 1048576, "max_input_tokens": 1048576, "max_output_tokens": 1048576, "input_cost_per_token": 0.00000175, @@ -42020,33 +46718,46 @@ "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/deepseek-ai%2FDeepSeek-V4-Pro" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 1.4e-7 }, "nebius/deepseek-ai/DeepSeek-V4-Pro-0813": { "input_cost_per_token": 0.00000132, "litellm_provider": "nebius", - "max_input_tokens": 979000, + "max_input_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.00000396, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/deepseek-ai%2FDeepSeek-V4-Pro-0813", + "source": "https://tokenfactory.nebius.com/api/public/models_info", "supports_function_calling": true, - "supports_reasoning": true + "supports_reasoning": true, + "cache_read_input_token_cost": 4e-8 }, "nebius/deepseek-ai/DeepSeek-V4.1-Flash": { "input_cost_per_token": 3e-7, "litellm_provider": "nebius", - "max_input_tokens": 1048000, + "max_input_tokens": 1048576, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 0.0000012, - "source": "https://tokenfactory.nebius.com/endpoints?modals=endpoint-details&model-id=deepseek-ai/DeepSeek-V4.1-Flash", + "source": "https://tokenfactory.nebius.com/api/public/models_info", "supports_function_calling": true, "supports_reasoning": true, - "supports_vision": true + "supports_vision": true, + "cache_read_input_token_cost": 1e-8 + }, + "nebius/deepseek-ai/DeepSeek-V4.1-Flash-1017": { + "max_input_tokens": 1048576, + "input_cost_per_token": 3e-7, + "cache_read_input_token_cost": 6e-9, + "output_cost_per_token": 0.0000012, + "litellm_provider": "nebius", + "mode": "chat", + "supports_vision": true, + "supports_reasoning": true, + "supports_function_calling": true, + "source": "https://tokenfactory.nebius.com/api/public/models_info" }, "nebius/google/gemma-3-27b-it": { - "max_tokens": 110000, "max_input_tokens": 110000, "max_output_tokens": 110000, "input_cost_per_token": 1e-7, @@ -42055,10 +46766,10 @@ "mode": "chat", "supports_function_calling": true, "supports_vision": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/google%2Fgemma-3-27b-it" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 4e-8 }, "nebius/meta-llama/Llama-3.3-70B-Instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1.3e-7, @@ -42069,7 +46780,6 @@ "source": "https://nebius.com/prices" }, "nebius/meta-llama/Llama-Guard-3-8B": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 2e-8, @@ -42079,7 +46789,6 @@ "source": "https://nebius.com/prices" }, "nebius/meta-llama/Meta-Llama-3.1-405B-Instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 0.000001, @@ -42090,7 +46799,6 @@ "source": "https://nebius.com/prices" }, "nebius/meta-llama/Meta-Llama-3.1-70B-Instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 1.3e-7, @@ -42101,7 +46809,6 @@ "source": "https://nebius.com/prices" }, "nebius/meta-llama/Meta-Llama-3.1-8B-Instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 2e-8, @@ -42111,8 +46818,20 @@ "supports_function_calling": true, "source": "https://nebius.com/prices" }, + "nebius/meta-models/muse-spark-open": { + "max_input_tokens": 1048576, + "input_cost_per_token": 0.00000125, + "cache_read_input_token_cost": 1.5e-7, + "output_cost_per_token": 0.00000425, + "litellm_provider": "nebius", + "mode": "chat", + "supports_vision": true, + "supports_video_input": true, + "supports_reasoning": true, + "supports_function_calling": true, + "source": "https://tokenfactory.nebius.com/api/public/models_info" + }, "nebius/mistralai/Mistral-Nemo-Instruct-2407": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 4e-8, @@ -42123,7 +46842,6 @@ "source": "https://nebius.com/prices" }, "nebius/moonshotai/Kimi-K2.6": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 9.5e-7, @@ -42133,10 +46851,10 @@ "supports_function_calling": true, "supports_reasoning": true, "supports_vision": true, - "source": "https://tokenfactory.nebius.com/models/catalog/image2text/moonshotai%2FKimi-K2.6" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 1.6e-7 }, "nebius/moonshotai/Kimi-K2.7-Code": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 9.5e-7, @@ -42146,11 +46864,11 @@ "supports_function_calling": true, "supports_reasoning": true, "supports_vision": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/moonshotai%2FKimi-K2.7-Code" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 1.5e-7 }, "nebius/moonshotai/Kimi-K3": { - "max_tokens": 1024000, - "max_input_tokens": 1024000, + "max_input_tokens": 1048576, "max_output_tokens": 1024000, "input_cost_per_token": 0.000003, "output_cost_per_token": 0.000015, @@ -42159,10 +46877,10 @@ "supports_function_calling": true, "supports_reasoning": true, "supports_vision": true, - "source": "https://tokenfactory.nebius.com/models/catalog/image2text/moonshotai%2FKimi-K3" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 3e-7 }, "nebius/nvidia/Cosmos3-Super-Reasoner": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1e-7, @@ -42175,7 +46893,6 @@ "source": "https://tokenfactory.nebius.com/models/catalog/image2text/nvidia%2FCosmos3-Super-Reasoner" }, "nebius/nvidia/Llama-3.1-Nemotron-Ultra-253B-v1": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 6e-7, @@ -42186,7 +46903,6 @@ "source": "https://nebius.com/prices" }, "nebius/nvidia/Llama-3.3-Nemotron-Super-49B-v1": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1e-7, @@ -42197,7 +46913,6 @@ "source": "https://nebius.com/prices" }, "nebius/nvidia/Llama-3_1-Nemotron-Ultra-253B-v1": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 6e-7, @@ -42208,7 +46923,6 @@ "source": "https://tokenfactory.nebius.com/models/catalog/text2text/nvidia%2FLlama-3_1-Nemotron-Ultra-253B-v1" }, "nebius/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 6e-8, @@ -42217,10 +46931,10 @@ "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/nvidia%2FNVIDIA-Nemotron-3-Nano-30B-A3B" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 1.2e-8 }, "nebius/nvidia/Nemotron-3-Nano-Omni": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 6e-8, @@ -42233,7 +46947,6 @@ "source": "https://tokenfactory.nebius.com/models/catalog/text2text/nvidia%2FNemotron-3-Nano-Omni" }, "nebius/nvidia/Nemotron-3-Ultra-550b-a55b": { - "max_tokens": 1048576, "max_input_tokens": 1048576, "max_output_tokens": 1048576, "input_cost_per_token": 0.000001, @@ -42242,10 +46955,23 @@ "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/nvidia%2FNemotron-3-Ultra-550b-a55b" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 1.2e-7 + }, + "nebius/nvidia/Nemotron-3.5-Super-VL": { + "max_input_tokens": 1048576, + "input_cost_per_token": 3e-7, + "cache_read_input_token_cost": 6e-8, + "output_cost_per_token": 9e-7, + "litellm_provider": "nebius", + "mode": "chat", + "supports_vision": true, + "supports_video_input": true, + "supports_reasoning": true, + "supports_function_calling": true, + "source": "https://tokenfactory.nebius.com/api/public/models_info" }, "nebius/nvidia/Nemotron-3_5-Lightning": { - "max_tokens": 1048576, "max_input_tokens": 1048576, "max_output_tokens": 1048576, "input_cost_per_token": 6e-8, @@ -42254,10 +46980,10 @@ "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/nvidia%2FNemotron-3_5-Lightning" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 3e-8 }, "nebius/nvidia/nemotron-3-super-120b-a12b": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 3e-7, @@ -42266,10 +46992,10 @@ "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/nvidia%2Fnemotron-3-super-120b-a12b" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 6e-8 }, "nebius/openai/gpt-oss-120b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1.5e-7, @@ -42278,10 +47004,10 @@ "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/openai%2Fgpt-oss-120b" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 1e-7 }, "nebius/openbmb/MiniCPM-V-4_5": { - "max_tokens": 32000, "max_input_tokens": 32000, "max_output_tokens": 32000, "input_cost_per_token": 6.58e-7, @@ -42289,21 +47015,22 @@ "litellm_provider": "nebius", "mode": "chat", "supports_vision": true, - "source": "https://tokenfactory.nebius.com/models/catalog/image2text/openbmb%2FMiniCPM-V-4_5" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 1.3e-7 }, "nebius/reflection/beam": { "input_cost_per_token": 2.5e-7, "litellm_provider": "nebius", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.000001, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/reflection%2Fbeam", + "source": "https://tokenfactory.nebius.com/api/public/models_info", "supports_function_calling": true, - "supports_reasoning": true + "supports_reasoning": true, + "cache_read_input_token_cost": 5e-8 }, "nebius/zai-org/GLM-5.1": { - "max_tokens": 202752, "max_input_tokens": 202752, "max_output_tokens": 202752, "input_cost_per_token": 0.0000014, @@ -42312,10 +47039,10 @@ "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/zai-org%2FGLM-5.1" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 2.6e-7 }, "nebius/zai-org/GLM-5.2": { - "max_tokens": 1048576, "max_input_tokens": 1048576, "max_output_tokens": 1048576, "input_cost_per_token": 0.0000014, @@ -42324,22 +47051,23 @@ "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/zai-org%2FGLM-5.2" + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "cache_read_input_token_cost": 1.4e-7 }, "nebius/zai-org/GLM-5.3": { "input_cost_per_token": 0.0000014, "litellm_provider": "nebius", - "max_input_tokens": 1024000, - "max_tokens": 1024000, + "max_input_tokens": 1048576, + "max_output_tokens": 1024000, "mode": "chat", "output_cost_per_token": 0.0000044, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/zai-org%2FGLM-5.3", + "source": "https://tokenfactory.nebius.com/api/public/models_info", "supports_function_calling": true, - "supports_reasoning": true + "supports_reasoning": true, + "cache_read_input_token_cost": 2.6e-7 }, "nebius/zai-org/GLM-5.3-Flash": { - "max_tokens": 1024000, - "max_input_tokens": 1024000, + "max_input_tokens": 1048576, "max_output_tokens": 1024000, "input_cost_per_token": 1.5e-7, "output_cost_per_token": 5e-7, @@ -42347,8 +47075,9 @@ "mode": "chat", "supports_function_calling": true, "supports_reasoning": true, - "source": "https://tokenfactory.nebius.com/models/catalog/text2text/zai-org%2FGLM-5.3-Flash", - "supports_vision": true + "source": "https://tokenfactory.nebius.com/api/public/models_info", + "supports_vision": true, + "cache_read_input_token_cost": 3e-8 }, "novita/Sao10K/L3-8B-Stheno-v3.2": { "litellm_provider": "novita", @@ -42357,7 +47086,6 @@ "output_cost_per_token": 5e-8, "max_input_tokens": 8192, "max_output_tokens": 32000, - "max_tokens": 32000, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42370,7 +47098,6 @@ "output_cost_per_token": 7e-8, "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "supports_system_messages": true }, "novita/baidu/cobuddy": { @@ -42379,7 +47106,6 @@ "litellm_provider": "novita", "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.00000113, "source": "https://novita.ai/pricing", @@ -42396,7 +47122,6 @@ "output_cost_per_token": 2.8e-7, "max_input_tokens": 120000, "max_output_tokens": 8000, - "max_tokens": 8000, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42409,7 +47134,6 @@ "output_cost_per_token": 2.8e-7, "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "supports_system_messages": true, "supports_reasoning": true }, @@ -42420,7 +47144,6 @@ "output_cost_per_token": 0.0000011, "max_input_tokens": 123000, "max_output_tokens": 12000, - "max_tokens": 12000, "supports_tool_choice": true, "supports_system_messages": true, "supports_response_schema": true @@ -42432,7 +47155,6 @@ "output_cost_per_token": 5.6e-7, "max_input_tokens": 30000, "max_output_tokens": 8000, - "max_tokens": 8000, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42447,7 +47169,6 @@ "output_cost_per_token": 3.9e-7, "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42463,7 +47184,6 @@ "output_cost_per_token": 0.00000125, "max_input_tokens": 123000, "max_output_tokens": 16000, - "max_tokens": 16000, "supports_vision": true, "supports_system_messages": true, "supports_reasoning": true @@ -42475,7 +47195,6 @@ "output_cost_per_token": 3e-8, "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_tool_choice": true, "supports_vision": true, "supports_system_messages": true, @@ -42486,7 +47205,6 @@ "litellm_provider": "novita", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 3e-8, "source": "https://novita.ai/pricing", @@ -42499,7 +47217,6 @@ "output_cost_per_token": 0.0000025, "max_input_tokens": 160000, "max_output_tokens": 160000, - "max_tokens": 160000, "supports_system_messages": true }, "novita/deepseek/deepseek-r1": { @@ -42507,7 +47224,6 @@ "litellm_provider": "novita", "max_input_tokens": 64000, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://api.novita.ai/v3/openai/models", @@ -42523,7 +47239,6 @@ "output_cost_per_token": 0.0000025, "max_input_tokens": 163840, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42540,7 +47255,6 @@ "output_cost_per_token": 9e-8, "max_input_tokens": 128000, "max_output_tokens": 32000, - "max_tokens": 32000, "supports_system_messages": true, "supports_reasoning": true }, @@ -42551,7 +47265,6 @@ "output_cost_per_token": 8e-7, "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_tool_choice": true, "supports_system_messages": true, "supports_response_schema": true, @@ -42564,7 +47277,6 @@ "output_cost_per_token": 1.5e-7, "max_input_tokens": 32768, "max_output_tokens": 16384, - "max_tokens": 16384, "supports_tool_choice": true, "supports_system_messages": true, "supports_response_schema": true, @@ -42577,7 +47289,6 @@ "output_cost_per_token": 3e-7, "max_input_tokens": 64000, "max_output_tokens": 32000, - "max_tokens": 32000, "supports_tool_choice": true, "supports_system_messages": true, "supports_response_schema": true, @@ -42590,7 +47301,6 @@ "output_cost_per_token": 0.0000025, "max_input_tokens": 64000, "max_output_tokens": 16000, - "max_tokens": 16000, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42603,7 +47313,6 @@ "litellm_provider": "novita", "max_input_tokens": 64000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://api.novita.ai/v3/openai/models", @@ -42619,7 +47328,6 @@ "output_cost_per_token": 0.00000112, "max_input_tokens": 163840, "max_output_tokens": 65536, - "max_tokens": 65536, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42635,7 +47343,6 @@ "output_cost_per_token": 0.0000013, "max_input_tokens": 64000, "max_output_tokens": 16000, - "max_tokens": 16000, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42648,7 +47355,6 @@ "output_cost_per_token": 0.000001, "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42665,7 +47371,6 @@ "output_cost_per_token": 0.000001, "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42682,7 +47387,6 @@ "output_cost_per_token": 4e-7, "max_input_tokens": 163840, "max_output_tokens": 65536, - "max_tokens": 65536, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42699,7 +47403,6 @@ "output_cost_per_token": 4.1e-7, "max_input_tokens": 163840, "max_output_tokens": 65536, - "max_tokens": 65536, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42712,7 +47415,6 @@ "litellm_provider": "novita", "max_input_tokens": 64000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 8.900000000000001e-7, "source": "https://api.novita.ai/v3/openai/models", @@ -42726,7 +47428,6 @@ "litellm_provider": "novita", "max_input_tokens": 1048576, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 2.8e-7, "source": "https://novita.ai/pricing", @@ -42743,7 +47444,6 @@ "litellm_provider": "novita", "max_input_tokens": 1048576, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 0.00000132, "source": "https://novita.ai/pricing", @@ -42760,7 +47460,6 @@ "litellm_provider": "novita", "max_input_tokens": 1048576, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 0.00000132, "source": "https://api.novita.ai/v3/openai/models", @@ -42777,7 +47476,6 @@ "litellm_provider": "novita", "max_input_tokens": 1048576, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 0.0000032000000000000003, "source": "https://novita.ai/pricing", @@ -42789,12 +47487,11 @@ "supports_vision": false }, "novita/deepseek/deepseek-v4-pro-0813": { - "cache_read_input_token_cost": 1.3200000000000002e-7, + "cache_read_input_token_cost": 4.4e-8, "input_cost_per_token": 0.00000132, "litellm_provider": "novita", "max_input_tokens": 1048576, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 0.00000396, "source": "https://novita.ai/pricing", @@ -42810,7 +47507,6 @@ "litellm_provider": "novita", "max_input_tokens": 64000, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 8.900000000000001e-7, "source": "https://api.novita.ai/v3/openai/models", @@ -42825,7 +47521,6 @@ "output_cost_per_token": 1e-7, "max_input_tokens": 131072, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_tool_choice": true, "supports_vision": true, "supports_system_messages": true, @@ -42838,7 +47533,6 @@ "output_cost_per_token": 2e-7, "max_input_tokens": 98304, "max_output_tokens": 16384, - "max_tokens": 16384, "supports_vision": true, "supports_system_messages": true }, @@ -42847,7 +47541,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 4.0000000000000003e-7, "source": "https://novita.ai/pricing", @@ -42862,7 +47555,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 4.0000000000000003e-7, "source": "https://novita.ai/pricing", @@ -42879,7 +47571,6 @@ "output_cost_per_token": 9e-8, "max_input_tokens": 4096, "max_output_tokens": 3200, - "max_tokens": 3200, "supports_system_messages": true }, "novita/inclusionai/ling-3.0-flash": { @@ -42888,7 +47579,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 1.8e-7, "source": "https://novita.ai/pricing", @@ -42904,7 +47594,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 1.8e-7, "source": "https://novita.ai/pricing", @@ -42921,7 +47610,6 @@ "output_cost_per_token": 0.0000012, "max_input_tokens": 256000, "max_output_tokens": 128000, - "max_tokens": 128000, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42937,7 +47625,6 @@ "output_cost_per_token": 7.4e-7, "max_input_tokens": 8192, "max_output_tokens": 8000, - "max_tokens": 8000, "supports_tool_choice": true, "supports_system_messages": true, "supports_response_schema": true @@ -42949,7 +47636,6 @@ "output_cost_per_token": 4e-8, "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_system_messages": true, "supports_response_schema": true }, @@ -42960,7 +47646,6 @@ "output_cost_per_token": 5e-8, "max_input_tokens": 16384, "max_output_tokens": 16384, - "max_tokens": 16384, "supports_system_messages": true, "supports_response_schema": true }, @@ -42969,7 +47654,6 @@ "litellm_provider": "novita", "max_input_tokens": 131000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 2e-8, "source": "https://api.novita.ai/v3/openai/models", @@ -42983,7 +47667,6 @@ "output_cost_per_token": 5e-8, "max_input_tokens": 32768, "max_output_tokens": 32000, - "max_tokens": 32000, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -42996,7 +47679,6 @@ "output_cost_per_token": 4e-7, "max_input_tokens": 12288, "max_output_tokens": 12288, - "max_tokens": 12288, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43010,7 +47692,6 @@ "output_cost_per_token": 8.5e-7, "max_input_tokens": 1048576, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_vision": true, "supports_system_messages": true, "supports_response_schema": true @@ -43022,7 +47703,6 @@ "output_cost_per_token": 5.9e-7, "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "supports_vision": true, "supports_system_messages": true }, @@ -43033,19 +47713,17 @@ "output_cost_per_token": 6.2e-7, "max_input_tokens": 65535, "max_output_tokens": 8000, - "max_tokens": 8000, "supports_system_messages": true, "supports_response_schema": true }, "novita/mindai/macaron-v1-tall": { - "cache_read_input_token_cost": 8e-8, - "input_cost_per_token": 4.5000000000000003e-7, + "cache_read_input_token_cost": 4.4e-8, + "input_cost_per_token": 2.475e-7, "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", - "output_cost_per_token": 0.0000026, + "output_cost_per_token": 0.00000143, "source": "https://novita.ai/pricing", "supports_function_calling": true, "supports_prompt_caching": true, @@ -43054,14 +47732,13 @@ "supports_vision": false }, "novita/mindai/macaron-v1-venti": { - "cache_read_input_token_cost": 3e-7, - "input_cost_per_token": 0.0000015, + "cache_read_input_token_cost": 1.65e-7, + "input_cost_per_token": 8.25e-7, "litellm_provider": "novita", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", - "output_cost_per_token": 0.0000045, + "output_cost_per_token": 0.000002475, "source": "https://novita.ai/pricing", "supports_function_calling": true, "supports_prompt_caching": true, @@ -43076,7 +47753,6 @@ "output_cost_per_token": 0.0000012, "max_input_tokens": 204800, "max_output_tokens": 131072, - "max_tokens": 131072, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43093,7 +47769,6 @@ "output_cost_per_token": 0.0000012, "max_input_tokens": 204800, "max_output_tokens": 131072, - "max_tokens": 131072, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43108,7 +47783,6 @@ "litellm_provider": "novita", "max_input_tokens": 204800, "max_output_tokens": 131100, - "max_tokens": 131100, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://novita.ai/pricing", @@ -43125,7 +47799,6 @@ "litellm_provider": "novita", "max_input_tokens": 204800, "max_output_tokens": 131100, - "max_tokens": 131100, "mode": "chat", "output_cost_per_token": 0.0000024, "source": "https://novita.ai/pricing", @@ -43142,7 +47815,6 @@ "litellm_provider": "novita", "max_input_tokens": 204800, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://novita.ai/pricing", @@ -43159,7 +47831,6 @@ "litellm_provider": "novita", "max_input_tokens": 204800, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000024, "source": "https://api.novita.ai/v3/openai/models", @@ -43176,7 +47847,6 @@ "litellm_provider": "novita", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://novita.ai/pricing", @@ -43194,7 +47864,6 @@ "output_cost_per_token": 0.0000022, "max_input_tokens": 1000000, "max_output_tokens": 40000, - "max_tokens": 40000, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43209,7 +47878,6 @@ "output_cost_per_token": 1.7e-7, "max_input_tokens": 60288, "max_output_tokens": 16000, - "max_tokens": 16000, "supports_tool_choice": true, "supports_system_messages": true, "supports_response_schema": true @@ -43221,7 +47889,6 @@ "output_cost_per_token": 0.0000025, "max_input_tokens": 262144, "max_output_tokens": 100352, - "max_tokens": 100352, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43235,7 +47902,6 @@ "output_cost_per_token": 0.0000023, "max_input_tokens": 131072, "max_output_tokens": 100352, - "max_tokens": 100352, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43249,7 +47915,6 @@ "output_cost_per_token": 0.0000025, "max_input_tokens": 262144, "max_output_tokens": 100352, - "max_tokens": 100352, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43265,7 +47930,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000003, "source": "https://novita.ai/pricing", @@ -43282,7 +47946,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000034, "source": "https://novita.ai/pricing", @@ -43299,7 +47962,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://novita.ai/pricing", @@ -43316,7 +47978,6 @@ "litellm_provider": "novita", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.000015, "source": "https://novita.ai/pricing", @@ -43334,7 +47995,6 @@ "output_cost_per_token": 1.4e-7, "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_tool_choice": true, "supports_system_messages": true, "supports_response_schema": true @@ -43344,7 +48004,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 2.0000000000000002e-7, "source": "https://novita.ai/pricing", @@ -43361,7 +48020,6 @@ "output_cost_per_token": 2.5e-7, "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43377,7 +48035,6 @@ "output_cost_per_token": 1.5e-7, "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_tool_choice": true, "supports_vision": false, "supports_system_messages": true, @@ -43391,7 +48048,6 @@ "output_cost_per_token": 2e-8, "max_input_tokens": 16384, "max_output_tokens": 16384, - "max_tokens": 16384, "supports_vision": true, "supports_system_messages": true }, @@ -43402,7 +48058,6 @@ "output_cost_per_token": 4e-7, "max_input_tokens": 32000, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43416,7 +48071,6 @@ "output_cost_per_token": 7.5e-7, "max_input_tokens": 16384, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_system_messages": true }, "novita/qwen/qwen2.5-7b-instruct": { @@ -43426,7 +48080,6 @@ "output_cost_per_token": 7e-8, "max_input_tokens": 32000, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43440,7 +48093,6 @@ "output_cost_per_token": 8e-7, "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_vision": true, "supports_system_messages": true }, @@ -43451,7 +48103,6 @@ "output_cost_per_token": 8e-7, "max_input_tokens": 40960, "max_output_tokens": 20000, - "max_tokens": 20000, "supports_system_messages": true, "supports_reasoning": true, "supports_response_schema": true @@ -43463,7 +48114,6 @@ "output_cost_per_token": 5.8e-7, "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43477,7 +48127,6 @@ "output_cost_per_token": 0.000003, "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43491,7 +48140,6 @@ "output_cost_per_token": 4.5e-7, "max_input_tokens": 40960, "max_output_tokens": 20000, - "max_tokens": 20000, "supports_system_messages": true, "supports_reasoning": true, "supports_function_calling": true, @@ -43504,7 +48152,6 @@ "output_cost_per_token": 4.5e-7, "max_input_tokens": 40960, "max_output_tokens": 20000, - "max_tokens": 20000, "supports_system_messages": true, "supports_reasoning": true }, @@ -43515,7 +48162,6 @@ "output_cost_per_token": 3e-8, "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_system_messages": true, "supports_reasoning": true, "supports_function_calling": true, @@ -43528,7 +48174,6 @@ "output_cost_per_token": 1.38e-7, "max_input_tokens": 128000, "max_output_tokens": 20000, - "max_tokens": 20000, "supports_system_messages": true, "supports_reasoning": true }, @@ -43539,7 +48184,6 @@ "output_cost_per_token": 2.7e-7, "max_input_tokens": 160000, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43553,7 +48197,6 @@ "output_cost_per_token": 0.00000155, "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43565,7 +48208,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://novita.ai/pricing", @@ -43581,7 +48223,6 @@ "output_cost_per_token": 0.00000845, "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43595,7 +48236,6 @@ "output_cost_per_token": 0.0000015, "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43610,7 +48250,6 @@ "output_cost_per_token": 0.0000015, "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43625,7 +48264,6 @@ "output_cost_per_token": 9.7e-7, "max_input_tokens": 65536, "max_output_tokens": 16384, - "max_tokens": 16384, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43642,7 +48280,6 @@ "output_cost_per_token": 9.7e-7, "max_input_tokens": 65536, "max_output_tokens": 16384, - "max_tokens": 16384, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43659,7 +48296,6 @@ "output_cost_per_token": 0.0000015, "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43674,7 +48310,6 @@ "output_cost_per_token": 0.00000395, "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_vision": true, "supports_system_messages": true, "supports_reasoning": true, @@ -43688,7 +48323,6 @@ "output_cost_per_token": 7e-7, "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43703,7 +48337,6 @@ "output_cost_per_token": 0.000001, "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43718,7 +48351,6 @@ "output_cost_per_token": 5e-7, "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43731,7 +48363,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000032000000000000003, "source": "https://novita.ai/pricing", @@ -43746,7 +48377,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000024, "source": "https://novita.ai/pricing", @@ -43761,7 +48391,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://novita.ai/pricing", @@ -43776,7 +48405,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000036000000000000003, "source": "https://novita.ai/pricing", @@ -43791,7 +48419,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000036000000000000003, "source": "https://novita.ai/pricing", @@ -43806,7 +48433,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000014850000000000002, "source": "https://novita.ai/pricing", @@ -43822,7 +48448,6 @@ "litellm_provider": "novita", "max_input_tokens": 1000000, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.00000375, "source": "https://novita.ai/pricing", @@ -43839,7 +48464,6 @@ "litellm_provider": "novita", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://novita.ai/pricing", @@ -43857,7 +48481,6 @@ "output_cost_per_token": 0.00000148, "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43870,7 +48493,6 @@ "output_cost_per_token": 5e-8, "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_tool_choice": true, "supports_system_messages": true, "supports_response_schema": true @@ -43882,7 +48504,6 @@ "output_cost_per_token": 0.00000148, "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43895,7 +48516,6 @@ "output_cost_per_token": 6e-7, "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "supports_tool_choice": true, "supports_vision": true, "supports_system_messages": true, @@ -43907,7 +48527,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.00000115, "source": "https://novita.ai/pricing", @@ -43924,7 +48543,6 @@ "litellm_provider": "novita", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 5.8e-7, "source": "https://novita.ai/pricing", @@ -43940,7 +48558,6 @@ "litellm_provider": "novita", "max_input_tokens": 32000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.00000166, "source": "https://api.novita.ai/v3/openai/models", @@ -43956,7 +48573,6 @@ "output_cost_per_token": 3.3e-7, "max_input_tokens": 262144, "max_output_tokens": 32000, - "max_tokens": 32000, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -43972,7 +48588,6 @@ "litellm_provider": "novita", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 3.3600000000000004e-7, "source": "https://novita.ai/pricing", @@ -43989,7 +48604,6 @@ "litellm_provider": "novita", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000001044, "source": "https://novita.ai/pricing", @@ -44007,7 +48621,6 @@ "output_cost_per_token": 1.38e-7, "max_input_tokens": 65536, "max_output_tokens": 65536, - "max_tokens": 65536, "supports_vision": true, "supports_system_messages": true }, @@ -44018,7 +48631,6 @@ "output_cost_per_token": 0.0000022, "max_input_tokens": 131072, "max_output_tokens": 98304, - "max_tokens": 98304, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -44034,7 +48646,6 @@ "output_cost_per_token": 8.5e-7, "max_input_tokens": 131072, "max_output_tokens": 98304, - "max_tokens": 98304, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -44050,7 +48661,6 @@ "output_cost_per_token": 0.0000018, "max_input_tokens": 65536, "max_output_tokens": 16384, - "max_tokens": 16384, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -44068,7 +48678,6 @@ "output_cost_per_token": 0.0000022, "max_input_tokens": 204800, "max_output_tokens": 131072, - "max_tokens": 131072, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -44085,7 +48694,6 @@ "output_cost_per_token": 9e-7, "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -44103,7 +48711,6 @@ "output_cost_per_token": 0.0000022, "max_input_tokens": 204800, "max_output_tokens": 131072, - "max_tokens": 131072, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_tool_choice": true, @@ -44119,7 +48726,6 @@ "litellm_provider": "novita", "max_input_tokens": 200000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 4.0000000000000003e-7, "source": "https://novita.ai/pricing", @@ -44136,7 +48742,6 @@ "litellm_provider": "novita", "max_input_tokens": 204800, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000022, "source": "https://api.novita.ai/v3/openai/models", @@ -44153,7 +48758,6 @@ "litellm_provider": "novita", "max_input_tokens": 202800, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000032000000000000003, "source": "https://novita.ai/pricing", @@ -44170,7 +48774,6 @@ "litellm_provider": "novita", "max_input_tokens": 202800, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://api.novita.ai/v3/openai/models", @@ -44187,7 +48790,6 @@ "litellm_provider": "novita", "max_input_tokens": 204800, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://novita.ai/pricing", @@ -44204,7 +48806,6 @@ "litellm_provider": "novita", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://novita.ai/pricing", @@ -44221,7 +48822,6 @@ "litellm_provider": "novita", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://api.novita.ai/v3/openai/models", @@ -44238,7 +48838,6 @@ "litellm_provider": "novita", "max_input_tokens": 204800, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://api.novita.ai/v3/openai/models", @@ -44376,6 +48975,7 @@ }, "nvidia.nemotron-nano-12b-v2": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 2e-7, "input_cost_per_token_batches": 1e-7, "input_cost_per_token_flex": 1e-7, @@ -44383,7 +48983,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_batches": 3e-7, @@ -44404,7 +49003,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 256000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 2.4e-7, "output_cost_per_token_batches": 1.2e-7, @@ -44421,6 +49019,7 @@ }, "nvidia.nemotron-nano-9b-v2": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 6e-8, "input_cost_per_token_batches": 3e-8, "input_cost_per_token_flex": 3e-8, @@ -44428,7 +49027,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 2.3e-7, "output_cost_per_token_batches": 1.2e-7, @@ -44449,7 +49047,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 256000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 6.5e-7, "output_cost_per_token_batches": 3.25e-7, @@ -44467,12 +49064,12 @@ "o1": { "cache_read_input_token_cost": 0.0000075, "deprecation_date": "2026-10-23", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.000015, "input_cost_per_token_batches": 0.0000075, "litellm_provider": "openai", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.00006, "output_cost_per_token_batches": 0.00003, @@ -44490,12 +49087,13 @@ "o1-2024-12-17": { "cache_read_input_token_cost": 0.0000075, "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.000015, "input_cost_per_token_batches": 0.0000075, "litellm_provider": "openai", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.00006, "output_cost_per_token_batches": 0.00003, @@ -44514,6 +49112,8 @@ "cache_read_input_token_cost": 5e-7, "cache_read_input_token_cost_flex": 2.5e-7, "cache_read_input_token_cost_priority": 8.75e-7, + "deprecation_date": "2026-12-11", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.000002, "input_cost_per_token_batches": 0.000001, "input_cost_per_token_flex": 0.000001, @@ -44521,12 +49121,18 @@ "litellm_provider": "openai", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.000008, "output_cost_per_token_batches": 0.000004, "output_cost_per_token_flex": 0.000004, "output_cost_per_token_priority": 0.000014, + "reasoning_contexts": [ + "auto", + "current_turn" + ], + "reasoning_modes": [ + "standard" + ], "search_context_cost_per_query": { "search_context_size_high": 0.01, "search_context_size_low": 0.01, @@ -44561,6 +49167,8 @@ "cache_read_input_token_cost_flex": 2.5e-7, "cache_read_input_token_cost_priority": 8.75e-7, "deprecation_date": "2026-12-11", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.000002, "input_cost_per_token_batches": 0.000001, "input_cost_per_token_flex": 0.000001, @@ -44568,12 +49176,18 @@ "litellm_provider": "openai", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.000008, "output_cost_per_token_batches": 0.000004, "output_cost_per_token_flex": 0.000004, "output_cost_per_token_priority": 0.000014, + "reasoning_contexts": [ + "auto", + "current_turn" + ], + "reasoning_modes": [ + "standard" + ], "search_context_cost_per_query": { "search_context_size_high": 0.01, "search_context_size_low": 0.01, @@ -44606,12 +49220,13 @@ "o3-mini": { "cache_read_input_token_cost": 5.5e-7, "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.0000011, "input_cost_per_token_batches": 5.5e-7, "litellm_provider": "openai", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.0000044, "output_cost_per_token_batches": 0.0000022, @@ -44627,12 +49242,13 @@ "o3-mini-2025-01-31": { "cache_read_input_token_cost": 5.5e-7, "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-sol", "input_cost_per_token": 0.0000011, "input_cost_per_token_batches": 5.5e-7, "litellm_provider": "openai", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.0000044, "output_cost_per_token_batches": 0.0000022, @@ -44650,6 +49266,8 @@ "cache_read_input_token_cost_flex": 1.38e-7, "cache_read_input_token_cost_priority": 5e-7, "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "input_cost_per_token": 0.0000011, "input_cost_per_token_batches": 5.5e-7, "input_cost_per_token_flex": 5.5e-7, @@ -44657,7 +49275,6 @@ "litellm_provider": "openai", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.0000044, "output_cost_per_token_batches": 0.0000022, @@ -44684,6 +49301,8 @@ "cache_read_input_token_cost_flex": 1.38e-7, "cache_read_input_token_cost_priority": 5e-7, "deprecation_date": "2026-10-23", + "deprecation_source": "https://developers.openai.com/api/docs/deprecations", + "successor_model": "gpt-5.6-terra", "input_cost_per_token": 0.0000011, "input_cost_per_token_batches": 5.5e-7, "input_cost_per_token_flex": 5.5e-7, @@ -44691,7 +49310,6 @@ "litellm_provider": "openai", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.0000044, "output_cost_per_token_batches": 0.0000022, @@ -44718,7 +49336,6 @@ "litellm_provider": "oci", "max_input_tokens": 256000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 0.00000156, "source": "https://www.oracle.com/artificial-intelligence/enterprise-ai/cost-estimator/", @@ -44731,7 +49348,6 @@ "litellm_provider": "oci", "max_input_tokens": 256000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000156, "source": "https://www.oracle.com/artificial-intelligence/enterprise-ai/cost-estimator/", @@ -44744,7 +49360,6 @@ "litellm_provider": "oci", "max_input_tokens": 256000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 0.00000156, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44756,7 +49371,6 @@ "litellm_provider": "oci", "max_input_tokens": 256000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 9e-8, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44768,7 +49382,6 @@ "litellm_provider": "oci", "max_input_tokens": 256000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000156, "source": "https://www.oracle.com/artificial-intelligence/enterprise-ai/cost-estimator/", @@ -44782,7 +49395,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 0.00000156, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44795,7 +49407,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 0.00000156, "source": "https://www.oracle.com/artificial-intelligence/enterprise-ai/cost-estimator/", @@ -44808,7 +49419,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 0.00000156, "source": "https://www.oracle.com/artificial-intelligence/enterprise-ai/cost-estimator/", @@ -44821,7 +49431,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44833,7 +49442,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 0.00000156, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44845,7 +49453,6 @@ "litellm_provider": "oci", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 6e-7, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44865,7 +49472,6 @@ "litellm_provider": "oci", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 3e-7, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44885,7 +49491,6 @@ "litellm_provider": "oci", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.00001, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44904,7 +49509,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 0.00001068, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44917,7 +49521,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44930,7 +49533,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44943,7 +49545,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44956,7 +49557,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44970,7 +49570,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44983,7 +49582,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -44995,7 +49593,6 @@ "litellm_provider": "oci", "max_input_tokens": 1048576, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45009,7 +49606,6 @@ "litellm_provider": "oci", "max_input_tokens": 10485760, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45022,7 +49618,6 @@ "litellm_provider": "oci", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00001, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45037,7 +49632,6 @@ "litellm_provider": "oci", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45052,7 +49646,6 @@ "litellm_provider": "oci", "max_input_tokens": 272000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 4e-7, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45067,7 +49660,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 6e-7, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45080,7 +49672,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 3e-7, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45093,7 +49684,6 @@ "litellm_provider": "oci", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000015, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45106,7 +49696,6 @@ "litellm_provider": "oci", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000025, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45119,7 +49708,6 @@ "litellm_provider": "oci", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45132,7 +49720,6 @@ "litellm_provider": "oci", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45145,7 +49732,6 @@ "litellm_provider": "oci", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000015, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45158,7 +49744,6 @@ "litellm_provider": "oci", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000025, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45170,7 +49755,6 @@ "litellm_provider": "oci", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000025, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45182,7 +49766,6 @@ "litellm_provider": "oci", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000015, "reasoning_effort_levels": [], @@ -45198,7 +49781,6 @@ "litellm_provider": "oci", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_above_200k_tokens": 0.000005, @@ -45214,7 +49796,6 @@ "litellm_provider": "oci", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_above_200k_tokens": 0.000005, @@ -45228,7 +49809,6 @@ "litellm_provider": "oci", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000015, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45243,7 +49823,6 @@ "litellm_provider": "oci", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_above_200k_tokens": 0.000005, @@ -45259,7 +49838,6 @@ "litellm_provider": "oci", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_above_200k_tokens": 0.000005, @@ -45273,7 +49851,6 @@ "litellm_provider": "oci", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000025, "source": "https://www.oracle.com/artificial-intelligence/generative-ai/generative-ai-service/pricing", @@ -45285,7 +49862,6 @@ "litellm_provider": "ollama", "max_input_tokens": 32768, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": false @@ -45295,7 +49871,6 @@ "litellm_provider": "ollama", "max_input_tokens": 32768, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true @@ -45305,7 +49880,6 @@ "litellm_provider": "ollama", "max_input_tokens": 32768, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true @@ -45315,7 +49889,6 @@ "litellm_provider": "ollama", "max_input_tokens": 163840, "max_output_tokens": 163840, - "max_tokens": 163840, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true @@ -45325,7 +49898,6 @@ "litellm_provider": "ollama", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true @@ -45335,7 +49907,6 @@ "litellm_provider": "ollama", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true @@ -45345,7 +49916,6 @@ "litellm_provider": "ollama", "max_input_tokens": 32768, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true @@ -45355,7 +49925,6 @@ "litellm_provider": "ollama", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0 }, @@ -45364,7 +49933,6 @@ "litellm_provider": "ollama", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0 }, @@ -45373,7 +49941,6 @@ "litellm_provider": "ollama", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0 }, @@ -45382,7 +49949,6 @@ "litellm_provider": "ollama", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0 }, @@ -45391,7 +49957,6 @@ "litellm_provider": "ollama", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0 }, @@ -45400,7 +49965,6 @@ "litellm_provider": "ollama", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true @@ -45410,7 +49974,6 @@ "litellm_provider": "ollama", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0 }, @@ -45419,7 +49982,6 @@ "litellm_provider": "ollama", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0 }, @@ -45428,7 +49990,6 @@ "litellm_provider": "ollama", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true @@ -45438,7 +49999,6 @@ "litellm_provider": "ollama", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true @@ -45448,7 +50008,6 @@ "litellm_provider": "ollama", "max_input_tokens": 65536, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true @@ -45458,7 +50017,6 @@ "litellm_provider": "ollama", "max_input_tokens": 65536, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true @@ -45468,7 +50026,6 @@ "litellm_provider": "ollama", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true @@ -45478,7 +50035,6 @@ "litellm_provider": "ollama", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0, "supports_function_calling": true @@ -45494,9 +50050,8 @@ "output_cost_per_token_above_272k_tokens": 7.5e-7, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supported_modalities": [ "text", @@ -45528,9 +50083,8 @@ "output_cost_per_token_above_272k_tokens": 0.000015, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supported_modalities": [ "text", @@ -45552,6 +50106,7 @@ "source": "https://aws.amazon.com/bedrock/pricing/" }, "openai.gpt-oss-120b-1:0": { + "supports_vision": false, "supported_endpoints": [ "/v1/chat/completions" ], @@ -45564,7 +50119,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_batches": 3e-7, @@ -45577,6 +50131,7 @@ "supports_tool_choice": true }, "openai.gpt-oss-20b-1:0": { + "supports_vision": false, "supported_endpoints": [ "/v1/chat/completions" ], @@ -45589,7 +50144,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 3e-7, "output_cost_per_token_batches": 1.5e-7, @@ -45609,7 +50163,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_batches": 3e-7, @@ -45631,7 +50184,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 2e-7, "output_cost_per_token_batches": 1e-7, @@ -45837,270 +50389,719 @@ "supports_tool_choice": true, "supports_vision": false }, - "opencode-go/kimi-k2.5": { - "litellm_provider": "opencode-go", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, + "opencode-go/kimi-k2.5": { + "litellm_provider": "opencode-go", + "max_input_tokens": 262144, + "max_output_tokens": 262144, + "max_tokens": 262144, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_video_input": true, + "supports_vision": true + }, + "opencode-go/kimi-k2.6": { + "litellm_provider": "opencode-go", + "max_input_tokens": 262144, + "max_output_tokens": 262144, + "max_tokens": 262144, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_video_input": true, + "supports_vision": true + }, + "opencode-go/kimi-k2.7-code": { + "litellm_provider": "opencode-go", + "max_input_tokens": 262144, + "max_output_tokens": 262144, + "max_tokens": 262144, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_reasoning": true + }, + "opencode-go/kimi-k3": { + "litellm_provider": "opencode-go", + "max_input_tokens": 262144, + "max_output_tokens": 262144, + "max_tokens": 262144, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_video_input": true, + "supports_vision": true + }, + "opencode-go/mimo-v2-omni": { + "litellm_provider": "opencode-go", + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "max_tokens": 131072, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_audio_input": true, + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_video_input": true, + "supports_vision": true + }, + "opencode-go/mimo-v2-pro": { + "litellm_provider": "opencode-go", + "max_input_tokens": 1048576, + "max_output_tokens": 16384, + "max_tokens": 16384, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "opencode-go/mimo-v2.5": { + "litellm_provider": "opencode-go", + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "max_tokens": 131072, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_audio_input": true, + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_video_input": true, + "supports_vision": true + }, + "opencode-go/mimo-v2.5-pro": { + "litellm_provider": "opencode-go", + "max_input_tokens": 1048576, + "max_output_tokens": 16384, + "max_tokens": 16384, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "opencode-go/minimax-m2.5": { + "litellm_provider": "opencode-go", + "max_input_tokens": 196608, + "max_output_tokens": 65536, + "max_tokens": 65536, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_computer_use": false, + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "opencode-go/minimax-m2.7": { + "litellm_provider": "opencode-go", + "max_input_tokens": 1000192, + "max_output_tokens": 1000192, + "max_tokens": 1000192, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_assistant_prefill": true, + "supports_function_calling": true, + "supports_reasoning": false + }, + "opencode-go/minimax-m3": { + "litellm_provider": "opencode-go", + "max_input_tokens": 512000, + "max_output_tokens": 512000, + "max_tokens": 512000, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "opencode-go/qwen3.5-plus": { + "litellm_provider": "opencode-go", + "max_input_tokens": 991808, + "max_output_tokens": 65536, + "max_tokens": 65536, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "opencode-go/qwen3.6-plus": { + "litellm_provider": "opencode-go", + "max_input_tokens": 1000000, + "max_output_tokens": 65536, + "max_tokens": 65536, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "opencode-go/qwen3.7-max": { + "litellm_provider": "opencode-go", + "max_input_tokens": 991808, + "max_output_tokens": 65536, + "max_tokens": 65536, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "opencode-go/qwen3.7-plus": { + "litellm_provider": "opencode-go", + "max_input_tokens": 991808, + "max_output_tokens": 65536, + "max_tokens": 65536, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "opencode-go/qwen3.8-max": { + "litellm_provider": "opencode-go", + "max_input_tokens": 991808, + "max_output_tokens": 65536, + "max_tokens": 65536, + "mode": "chat", + "source": "https://opencode.ai", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "opencode_go/beam-free": { + "litellm_provider": "opencode_go", + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "input_cost_per_token": 0, + "output_cost_per_token": 0, + "cache_read_input_token_cost": 0, + "max_output_tokens": 131072, + "max_input_tokens": 1048576, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": false, + "source": "https://opencode.ai/v2/docs/console/go/" + }, + "opencode_go/claude-haiku-5-5": { + "litellm_provider": "opencode_go", + "mode": "chat", + "supported_endpoints": [ + "/v1/messages" + ], + "input_cost_per_token": 1.0000000000000001e-7, + "output_cost_per_token": 5e-7, + "cache_read_input_token_cost": 1e-8, + "cache_creation_input_token_cost": 1.25e-7, + "max_output_tokens": 128000, + "max_input_tokens": 1000000, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": true, + "tiered_pricing": [ + { + "range": [ + 0, + 100000 + ], + "input_cost_per_token": 1.0000000000000001e-7, + "output_cost_per_token": 5e-7, + "cache_read_input_token_cost": 1e-8, + "cache_creation_input_token_cost": 1.25e-7 + }, + { + "range": [ + 100000, + 1000000 + ], + "input_cost_per_token": 5e-7, + "output_cost_per_token": 0.0000025, + "cache_read_input_token_cost": 5.0000000000000004e-8, + "cache_creation_input_token_cost": 6.25e-7 + } + ], + "source": "https://opencode.ai/v2/docs/console/go/" + }, + "opencode_go/deepseek-v4-pro": { + "litellm_provider": "opencode_go", + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "input_cost_per_token": 0.00000132, + "output_cost_per_token": 0.00000396, + "cache_read_input_token_cost": 4.4e-8, + "max_output_tokens": 384000, + "max_input_tokens": 1000000, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": false, + "source": "https://opencode.ai/v2/docs/console/go/" + }, + "opencode_go/deepseek-v4.1-flash": { + "litellm_provider": "opencode_go", + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "input_cost_per_token": 3e-7, + "output_cost_per_token": 0.0000012, + "cache_read_input_token_cost": 6e-9, + "max_output_tokens": 384000, + "max_input_tokens": 1000000, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" + }, + "opencode_go/gemini-4-argon": { + "litellm_provider": "opencode_go", + "mode": "chat", + "supported_endpoints": [ + "/v1beta/models" + ], + "input_cost_per_token": 0.000002, + "output_cost_per_token": 0.00001, + "cache_read_input_token_cost": 1e-7, + "max_output_tokens": 65536, + "max_input_tokens": 1048576, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" + }, + "opencode_go/glm-5.2": { + "litellm_provider": "opencode_go", + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "input_cost_per_token": 0.0000014, + "output_cost_per_token": 0.0000044, + "cache_read_input_token_cost": 2.6e-7, + "max_output_tokens": 131072, + "max_input_tokens": 1000000, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": false, + "source": "https://opencode.ai/v2/docs/console/go/" + }, + "opencode_go/glm-5.3": { + "litellm_provider": "opencode_go", + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "input_cost_per_token": 0.0000014, + "output_cost_per_token": 0.0000044, + "cache_read_input_token_cost": 2.6e-7, + "max_output_tokens": 131072, + "max_input_tokens": 1000000, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": false, + "source": "https://opencode.ai/v2/docs/console/go/" + }, + "opencode_go/glm-5.3-flash": { + "litellm_provider": "opencode_go", + "mode": "chat", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "input_cost_per_token": 1.5e-7, + "output_cost_per_token": 5e-7, + "cache_read_input_token_cost": 3e-8, + "max_output_tokens": 131072, + "max_input_tokens": 1000000, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" + }, + "opencode_go/hy3": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ "/v1/chat/completions" ], + "input_cost_per_token": 1.4e-7, + "output_cost_per_token": 5.8e-7, + "cache_read_input_token_cost": 3.5e-8, + "max_output_tokens": 128000, + "max_input_tokens": 192000, "supports_function_calling": true, "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true + "supports_vision": false, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/kimi-k2.6": { - "litellm_provider": "opencode-go", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, + "opencode_go/hy4-preview": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ "/v1/chat/completions" ], + "input_cost_per_token": 8.34e-7, + "output_cost_per_token": 0.000002501, + "cache_read_input_token_cost": 4.2000000000000006e-8, + "max_output_tokens": 64000, + "max_input_tokens": 1024000, "supports_function_calling": true, "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true + "supports_vision": false, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/kimi-k2.7-code": { - "litellm_provider": "opencode-go", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, + "opencode_go/kimi-k2.7-code": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ "/v1/chat/completions" ], + "input_cost_per_token": 9.499999999999999e-7, + "output_cost_per_token": 0.000004, + "cache_read_input_token_cost": 1.9e-7, + "max_output_tokens": 262144, + "max_input_tokens": 262144, "supports_function_calling": true, - "supports_reasoning": true + "supports_reasoning": true, + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/kimi-k3": { - "litellm_provider": "opencode-go", - "max_input_tokens": 262144, - "max_output_tokens": 262144, - "max_tokens": 262144, + "opencode_go/kimi-k3": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ "/v1/chat/completions" ], + "input_cost_per_token": 0.000003, + "output_cost_per_token": 0.000015, + "cache_read_input_token_cost": 3e-7, + "cache_creation_input_token_cost": 0.000003, + "max_output_tokens": 131072, + "max_input_tokens": 1048576, "supports_function_calling": true, "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/mimo-v2-omni": { - "litellm_provider": "opencode-go", - "max_input_tokens": 1048576, - "max_output_tokens": 131072, - "max_tokens": 131072, + "opencode_go/kimi-k3.1-pro": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ "/v1/chat/completions" ], - "supports_audio_input": true, + "input_cost_per_token": 0.000002, + "output_cost_per_token": 0.00001, + "cache_read_input_token_cost": 2.0000000000000002e-7, + "cache_creation_input_token_cost": 0.000002, + "max_output_tokens": 131072, + "max_input_tokens": 1048576, "supports_function_calling": true, - "supports_prompt_caching": true, "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/mimo-v2-pro": { - "litellm_provider": "opencode-go", - "max_input_tokens": 1048576, - "max_output_tokens": 16384, - "max_tokens": 16384, + "opencode_go/longcat-2.0": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ "/v1/chat/completions" ], + "input_cost_per_token": 3e-7, + "output_cost_per_token": 0.0000012, + "cache_read_input_token_cost": 6e-9, + "max_output_tokens": 131072, + "max_input_tokens": 1000000, "supports_function_calling": true, - "supports_prompt_caching": true, "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false + "supports_vision": false, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/mimo-v2.5": { - "litellm_provider": "opencode-go", - "max_input_tokens": 1048576, - "max_output_tokens": 131072, - "max_tokens": 131072, + "opencode_go/longcat-2.5-preview-free": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ "/v1/chat/completions" ], - "supports_audio_input": true, + "input_cost_per_token": 0, + "output_cost_per_token": 0, + "cache_read_input_token_cost": 0, + "max_output_tokens": 131072, + "max_input_tokens": 1000000, "supports_function_calling": true, - "supports_prompt_caching": true, "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_video_input": true, - "supports_vision": true + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/mimo-v2.5-pro": { - "litellm_provider": "opencode-go", - "max_input_tokens": 1048576, - "max_output_tokens": 16384, - "max_tokens": 16384, + "opencode_go/mimo-v2.5": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ "/v1/chat/completions" ], + "input_cost_per_token": 1.4e-7, + "output_cost_per_token": 2.8e-7, + "cache_read_input_token_cost": 2.8e-9, + "max_output_tokens": 128000, + "max_input_tokens": 1000000, "supports_function_calling": true, - "supports_prompt_caching": true, "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/minimax-m2.5": { - "litellm_provider": "opencode-go", - "max_input_tokens": 196608, - "max_output_tokens": 65536, - "max_tokens": 65536, + "opencode_go/mimo-v2.5-pro": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ "/v1/chat/completions" ], - "supports_computer_use": false, + "input_cost_per_token": 4.35e-7, + "output_cost_per_token": 8.7e-7, + "cache_read_input_token_cost": 3.625e-9, + "max_output_tokens": 128000, + "max_input_tokens": 1048576, "supports_function_calling": true, - "supports_prompt_caching": true, "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": false + "supports_vision": false, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/minimax-m2.7": { - "litellm_provider": "opencode-go", - "max_input_tokens": 1000192, - "max_output_tokens": 1000192, - "max_tokens": 1000192, + "opencode_go/mimo-v2.6-flash": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ "/v1/chat/completions" ], - "supports_assistant_prefill": true, + "input_cost_per_token": 1.4e-7, + "output_cost_per_token": 2.8e-7, + "cache_read_input_token_cost": 2.8e-9, + "max_output_tokens": 131072, + "max_input_tokens": 1048576, "supports_function_calling": true, - "supports_reasoning": false + "supports_reasoning": true, + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/minimax-m3": { - "litellm_provider": "opencode-go", - "max_input_tokens": 512000, - "max_output_tokens": 512000, - "max_tokens": 512000, + "opencode_go/mimo-v2.6-pro": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ "/v1/chat/completions" ], + "input_cost_per_token": 4.35e-7, + "output_cost_per_token": 8.7e-7, + "cache_read_input_token_cost": 3.625e-9, + "max_output_tokens": 131072, + "max_input_tokens": 1048576, "supports_function_calling": true, "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/qwen3.5-plus": { - "litellm_provider": "opencode-go", - "max_input_tokens": 991808, - "max_output_tokens": 65536, - "max_tokens": 65536, + "opencode_go/minimax-m3": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ - "/v1/chat/completions" + "/v1/messages" ], + "input_cost_per_token": 3e-7, + "output_cost_per_token": 0.0000012, + "cache_read_input_token_cost": 6e-8, + "max_output_tokens": 131072, + "max_input_tokens": 1000000, "supports_function_calling": true, "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/qwen3.6-plus": { - "litellm_provider": "opencode-go", - "max_input_tokens": 1000000, - "max_output_tokens": 65536, - "max_tokens": 65536, + "opencode_go/minimax-m3.1-flash": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ "/v1/chat/completions" ], + "input_cost_per_token": 1.5e-7, + "output_cost_per_token": 6e-7, + "cache_read_input_token_cost": 1.5e-8, + "max_output_tokens": 512000, + "max_input_tokens": 1000000, "supports_function_calling": true, "supports_reasoning": true, - "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/qwen3.7-max": { - "litellm_provider": "opencode-go", - "max_input_tokens": 991808, + "opencode_go/qwen3.7-plus": { + "litellm_provider": "opencode_go", + "mode": "chat", + "supported_endpoints": [ + "/v1/messages" + ], + "input_cost_per_token": 4.0000000000000003e-7, + "output_cost_per_token": 0.0000016000000000000001, + "cache_read_input_token_cost": 4e-8, + "cache_creation_input_token_cost": 5e-7, "max_output_tokens": 65536, - "max_tokens": 65536, + "max_input_tokens": 1000000, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": true, + "tiered_pricing": [ + { + "range": [ + 0, + 256000 + ], + "input_cost_per_token": 4.0000000000000003e-7, + "output_cost_per_token": 0.0000016000000000000001, + "cache_read_input_token_cost": 4e-8, + "cache_creation_input_token_cost": 5e-7 + }, + { + "range": [ + 256000, + 1000000 + ], + "input_cost_per_token": 0.0000012, + "output_cost_per_token": 0.0000048, + "cache_read_input_token_cost": 1.2e-7, + "cache_creation_input_token_cost": 0.0000015 + } + ], + "source": "https://opencode.ai/v2/docs/console/go/" + }, + "opencode_go/qwen3.8-flash": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ - "/v1/chat/completions" + "/v1/messages" ], + "input_cost_per_token": 1.5e-7, + "output_cost_per_token": 4.6999999999999995e-7, + "cache_read_input_token_cost": 1.6e-8, + "cache_creation_input_token_cost": 2.0000000000000002e-7, + "max_output_tokens": 131072, + "max_input_tokens": 1000000, "supports_function_calling": true, - "supports_prompt_caching": true, "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/qwen3.7-plus": { - "litellm_provider": "opencode-go", - "max_input_tokens": 991808, - "max_output_tokens": 65536, - "max_tokens": 65536, + "opencode_go/qwen3.8-max": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ - "/v1/chat/completions" + "/v1/messages" ], + "input_cost_per_token": 0.000002, + "output_cost_per_token": 0.000006, + "cache_read_input_token_cost": 2.5e-7, + "cache_creation_input_token_cost": 0.0000025, + "max_output_tokens": 131072, + "max_input_tokens": 1000000, "supports_function_calling": true, - "supports_prompt_caching": true, "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" }, - "opencode-go/qwen3.8-max": { - "litellm_provider": "opencode-go", - "max_input_tokens": 991808, - "max_output_tokens": 65536, - "max_tokens": 65536, + "opencode_go/step-5-preview": { + "litellm_provider": "opencode_go", "mode": "chat", - "source": "https://opencode.ai", "supported_endpoints": [ "/v1/chat/completions" ], + "input_cost_per_token": 0.000001, + "output_cost_per_token": 0.0000027, + "cache_read_input_token_cost": 1.0000000000000001e-7, + "max_output_tokens": 65536, + "max_input_tokens": 1000000, "supports_function_calling": true, - "supports_prompt_caching": true, "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true + "supports_vision": true, + "source": "https://opencode.ai/v2/docs/console/go/" }, "openinfer/@oi/GLM-5.3-Flash": { - "max_tokens": 393216, "max_input_tokens": 393216, "max_output_tokens": 393216, "input_cost_per_token": 1.95e-7, @@ -46112,7 +51113,6 @@ "source": "https://api.openinfer.ai/v1/models" }, "openinfer/@oi/Qwen3.5-27B": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 1.95e-7, @@ -46124,7 +51124,6 @@ "source": "https://api.openinfer.ai/v1/models" }, "openinfer/@oi/Qwen3.5-9B": { - "max_tokens": 100000, "max_input_tokens": 100000, "max_output_tokens": 100000, "input_cost_per_token": 0.000005, @@ -46140,7 +51139,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 131000, "max_output_tokens": 131000, - "max_tokens": 131000, "mode": "chat", "output_cost_per_token": 6.7e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46154,7 +51152,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 131000, "max_output_tokens": 131000, - "max_tokens": 131000, "mode": "chat", "output_cost_per_token": 1e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46167,7 +51164,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 131000, "max_output_tokens": 131000, - "max_tokens": 131000, "mode": "chat", "output_cost_per_token": 6.7e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46180,7 +51176,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 131000, "max_output_tokens": 131000, - "max_tokens": 131000, "mode": "chat", "output_cost_per_token": 6.7e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46193,7 +51188,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 127000, "max_output_tokens": 127000, - "max_tokens": 127000, "mode": "chat", "output_cost_per_token": 1e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46206,7 +51200,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 118000, "max_output_tokens": 118000, - "max_tokens": 118000, "mode": "chat", "output_cost_per_token": 1.3e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46219,7 +51212,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 2.8e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46233,7 +51225,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 32000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 6.3e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46246,7 +51237,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 32000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 8.7e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46259,7 +51249,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 32000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 9.1e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46273,7 +51262,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 32000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 2.3e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46287,7 +51275,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 131000, "max_output_tokens": 131000, - "max_tokens": 131000, "mode": "chat", "output_cost_per_token": 4e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46301,7 +51288,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 131000, "max_output_tokens": 131000, - "max_tokens": 131000, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46315,7 +51301,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 32000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 2.9e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46329,7 +51314,6 @@ "litellm_provider": "ovhcloud", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 1.9e-7, "source": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog/", @@ -46342,7 +51326,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 16384, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000014 }, @@ -46351,7 +51334,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 16384, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000028 }, @@ -46360,7 +51342,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.0000028 }, @@ -46369,7 +51350,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000001 }, @@ -46378,7 +51358,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 2e-7 }, @@ -46387,7 +51366,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2.8e-7 }, @@ -46396,7 +51374,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2.8e-7 }, @@ -46405,7 +51382,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.0000028 }, @@ -46415,7 +51391,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.0000028 }, @@ -46424,7 +51399,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 2.8e-7 }, @@ -46434,7 +51408,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2.8e-7 }, @@ -46442,7 +51415,7 @@ "input_cost_per_token": 0.000001, "litellm_provider": "perplexity", "max_input_tokens": 128000, - "max_tokens": 128000, + "max_output_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000001, "search_context_cost_per_query": { @@ -46457,7 +51430,7 @@ "input_cost_per_token": 0.000002, "litellm_provider": "perplexity", "max_input_tokens": 128000, - "max_tokens": 128000, + "max_output_tokens": 128000, "mode": "chat", "output_cost_per_reasoning_token": 0.000003, "output_cost_per_token": 0.000008, @@ -46474,7 +51447,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 16384, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000018 }, @@ -46484,7 +51456,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 12000, "max_output_tokens": 12000, - "max_tokens": 12000, "mode": "chat", "output_cost_per_token": 0.0000018 }, @@ -46493,7 +51464,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 200000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.000015, "search_context_cost_per_query": { @@ -46507,7 +51477,7 @@ "input_cost_per_token": 0.000001, "litellm_provider": "perplexity", "max_input_tokens": 128000, - "max_tokens": 128000, + "max_output_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000005, "search_context_cost_per_query": { @@ -46522,7 +51492,7 @@ "input_cost_per_token": 0.000002, "litellm_provider": "perplexity", "max_input_tokens": 128000, - "max_tokens": 128000, + "max_output_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000008, "search_context_cost_per_query": { @@ -46538,7 +51508,6 @@ "litellm_provider": "perplexity", "max_input_tokens": 16384, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 2.8e-7 }, @@ -46548,12 +51517,10 @@ "litellm_provider": "perplexity", "max_input_tokens": 12000, "max_output_tokens": 12000, - "max_tokens": 12000, "mode": "chat", "output_cost_per_token": 2.8e-7 }, "pinstripes/ps/deepseek-v4-flash": { - "max_tokens": 163840, "max_input_tokens": 163840, "max_output_tokens": 163840, "input_cost_per_token": 1e-7, @@ -46566,7 +51533,6 @@ "source": "https://pinstripes.io/" }, "pinstripes/ps/glm-4.5-air": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 1.25e-7, @@ -46579,7 +51545,6 @@ "source": "https://pinstripes.io/" }, "pinstripes/ps/minimax-m2.7": { - "max_tokens": 1000192, "max_input_tokens": 1000192, "max_output_tokens": 1000192, "input_cost_per_token": 2.55e-7, @@ -46592,7 +51557,6 @@ "source": "https://pinstripes.io/" }, "pinstripes/ps/qwen3-30b-a3b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 9e-8, @@ -46605,7 +51569,6 @@ "source": "https://pinstripes.io/" }, "pinstripes/ps/qwen3-coder-30b-a3b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 3e-7, @@ -46618,7 +51581,6 @@ "source": "https://pinstripes.io/" }, "pinstripes/ps/qwen3.6-35b-a3b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1.4e-7, @@ -46636,7 +51598,6 @@ "litellm_provider": "prism", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 2.1e-7, "source": "https://prisminference.com/pricing", @@ -46661,7 +51622,6 @@ "litellm_provider": "prism", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 6.3e-7, "source": "https://prisminference.com/pricing", @@ -46685,7 +51645,6 @@ "litellm_provider": "publicai", "max_input_tokens": 8192, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0, "source": "https://platform.publicai.co/docs", @@ -46697,7 +51656,6 @@ "litellm_provider": "publicai", "max_input_tokens": 16384, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0, "source": "https://platform.publicai.co/docs", @@ -46709,7 +51667,6 @@ "litellm_provider": "publicai", "max_input_tokens": 8192, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0, "source": "https://platform.publicai.co/docs", @@ -46721,7 +51678,6 @@ "litellm_provider": "publicai", "max_input_tokens": 32768, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0, "source": "https://platform.publicai.co/docs", @@ -46733,7 +51689,6 @@ "litellm_provider": "publicai", "max_input_tokens": 32768, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0, "source": "https://platform.publicai.co/docs", @@ -46746,7 +51701,6 @@ "litellm_provider": "publicai", "max_input_tokens": 32768, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0, "source": "https://platform.publicai.co/docs", @@ -46758,7 +51712,6 @@ "litellm_provider": "publicai", "max_input_tokens": 32768, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0, "source": "https://platform.publicai.co/docs", @@ -46771,7 +51724,6 @@ "litellm_provider": "publicai", "max_input_tokens": 8192, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0, "source": "https://platform.publicai.co/docs", @@ -46783,7 +51735,6 @@ "litellm_provider": "publicai", "max_input_tokens": 8192, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0, "source": "https://platform.publicai.co/docs", @@ -46796,7 +51747,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 262144, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 8.8e-7, "output_cost_per_token_flex": 4.4e-7, @@ -46816,7 +51766,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 32768, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_batches": 3e-7, @@ -46830,13 +51779,13 @@ }, "qwen.qwen3-coder-30b-a3b-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 1.5e-7, "input_cost_per_token_batches": 7.5e-8, "input_cost_per_token_priority": 2.625e-7, "litellm_provider": "bedrock_converse", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_batches": 3e-7, @@ -46849,11 +51798,11 @@ }, "qwen.qwen3-coder-480b-a35b-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-qwen-qwen3-coder-480b-a35b-instruct.html", "input_cost_per_token": 4.5e-7, "litellm_provider": "bedrock_converse", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000018, "supports_function_calling": true, @@ -46870,7 +51819,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 256000, "max_output_tokens": 16000, - "max_tokens": 16000, "mode": "chat", "output_cost_per_token": 0.0000012, "output_cost_per_token_batches": 6e-7, @@ -46886,13 +51834,16 @@ }, "qwen.qwen3-next-80b-a3b": { "input_cost_per_token": 1.5e-7, + "input_cost_per_token_flex": 7e-8, + "input_cost_per_token_priority": 2.6e-7, "litellm_provider": "bedrock_converse", "max_input_tokens": 256000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.0000012, - "source": "https://aws.amazon.com/bedrock/pricing/", + "output_cost_per_token_flex": 6e-7, + "output_cost_per_token_priority": 0.0000021, + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/index.json", "supports_audio_input": false, "supports_function_calling": true, "supports_system_messages": true, @@ -46907,7 +51858,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 256000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.00000266, "output_cost_per_token_batches": 0.00000133, @@ -46926,7 +51876,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 4e-7, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -46942,7 +51891,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 4e-7, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -46958,7 +51906,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 0.0000048, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -46974,7 +51921,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 202745, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -46990,7 +51936,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -47006,7 +51951,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 229376, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -47022,7 +51966,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 1000000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -47034,7 +51977,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47063,7 +52005,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47093,7 +52034,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 30720, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000064, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -47106,7 +52046,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -47119,7 +52058,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 129024, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -47132,7 +52070,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 0.000004, "output_cost_per_token": 0.0000012, @@ -47146,7 +52083,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 0.000004, "output_cost_per_token": 0.0000012, @@ -47159,7 +52095,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47190,7 +52125,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47221,7 +52155,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47253,7 +52186,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 5e-7, "output_cost_per_token": 2e-7, @@ -47267,7 +52199,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 1000000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 2e-7, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -47280,7 +52211,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 1000000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 5e-7, "output_cost_per_token": 2e-7, @@ -47294,7 +52224,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 1000000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 5e-7, "output_cost_per_token": 2e-7, @@ -47307,7 +52236,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47318,7 +52246,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 997952, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47367,7 +52294,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 997952, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47412,7 +52338,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 997952, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47461,7 +52386,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 997952, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47506,7 +52430,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 258048, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47543,7 +52466,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 258048, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47580,7 +52502,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 258048, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47618,7 +52539,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", @@ -47630,7 +52550,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", @@ -47643,7 +52562,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000016, "source": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", @@ -47656,7 +52574,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", @@ -47670,7 +52587,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 6.4e-7, "source": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", @@ -47683,7 +52599,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.00000287, "source": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", @@ -47696,7 +52611,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 260096, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47734,7 +52648,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 991808, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47761,12 +52674,13 @@ ] }, "qwen_ai_platform/qwen3.7-max": { + "cache_creation_input_token_cost": 0.000003125, "cache_read_input_token_cost": 5e-7, + "explicit_cache_read_input_token_cost": 2.5e-7, "input_cost_per_token": 0.0000025, "litellm_provider": "qwen_ai_platform", "max_input_tokens": 991808, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000075, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -47780,7 +52694,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 991808, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.alibabacloud.com/help/en/model-studio/models", "supports_function_calling": true, @@ -47817,7 +52730,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 991808, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 4.7e-7, "source": "https://docs.modelstudio.console.alibabacloud.com/en/model-studio/model-pricing", @@ -47836,7 +52748,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 991808, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -47853,7 +52764,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 991808, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 4.7e-7, "source": "https://docs.modelstudio.console.alibabacloud.com/en/model-studio/model-pricing", @@ -47872,7 +52782,6 @@ "litellm_provider": "qwen_ai_platform", "max_input_tokens": 98304, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000024, "source": "https://www.alibabacloud.com/help/en/model-studio/models", @@ -47886,7 +52795,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 4e-7, "source": "https://www.qwencloud.com/models", @@ -47902,7 +52810,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 4e-7, "source": "https://www.qwencloud.com/models", @@ -47918,7 +52825,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 1000000, "max_output_tokens": 393216, - "max_tokens": 393216, "mode": "chat", "output_cost_per_token": 0.0000048, "source": "https://www.qwencloud.com/models", @@ -47934,7 +52840,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 202745, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://www.qwencloud.com/models", @@ -47950,7 +52855,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://www.qwencloud.com/models", @@ -47966,7 +52870,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 229376, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://www.qwencloud.com/models", @@ -47982,7 +52885,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 1000000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://www.qwencloud.com/models", @@ -47994,7 +52896,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48023,7 +52924,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48053,7 +52953,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 30720, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000064, "source": "https://www.qwencloud.com/models", @@ -48066,7 +52965,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.qwencloud.com/models", @@ -48079,7 +52977,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 129024, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.qwencloud.com/models", @@ -48092,7 +52989,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 0.000004, "output_cost_per_token": 0.0000012, @@ -48106,7 +53002,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 0.000004, "output_cost_per_token": 0.0000012, @@ -48119,7 +53014,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48150,7 +53044,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48181,7 +53074,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 997952, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48213,7 +53105,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 5e-7, "output_cost_per_token": 2e-7, @@ -48227,7 +53118,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 1000000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 2e-7, "source": "https://www.qwencloud.com/models", @@ -48240,7 +53130,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 1000000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 5e-7, "output_cost_per_token": 2e-7, @@ -48254,7 +53143,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 1000000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_reasoning_token": 5e-7, "output_cost_per_token": 2e-7, @@ -48267,7 +53155,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 129024, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48278,7 +53165,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 997952, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48327,7 +53213,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 997952, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48372,7 +53257,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 997952, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48421,7 +53305,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 997952, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48466,7 +53349,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 258048, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48503,7 +53385,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 258048, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48540,7 +53421,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 258048, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48578,7 +53458,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.qwencloud.com/models", @@ -48590,7 +53469,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 262144, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://www.qwencloud.com/models", @@ -48603,7 +53481,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000016, "source": "https://www.qwencloud.com/models", @@ -48616,7 +53493,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://www.qwencloud.com/models", @@ -48630,7 +53506,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 6.4e-7, "source": "https://www.qwencloud.com/models", @@ -48643,7 +53518,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.00000287, "source": "https://www.qwencloud.com/models", @@ -48656,7 +53530,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 260096, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48694,7 +53567,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 991808, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48721,12 +53593,13 @@ ] }, "qwencloud/qwen3.7-max": { + "cache_creation_input_token_cost": 0.000003125, "cache_read_input_token_cost": 5e-7, + "explicit_cache_read_input_token_cost": 2.5e-7, "input_cost_per_token": 0.0000025, "litellm_provider": "qwencloud", "max_input_tokens": 991808, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000075, "source": "https://www.qwencloud.com/models", @@ -48740,7 +53613,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 991808, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "source": "https://www.qwencloud.com/models", "supports_function_calling": true, @@ -48776,7 +53648,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 991808, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://www.qwencloud.com/models", @@ -48792,7 +53663,6 @@ "litellm_provider": "qwencloud", "max_input_tokens": 98304, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000024, "source": "https://www.qwencloud.com/models", @@ -48800,6 +53670,111 @@ "supports_reasoning": true, "supports_tool_choice": true }, + "refuseless/deepseek-v4.1-flash-abliterated": { + "cache_read_input_token_cost": 3.5e-8, + "input_cost_per_token": 1.4e-7, + "litellm_provider": "refuseless", + "max_input_tokens": 1048576, + "max_output_tokens": 130000, + "mode": "chat", + "output_cost_per_token": 5e-7, + "source": "https://refuseless.com/pricing", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "reasoning_effort_levels": [ + "low", + "high", + "max" + ] + }, + "refuseless/deepseek-v4.1-flash-fast": { + "cache_read_input_token_cost": 3e-9, + "input_cost_per_token": 5e-8, + "litellm_provider": "refuseless", + "max_input_tokens": 1048576, + "max_output_tokens": 262144, + "mode": "chat", + "output_cost_per_token": 1.5e-7, + "source": "https://refuseless.com/pricing", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "reasoning_effort_levels": [ + "low", + "high", + "max" + ] + }, + "refuseless/glm-5.3-abliterated": { + "cache_read_input_token_cost": 1.5e-7, + "input_cost_per_token": 0.000001, + "litellm_provider": "refuseless", + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 0.000002, + "source": "https://refuseless.com/pricing", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "reasoning_effort_levels": [ + "low", + "high", + "max" + ] + }, + "refuseless/glm-5.3-flash-abliterated": { + "cache_read_input_token_cost": 4e-8, + "input_cost_per_token": 1.2e-7, + "litellm_provider": "refuseless", + "max_input_tokens": 1048576, + "max_output_tokens": 131072, + "mode": "chat", + "output_cost_per_token": 5e-7, + "source": "https://refuseless.com/pricing", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "reasoning_effort_levels": [ + "low", + "high", + "max" + ] + }, + "refuseless/minimax-m3.1-flash": { + "cache_read_input_token_cost": 2e-9, + "input_cost_per_token": 5e-8, + "litellm_provider": "refuseless", + "max_input_tokens": 1048576, + "max_output_tokens": 512000, + "mode": "chat", + "output_cost_per_token": 2.5e-7, + "source": "https://refuseless.com/pricing", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "reasoning_effort_levels": [ + "low", + "high", + "max" + ] + }, "replicate/anthropic/claude-3.5-haiku": { "input_cost_per_token": 0.000001, "output_cost_per_token": 0.000005, @@ -48889,7 +53864,6 @@ "mode": "chat", "max_input_tokens": 65536, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_reasoning": true, "supports_system_messages": true }, @@ -48900,7 +53874,6 @@ "mode": "chat", "max_input_tokens": 65536, "max_output_tokens": 8192, - "max_tokens": 8192, "supports_function_calling": true, "supports_system_messages": true }, @@ -48911,7 +53884,6 @@ "mode": "chat", "max_input_tokens": 163840, "max_output_tokens": 163840, - "max_tokens": 163840, "supports_function_calling": true, "supports_reasoning": true, "supports_system_messages": true @@ -48960,7 +53932,6 @@ "litellm_provider": "replicate", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 5e-7, "supports_tool_choice": true @@ -48970,7 +53941,6 @@ "litellm_provider": "replicate", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 5e-7, "supports_tool_choice": true @@ -48980,7 +53950,6 @@ "litellm_provider": "replicate", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00000275, "supports_tool_choice": true @@ -48990,7 +53959,6 @@ "litellm_provider": "replicate", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00000275, "supports_tool_choice": true @@ -49000,7 +53968,6 @@ "litellm_provider": "replicate", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2.5e-7, "supports_tool_choice": true @@ -49010,7 +53977,6 @@ "litellm_provider": "replicate", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2.5e-7, "supports_tool_choice": true @@ -49020,7 +53986,6 @@ "litellm_provider": "replicate", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000275, "supports_tool_choice": true @@ -49030,7 +53995,6 @@ "litellm_provider": "replicate", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000275, "supports_tool_choice": true @@ -49040,7 +54004,6 @@ "litellm_provider": "replicate", "max_input_tokens": 8086, "max_output_tokens": 8086, - "max_tokens": 8086, "mode": "chat", "output_cost_per_token": 2.5e-7, "supports_tool_choice": true @@ -49050,7 +54013,6 @@ "litellm_provider": "replicate", "max_input_tokens": 8086, "max_output_tokens": 8086, - "max_tokens": 8086, "mode": "chat", "output_cost_per_token": 2.5e-7, "supports_tool_choice": true @@ -49060,7 +54022,6 @@ "litellm_provider": "replicate", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2.5e-7, "supports_tool_choice": true @@ -49070,7 +54031,6 @@ "litellm_provider": "replicate", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2.5e-7, "supports_tool_choice": true @@ -49080,7 +54040,6 @@ "litellm_provider": "replicate", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000001, "supports_tool_choice": true @@ -49239,7 +54198,6 @@ "litellm_provider": "sagemaker", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0 }, @@ -49248,7 +54206,6 @@ "litellm_provider": "sagemaker", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0 }, @@ -49257,12 +54214,10 @@ "litellm_provider": "sagemaker", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0 }, "sail/Qwen/Qwen3.6-35B-A3B": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 5e-8, @@ -49282,7 +54237,6 @@ "source": "https://docs.sailresearch.com/models" }, "sail/deepseek-ai/DeepSeek-V4-Flash-0731": { - "max_tokens": 1048576, "max_input_tokens": 1048576, "max_output_tokens": 1048576, "input_cost_per_token": 9e-8, @@ -49304,7 +54258,6 @@ "source": "https://docs.sailresearch.com/models" }, "sail/deepseek-ai/DeepSeek-V4-Pro-0813": { - "max_tokens": 1048576, "max_input_tokens": 1048576, "max_output_tokens": 1048576, "input_cost_per_token": 9.2e-7, @@ -49326,7 +54279,6 @@ "source": "https://docs.sailresearch.com/models" }, "sail/deepseek-ai/DeepSeek-V4.1-Flash": { - "max_tokens": 1048576, "max_input_tokens": 1048576, "max_output_tokens": 1048576, "input_cost_per_token": 9e-8, @@ -49348,7 +54300,6 @@ "source": "https://docs.sailresearch.com/models" }, "sail/google/gemma-4-12B-it": { - "max_tokens": 16384, "max_input_tokens": 16384, "max_output_tokens": 16384, "input_cost_per_token": 3e-7, @@ -49370,7 +54321,6 @@ "source": "https://docs.sailresearch.com/models" }, "sail/google/gemma-4-31B-it": { - "max_tokens": 256000, "max_input_tokens": 256000, "max_output_tokens": 256000, "input_cost_per_token": 4e-7, @@ -49393,7 +54343,6 @@ "source": "https://docs.sailresearch.com/models" }, "sail/moonshotai/Kimi-K2.6": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 0.000001, @@ -49416,7 +54365,6 @@ "source": "https://docs.sailresearch.com/models" }, "sail/moonshotai/Kimi-K3": { - "max_tokens": 1048576, "max_input_tokens": 1048576, "max_output_tokens": 1048576, "input_cost_per_token": 0.0000025, @@ -49438,7 +54386,6 @@ "source": "https://docs.sailresearch.com/models" }, "sail/nvidia/Gemma-4-31B-IT-NVFP4": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "input_cost_per_token": 1.4e-7, @@ -49461,7 +54408,6 @@ "source": "https://docs.sailresearch.com/models" }, "sail/openai/gpt-oss-120b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 6e-8, @@ -49477,7 +54423,6 @@ "source": "https://docs.sailresearch.com/models" }, "sail/zai-org/GLM-5.3": { - "max_tokens": 1048576, "max_input_tokens": 1048576, "max_output_tokens": 1048576, "input_cost_per_token": 9.8e-7, @@ -49499,7 +54444,6 @@ "source": "https://docs.sailresearch.com/models" }, "sail/zai-org/GLM-5.3-Flash": { - "max_tokens": 1048576, "max_input_tokens": 1048576, "max_output_tokens": 1048576, "input_cost_per_token": 1.1e-7, @@ -49525,13 +54469,11 @@ "litellm_provider": "sambanova", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000007, "source": "https://cloud.sambanova.ai/plans/pricing" }, "sambanova/DeepSeek-V3.1": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 0.000003, @@ -49544,7 +54486,6 @@ "source": "https://cloud.sambanova.ai/plans/pricing" }, "sambanova/DeepSeek-V3.2": { - "max_tokens": 32768, "max_input_tokens": 32768, "max_output_tokens": 32768, "input_cost_per_token": 0.000003, @@ -49560,7 +54501,6 @@ "litellm_provider": "sambanova", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "metadata": { "notes": "For vision models, images are converted to 6432 input tokens and are billed at that amount" }, @@ -49577,7 +54517,6 @@ "litellm_provider": "sambanova", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://cloud.sambanova.ai/plans/pricing", @@ -49590,7 +54529,6 @@ "litellm_provider": "sambanova", "max_input_tokens": 196608, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000024, "source": "https://cloud.sambanova.ai/plans/pricing", @@ -49599,7 +54537,6 @@ "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, @@ -49610,7 +54547,6 @@ "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": 2.2e-7, @@ -49630,7 +54566,6 @@ "litellm_provider": "sarvam", "max_input_tokens": 8192, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0, "supports_reasoning": true @@ -49687,7 +54622,6 @@ "litellm_provider": "scaleway", "max_input_tokens": 256000, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 8e-7, "source": "https://www.scaleway.com/en/pricing/model-as-a-service/", @@ -49697,11 +54631,11 @@ "supports_vision": false }, "scaleway/glm-5.2": { + "deprecation_date": "2026-11-16", "input_cost_per_token": 0.0000018, "litellm_provider": "scaleway", "max_input_tokens": 256000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000055, "source": "https://www.scaleway.com/en/pricing/model-as-a-service/", @@ -49714,7 +54648,6 @@ "litellm_provider": "scaleway", "max_input_tokens": 256000, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 5e-7, "supports_function_calling": true, @@ -49726,7 +54659,6 @@ "litellm_provider": "scaleway", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 9e-7, "supports_function_calling": true @@ -49736,7 +54668,6 @@ "litellm_provider": "scaleway", "max_input_tokens": 256000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000075, "supports_reasoning": true, @@ -49749,7 +54680,6 @@ "litellm_provider": "scaleway", "max_input_tokens": 128000, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 3.5e-7, "supports_function_calling": true, @@ -49760,7 +54690,6 @@ "litellm_provider": "scaleway", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2e-7, "supports_vision": true, @@ -49772,7 +54701,6 @@ "litellm_provider": "scaleway", "max_input_tokens": 128000, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 6e-7, "supports_function_calling": true @@ -49782,7 +54710,6 @@ "litellm_provider": "scaleway", "max_input_tokens": 256000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00000225, "supports_function_calling": true @@ -49792,7 +54719,6 @@ "litellm_provider": "scaleway", "max_input_tokens": 128000, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 8e-7, "supports_function_calling": true, @@ -49803,7 +54729,6 @@ "litellm_provider": "scaleway", "max_input_tokens": 256000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000036, "supports_function_calling": true, @@ -49815,7 +54740,6 @@ "litellm_provider": "scaleway", "max_input_tokens": 256000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000015, "supports_function_calling": true, @@ -49828,7 +54752,6 @@ "litellm_provider": "scx-ai", "max_input_tokens": 1000000, "max_output_tokens": 375000, - "max_tokens": 375000, "mode": "chat", "output_cost_per_token": 6e-7, "source": "https://scx.ai/models/deepseek-v4-1-flash", @@ -49843,7 +54766,6 @@ "litellm_provider": "scx-ai", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00000198, "source": "https://scx.ai/pricing", @@ -49860,7 +54782,6 @@ "litellm_provider": "scx-ai", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000308, "source": "https://scx.ai/models/glm-5-3", @@ -49876,7 +54797,6 @@ "litellm_provider": "scx-ai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.00001413, "source": "https://scx.ai/models/kimi-k3", @@ -49892,7 +54812,6 @@ "litellm_provider": "scx-ai", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00000499, "source": "https://scx.ai/pricing", @@ -49907,7 +54826,6 @@ "litellm_provider": "snowflake", "max_input_tokens": 200000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "input_cost_per_token": 0.000003, "output_cost_per_token": 0.000015, @@ -49920,7 +54838,6 @@ "supports_response_schema": true }, "snowflake/claude-3-7-sonnet": { - "max_tokens": 16384, "max_input_tokens": 200000, "max_output_tokens": 16384, "input_cost_per_token": 0.000003, @@ -49936,7 +54853,6 @@ "supports_response_schema": true }, "snowflake/claude-4-opus": { - "max_tokens": 16384, "max_input_tokens": 200000, "max_output_tokens": 16384, "input_cost_per_token": 0.000005, @@ -49953,7 +54869,6 @@ "prompt_cache_min_tokens": 1024 }, "snowflake/claude-4-sonnet": { - "max_tokens": 16384, "max_input_tokens": 200000, "max_output_tokens": 16384, "input_cost_per_token": 0.000003, @@ -49969,7 +54884,6 @@ "prompt_cache_min_tokens": 1024 }, "snowflake/claude-haiku-4-5": { - "max_tokens": 16384, "max_input_tokens": 200000, "max_output_tokens": 16384, "input_cost_per_token": 0.000001, @@ -49985,7 +54899,6 @@ "prompt_cache_min_tokens": 4096 }, "snowflake/claude-sonnet-4-5": { - "max_tokens": 16384, "max_input_tokens": 200000, "max_output_tokens": 16384, "input_cost_per_token": 0.000003, @@ -50003,7 +54916,6 @@ "snowflake/claude-sonnet-4-6": { "supports_adaptive_thinking": true, "supports_legacy_thinking": true, - "max_tokens": 16384, "max_input_tokens": 200000, "max_output_tokens": 16384, "input_cost_per_token": 0.000003, @@ -50022,7 +54934,6 @@ "litellm_provider": "snowflake", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "input_cost_per_token": 0.00000135, "output_cost_per_token": 0.0000054, @@ -50033,56 +54944,48 @@ "litellm_provider": "snowflake", "max_input_tokens": 8000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/jamba-1.5-large": { "litellm_provider": "snowflake", "max_input_tokens": 256000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/jamba-1.5-mini": { "litellm_provider": "snowflake", "max_input_tokens": 256000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/jamba-instruct": { "litellm_provider": "snowflake", "max_input_tokens": 256000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/llama2-70b-chat": { "litellm_provider": "snowflake", "max_input_tokens": 4096, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/llama3-70b": { "litellm_provider": "snowflake", "max_input_tokens": 8000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/llama3-8b": { "litellm_provider": "snowflake", "max_input_tokens": 8000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/llama3.1-405b": { "litellm_provider": "snowflake", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "input_cost_per_token": 0.0000012, "output_cost_per_token": 0.0000012, @@ -50093,7 +54996,6 @@ "litellm_provider": "snowflake", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "input_cost_per_token": 7.2e-7, "output_cost_per_token": 7.2e-7, @@ -50104,7 +55006,6 @@ "litellm_provider": "snowflake", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "input_cost_per_token": 2.4e-7, "output_cost_per_token": 2.4e-7, @@ -50114,18 +55015,15 @@ "litellm_provider": "snowflake", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/llama3.2-3b": { "litellm_provider": "snowflake", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/llama3.3-70b": { - "max_tokens": 16384, "max_input_tokens": 128000, "max_output_tokens": 16384, "input_cost_per_token": 7.2e-7, @@ -50136,7 +55034,6 @@ "supports_system_messages": true }, "snowflake/llama4-maverick": { - "max_tokens": 16384, "max_input_tokens": 128000, "max_output_tokens": 16384, "input_cost_per_token": 2.4e-7, @@ -50150,21 +55047,18 @@ "litellm_provider": "snowflake", "max_input_tokens": 32000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/mistral-large": { "litellm_provider": "snowflake", "max_input_tokens": 32000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/mistral-large2": { "litellm_provider": "snowflake", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "input_cost_per_token": 0.000002, "output_cost_per_token": 0.000006, @@ -50176,11 +55070,9 @@ "litellm_provider": "snowflake", "max_input_tokens": 32000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/openai-gpt-4.1": { - "max_tokens": 16384, "max_input_tokens": 300000, "max_output_tokens": 16384, "input_cost_per_token": 0.000002, @@ -50195,7 +55087,6 @@ "supports_response_schema": true }, "snowflake/openai-gpt-5": { - "max_tokens": 16384, "max_input_tokens": 300000, "max_output_tokens": 16384, "input_cost_per_token": 0.00000125, @@ -50211,7 +55102,6 @@ "supports_response_schema": true }, "snowflake/openai-gpt-5-mini": { - "max_tokens": 16384, "max_input_tokens": 1000000, "max_output_tokens": 16384, "input_cost_per_token": 3e-7, @@ -50223,7 +55113,6 @@ "supports_response_schema": true }, "snowflake/openai-gpt-5-nano": { - "max_tokens": 16384, "max_input_tokens": 5000000, "max_output_tokens": 16384, "input_cost_per_token": 1.5e-7, @@ -50238,32 +55127,27 @@ "litellm_provider": "snowflake", "max_input_tokens": 32000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/reka-flash": { "litellm_provider": "snowflake", "max_input_tokens": 100000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/snowflake-arctic": { "litellm_provider": "snowflake", "max_input_tokens": 4096, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/snowflake-llama-3.1-405b": { "litellm_provider": "snowflake", "max_input_tokens": 8000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat" }, "snowflake/snowflake-llama-3.3-70b": { - "max_tokens": 16384, "max_input_tokens": 128000, "max_output_tokens": 16384, "input_cost_per_token": 7.2e-7, @@ -50273,6 +55157,359 @@ "supports_function_calling": true, "supports_system_messages": true }, + "streamlake/DeepSeek-V3": { + "cache_read_input_token_cost": 1.14e-7, + "input_cost_per_token": 2.86e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 56000, + "max_output_tokens": 8000, + "mode": "chat", + "output_cost_per_token": 0.000001143, + "supports_function_calling": true, + "supports_reasoning": false, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/DeepSeek-V4-Pro-0813": { + "cache_read_input_token_cost": 4.4e-8, + "input_cost_per_token": 0.00000132, + "litellm_provider": "streamlake", + "max_input_tokens": 1048566, + "max_output_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 0.00000396, + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/GLM-5.3": { + "cache_read_input_token_cost": 2.6e-7, + "input_cost_per_token": 0.0000014, + "litellm_provider": "streamlake", + "max_input_tokens": 1048576, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000044, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_assistant_prefill": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/GLM-5.3-Flash": { + "cache_read_input_token_cost": 3e-8, + "input_cost_per_token": 1.5e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 1048576, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 5e-7, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_vision": true, + "supports_assistant_prefill": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/Kimi-K2-Instruct-0905": { + "cache_read_input_token_cost": 1.43e-7, + "input_cost_per_token": 5.71e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 224000, + "max_output_tokens": 32000, + "mode": "chat", + "output_cost_per_token": 0.000002286, + "supports_function_calling": true, + "supports_reasoning": false, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/deepseek-r1": { + "cache_read_input_token_cost": 2.29e-7, + "input_cost_per_token": 5.71e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 98304, + "max_output_tokens": 16000, + "mode": "chat", + "output_cost_per_token": 0.000002286, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/deepseek-v3.1": { + "cache_read_input_token_cost": 2.29e-7, + "input_cost_per_token": 5.71e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 98304, + "max_output_tokens": 32000, + "mode": "chat", + "output_cost_per_token": 0.000001714, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/deepseek-v4-flash": { + "cache_read_input_token_cost": 2.8e-8, + "input_cost_per_token": 1.4e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 2.8e-7, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/deepseek-v4-flash-0731": { + "cache_read_input_token_cost": 1.4e-8, + "input_cost_per_token": 4.4e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 0.00000132, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/deepseek-v4-pro": { + "cache_read_input_token_cost": 1.45e-7, + "input_cost_per_token": 0.00000174, + "litellm_provider": "streamlake", + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 0.00000348, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/deepseek-v4.1-flash-1017": { + "cache_read_input_token_cost": 6e-9, + "input_cost_per_token": 3e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 0.0000012, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/deepseek-v4.1-flash-260910": { + "cache_read_input_token_cost": 6e-9, + "input_cost_per_token": 3e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 1048568, + "max_output_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 0.0000012, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/glm-5": { + "cache_read_input_token_cost": 2e-7, + "input_cost_per_token": 0.000001, + "litellm_provider": "streamlake", + "max_input_tokens": 202752, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000032, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/glm-5.1": { + "cache_read_input_token_cost": 2.6e-7, + "input_cost_per_token": 0.0000014, + "litellm_provider": "streamlake", + "max_input_tokens": 202752, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000044, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/glm-5.2": { + "cache_read_input_token_cost": 2.6e-7, + "input_cost_per_token": 0.0000014, + "litellm_provider": "streamlake", + "max_input_tokens": 1048566, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000044, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/kimi-k2.6": { + "cache_read_input_token_cost": 1.6e-7, + "input_cost_per_token": 9.5e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 262144, + "max_output_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 0.000004, + "supports_function_calling": true, + "supports_vision": true, + "supports_reasoning": false, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/kimi-k2.7-code": { + "cache_read_input_token_cost": 1.9e-7, + "input_cost_per_token": 9.5e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 262144, + "max_output_tokens": 32000, + "mode": "chat", + "output_cost_per_token": 0.000004, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/mimo-v2.6-flash": { + "cache_read_input_token_cost": 2.8e-9, + "input_cost_per_token": 1.4e-7, + "litellm_provider": "streamlake", + "mode": "chat", + "output_cost_per_token": 2.8e-7, + "supports_vision": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/mimo-v2.6-pro": { + "cache_read_input_token_cost": 3.6e-9, + "input_cost_per_token": 4.35e-7, + "litellm_provider": "streamlake", + "mode": "chat", + "output_cost_per_token": 8.7e-7, + "supports_vision": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/minimax-m2.5": { + "cache_creation_input_token_cost": 3.75e-7, + "cache_read_input_token_cost": 3e-8, + "input_cost_per_token": 3e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 196608, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000012, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/minimax-m3": { + "cache_read_input_token_cost": 1.2e-7, + "cache_read_input_token_cost_above_512k_tokens": 2.4e-7, + "input_cost_per_token": 6e-7, + "input_cost_per_token_above_512k_tokens": 0.0000012, + "litellm_provider": "streamlake", + "max_input_tokens": 1000000, + "max_output_tokens": 512000, + "mode": "chat", + "output_cost_per_token": 0.0000024, + "output_cost_per_token_above_512k_tokens": 0.0000048, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/qwen3.5-397b-a17b": { + "cache_read_input_token_cost": 1.2e-7, + "input_cost_per_token": 6e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 258048, + "max_output_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 0.0000036, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": true, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/qwen3.6-27b": { + "input_cost_per_token": 6e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 229376, + "max_output_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 0.0000036, + "supports_function_calling": true, + "supports_vision": true, + "supports_reasoning": false, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/qwen3.6-35b-a3b": { + "input_cost_per_token": 3.75e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 229376, + "max_output_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 0.00000225, + "supports_function_calling": true, + "supports_vision": true, + "supports_reasoning": false, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/qwen3.8-2.4t-a95b": { + "cache_read_input_token_cost": 2.5e-7, + "input_cost_per_token": 0.000002, + "litellm_provider": "streamlake", + "max_input_tokens": 983616, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000006, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": true, + "cache_creation_input_token_cost": 0.0000025, + "explicit_cache_read_input_token_cost": 1.7e-7, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/qwen3.8-27b": { + "cache_read_input_token_cost": 1e-7, + "input_cost_per_token": 5e-7, + "litellm_provider": "streamlake", + "max_input_tokens": 983616, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000003, + "supports_function_calling": true, + "supports_reasoning": true, + "supports_vision": true, + "cache_creation_input_token_cost": 6.25e-7, + "explicit_cache_read_input_token_cost": 5e-8, + "supports_prompt_caching": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, "tencent/deepseek-v4-flash": { "cache_creation_input_token_cost": 0, "cache_read_input_token_cost": 2.8e-9, @@ -50281,7 +55518,6 @@ "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/document/product/1300/78937", @@ -50307,7 +55543,6 @@ "litellm_provider": "tencent", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 0.00000348, "source": "https://www.tencentcloud.com/document/product/1300/78937", @@ -50333,7 +55568,6 @@ "litellm_provider": "tencent", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "off_peak_pricing": { "cache_read_input_token_cost": 2.2e-8, @@ -50388,7 +55622,6 @@ "litellm_provider": "tencent", "max_input_tokens": 1000000, "max_output_tokens": 384000, - "max_tokens": 384000, "mode": "chat", "off_peak_pricing": { "cache_read_input_token_cost": 3e-9, @@ -50443,7 +55676,6 @@ "litellm_provider": "tencent", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://www.tencentcloud.com/document/product/1300/78937", @@ -50467,7 +55699,6 @@ "litellm_provider": "tencent", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://www.tencentcloud.com/document/product/1300/78937", @@ -50491,7 +55722,6 @@ "litellm_provider": "tencent", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://www.tencentcloud.com/document/product/1300/78937", @@ -50516,7 +55746,6 @@ "litellm_provider": "tencent", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00000125, "source": "https://www.tencentcloud.com/document/product/1300/78937", @@ -50541,7 +55770,6 @@ "litellm_provider": "tencent", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://www.tencentcloud.com/document/product/1300/78937", @@ -50565,7 +55793,6 @@ "litellm_provider": "tencent", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000008, "source": "https://www.tencentcloud.com/document/product/1300/78937", @@ -50589,7 +55816,6 @@ "litellm_provider": "tencent", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://www.tencentcloud.com/document/product/1300/78937", @@ -50613,7 +55839,6 @@ "litellm_provider": "tencent", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.000015, "source": "https://www.tencentcloud.com/document/product/1300/78937", @@ -50829,7 +56054,8 @@ "together-ai-8.1b-21b": { "input_cost_per_token": 3e-7, "litellm_provider": "together_ai", - "max_tokens": 1000, + "max_output_tokens": 1000, + "max_input_tokens": 1000, "mode": "chat", "output_cost_per_token": 3e-7 }, @@ -50856,13 +56082,16 @@ }, "together_ai/MiniMaxAI/MiniMax-M3": { "cache_read_input_token_cost": 6e-8, + "deprecation_date": "2026-11-06", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 3e-7, "litellm_provider": "together_ai", "max_input_tokens": 524288, - "max_tokens": 524288, + "max_output_tokens": 524288, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://api.together.ai/v1/models", + "successor_model": "together_ai/MiniMaxAI/MiniMax-M3.1-Flash", "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_prompt_caching": true, @@ -50871,35 +56100,26 @@ "supports_tool_choice": true, "supports_vision": true }, - "together_ai/NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO": { - "deprecation_date": "2025-08-28", - "input_cost_per_token": 6e-7, + "together_ai/MiniMaxAI/MiniMax-M3.1-Flash": { + "cache_read_input_token_cost": 1.5e-8, + "input_cost_per_token": 1.5e-7, "litellm_provider": "together_ai", - "max_input_tokens": 32768, - "max_tokens": 32768, + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 6e-7, - "source": "https://api.together.ai/v1/models" + "source": "https://www.together.ai/pricing", + "supports_prompt_caching": true }, "together_ai/Prism-ML/Ternary-Bonsai-27B": { "input_cost_per_token": 0, "litellm_provider": "together_ai", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0, "source": "https://docs.together.ai/docs/serverless-models" }, - "together_ai/Qwen/QwQ-32B": { - "deprecation_date": "2025-11-13", - "input_cost_per_token": 0.0000012, - "litellm_provider": "together_ai", - "max_input_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 0.0000012, - "source": "https://api.together.ai/v1/models" - }, "together_ai/Qwen/Qwen2-1.5B-Instruct": { "input_cost_per_token": 2e-8, "litellm_provider": "together_ai", @@ -50907,27 +56127,7 @@ "output_cost_per_token": 2e-8, "source": "https://api.together.ai/v1/models", "max_input_tokens": 32768, - "max_tokens": 32768 - }, - "together_ai/Qwen/Qwen2-72B-Instruct": { - "deprecation_date": "2025-08-28", - "input_cost_per_token": 9e-7, - "litellm_provider": "together_ai", - "max_input_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 9e-7, - "source": "https://api.together.ai/v1/models" - }, - "together_ai/Qwen/Qwen2-VL-72B-Instruct": { - "deprecation_date": "2025-08-28", - "input_cost_per_token": 0.0000012, - "litellm_provider": "together_ai", - "max_input_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 0.0000012, - "source": "https://api.together.ai/v1/models" + "max_output_tokens": 32768 }, "together_ai/Qwen/Qwen2.5-14B-Instruct": { "input_cost_per_token": 8e-7, @@ -50936,7 +56136,7 @@ "output_cost_per_token": 8e-7, "source": "https://api.together.ai/v1/models", "max_input_tokens": 32768, - "max_tokens": 32768 + "max_output_tokens": 32768 }, "together_ai/Qwen/Qwen2.5-72B-Instruct": { "input_cost_per_token": 0.0000012, @@ -50945,14 +56145,15 @@ "output_cost_per_token": 0.0000012, "source": "https://api.together.ai/v1/models", "max_input_tokens": 32768, - "max_tokens": 32768 + "max_output_tokens": 32768 }, "together_ai/Qwen/Qwen2.5-72B-Instruct-Turbo": { "deprecation_date": "2026-02-06", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 0.0000012, "litellm_provider": "together_ai", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://api.together.ai/v1/models" @@ -50969,82 +56170,79 @@ "max_input_tokens": 32768, "source": "https://api.together.ai/v1/models" }, - "together_ai/Qwen/Qwen2.5-Coder-32B-Instruct": { - "deprecation_date": "2025-11-13", - "input_cost_per_token": 8e-7, - "litellm_provider": "together_ai", - "max_input_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 8e-7, - "source": "https://api.together.ai/v1/models" - }, "together_ai/Qwen/Qwen2.5-VL-72B-Instruct": { "deprecation_date": "2026-01-05", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 0.00000195, "litellm_provider": "together_ai", "max_input_tokens": 32768, - "max_tokens": 32768, + "max_output_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000008, "source": "https://api.together.ai/v1/models" }, "together_ai/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8": { "deprecation_date": "2026-06-04", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 0.000002, "litellm_provider": "together_ai", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://api.together.ai/v1/models" }, "together_ai/Qwen/Qwen3-Coder-Next-FP8": { "deprecation_date": "2026-05-14", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 5e-7, "litellm_provider": "together_ai", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://api.together.ai/v1/models" }, "together_ai/Qwen/Qwen3-Next-80B-A3B-Instruct": { "deprecation_date": "2026-04-02", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 1.5e-7, "litellm_provider": "together_ai", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://api.together.ai/v1/models" }, "together_ai/Qwen/Qwen3-Next-80B-A3B-Thinking": { "deprecation_date": "2026-02-25", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 1.5e-7, "litellm_provider": "together_ai", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://api.together.ai/v1/models" }, "together_ai/Qwen/Qwen3-VL-32B-Instruct": { "deprecation_date": "2026-02-25", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 5e-7, "litellm_provider": "together_ai", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://api.together.ai/v1/models" }, "together_ai/Qwen/Qwen3-VL-8B-Instruct": { "deprecation_date": "2026-04-16", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 1.8e-7, "litellm_provider": "together_ai", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 6.8e-7, "source": "https://api.together.ai/v1/models" @@ -51052,10 +56250,11 @@ "together_ai/Qwen/Qwen3.5-397B-A17B": { "cache_read_input_token_cost": 3.5e-7, "deprecation_date": "2026-06-29", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 6e-7, "litellm_provider": "together_ai", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000036, "source": "https://api.together.ai/v1/models" @@ -51064,7 +56263,7 @@ "input_cost_per_token": 1.7e-7, "litellm_provider": "together_ai", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 2.5e-7, "source": "https://api.together.ai/v1/models", @@ -51079,7 +56278,7 @@ "input_cost_per_token": 5e-7, "litellm_provider": "together_ai", "max_input_tokens": 1000000, - "max_tokens": 1000000, + "max_output_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.000003, "source": "https://api.together.ai/v1/models", @@ -51090,7 +56289,7 @@ "input_cost_per_token": 0.0000015, "litellm_provider": "together_ai", "max_input_tokens": 1000000, - "max_tokens": 1000000, + "max_output_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000045, "source": "https://www.together.ai/pricing", @@ -51100,27 +56299,30 @@ "input_cost_per_token": 3.2e-7, "litellm_provider": "together_ai", "max_input_tokens": 1000000, - "max_tokens": 1000000, + "max_output_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.00000128, "source": "https://api.together.ai/v1/models" }, "together_ai/Qwen/Qwen3.8-2.4T-A95B": { "cache_read_input_token_cost": 2.5e-7, + "deprecation_date": "2026-11-04", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 0.000002, "litellm_provider": "together_ai", "max_input_tokens": 1010000, - "max_tokens": 1010000, + "max_output_tokens": 1010000, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://api.together.ai/v1/models", + "successor_model": "together_ai/Qwen/Qwen3.7-Max", "supports_prompt_caching": true }, "together_ai/Qwen/Qwen3.8-Flash": { "input_cost_per_token": 1.5e-7, "litellm_provider": "together_ai", "max_input_tokens": 1000000, - "max_tokens": 1000000, + "max_output_tokens": 1000000, "mode": "chat", "output_cost_per_token": 4.7e-7, "source": "https://api.together.ai/v1/models" @@ -51132,13 +56334,13 @@ "output_cost_per_token": 1.5e-7, "source": "https://api.together.ai/v1/models", "max_input_tokens": 128000, - "max_tokens": 128000 + "max_output_tokens": 128000 }, "together_ai/arize-ai/qwen-2-1.5b-instruct": { "input_cost_per_token": 1e-7, "litellm_provider": "together_ai", "max_input_tokens": 32768, - "max_tokens": 32768, + "max_output_tokens": 32768, "mode": "chat", "output_cost_per_token": 1e-7, "source": "https://api.together.ai/v1/models" @@ -51151,42 +56353,11 @@ "mode": "chat", "source": "https://api.together.ai/v1/models" }, - "together_ai/deepseek-ai/DeepSeek-R1-Distill-Llama-70B": { - "deprecation_date": "2025-12-23", - "input_cost_per_token": 0.000002, - "litellm_provider": "together_ai", - "max_input_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 0.000002, - "source": "https://api.together.ai/v1/models" - }, - "together_ai/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B": { - "deprecation_date": "2025-08-28", - "input_cost_per_token": 1.8e-7, - "litellm_provider": "together_ai", - "max_input_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 1.8e-7, - "source": "https://api.together.ai/v1/models" - }, - "together_ai/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B": { - "deprecation_date": "2025-11-13", - "input_cost_per_token": 0.0000016, - "litellm_provider": "together_ai", - "max_input_tokens": 131072, - "max_tokens": 131072, - "mode": "chat", - "output_cost_per_token": 0.0000016, - "source": "https://api.together.ai/v1/models" - }, "together_ai/deepseek-ai/DeepSeek-V3": { "input_cost_per_token": 0.00000125, "litellm_provider": "together_ai", "max_input_tokens": 65536, "max_output_tokens": 8192, - "max_tokens": 8192, "metadata": { "successor": "together_ai/deepseek-ai/DeepSeek-V4-Pro-0813" }, @@ -51199,10 +56370,11 @@ }, "together_ai/deepseek-ai/DeepSeek-V3.1": { "deprecation_date": "2026-05-14", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 6e-7, "litellm_provider": "together_ai", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000017, "source": "https://api.together.ai/v1/models" @@ -51210,13 +56382,15 @@ "together_ai/deepseek-ai/DeepSeek-V4-Flash-0731": { "cache_read_input_token_cost": 3e-8, "deprecation_date": "2026-10-22", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 1.4e-7, "litellm_provider": "together_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 2.8e-7, "source": "https://api.together.ai/v1/models", + "successor_model": "together_ai/deepseek-ai/DeepSeek-V4.1-Flash-1017", "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_prompt_caching": true, @@ -51228,7 +56402,7 @@ "input_cost_per_token": 0.00000132, "litellm_provider": "together_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.00000396, "source": "https://api.together.ai/v1/models", @@ -51243,7 +56417,7 @@ "input_cost_per_token": 3e-7, "litellm_provider": "together_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://api.together.ai/v1/models", @@ -51252,45 +56426,33 @@ "supports_response_schema": true, "supports_tool_choice": true }, - "together_ai/deepseek-ai/deepseek-coder-33b-instruct": { - "deprecation_date": "2024-08-22", - "input_cost_per_token": 8e-7, - "litellm_provider": "together_ai", - "max_input_tokens": 16384, - "max_tokens": 16384, - "mode": "chat", - "output_cost_per_token": 8e-7, - "source": "https://api.together.ai/v1/models" - }, - "together_ai/google/gemma-2-27b-it": { - "deprecation_date": "2025-08-28", - "input_cost_per_token": 8e-7, + "together_ai/deepseek-ai/DeepSeek-V4.1-Flash-1017": { + "cache_read_input_token_cost": 6e-9, + "input_cost_per_token": 3e-7, "litellm_provider": "together_ai", - "max_input_tokens": 8192, - "max_tokens": 8192, + "max_input_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", - "output_cost_per_token": 8e-7, - "source": "https://api.together.ai/v1/models" + "output_cost_per_token": 0.0000012, + "source": "https://api.together.ai/v1/models", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true }, "together_ai/google/gemma-4-31B-it": { "deprecation_date": "2026-09-15", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 3.9e-7, "litellm_provider": "together_ai", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 9.7e-7, - "source": "https://api.together.ai/v1/models" - }, - "together_ai/meta-llama/Llama-3-8b-chat-hf": { - "deprecation_date": "2025-08-28", - "input_cost_per_token": 2e-7, - "litellm_provider": "together_ai", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2e-7, - "source": "https://api.together.ai/v1/models" + "source": "https://api.together.ai/v1/models", + "successor_model": "together_ai/zai-org/GLM-5.3-Flash" }, "together_ai/meta-llama/Llama-3.1-405B-Instruct": { "input_cost_per_token": 0.0000035, @@ -51299,7 +56461,7 @@ "output_cost_per_token": 0.0000035, "source": "https://api.together.ai/v1/models", "max_input_tokens": 4096, - "max_tokens": 4096 + "max_output_tokens": 4096 }, "together_ai/meta-llama/Llama-3.2-1B-Instruct": { "input_cost_per_token": 6e-8, @@ -51308,7 +56470,7 @@ "output_cost_per_token": 6e-8, "source": "https://api.together.ai/v1/models", "max_input_tokens": 131072, - "max_tokens": 131072 + "max_output_tokens": 131072 }, "together_ai/meta-llama/Llama-3.2-3B-Instruct": { "input_cost_per_token": 6e-8, @@ -51317,17 +56479,19 @@ "output_cost_per_token": 6e-8, "source": "https://api.together.ai/v1/models", "max_input_tokens": 131072, - "max_tokens": 131072 + "max_output_tokens": 131072 }, "together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo": { "deprecation_date": "2026-10-22", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 0.00000104, "litellm_provider": "together_ai", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.00000104, "source": "https://api.together.ai/v1/models", + "successor_model": "together_ai/meta-models/Muse-Glimmer-30B", "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_response_schema": true, @@ -51335,50 +56499,33 @@ }, "together_ai/meta-llama/Llama-4-Scout-17B-16E-Instruct": { "deprecation_date": "2026-02-06", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 1.8e-7, "litellm_provider": "together_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 5.9e-7, "source": "https://api.together.ai/v1/models" }, - "together_ai/meta-llama/Meta-Llama-3-70B-Instruct-Turbo": { - "deprecation_date": "2025-12-23", - "input_cost_per_token": 8.8e-7, - "litellm_provider": "together_ai", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 8.8e-7, - "source": "https://api.together.ai/v1/models" - }, - "together_ai/meta-llama/Meta-Llama-3-8B-Instruct": { - "deprecation_date": "2025-08-28", - "input_cost_per_token": 2e-7, - "litellm_provider": "together_ai", - "max_input_tokens": 8192, - "max_tokens": 8192, - "mode": "chat", - "output_cost_per_token": 2e-7, - "source": "https://api.together.ai/v1/models" - }, "together_ai/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo": { "deprecation_date": "2026-02-25", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 8.8e-7, "litellm_provider": "together_ai", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 8.8e-7, "source": "https://api.together.ai/v1/models" }, "together_ai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo": { "deprecation_date": "2026-03-06", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 1.8e-7, "litellm_provider": "together_ai", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 1.8e-7, "source": "https://api.together.ai/v1/models" @@ -51388,7 +56535,7 @@ "input_cost_per_token": 3.5e-7, "litellm_provider": "together_ai", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000015, "source": "https://api.together.ai/v1/models", @@ -51399,7 +56546,7 @@ "input_cost_per_token": 0.00000125, "litellm_provider": "together_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.00000425, "source": "https://docs.together.ai/docs/serverless-models", @@ -51415,16 +56562,6 @@ "mode": "chat", "source": "https://api.together.ai/v1/models" }, - "together_ai/mistralai/Mistral-7B-Instruct-v0.1": { - "deprecation_date": "2025-11-13", - "input_cost_per_token": 2e-7, - "litellm_provider": "together_ai", - "max_input_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 2e-7, - "source": "https://api.together.ai/v1/models" - }, "together_ai/mistralai/Mistral-7B-Instruct-v0.3": { "input_cost_per_token": 2e-7, "output_cost_per_token": 2e-7, @@ -51435,20 +56572,22 @@ }, "together_ai/mistralai/Mistral-Small-24B-Instruct-2501": { "deprecation_date": "2026-04-02", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 1e-7, "litellm_provider": "together_ai", "max_input_tokens": 32768, - "max_tokens": 32768, + "max_output_tokens": 32768, "mode": "chat", "output_cost_per_token": 3e-7, "source": "https://api.together.ai/v1/models" }, "together_ai/mistralai/Mixtral-8x7B-Instruct-v0.1": { "deprecation_date": "2026-04-16", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 6e-7, "litellm_provider": "together_ai", "max_input_tokens": 32768, - "max_tokens": 32768, + "max_output_tokens": 32768, "mode": "chat", "output_cost_per_token": 6e-7, "source": "https://api.together.ai/v1/models" @@ -51478,10 +56617,11 @@ "together_ai/moonshotai/Kimi-K2.6": { "cache_read_input_token_cost": 2e-7, "deprecation_date": "2026-08-19", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 0.0000012, "litellm_provider": "together_ai", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000045, "source": "https://api.together.ai/v1/models" @@ -51489,10 +56629,11 @@ "together_ai/moonshotai/Kimi-K2.7-Code": { "cache_read_input_token_cost": 1.9e-7, "deprecation_date": "2026-08-27", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 9.5e-7, "litellm_provider": "together_ai", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.000004, "source": "https://api.together.ai/v1/models" @@ -51502,7 +56643,7 @@ "input_cost_per_token": 0.000003, "litellm_provider": "together_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.000015, "reasoning_effort_levels": [ @@ -51519,22 +56660,12 @@ "supports_tool_choice": true, "supports_vision": true }, - "together_ai/nvidia/Llama-3.1-Nemotron-70B-Instruct-HF": { - "deprecation_date": "2025-08-28", - "input_cost_per_token": 8.8e-7, - "litellm_provider": "together_ai", - "max_input_tokens": 32768, - "max_tokens": 32768, - "mode": "chat", - "output_cost_per_token": 8.8e-7, - "source": "https://api.together.ai/v1/models" - }, "together_ai/nvidia/NVIDIA-Nemotron-3.5-Super-VL": { "cache_read_input_token_cost": 2e-8, "input_cost_per_token": 1.5e-7, "litellm_provider": "together_ai", "max_input_tokens": 262144, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://api.together.ai/v1/models", @@ -51548,6 +56679,7 @@ }, "together_ai/nvidia/NVIDIA-Nemotron-Nano-9B-v2": { "deprecation_date": "2026-02-25", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 6e-8, "output_cost_per_token": 2.5e-7, "litellm_provider": "together_ai", @@ -51558,10 +56690,11 @@ "together_ai/nvidia/nemotron-3-ultra-550b-a55b": { "cache_read_input_token_cost": 2e-7, "deprecation_date": "2026-08-27", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 6e-7, "litellm_provider": "together_ai", "max_input_tokens": 512288, - "max_tokens": 512288, + "max_output_tokens": 512288, "mode": "chat", "output_cost_per_token": 0.0000036, "source": "https://api.together.ai/v1/models" @@ -51570,7 +56703,7 @@ "input_cost_per_token": 1.5e-7, "litellm_provider": "together_ai", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 6e-7, "source": "https://api.together.ai/v1/models", @@ -51582,20 +56715,22 @@ }, "together_ai/openai/gpt-oss-20b": { "deprecation_date": "2026-09-15", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 5e-8, "litellm_provider": "together_ai", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 2e-7, - "source": "https://api.together.ai/v1/models" + "source": "https://api.together.ai/v1/models", + "successor_model": "together_ai/Qwen/Qwen3.5-9B" }, "together_ai/reflection/Beam-1.0-501B-A23B": { "cache_read_input_token_cost": 4e-8, "input_cost_per_token": 4e-7, "litellm_provider": "together_ai", "max_input_tokens": 1048576, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://api.together.ai/v1/models", @@ -51605,13 +56740,16 @@ }, "together_ai/thinkingmachines/Inkling": { "cache_read_input_token_cost": 1.7e-7, + "deprecation_date": "2026-11-06", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 0.000001, "litellm_provider": "together_ai", "max_input_tokens": 524288, - "max_tokens": 524288, + "max_output_tokens": 524288, "mode": "chat", "output_cost_per_token": 0.00000405, "source": "https://api.together.ai/v1/models", + "successor_model": "together_ai/meta-models/Muse-Spark-Open-816B-A42B", "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_prompt_caching": true, @@ -51635,10 +56773,11 @@ }, "together_ai/zai-org/GLM-4.5-Air-FP8": { "deprecation_date": "2026-04-02", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 2e-7, "litellm_provider": "together_ai", "max_input_tokens": 131072, - "max_tokens": 131072, + "max_output_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000011, "source": "https://api.together.ai/v1/models" @@ -51647,7 +56786,7 @@ "input_cost_per_token": 6e-7, "litellm_provider": "together_ai", "max_input_tokens": 202752, - "max_tokens": 202752, + "max_output_tokens": 202752, "metadata": { "successor": "together_ai/zai-org/GLM-5.2" }, @@ -51661,20 +56800,22 @@ }, "together_ai/zai-org/GLM-4.7": { "deprecation_date": "2026-04-02", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 4.5e-7, "litellm_provider": "together_ai", "max_input_tokens": 202752, - "max_tokens": 202752, + "max_output_tokens": 202752, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://api.together.ai/v1/models" }, "together_ai/zai-org/GLM-5": { "deprecation_date": "2026-06-22", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 0.000001, "litellm_provider": "together_ai", "max_input_tokens": 202752, - "max_tokens": 202752, + "max_output_tokens": 202752, "mode": "chat", "output_cost_per_token": 0.0000032, "source": "https://api.together.ai/v1/models" @@ -51682,10 +56823,11 @@ "together_ai/zai-org/GLM-5.1": { "cache_read_input_token_cost": 2.6e-7, "deprecation_date": "2026-07-10", + "deprecation_source": "https://docs.together.ai/docs/deprecations", "input_cost_per_token": 0.0000014, "litellm_provider": "together_ai", "max_input_tokens": 202752, - "max_tokens": 202752, + "max_output_tokens": 202752, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://api.together.ai/v1/models" @@ -51696,7 +56838,6 @@ "litellm_provider": "together_ai", "max_input_tokens": 1048575, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://api.together.ai/v1/models", @@ -51713,7 +56854,6 @@ "litellm_provider": "together_ai", "max_input_tokens": 1048575, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://api.together.ai/v1/models", @@ -51730,7 +56870,6 @@ "litellm_provider": "together_ai", "max_input_tokens": 1048575, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://api.together.ai/v1/models", @@ -51743,10 +56882,13 @@ "supports_vision": true }, "twelvelabs.pegasus-1-2-v1:0": { + "deprecation_date": "2027-03-22", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-twelvelabs-pegasus-v1-2.md", "input_cost_per_video_per_second": 0.00049, "output_cost_per_token": 0.0000075, "litellm_provider": "bedrock", "mode": "chat", + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-twelvelabs-pegasus-v1-2.md", "supports_video_input": true }, "twelvelabs.pegasus-1-5-v1:0": { @@ -51754,7 +56896,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 261120, "max_output_tokens": 98304, - "max_tokens": 98304, "mode": "chat", "output_cost_per_token": 0.0000075, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-twelvelabs-pegasus-v1-5.html", @@ -51768,7 +56909,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00006, "supports_adaptive_thinking": true, @@ -51787,12 +56927,18 @@ "supports_vision": true, "supports_xhigh_reasoning_effort": true, "supports_native_structured_output": false, + "supports_bedrock_native_structured_output": false, "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, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-fable-5-1", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "us-gov.anthropic.claude-haiku-5-5": { "input_cost_per_token_above_100k_tokens": 6e-7, @@ -51810,7 +56956,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 6e-7, "supports_forced_tool_use": true, @@ -51834,7 +56979,12 @@ "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, - "supports_xhigh_reasoning_effort": true + "supports_xhigh_reasoning_effort": true, + "token_count_model": { + "model": "anthropic.claude-haiku-5-5", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "us-gov.anthropic.claude-opus-4-8": { "bedrock_converse_supports_strict_tools": false, @@ -51847,7 +56997,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "prompt_cache_min_tokens": 1024, @@ -51869,7 +57018,12 @@ "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, - "supports_xhigh_reasoning_effort": true + "supports_xhigh_reasoning_effort": true, + "token_count_model": { + "model": "anthropic.claude-opus-4-8", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "us-gov.anthropic.claude-opus-5": { "bedrock_converse_supports_strict_tools": false, @@ -51881,11 +57035,10 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00003, "prompt_cache_min_tokens": 512, - "source": "https://aws.amazon.com/bedrock/pricing/", + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/us-gov-west-1/index.json", "supports_adaptive_thinking": true, "supports_assistant_prefill": false, "supports_computer_use": true, @@ -51902,7 +57055,14 @@ "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, - "supports_xhigh_reasoning_effort": true + "supports_xhigh_reasoning_effort": true, + "token_count_model": { + "model": "anthropic.claude-opus-5", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + }, + "input_cost_per_token_batches": 0.000003, + "output_cost_per_token_batches": 0.000015 }, "us-gov.anthropic.claude-opus-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -51914,7 +57074,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000024, "prompt_cache_min_tokens": 512, @@ -51926,6 +57085,7 @@ "supports_max_reasoning_effort": true, "supports_mid_conversation_system": true, "supports_native_structured_output": false, + "supports_bedrock_native_structured_output": false, "supports_output_config": true, "supports_parallel_tool_use_config": true, "supports_pdf_input": true, @@ -51937,7 +57097,12 @@ "supports_vision": true, "supports_xhigh_reasoning_effort": true, "thinking_always_on": true, - "supports_forced_tool_use": false + "supports_forced_tool_use": false, + "token_count_model": { + "model": "anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "us-gov.anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.0000045, @@ -51949,11 +57114,13 @@ "cache_creation_input_token_cost_above_200k_tokens": 0.000009, "cache_creation_input_token_cost_above_1hr_above_200k_tokens": 0.0000144, "cache_read_input_token_cost_above_200k_tokens": 7.2e-7, + "deprecation_date": "2027-04-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-4-5.md", + "successor_model": "us-gov.anthropic.claude-sonnet-5-5", "litellm_provider": "bedrock_converse", "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000018, "supports_assistant_prefill": true, @@ -51968,7 +57135,11 @@ "supports_native_structured_output": true, "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-4-5.md", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-5-20250929-v1:0", + "litellm_provider": "bedrock" + } }, "us-gov.anthropic.claude-sonnet-5": { "bedrock_converse_supports_strict_tools": false, @@ -51981,7 +57152,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "prompt_cache_min_tokens": 1024, @@ -52003,7 +57173,12 @@ "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, - "supports_xhigh_reasoning_effort": true + "supports_xhigh_reasoning_effort": true, + "token_count_model": { + "model": "anthropic.claude-sonnet-5", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "us-gov.anthropic.claude-sonnet-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -52016,7 +57191,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000012, "supports_forced_tool_use": false, @@ -52040,15 +57214,20 @@ "supports_sampling_params": false, "supports_tool_choice": true, "supports_vision": true, - "supports_xhigh_reasoning_effort": true + "supports_xhigh_reasoning_effort": true, + "token_count_model": { + "model": "anthropic.claude-sonnet-5-5", + "litellm_provider": "bedrock_mantle", + "region": "us-gov-west-1" + } }, "us-gov.nvidia.nemotron-nano-12b-v2": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-nvidia-nvidia-nemotron-nano-12b-v2-vl-bf16.html", "input_cost_per_token": 2.4e-7, "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-nvidia-nvidia-nemotron-nano-12b-v2-vl-bf16.html", @@ -52063,7 +57242,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 262144, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 2.88e-7, "source": "https://aws.amazon.com/bedrock/pricing/", @@ -52077,11 +57255,11 @@ }, "us-gov.nvidia.nemotron-nano-9b-v2": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-nvidia-nvidia-nemotron-nano-9b-v2.html", "input_cost_per_token": 7.2e-8, "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 2.76e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-nvidia-nvidia-nemotron-nano-9b-v2.html", @@ -52096,7 +57274,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 256000, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 7.8e-7, "source": "https://aws.amazon.com/bedrock/pricing/", @@ -52109,11 +57286,11 @@ "supports_vision": false }, "us-gov.openai.gpt-oss-120b-1:0": { + "supports_vision": false, "input_cost_per_token": 1.8e-7, "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-oss-120b.html", @@ -52128,11 +57305,11 @@ "supports_tool_choice": true }, "us-gov.openai.gpt-oss-20b-1:0": { + "supports_vision": false, "input_cost_per_token": 8.4e-8, "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 3.6e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-oss-20b.html", @@ -52159,7 +57336,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 500000, "max_output_tokens": 500000, - "max_tokens": 500000, "mode": "chat", "supports_function_calling": true, "supports_prompt_caching": false, @@ -52178,7 +57354,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.00000275, "output_cost_per_token_batches": 0.000001375, @@ -52204,7 +57379,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000011, "output_cost_per_token_batches": 0.0000055, @@ -52226,7 +57400,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 300000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 2.4e-7, "output_cost_per_token_batches": 1.2e-7, @@ -52245,7 +57418,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 1.4e-7, "output_cost_per_token_batches": 7e-8, @@ -52266,7 +57438,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 300000, "max_output_tokens": 10000, - "max_tokens": 10000, "mode": "chat", "output_cost_per_token": 0.0000032, "output_cost_per_token_batches": 0.0000016, @@ -52287,7 +57458,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000004, "supports_assistant_prefill": true, @@ -52303,7 +57473,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000015, "supports_function_calling": true, @@ -52321,7 +57490,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -52340,7 +57508,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -52358,7 +57525,6 @@ "litellm_provider": "bedrock", "max_input_tokens": 200000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000075, "supports_function_calling": true, @@ -52376,7 +57542,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000055, "search_context_cost_per_query": { @@ -52404,7 +57569,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 512, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-fable-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "us.anthropic.claude-fable-5-1": { "cache_creation_input_token_cost": 0.00001375, @@ -52414,7 +57584,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000055, "search_context_cost_per_query": { @@ -52454,7 +57623,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000055, "source": "https://aws.amazon.com/bedrock/pricing/", @@ -52471,7 +57639,11 @@ "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, "input_cost_per_token_batches": 5.5e-7, - "output_cost_per_token_batches": 0.00000275 + "output_cost_per_token_batches": 0.00000275, + "token_count_model": { + "model": "anthropic.claude-haiku-4-5-20251001-v1:0", + "litellm_provider": "bedrock" + } }, "us.anthropic.claude-haiku-5-5": { "input_cost_per_token_above_100k_tokens": 5.5e-7, @@ -52487,12 +57659,12 @@ "litellm_provider": "bedrock_converse", "token_count_model": { "model": "us.anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", "region": "us-east-1" }, "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5.5e-7, "search_context_cost_per_query": { @@ -52528,7 +57700,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supports_adaptive_thinking": true, "thinking_always_on": true, @@ -52555,13 +57726,17 @@ "cache_read_input_token_cost": 0.0000011, "output_cost_per_token": 0.000055, "cache_creation_input_token_cost_above_1hr": 0.000022, - "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/index.json", + "token_count_model": { + "model": "anthropic.claude-mythos-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "us.anthropic.claude-mythos-5-1": { "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supports_adaptive_thinking": true, "thinking_always_on": true, @@ -52594,7 +57769,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "thinking_always_on": true, "supports_function_calling": true, @@ -52614,11 +57788,11 @@ "cache_creation_input_token_cost": 0.00001875, "cache_read_input_token_cost": 0.0000015, "deprecation_date": "2027-01-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 0.000015, "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000075, "search_context_cost_per_query": { @@ -52636,7 +57810,11 @@ "supports_tool_choice": true, "supports_vision": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-1-20250805-v1:0", + "litellm_provider": "bedrock" + } }, "us.anthropic.claude-opus-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00001875, @@ -52645,7 +57823,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000075, "search_context_cost_per_query": { @@ -52673,7 +57850,6 @@ "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -52695,7 +57871,11 @@ "bedrock_output_config_effort_ceiling": "high", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-5-20251101-v1:0", + "litellm_provider": "bedrock" + } }, "us.anthropic.claude-opus-4-6-v1": { "supports_adaptive_thinking": true, @@ -52708,7 +57888,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -52731,7 +57910,11 @@ "bedrock_output_config_effort_ceiling": "max", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 4096, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-6-v1", + "litellm_provider": "bedrock" + } }, "us.anthropic.claude-opus-4-7": { "bedrock_converse_supports_strict_tools": false, @@ -52744,7 +57927,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -52769,7 +57951,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 2048, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-7", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "us.anthropic.claude-opus-4-8": { "bedrock_converse_supports_strict_tools": false, @@ -52783,7 +57970,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -52809,7 +57995,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-opus-4-8", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "us.anthropic.claude-opus-5": { "bedrock_converse_supports_strict_tools": false, @@ -52823,7 +58014,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000275, "search_context_cost_per_query": { @@ -52847,7 +58037,14 @@ "supports_output_config": true, "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 512, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrockFoundationModels/current/us-east-1/index.json", + "token_count_model": { + "model": "anthropic.claude-opus-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + }, + "input_cost_per_token_batches": 0.00000275, + "output_cost_per_token_batches": 0.00001375 }, "us.anthropic.claude-opus-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -52861,7 +58058,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000022, "search_context_cost_per_query": { @@ -52887,12 +58083,19 @@ "prompt_cache_min_tokens": 512, "source": "https://aws.amazon.com/bedrock/pricing/", "thinking_always_on": true, - "supports_forced_tool_use": false + "supports_forced_tool_use": false, + "token_count_model": { + "model": "anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "us.anthropic.claude-sonnet-4-20250514-v1:0": { "cache_creation_input_token_cost": 0.00000375, "cache_read_input_token_cost": 3e-7, "deprecation_date": "2026-10-14", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "successor_model": "us.anthropic.claude-sonnet-5", "input_cost_per_token": 0.000003, "input_cost_per_token_above_200k_tokens": 0.000006, "output_cost_per_token_above_200k_tokens": 0.0000225, @@ -52901,7 +58104,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "search_context_cost_per_query": { @@ -52920,7 +58122,11 @@ "supports_vision": true, "bedrock_converse_supports_strict_tools": false, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-20250514-v1:0", + "litellm_provider": "bedrock" + } }, "us.anthropic.claude-sonnet-4-5-20250929-v1:0": { "cache_creation_input_token_cost": 0.000004125, @@ -52933,11 +58139,12 @@ "cache_creation_input_token_cost_above_1hr_above_200k_tokens": 0.0000132, "cache_read_input_token_cost_above_200k_tokens": 6.6e-7, "deprecation_date": "2027-04-08", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "successor_model": "us.anthropic.claude-sonnet-5-5", "litellm_provider": "bedrock_converse", "supports_tool_search": true, "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000165, "search_context_cost_per_query": { @@ -52959,7 +58166,11 @@ "prompt_cache_min_tokens": 1024, "input_cost_per_token_batches": 0.00000165, "output_cost_per_token_batches": 0.00000825, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-5-20250929-v1:0", + "litellm_provider": "bedrock" + } }, "us.anthropic.claude-sonnet-4-6": { "supports_adaptive_thinking": true, @@ -52972,7 +58183,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000165, "search_context_cost_per_query": { @@ -52994,7 +58204,11 @@ "supports_output_config": true, "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-4-6", + "litellm_provider": "bedrock" + } }, "us.anthropic.claude-sonnet-5": { "bedrock_converse_supports_strict_tools": false, @@ -53006,7 +58220,6 @@ "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000011, "search_context_cost_per_query": { @@ -53034,7 +58247,12 @@ "bedrock_output_config_effort_ceiling": "xhigh", "supports_parallel_tool_use_config": true, "prompt_cache_min_tokens": 1024, - "source": "https://aws.amazon.com/bedrock/pricing/" + "source": "https://aws.amazon.com/bedrock/pricing/", + "token_count_model": { + "model": "anthropic.claude-sonnet-5", + "litellm_provider": "bedrock_mantle", + "region": "us-east-1" + } }, "us.anthropic.claude-sonnet-5-5": { "bedrock_converse_supports_strict_tools": false, @@ -53045,12 +58263,12 @@ "litellm_provider": "bedrock_converse", "token_count_model": { "model": "us.anthropic.claude-opus-5-5", + "litellm_provider": "bedrock_mantle", "region": "us-east-1" }, "supports_tool_search": true, "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000011, "search_context_cost_per_query": { @@ -53084,11 +58302,11 @@ }, "us.deepseek.r1-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-r1.html", "input_cost_per_token": 0.00000135, "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000054, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-deepseek-deepseek-r1.html", @@ -53104,7 +58322,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 163840, "max_output_tokens": 163840, - "max_tokens": 163840, "mode": "chat", "output_cost_per_token": 0.00000185, "output_cost_per_token_batches": 9.25e-7, @@ -53121,11 +58338,11 @@ }, "us.meta.llama3-1-405b-instruct-v1:0": { "deprecation_date": "2026-07-07", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 0.0000024, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.0000024, "source": "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/bedrock/USD/current/bedrock.json", @@ -53134,12 +58351,12 @@ }, "us.meta.llama3-1-70b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 7.2e-7, "input_cost_per_token_batches": 3.6e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 7.2e-7, "output_cost_per_token_batches": 3.6e-7, @@ -53149,12 +58366,12 @@ }, "us.meta.llama3-1-8b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 2.2e-7, "input_cost_per_token_batches": 1.1e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 2.2e-7, "output_cost_per_token_batches": 1.1e-7, @@ -53164,11 +58381,11 @@ }, "us.meta.llama3-2-11b-instruct-v1:0": { "deprecation_date": "2026-07-07", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 1.6e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 1.6e-7, "source": "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/bedrock/USD/current/bedrock.json", @@ -53178,11 +58395,11 @@ }, "us.meta.llama3-2-1b-instruct-v1:0": { "deprecation_date": "2026-07-07", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-2-1b-instruct.md", "input_cost_per_token": 1e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 1e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-2-1b-instruct.md", @@ -53191,11 +58408,11 @@ }, "us.meta.llama3-2-3b-instruct-v1:0": { "deprecation_date": "2026-07-07", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-2-3b-instruct.md", "input_cost_per_token": 1.5e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 1.5e-7, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-3-2-3b-instruct.md", @@ -53204,11 +58421,11 @@ }, "us.meta.llama3-2-90b-instruct-v1:0": { "deprecation_date": "2026-07-07", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 7.2e-7, "litellm_provider": "bedrock", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 7.2e-7, "source": "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/bedrock/USD/current/bedrock.json", @@ -53218,12 +58435,12 @@ }, "us.meta.llama3-3-70b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 7.2e-7, "input_cost_per_token_batches": 3.6e-7, "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 7.2e-7, "output_cost_per_token_batches": 3.6e-7, @@ -53233,12 +58450,12 @@ }, "us.meta.llama4-maverick-17b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-4-maverick-17b-instruct.md", "input_cost_per_token": 2.4e-7, "input_cost_per_token_batches": 1.2e-7, "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 9.7e-7, "output_cost_per_token_batches": 4.85e-7, @@ -53256,12 +58473,12 @@ }, "us.meta.llama4-scout-17b-instruct-v1:0": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-meta-llama-4-scout-17b-instruct.md", "input_cost_per_token": 1.7e-7, "input_cost_per_token_batches": 8.5e-8, "litellm_provider": "bedrock_converse", "max_input_tokens": 10000000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 6.6e-7, "output_cost_per_token_batches": 3.3e-7, @@ -53282,7 +58499,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-mistral-ai-pixtral-large.md", @@ -53305,7 +58521,6 @@ "token_count_tokenizer": "kimi_k3", "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000165, "output_cost_per_token_flex": 0.00000825, @@ -53330,9 +58545,8 @@ "output_cost_per_token_above_272k_tokens": 0.00002475, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-54.html", "supported_modalities": [ @@ -53362,9 +58576,8 @@ "output_cost_per_token_above_272k_tokens": 0.0000495, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-55.html", "supported_modalities": [ @@ -53397,9 +58610,8 @@ "output_cost_per_token_above_272k_tokens": 0.00000198, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-56-luna.html", "supported_modalities": [ @@ -53434,9 +58646,8 @@ "output_cost_per_token_above_272k_tokens": 0.000033, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-56-sol.html", "supported_modalities": [ @@ -53471,9 +58682,8 @@ "output_cost_per_token_above_272k_tokens": 0.0000198, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-56-terra.html", "supported_modalities": [ @@ -53514,9 +58724,8 @@ "output_cost_per_token_above_272k_tokens": 0.0000825, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token_above_272k_tokens_ultrafast": 0.000495, "output_cost_per_token_ultrafast": 0.00033, @@ -53555,9 +58764,8 @@ "output_cost_per_token_above_272k_tokens": 8.25e-7, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supported_modalities": [ "text", @@ -53594,9 +58802,8 @@ "output_cost_per_token_above_272k_tokens": 0.0000165, "litellm_provider": "bedrock_converse", "supports_bedrock_converse_tool_result_images": false, - "max_input_tokens": 1050000, + "max_input_tokens": 922000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "supported_modalities": [ "text", @@ -53638,7 +58845,6 @@ "supports_bedrock_converse_tool_result_images": false, "max_input_tokens": 1000000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000011, "output_cost_per_token_above_272k_tokens": 0.0000165, @@ -53668,11 +58874,52 @@ "supports_sampling_params": false, "supports_xhigh_reasoning_effort": true }, + "us.openai.gpt-6.1-terra": { + "cache_creation_input_token_cost": 0.000001375, + "cache_creation_input_token_cost_above_272k_tokens": 0.00000275, + "cache_read_input_token_cost": 5.5e-8, + "cache_read_input_token_cost_above_272k_tokens": 1.1e-7, + "input_cost_per_token": 0.0000011, + "input_cost_per_token_above_272k_tokens": 0.0000022, + "litellm_provider": "bedrock_converse", + "max_input_tokens": 922000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000055, + "output_cost_per_token_above_272k_tokens": 0.00000825, + "source": "https://developers.openai.com/api/docs/models/gpt-6.1-terra", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_bedrock_converse_tool_result_images": false, + "supports_bedrock_runtime_chat_completions_response_format": true, + "supports_function_calling": true, + "supports_max_reasoning_effort": true, + "supports_minimal_reasoning_effort": false, + "supports_none_reasoning_effort": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_sampling_params": false, + "supports_tool_choice": true, + "supports_vision": true, + "supports_xhigh_reasoning_effort": true + }, "us.twelvelabs.pegasus-1-2-v1:0": { + "deprecation_date": "2027-03-22", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-twelvelabs-pegasus-v1-2.md", "input_cost_per_video_per_second": 0.00049, "output_cost_per_token": 0.0000075, "litellm_provider": "bedrock", "mode": "chat", + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-twelvelabs-pegasus-v1-2.md", "supports_video_input": true }, "us.twelvelabs.pegasus-1-5-v1:0": { @@ -53680,30 +58927,31 @@ "litellm_provider": "bedrock", "max_input_tokens": 261120, "max_output_tokens": 98304, - "max_tokens": 98304, "mode": "chat", "output_cost_per_token": 0.0000075, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-twelvelabs-pegasus-v1-5.html", "supports_video_input": true }, "us.writer.palmyra-x4-v1:0": { + "deprecation_date": "2027-03-09", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-writer-palmyra-x4.md", "input_cost_per_token": 0.0000025, "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00001, - "source": "https://aws.amazon.com/bedrock/pricing/", + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-writer-palmyra-x4.md", "supports_function_calling": true, "supports_pdf_input": true }, "us.writer.palmyra-x5-v1:0": { + "deprecation_date": "2027-03-21", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-writer-palmyra-x5.md", "input_cost_per_token": 6e-7, "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-writer-palmyra-x5.md", @@ -53727,7 +58975,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 500000, "max_output_tokens": 500000, - "max_tokens": 500000, "mode": "chat", "output_cost_per_token_flex": 0.0000033, "output_cost_per_token_priority": 0.00001155, @@ -53754,7 +59001,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 524288, "max_output_tokens": 524288, - "max_tokens": 524288, "mode": "chat", "output_cost_per_token": 0.0000066, "output_cost_per_token_flex": 0.0000033, @@ -53782,7 +59028,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000005808, "output_cost_per_token_batches": 0.000002904, @@ -53804,7 +59049,6 @@ "litellm_provider": "v0", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_function_calling": true, @@ -53818,7 +59062,6 @@ "litellm_provider": "v0", "max_input_tokens": 512000, "max_output_tokens": 512000, - "max_tokens": 512000, "mode": "chat", "output_cost_per_token": 0.000075, "supports_function_calling": true, @@ -53832,7 +59075,6 @@ "litellm_provider": "v0", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_function_calling": true, @@ -53846,7 +59088,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 40960, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 2.4e-7 }, @@ -53855,7 +59096,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 40960, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6e-7 }, @@ -53864,7 +59104,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 40960, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 3e-7 }, @@ -53873,7 +59112,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 40960, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -53884,7 +59122,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 262144, "max_output_tokens": 66536, - "max_tokens": 66536, "mode": "chat", "output_cost_per_token": 0.0000016, "supports_function_calling": true, @@ -53895,7 +59132,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 300000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 2.4e-7, "supports_vision": true, @@ -53907,7 +59143,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 1.4e-7, "supports_function_calling": true, @@ -53918,7 +59153,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 300000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000032, "supports_vision": true, @@ -53930,7 +59164,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 0, "max_output_tokens": 0, - "max_tokens": 0, "mode": "chat", "output_cost_per_token": 0 }, @@ -53941,7 +59174,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -53959,7 +59191,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -53977,7 +59208,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -53996,7 +59226,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00000125, "supports_vision": true, @@ -54011,7 +59240,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000075, "supports_vision": true, @@ -54026,7 +59254,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000004, "supports_vision": true, @@ -54041,7 +59268,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000015, "supports_vision": true, @@ -54056,7 +59282,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_vision": true, @@ -54071,7 +59296,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000075, "supports_vision": true, @@ -54086,7 +59310,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_function_calling": true, @@ -54099,7 +59322,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000005, "supports_assistant_prefill": true, @@ -54119,7 +59341,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000075, "supports_assistant_prefill": true, @@ -54139,7 +59360,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000075, "supports_assistant_prefill": true, @@ -54159,7 +59379,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000025, "supports_assistant_prefill": true, @@ -54182,7 +59401,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000025, "supports_assistant_prefill": false, @@ -54203,7 +59421,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -54223,7 +59440,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -54240,7 +59456,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 256000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.00001, "supports_function_calling": true, @@ -54252,7 +59467,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 6e-7, "supports_function_calling": true, @@ -54263,7 +59477,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00001, "supports_function_calling": true, @@ -54274,7 +59487,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 0, "max_output_tokens": 0, - "max_tokens": 0, "mode": "chat", "output_cost_per_token": 0 }, @@ -54283,7 +59495,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00000219, "supports_tool_choice": true @@ -54293,7 +59504,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 9.9e-7, "supports_function_calling": true, @@ -54305,7 +59515,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 9e-7, "supports_tool_choice": true @@ -54315,7 +59524,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 1000000, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.0000025, "supports_vision": true, @@ -54334,7 +59542,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_token": 0.00001, "supports_vision": true, @@ -54355,7 +59562,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 2e-7, "supports_vision": true, @@ -54367,7 +59573,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 32000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.000001 }, @@ -54376,7 +59581,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 7.9e-7, "supports_tool_choice": true @@ -54386,7 +59590,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 8192, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 8e-8, "supports_tool_choice": true @@ -54396,7 +59599,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 7.2e-7, "supports_tool_choice": true @@ -54406,7 +59608,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 131000, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 8e-8, "supports_function_calling": true, @@ -54417,7 +59618,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 1.6e-7, "supports_vision": true, @@ -54429,7 +59629,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 1e-7 }, @@ -54438,7 +59637,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 1.5e-7, "supports_function_calling": true, @@ -54449,7 +59647,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 7.2e-7, "supports_vision": true, @@ -54461,7 +59658,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 7.2e-7, "supports_function_calling": true, @@ -54472,7 +59668,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 131072, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 6e-7, "supports_tool_choice": true @@ -54482,7 +59677,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 131072, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 3e-7, "supports_vision": true, @@ -54494,7 +59688,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 256000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 9e-7, "supports_function_calling": true, @@ -54505,7 +59698,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 0, "max_output_tokens": 0, - "max_tokens": 0, "mode": "chat", "output_cost_per_token": 0 }, @@ -54514,7 +59706,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 2.8e-7, "supports_function_calling": true, @@ -54526,7 +59717,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000005, "supports_function_calling": true, @@ -54538,7 +59728,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000015, "supports_function_calling": true @@ -54548,7 +59737,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 4e-8, "supports_function_calling": true, @@ -54559,7 +59747,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 1e-7, "supports_vision": true, @@ -54571,7 +59758,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 0, "max_output_tokens": 0, - "max_tokens": 0, "mode": "chat", "output_cost_per_token": 0 }, @@ -54580,7 +59766,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 32000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 0.000006, "supports_function_calling": true, @@ -54591,7 +59776,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 7.9e-7 }, @@ -54600,7 +59784,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 32000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -54612,7 +59795,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 65536, "max_output_tokens": 2048, - "max_tokens": 2048, "mode": "chat", "output_cost_per_token": 0.0000012, "supports_function_calling": true @@ -54622,7 +59804,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 1.5e-7, "supports_vision": true, @@ -54635,7 +59816,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 0.000006, "supports_vision": true, @@ -54648,7 +59828,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000022, "supports_function_calling": true, @@ -54659,7 +59838,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 32768, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000012 }, @@ -54668,7 +59846,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 32768, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.0000019 }, @@ -54677,7 +59854,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 16385, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.0000015, "supports_function_calling": true, @@ -54688,7 +59864,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 8192, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000002 }, @@ -54697,7 +59872,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00003, "supports_vision": true, @@ -54711,7 +59885,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000008, "supports_vision": true, @@ -54726,7 +59899,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000016, "supports_vision": true, @@ -54741,7 +59913,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 1047576, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 4e-7, "supports_vision": true, @@ -54756,7 +59927,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "supports_vision": true, @@ -54771,7 +59941,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 6e-7, "supports_vision": true, @@ -54786,7 +59955,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.00006, "supports_vision": true, @@ -54801,7 +59969,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.000008, "supports_vision": true, @@ -54816,7 +59983,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.0000044, "supports_function_calling": true, @@ -54830,7 +59996,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 100000, - "max_tokens": 100000, "mode": "chat", "output_cost_per_token": 0.0000044, "supports_vision": true, @@ -54843,7 +60008,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 127000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.000001 }, @@ -54852,7 +60016,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 200000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.000015 }, @@ -54861,7 +60024,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 127000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.000005 }, @@ -54870,7 +60032,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 127000, "max_output_tokens": 8000, - "max_tokens": 8000, "mode": "chat", "output_cost_per_token": 0.000008 }, @@ -54879,7 +60040,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_vision": true, @@ -54891,7 +60051,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.000015, "supports_vision": true, @@ -54903,7 +60062,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 131072, "max_output_tokens": 4000, - "max_tokens": 4000, "mode": "chat", "output_cost_per_token": 0.00001, "supports_function_calling": true, @@ -54914,7 +60072,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.00001, "supports_vision": true, @@ -54926,7 +60083,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000015, "supports_function_calling": true, @@ -54937,7 +60093,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000025, "supports_function_calling": true @@ -54947,7 +60102,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 5e-7, "supports_function_calling": true, @@ -54958,7 +60112,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.000004, "supports_function_calling": true, @@ -54969,7 +60122,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000015, "supports_function_calling": true, @@ -54980,7 +60132,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 131072, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 0.0000022, "supports_function_calling": true, @@ -54991,7 +60142,6 @@ "litellm_provider": "vercel_ai_gateway", "max_input_tokens": 128000, "max_output_tokens": 96000, - "max_tokens": 96000, "mode": "chat", "output_cost_per_token": 0.0000011, "supports_function_calling": true, @@ -55003,7 +60153,6 @@ "input_cost_per_token": 4.5e-7, "max_input_tokens": 200000, "max_output_tokens": 200000, - "max_tokens": 200000, "mode": "chat", "output_cost_per_token": 0.0000018, "source": "https://vercel.com/ai-gateway/models/glm-4.6", @@ -55017,7 +60166,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000005, "supports_assistant_prefill": true, @@ -55031,7 +60179,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000005, "supports_assistant_prefill": true, @@ -55045,7 +60192,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -55061,7 +60207,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -55076,7 +60221,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00000125, "supports_assistant_prefill": true, @@ -55090,7 +60234,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.00000125, "supports_assistant_prefill": true, @@ -55098,40 +60241,11 @@ "supports_tool_choice": true, "supports_vision": true }, - "vertex_ai/claude-3-opus": { - "deprecation_date": "2025-08-01", - "input_cost_per_token": 0.000015, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.000075, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, - "vertex_ai/claude-3-opus@20240229": { - "deprecation_date": "2025-08-01", - "input_cost_per_token": 0.000015, - "litellm_provider": "vertex_ai-anthropic_models", - "max_input_tokens": 200000, - "max_output_tokens": 4096, - "max_tokens": 4096, - "mode": "chat", - "output_cost_per_token": 0.000075, - "supports_assistant_prefill": true, - "supports_function_calling": true, - "supports_tool_choice": true, - "supports_vision": true - }, "vertex_ai/claude-3-sonnet": { "input_cost_per_token": 0.000003, "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -55144,7 +60258,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 0.000015, "supports_assistant_prefill": true, @@ -55166,7 +60279,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "output_cost_per_token_batches": 0.000025, @@ -55204,7 +60316,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "search_context_cost_per_query": { @@ -55246,7 +60357,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "search_context_cost_per_query": { @@ -55290,7 +60400,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00005, "output_cost_per_token_batches": 0.000025, @@ -55318,6 +60427,7 @@ }, "vertex_ai/claude-haiku-4-5": { "deprecation_date": "2026-10-15", + "successor_model": "vertex_ai/claude-haiku-5-5", "cache_creation_input_token_cost": 0.00000125, "cache_creation_input_token_cost_above_1hr": 0.000002, "cache_creation_input_token_cost_batches": 6.25e-7, @@ -55328,8 +60438,12 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "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 + }, "output_cost_per_token": 0.000005, "output_cost_per_token_batches": 0.0000025, "regional_endpoint_uplift_multiplier": 1.1, @@ -55357,8 +60471,12 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "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 + }, "output_cost_per_token": 0.000005, "output_cost_per_token_batches": 0.0000025, "regional_endpoint_uplift_multiplier": 1.1, @@ -55392,7 +60510,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "output_cost_per_token_batches": 2.5e-7, @@ -55437,7 +60554,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "output_cost_per_token_batches": 2.5e-7, @@ -55466,6 +60582,7 @@ }, "vertex_ai/claude-opus-4-5": { "deprecation_date": "2026-11-24", + "successor_model": "vertex_ai/claude-opus-5-5", "cache_creation_input_token_cost": 0.00000625, "cache_creation_input_token_cost_above_1hr": 0.00001, "cache_creation_input_token_cost_batches": 0.000003125, @@ -55476,7 +60593,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000025, "output_cost_per_token_batches": 0.0000125, @@ -55511,7 +60627,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000025, "output_cost_per_token_batches": 0.0000125, @@ -55550,7 +60665,6 @@ "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, "output_cost_per_token_batches": 0.0000125, @@ -55588,7 +60702,6 @@ "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, "output_cost_per_token_batches": 0.0000125, @@ -55625,7 +60738,6 @@ "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, "output_cost_per_token_batches": 0.0000125, @@ -55663,7 +60775,6 @@ "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, "output_cost_per_token_batches": 0.0000125, @@ -55702,7 +60813,6 @@ "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, "output_cost_per_token_batches": 0.0000125, @@ -55741,7 +60851,6 @@ "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, "output_cost_per_token_batches": 0.0000125, @@ -55780,7 +60889,6 @@ "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, "output_cost_per_token_batches": 0.0000125, @@ -55817,7 +60925,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00002, "output_cost_per_token_batches": 0.0000125, @@ -55858,7 +60965,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 1000000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.00002, "output_cost_per_token_batches": 0.0000125, @@ -55901,7 +61007,6 @@ "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, "output_cost_per_token_batches": 0.0000125, @@ -55927,6 +61032,7 @@ }, "vertex_ai/claude-sonnet-4-5": { "deprecation_date": "2026-09-29", + "successor_model": "vertex_ai/claude-sonnet-5-5", "cache_creation_input_token_cost": 0.00000375, "cache_creation_input_token_cost_above_1hr": 0.000006, "cache_creation_input_token_cost_above_1hr_above_200k_tokens": 0.000012, @@ -55941,8 +61047,12 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "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 + }, "output_cost_per_token": 0.000015, "output_cost_per_token_batches": 0.0000075, "regional_endpoint_uplift_multiplier": 1.1, @@ -55975,8 +61085,12 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 200000, "max_output_tokens": 64000, - "max_tokens": 64000, "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 + }, "output_cost_per_token": 0.000015, "output_cost_per_token_batches": 0.0000075, "regional_endpoint_uplift_multiplier": 1.1, @@ -56008,7 +61122,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_batches": 0.0000075, @@ -56045,7 +61158,6 @@ "litellm_provider": "vertex_ai-anthropic_models", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.000015, "output_cost_per_token_batches": 0.0000075, @@ -56080,7 +61192,6 @@ "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, "output_cost_per_token_batches": 0.000005, @@ -56118,7 +61229,6 @@ "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, "output_cost_per_token_batches": 0.000005, @@ -56158,7 +61268,6 @@ "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, "output_cost_per_token_batches": 0.000005, @@ -56197,7 +61306,6 @@ "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, "output_cost_per_token_batches": 0.000005, @@ -56227,7 +61335,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -56239,7 +61346,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 6e-7, "supports_function_calling": true, @@ -56250,7 +61356,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -56262,7 +61367,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 6e-7, "supports_function_calling": true, @@ -56273,7 +61377,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 6e-7, "supports_function_calling": true, @@ -56288,7 +61391,6 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 65536, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_image": 0.134, "output_cost_per_image_token": 0.00012, @@ -56303,7 +61405,6 @@ "litellm_provider": "vertex_ai-deepseek_models", "max_input_tokens": 65336, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.0000054, "output_cost_per_token_batches": 0.0000027, @@ -56313,6 +61414,7 @@ ], "supports_assistant_prefill": false, "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -56325,7 +61427,6 @@ "litellm_provider": "vertex_ai-deepseek_models", "max_input_tokens": 163840, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000017, "output_cost_per_token_batches": 8.5e-7, @@ -56347,7 +61448,6 @@ "litellm_provider": "vertex_ai-deepseek_models", "max_input_tokens": 163840, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.00000168, "output_cost_per_token_batches": 8.4e-7, @@ -56357,6 +61457,7 @@ ], "supports_assistant_prefill": false, "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -56367,7 +61468,6 @@ "litellm_provider": "vertex_ai-deepseek_models", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -56384,6 +61484,8 @@ }, "vertex_ai/gemini-2.0-flash": { "deprecation_date": "2026-06-01", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "successor_model": "vertex_ai/gemini-3.5-flash-lite", "input_cost_per_audio_token": 0.000001, "input_cost_per_audio_token_batches": 5e-7, "input_cost_per_character": 3.75e-8, @@ -56397,6 +61499,8 @@ }, "vertex_ai/gemini-2.0-flash-lite": { "deprecation_date": "2026-06-01", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "successor_model": "vertex_ai/gemini-3.5-flash-lite", "input_cost_per_audio_token": 7.5e-8, "input_cost_per_audio_token_batches": 3.75e-8, "input_cost_per_character": 1.875e-8, @@ -56410,6 +61514,8 @@ }, "vertex_ai/gemini-2.5-flash-image": { "deprecation_date": "2027-03-15", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "successor_model": "vertex_ai/gemini-3.1-flash-lite-image", "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 3e-7, "input_cost_per_token_batches": 1.5e-7, @@ -56417,10 +61523,10 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 32768, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "image_generation", "output_cost_per_image": 0.039, "output_cost_per_image_token": 0.00003, + "output_cost_per_image_token_batches": 0.000015, "output_cost_per_reasoning_token": 0.0000025, "output_cost_per_token": 0.0000025, "output_cost_per_token_batches": 0.00000125, @@ -56460,11 +61566,17 @@ }, "vertex_ai/gemini-3-flash-preview": { "cache_read_input_audio_token_cost": 1e-7, + "cache_read_input_audio_token_cost_priority": 1.8e-7, "cache_read_input_token_cost": 5e-8, "cache_read_input_token_cost_priority": 9e-8, "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_audio_token": 0.000001, + "input_cost_per_audio_token_above_200k_tokens": 0.000001, + "input_cost_per_audio_token_above_200k_tokens_batches": 5e-7, + "input_cost_per_audio_token_above_200k_tokens_flex": 5e-7, + "input_cost_per_audio_token_above_200k_tokens_priority": 0.0000018, "input_cost_per_audio_token_batches": 5e-7, + "input_cost_per_audio_token_flex": 5e-7, "input_cost_per_audio_token_priority": 0.0000018, "input_cost_per_token": 5e-7, "input_cost_per_token_batches": 2.5e-7, @@ -56473,7 +61585,6 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 1048576, "max_output_tokens": 65535, - "max_tokens": 65535, "mode": "chat", "output_cost_per_token": 0.000003, "output_cost_per_token_batches": 0.0000015, @@ -56484,6 +61595,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", "supported_endpoints": [ "/v1/chat/completions", @@ -56500,6 +61616,7 @@ "text" ], "supports_audio_input": true, + "supports_computer_use": true, "supports_function_calling": true, "supports_native_streaming": true, "supports_pdf_input": true, @@ -56515,12 +61632,13 @@ }, "vertex_ai/gemini-3-pro-image": { "cache_read_input_token_cost": 2e-7, + "cache_read_input_token_cost_batches": 1e-7, "cache_read_input_token_cost_above_200k_tokens": 4e-7, "cache_read_input_token_cost_above_200k_tokens_priority": 7.2e-7, - "cache_read_input_token_cost_batches": 1e-7, "cache_read_input_token_cost_flex": 1e-7, "cache_read_input_token_cost_priority": 3.6e-7, "deprecation_date": "2027-05-28", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", "input_cost_per_image": 0.0011, "input_cost_per_token": 0.000002, "input_cost_per_token_above_200k_tokens": 0.000004, @@ -56531,10 +61649,11 @@ "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_image_token_batches": 0.00006, + "output_cost_per_image_token_priority": 0.000216, "output_cost_per_token": 0.000012, "output_cost_per_token_above_200k_tokens": 0.000018, "output_cost_per_token_above_200k_tokens_priority": 0.0000324, @@ -56565,17 +61684,18 @@ "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_image_token_batches": 0.00006, + "output_cost_per_image_token_priority": 0.000216, "output_cost_per_token": 0.000012, "output_cost_per_token_priority": 0.0000216, "output_cost_per_token_above_200k_tokens": 0.000018, "output_cost_per_token_above_200k_tokens_priority": 0.0000324, "output_cost_per_token_batches": 0.000006, "supports_reasoning": false, - "source": "https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-pro-image", + "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", "supported_endpoints": [ "/v1/chat/completions", "/v1/images/generations", @@ -56593,7 +61713,6 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 1048576, "max_output_tokens": 65535, - "max_tokens": 65535, "mode": "chat", "output_cost_per_token": 0.000012, "output_cost_per_token_above_200k_tokens": 0.000018, @@ -56636,6 +61755,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query" }, "vertex_ai/gemini-3.1-flash-image": { @@ -56644,6 +61768,7 @@ "cache_read_input_token_cost_flex": 2.5e-8, "cache_read_input_token_cost_priority": 9e-8, "deprecation_date": "2027-05-28", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", "input_cost_per_image": 0.00056, "input_cost_per_token": 5e-7, "input_cost_per_token_batches": 2.5e-7, @@ -56652,10 +61777,11 @@ "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_image_token_batches": 0.00003, + "output_cost_per_image_token_priority": 0.000108, "output_cost_per_token": 0.000003, "output_cost_per_token_batches": 0.0000015, "output_cost_per_token_flex": 0.0000015, @@ -56679,14 +61805,15 @@ "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_image_token_batches": 0.00003, + "output_cost_per_image_token_priority": 0.000108, "output_cost_per_token": 0.000003, "output_cost_per_token_batches": 0.0000015, "supports_reasoning": false, - "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#gemini-models", + "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", "supported_endpoints": [ "/v1/chat/completions", "/v1/images/generations", @@ -56696,21 +61823,31 @@ }, "vertex_ai/gemini-3.1-flash-lite": { "cache_read_input_audio_token_cost": 5e-8, - "deprecation_date": "2027-05-07", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "cache_read_input_audio_token_cost_batches": 2.5e-8, + "cache_read_input_audio_token_cost_flex": 2.5e-8, + "cache_read_input_audio_token_cost_priority": 9e-8, "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_priority": 4.5e-8, + "deprecation_date": "2027-05-07", + "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_audio_token": 5e-7, + "input_cost_per_audio_token_above_200k_tokens": 5e-7, + "input_cost_per_audio_token_above_200k_tokens_batches": 2.5e-7, + "input_cost_per_audio_token_above_200k_tokens_flex": 2.5e-7, + "input_cost_per_audio_token_above_200k_tokens_priority": 9e-7, + "input_cost_per_audio_token_batches": 2.5e-7, + "input_cost_per_audio_token_flex": 2.5e-7, + "input_cost_per_audio_token_priority": 9e-7, "input_cost_per_token": 2.5e-7, "input_cost_per_token_batches": 1.25e-7, "input_cost_per_token_flex": 1.25e-7, "input_cost_per_token_priority": 4.5e-7, - "input_cost_per_audio_token_priority": 9e-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.0000015, "output_cost_per_token": 0.0000015, @@ -56718,7 +61855,18 @@ "output_cost_per_token_flex": 7.5e-7, "output_cost_per_token_priority": 0.0000027, "regional_endpoint_uplift_multiplier": 1.1, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", + "successor_model": "vertex_ai/gemini-3.5-flash-lite", "supported_endpoints": [ "/v1/chat/completions", "/v1/completions", @@ -56736,6 +61884,7 @@ "supports_audio_input": true, "supports_audio_output": false, "supports_function_calling": true, + "supports_native_streaming": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -56747,22 +61896,13 @@ "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", - "google_maps_grounding_cost_per_query": 0.014, - "input_cost_per_audio_token_batches": 2.5e-7 + "web_search_billing_unit": "per_query" }, "vertex_ai/gemini-3.1-flash-lite-image": { "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_priority": 4.5e-8, - "deprecation_date": "2027-06-28", "input_cost_per_image": 0.00028, "input_cost_per_token": 2.5e-7, "input_cost_per_token_batches": 1.25e-7, @@ -56771,10 +61911,11 @@ "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 65536, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "image_generation", "output_cost_per_image": 0.0336, "output_cost_per_image_token": 0.00003, + "output_cost_per_image_token_batches": 0.000015, + "output_cost_per_image_token_priority": 0.000054, "output_cost_per_token": 0.0000015, "output_cost_per_token_batches": 7.5e-7, "output_cost_per_token_flex": 7.5e-7, @@ -56811,7 +61952,6 @@ "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.0000015, "output_cost_per_token": 0.0000015, @@ -56850,6 +61990,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014 }, @@ -56862,6 +62007,8 @@ "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_token": 0.000002, "input_cost_per_token_above_200k_tokens": 0.000004, + "input_cost_per_token_above_200k_tokens_batches": 0.000002, + "input_cost_per_token_above_200k_tokens_flex": 0.000002, "input_cost_per_token_above_200k_tokens_priority": 0.0000072, "input_cost_per_token_batches": 0.000001, "input_cost_per_token_flex": 0.000001, @@ -56869,11 +62016,12 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_image": 0.00012, "output_cost_per_token": 0.000012, "output_cost_per_token_above_200k_tokens": 0.000018, + "output_cost_per_token_above_200k_tokens_batches": 0.000009, + "output_cost_per_token_above_200k_tokens_flex": 0.000009, "output_cost_per_token_above_200k_tokens_priority": 0.0000324, "output_cost_per_token_batches": 0.000006, "output_cost_per_token_flex": 0.000006, @@ -56884,6 +62032,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", "supported_endpoints": [ "/v1/chat/completions", @@ -56925,7 +62078,6 @@ "litellm_provider": "vertex_ai", "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, @@ -56970,12 +62122,19 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014 }, "vertex_ai/gemini-3.5-flash": { "prompt_cache_min_tokens": 4096, "deprecation_date": "2027-05-19", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "successor_model": "vertex_ai/gemini-3.8-flash", "cache_read_input_token_cost": 1.5e-7, "cache_read_input_token_cost_batches": 7.5e-8, "input_cost_per_token": 0.0000015, @@ -56983,7 +62142,6 @@ "litellm_provider": "vertex_ai", "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, @@ -57004,6 +62162,7 @@ "text" ], "supports_audio_input": true, + "supports_computer_use": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -57026,6 +62185,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_token_batches": 7.5e-7, @@ -57036,6 +62200,7 @@ }, "vertex_ai/gemini-3.5-flash-lite": { "deprecation_date": "2027-07-21", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", "cache_read_input_token_cost": 3e-8, "cache_read_input_token_cost_batches": 1.5e-8, "cache_read_input_token_cost_flex": 1.5e-8, @@ -57047,7 +62212,6 @@ "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, @@ -57072,12 +62236,14 @@ ], "supports_audio_input": true, "supports_audio_output": false, + "supports_computer_use": 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_sampling_params": false, "supports_system_messages": true, "supports_tool_choice": true, "supports_url_context": true, @@ -57090,6 +62256,11 @@ "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014 }, @@ -57104,7 +62275,6 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.00000375, "output_cost_per_token": 0.00000375, @@ -57127,12 +62297,14 @@ "text" ], "supports_audio_input": true, + "supports_computer_use": 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_sampling_params": false, "supports_system_messages": true, "supports_tool_choice": true, "supports_url_context": true, @@ -57144,11 +62316,18 @@ "output_cost_per_token_priority": 0.00000675, "cache_read_input_token_cost_priority": 1.35e-7, "deprecation_date": "2026-11-19", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "successor_model": "vertex_ai/gemini-3.8-flash", "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014 }, @@ -57163,7 +62342,6 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.00000375, "output_cost_per_token": 0.00000375, @@ -57186,6 +62364,7 @@ "text" ], "supports_audio_input": true, + "supports_computer_use": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -57193,6 +62372,7 @@ "supports_reasoning": true, "supports_minimal_reasoning_effort": false, "supports_response_schema": true, + "supports_sampling_params": false, "supports_system_messages": true, "supports_tool_choice": true, "supports_url_context": true, @@ -57204,33 +62384,52 @@ "output_cost_per_token_priority": 0.00000675, "cache_read_input_token_cost_priority": 1.35e-7, "deprecation_date": "2027-01-28", + "deprecation_source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions", + "successor_model": "vertex_ai/gemini-3.8-flash", "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, "search_context_size_high": 0.014 }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "web_search_billing_unit": "per_query", "google_maps_grounding_cost_per_query": 0.014 }, "vertex_ai/gemini-3.8-flash": { - "prompt_cache_min_tokens": 4096, - "deprecation_date": "2027-09-02", "cache_read_input_token_cost": 7.5e-8, "cache_read_input_token_cost_batches": 3.75e-8, "cache_read_input_token_cost_flex": 3.75e-8, + "cache_read_input_token_cost_priority": 1.35e-7, + "google_maps_grounding_cost_per_query": 0.014, "input_cost_per_token": 7.5e-7, "input_cost_per_token_batches": 3.75e-7, "input_cost_per_token_flex": 3.75e-7, + "input_cost_per_token_priority": 0.00000135, "litellm_provider": "vertex_ai", "max_input_tokens": 1048576, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.00000375, "output_cost_per_token": 0.00000375, "output_cost_per_token_batches": 0.000001875, "output_cost_per_token_flex": 0.000001875, + "output_cost_per_token_priority": 0.00000675, + "prompt_cache_min_tokens": 4096, "regional_endpoint_uplift_multiplier": 1.1, + "search_context_cost_per_query": { + "search_context_size_low": 0.014, + "search_context_size_medium": 0.014, + "search_context_size_high": 0.014 + }, + "search_free_requests": { + "count": 5000, + "period": "month", + "shared_group": "gemini-3" + }, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", "supported_endpoints": [ "/v1/chat/completions", @@ -57247,30 +62446,23 @@ "text" ], "supports_audio_input": true, + "supports_computer_use": true, "supports_function_calling": true, + "supports_minimal_reasoning_effort": false, + "supports_native_streaming": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, "supports_prompt_caching": true, "supports_reasoning": true, - "supports_minimal_reasoning_effort": false, "supports_response_schema": true, + "supports_sampling_params": false, "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.00000135, - "output_cost_per_token_priority": 0.00000675, - "cache_read_input_token_cost_priority": 1.35e-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", - "google_maps_grounding_cost_per_query": 0.014 + "web_search_billing_unit": "per_query" }, "vertex_ai/gemini-3.8-flash-cyber": { "cache_read_input_token_cost": 1.5e-7, @@ -57284,7 +62476,6 @@ "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, @@ -57313,6 +62504,7 @@ "supports_reasoning": true, "supports_minimal_reasoning_effort": false, "supports_response_schema": true, + "supports_sampling_params": false, "supports_system_messages": true, "supports_tool_choice": false, "supports_url_context": false, @@ -57322,7 +62514,6 @@ "supports_native_streaming": true }, "vertex_ai/gemini-4-argon": { - "deprecation_date": "2027-10-13", "cache_read_input_token_cost": 1e-7, "cache_read_input_token_cost_batches": 5e-8, "cache_read_input_token_cost_flex": 5e-8, @@ -57338,7 +62529,6 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "mode": "chat", "output_cost_per_reasoning_token": 0.00001, "output_cost_per_token": 0.00001, @@ -57368,6 +62558,8 @@ "text" ], "supports_audio_input": true, + "supports_computer_use": true, + "supports_continuation": true, "supports_function_calling": true, "supports_minimal_reasoning_effort": false, "supports_native_streaming": true, @@ -57400,7 +62592,6 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 1048576, "max_output_tokens": 1048576, - "max_tokens": 1048576, "mode": "chat", "output_cost_per_reasoning_token": 0.00002, "output_cost_per_token": 0.00002, @@ -57430,6 +62621,7 @@ "text" ], "supports_audio_input": true, + "supports_continuation": true, "supports_function_calling": true, "supports_minimal_reasoning_effort": false, "supports_native_streaming": true, @@ -57449,23 +62641,21 @@ "vertex_ai/gemini-nano-banana-2.1": { "cache_read_input_token_cost": 1.5e-7, "cache_read_input_token_cost_batches": 7.5e-8, - "cache_read_input_token_cost_flex": 7.5e-8, "cache_read_input_token_cost_priority": 2.7e-7, "input_cost_per_image": 0.00168, "input_cost_per_token": 0.0000015, "input_cost_per_token_batches": 7.5e-7, - "input_cost_per_token_flex": 7.5e-7, "input_cost_per_token_priority": 0.0000027, "litellm_provider": "vertex_ai-language-models", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "image_generation", "output_cost_per_image": 0.0336, "output_cost_per_image_token": 0.00003, + "output_cost_per_image_token_batches": 0.000015, + "output_cost_per_image_token_priority": 0.000054, "output_cost_per_token": 0.0000075, "output_cost_per_token_batches": 0.00000375, - "output_cost_per_token_flex": 0.00000375, "output_cost_per_token_priority": 0.0000135, "search_context_cost_per_query": { "search_context_size_low": 0.014, @@ -57512,12 +62702,12 @@ "input_cost_per_token": 0.0000015, "litellm_provider": "vertex_ai", "max_output_tokens": 57920, - "max_tokens": 57920, + "max_input_tokens": 131072, "mode": "chat", "output_cost_per_reasoning_token": 0.000009, "output_cost_per_token": 0.000009, "output_cost_per_video_token": 0.0000175, - "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", + "source": "https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/omni-1-1-flash", "supported_endpoints": [ "/v1beta/interactions" ], @@ -57536,18 +62726,14 @@ }, "vertex_ai/gemini-robotics-er-2-preview": { "cache_read_input_token_cost": 1e-7, - "cache_read_input_token_cost_batches": 5e-8, "input_cost_per_audio_token": 0.000001, "input_cost_per_token": 0.000001, - "input_cost_per_token_batches": 5e-7, "litellm_provider": "vertex_ai", "max_input_tokens": 131072, "max_output_tokens": 65536, - "max_tokens": 65536, "mode": "chat", "output_cost_per_reasoning_token": 0.000005, "output_cost_per_token": 0.000005, - "output_cost_per_token_batches": 0.0000025, "search_context_cost_per_query": { "search_context_size_low": 0.014, "search_context_size_medium": 0.014, @@ -57556,8 +62742,7 @@ "source": "https://ai.google.dev/gemini-api/docs/pricing", "supported_endpoints": [ "/v1/chat/completions", - "/v1/completions", - "/v1/batch" + "/v1/completions" ], "supported_modalities": [ "text", @@ -57570,6 +62755,7 @@ ], "supports_audio_input": true, "supports_audio_output": false, + "supports_computer_use": true, "supports_function_calling": true, "supports_parallel_function_calling": true, "supports_pdf_input": true, @@ -57598,7 +62784,6 @@ "litellm_provider": "vertex_ai-openai_models", "max_input_tokens": 262144, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 6e-7, "source": "https://cloud.google.com/vertex-ai/generative-ai/docs/maas/google/gemma-4-26b-a4b-it", @@ -57615,7 +62800,6 @@ "litellm_provider": "vertex_ai-ai21_models", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 4e-7, "supports_tool_choice": true @@ -57626,7 +62810,6 @@ "litellm_provider": "vertex_ai-ai21_models", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000008, "supports_tool_choice": true @@ -57637,7 +62820,6 @@ "litellm_provider": "vertex_ai-ai21_models", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000008, "supports_tool_choice": true @@ -57648,7 +62830,6 @@ "litellm_provider": "vertex_ai-ai21_models", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 4e-7, "supports_tool_choice": true @@ -57659,7 +62840,6 @@ "litellm_provider": "vertex_ai-ai21_models", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 4e-7, "supports_tool_choice": true @@ -57669,7 +62849,6 @@ "litellm_provider": "vertex_ai-llama_models", "max_input_tokens": 128000, "max_output_tokens": 2048, - "max_tokens": 2048, "mode": "chat", "output_cost_per_token": 0.000016, "source": "https://console.cloud.google.com/vertex-ai/publishers/meta/model-garden/llama-3.2-90b-vision-instruct-maas", @@ -57682,7 +62861,6 @@ "litellm_provider": "vertex_ai-llama_models", "max_input_tokens": 128000, "max_output_tokens": 2048, - "max_tokens": 2048, "mode": "chat", "output_cost_per_token": 0, "source": "https://console.cloud.google.com/vertex-ai/publishers/meta/model-garden/llama-3.2-90b-vision-instruct-maas", @@ -57695,7 +62873,6 @@ "litellm_provider": "vertex_ai-llama_models", "max_input_tokens": 128000, "max_output_tokens": 2048, - "max_tokens": 2048, "metadata": { "notes": "VertexAI states that The Llama 3.1 API service for llama-3.1-70b-instruct-maas and llama-3.1-8b-instruct-maas are in public preview and at no cost." }, @@ -57711,7 +62888,6 @@ "litellm_provider": "vertex_ai-llama_models", "max_input_tokens": 128000, "max_output_tokens": 2048, - "max_tokens": 2048, "metadata": { "notes": "VertexAI states that The Llama 3.2 API service is at no cost during public preview, and will be priced as per dollar-per-1M-tokens at GA." }, @@ -57729,7 +62905,6 @@ "litellm_provider": "vertex_ai-llama_models", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 7.2e-7, "output_cost_per_token_batches": 3.6e-7, @@ -57750,7 +62925,6 @@ "litellm_provider": "vertex_ai-llama_models", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.00000115, "output_cost_per_token_batches": 5.75e-7, @@ -57768,12 +62942,13 @@ }, "vertex_ai/meta/llama-4-maverick-17b-16e-instruct-maas": { "input_cost_per_token": 3.5e-7, + "input_cost_per_token_batches": 1.75e-7, "litellm_provider": "vertex_ai-llama_models", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.00000115, + "output_cost_per_token_batches": 5.75e-7, "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", "supported_modalities": [ "text", @@ -57788,12 +62963,13 @@ }, "vertex_ai/meta/llama-4-scout-17b-128e-instruct-maas": { "input_cost_per_token": 2.5e-7, + "input_cost_per_token_batches": 1.25e-7, "litellm_provider": "vertex_ai-llama_models", "max_input_tokens": 10000000, "max_output_tokens": 10000000, - "max_tokens": 10000000, "mode": "chat", "output_cost_per_token": 7e-7, + "output_cost_per_token_batches": 3.5e-7, "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", "supported_modalities": [ "text", @@ -57812,7 +62988,6 @@ "litellm_provider": "vertex_ai-llama_models", "max_input_tokens": 10000000, "max_output_tokens": 10000000, - "max_tokens": 10000000, "mode": "chat", "output_cost_per_token": 7e-7, "output_cost_per_token_batches": 3.5e-7, @@ -57833,7 +63008,6 @@ "litellm_provider": "vertex_ai-llama_models", "max_input_tokens": 32000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0, "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", @@ -57844,7 +63018,6 @@ "litellm_provider": "vertex_ai-llama_models", "max_input_tokens": 32000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0, "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", @@ -57855,7 +63028,6 @@ "litellm_provider": "vertex_ai-llama_models", "max_input_tokens": 32000, "max_output_tokens": 32000, - "max_tokens": 32000, "mode": "chat", "output_cost_per_token": 0, "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing#partner-models", @@ -57868,7 +63040,6 @@ "litellm_provider": "vertex_ai-minimax_models", "max_input_tokens": 196608, "max_output_tokens": 196608, - "max_tokens": 196608, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -57880,7 +63051,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000006, "supports_function_calling": true, @@ -57891,7 +63061,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000006, "supports_function_calling": true, @@ -57902,7 +63071,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000006, "supports_function_calling": true, @@ -57913,7 +63081,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000006, "supports_function_calling": true, @@ -57924,7 +63091,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -57936,7 +63102,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -57948,7 +63113,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.000003, "supports_function_calling": true, @@ -57959,7 +63123,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 1.5e-7, "supports_function_calling": true, @@ -57970,7 +63133,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -57983,7 +63145,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 32000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 3e-7, "supports_function_calling": true, @@ -57995,7 +63156,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -58007,7 +63167,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 9e-7, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -58019,7 +63178,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -58031,7 +63189,6 @@ "litellm_provider": "vertex_ai-mistral_models", "max_input_tokens": 128000, "max_output_tokens": 8191, - "max_tokens": 8191, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -58045,11 +63202,11 @@ "litellm_provider": "vertex_ai-moonshot_models", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true, "supports_web_search": true }, @@ -58059,11 +63216,11 @@ "litellm_provider": "vertex_ai-openai_models", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 3.6e-7, "output_cost_per_token_batches": 1.8e-7, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", + "supports_pdf_input": false, "supports_reasoning": true }, "vertex_ai/openai/gpt-oss-20b-maas": { @@ -58072,10 +63229,10 @@ "litellm_provider": "vertex_ai-openai_models", "max_input_tokens": 131072, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 2.5e-7, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", + "supports_pdf_input": false, "supports_reasoning": true, "cache_read_input_token_cost": 7e-9, "input_cost_per_token_batches": 3.5e-8, @@ -58088,7 +63245,6 @@ "litellm_provider": "vertex_ai-qwen_models", "max_input_tokens": 262144, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 8.8e-7, "output_cost_per_token_batches": 4.4e-7, @@ -58098,6 +63254,7 @@ "us-south1" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true }, "vertex_ai/qwen/qwen3-coder-480b-a35b-instruct-maas": { @@ -58108,7 +63265,6 @@ "litellm_provider": "vertex_ai-qwen_models", "max_input_tokens": 262144, "max_output_tokens": 32768, - "max_tokens": 32768, "mode": "chat", "output_cost_per_token": 0.0000018, "output_cost_per_token_batches": 9e-7, @@ -58117,6 +63273,7 @@ "global" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true }, "vertex_ai/qwen/qwen3-next-80b-a3b-instruct-maas": { @@ -58125,7 +63282,6 @@ "litellm_provider": "vertex_ai-qwen_models", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -58133,6 +63289,7 @@ "global" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true }, "vertex_ai/qwen/qwen3-next-80b-a3b-thinking-maas": { @@ -58141,7 +63298,6 @@ "litellm_provider": "vertex_ai-qwen_models", "max_input_tokens": 262144, "max_output_tokens": 262144, - "max_tokens": 262144, "mode": "chat", "output_cost_per_token": 0.0000012, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -58149,6 +63305,7 @@ "global" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_tool_choice": true }, "vertex_ai/xai/grok-4.1-fast-non-reasoning": { @@ -58157,7 +63314,6 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -58174,7 +63330,6 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 128000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 5e-7, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -58194,7 +63349,6 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 2000000, "max_output_tokens": 2000000, - "max_tokens": 2000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_above_200k_tokens": 0.000005, @@ -58214,7 +63368,6 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 2000000, "max_output_tokens": 2000000, - "max_tokens": 2000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_above_200k_tokens": 0.000005, @@ -58235,7 +63388,6 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 200000, "max_output_tokens": 200000, - "max_tokens": 200000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_above_200k_tokens": 0.000005, @@ -58255,7 +63407,6 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 524288, "max_output_tokens": 524288, - "max_tokens": 524288, "mode": "chat", "output_cost_per_token": 0.000006, "output_cost_per_token_above_200k_tokens": 0.000012, @@ -58275,7 +63426,6 @@ "litellm_provider": "vertex_ai", "max_input_tokens": 524288, "max_output_tokens": 524288, - "max_tokens": 524288, "mode": "chat", "output_cost_per_token": 0.000006, "output_cost_per_token_above_200k_tokens": 0.000012, @@ -58290,11 +63440,11 @@ "vertex_ai/zai-org/glm-4.7-maas": { "cache_read_input_token_cost": 6e-8, "deprecation_date": "2026-10-21", + "successor_model": "vertex_ai/zai-org/glm-5.2-maas", "input_cost_per_token": 6e-7, "litellm_provider": "vertex_ai-zai_models", "max_input_tokens": 200000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000022, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -58302,17 +63452,18 @@ "global" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_reasoning": true, "supports_tool_choice": true }, "vertex_ai/zai-org/glm-5-maas": { "cache_read_input_token_cost": 1e-7, "deprecation_date": "2026-10-21", + "successor_model": "vertex_ai/zai-org/glm-5.2-maas", "input_cost_per_token": 0.000001, "litellm_provider": "vertex_ai-zai_models", "max_input_tokens": 200000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000032, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -58320,6 +63471,7 @@ "global" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_tool_choice": true @@ -58330,7 +63482,6 @@ "litellm_provider": "vertex_ai-zai_models", "max_input_tokens": 1000000, "max_output_tokens": 64000, - "max_tokens": 64000, "mode": "chat", "output_cost_per_token": 0.0000044, "source": "https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing", @@ -58338,6 +63489,7 @@ "global" ], "supports_function_calling": true, + "supports_pdf_input": false, "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, @@ -58347,7 +63499,6 @@ "litellm_provider": "volcengine", "max_input_tokens": 256000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "source": "https://docs.volcengine.com/docs/82379/1330310", "supports_function_calling": true, @@ -58381,155 +63532,493 @@ } ] }, - "volcengine/doubao-seed-2-0-lite-260215": { - "litellm_provider": "volcengine", - "max_input_tokens": 256000, - "max_output_tokens": 128000, - "max_tokens": 128000, + "volcengine/doubao-seed-2-0-lite-260215": { + "litellm_provider": "volcengine", + "max_input_tokens": 256000, + "max_output_tokens": 128000, + "mode": "chat", + "source": "https://docs.volcengine.com/docs/82379/1330310", + "supports_function_calling": true, + "supports_reasoning": true, + "supports_tool_choice": false, + "supports_vision": true, + "tiered_pricing": [ + { + "input_cost_per_token": 8.7e-8, + "output_cost_per_token": 5.2e-7, + "range": [ + 0, + 32000 + ] + }, + { + "input_cost_per_token": 1.3e-7, + "output_cost_per_token": 7.8e-7, + "range": [ + 32000, + 128000 + ] + }, + { + "input_cost_per_token": 2.6e-7, + "output_cost_per_token": 0.0000016, + "range": [ + 128000, + 256000 + ] + } + ] + }, + "volcengine/doubao-seed-2-0-mini-260215": { + "litellm_provider": "volcengine", + "max_input_tokens": 256000, + "max_output_tokens": 128000, + "mode": "chat", + "source": "https://docs.volcengine.com/docs/82379/1330310", + "supports_function_calling": true, + "supports_reasoning": true, + "supports_tool_choice": false, + "supports_vision": true, + "tiered_pricing": [ + { + "input_cost_per_token": 2.9e-8, + "output_cost_per_token": 2.9e-7, + "range": [ + 0, + 32000 + ] + }, + { + "input_cost_per_token": 5.8e-8, + "output_cost_per_token": 5.8e-7, + "range": [ + 32000, + 128000 + ] + }, + { + "input_cost_per_token": 1.2e-7, + "output_cost_per_token": 0.0000012, + "range": [ + 128000, + 256000 + ] + } + ] + }, + "volcengine/doubao-seed-2-0-pro-260215": { + "litellm_provider": "volcengine", + "max_input_tokens": 256000, + "max_output_tokens": 128000, + "mode": "chat", + "source": "https://docs.volcengine.com/docs/82379/1330310", + "supports_function_calling": true, + "supports_reasoning": true, + "supports_tool_choice": false, + "supports_vision": true, + "tiered_pricing": [ + { + "input_cost_per_token": 4.6e-7, + "output_cost_per_token": 0.0000023, + "range": [ + 0, + 32000 + ] + }, + { + "input_cost_per_token": 7e-7, + "output_cost_per_token": 0.0000035, + "range": [ + 32000, + 128000 + ] + }, + { + "input_cost_per_token": 0.0000014, + "output_cost_per_token": 0.000007, + "range": [ + 128000, + 256000 + ] + } + ] + }, + "volcengine/doubao-seed-2-1-lite-260915": { + "cache_read_input_audio_token_cost": 3.45e-7, + "cache_read_input_token_cost": 2.3e-8, + "input_cost_per_audio_token": 0.000001725, + "input_cost_per_token": 1.15e-7, + "litellm_provider": "volcengine", + "max_input_tokens": 1024000, + "max_output_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 3.88126e-7, + "source": "https://www.volcengine.com/docs/82379/1544106", + "supports_audio_input": true, + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "volcengine/doubao-seed-2-1-pro-260628": { + "cache_read_input_token_cost": 1.725e-7, + "input_cost_per_token": 8.625e-7, + "litellm_provider": "volcengine", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 0.0000043125, + "source": "https://www.volcengine.com/docs/82379/1544106", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "volcengine/doubao-seed-2-1-pro-260915": { + "cache_read_input_token_cost": 1.725e-7, + "input_cost_per_token": 8.625e-7, + "litellm_provider": "volcengine", + "max_input_tokens": 1024000, + "max_output_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 0.0000043125, + "source": "https://www.volcengine.com/docs/82379/1544106", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "volcengine/doubao-seed-2-1-turbo-260628": { + "cache_read_input_token_cost": 8.625e-8, + "input_cost_per_token": 4.3125e-7, + "litellm_provider": "volcengine", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 0.00000215625, + "source": "https://www.volcengine.com/docs/82379/1544106", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": false, + "supports_vision": true + }, + "wally/deepseek-v4-flash-0731": { + "cache_read_input_token_cost": 1.4e-8, + "input_cost_per_token": 4.4e-7, + "litellm_provider": "wally", + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 0.00000132, + "reasoning_effort_levels": [ + "none", + "minimal", + "low", + "medium", + "high", + "max" + ], + "source": "https://www.runwally.com/pricing", + "supported_modalities": [ + "text" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "wally/deepseek-v4-pro-fast": { + "cache_read_input_token_cost": 1.6e-7, + "input_cost_per_token": 0.00000191, + "litellm_provider": "wally", + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 0.00000383, + "reasoning_effort_levels": [ + "none", + "minimal", + "low", + "medium", + "high", + "max" + ], + "source": "https://www.runwally.com/pricing", + "supported_modalities": [ + "text" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "wally/deepseek-v4.1-flash": { + "cache_read_input_token_cost": 6e-9, + "input_cost_per_token": 3e-7, + "litellm_provider": "wally", + "max_input_tokens": 1048569, + "max_output_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 0.0000012, + "reasoning_effort_levels": [ + "none", + "low", + "medium", + "high", + "max" + ], + "source": "https://www.runwally.com/pricing", + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "wally/deepseek-v4.1-flash-1017": { + "cache_read_input_token_cost": 8e-9, + "input_cost_per_token": 3.75e-7, + "litellm_provider": "wally", + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 0.0000015, + "reasoning_effort_levels": [ + "none", + "minimal", + "low", + "medium", + "high", + "max" + ], + "source": "https://inference.runanywhere.ai/v1/models", + "supported_modalities": [ + "text" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "wally/deepseek-v4.1-flash-f2": { + "cache_read_input_token_cost": 6e-9, + "input_cost_per_token": 3e-7, + "litellm_provider": "wally", + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 0.0000012, + "reasoning_effort_levels": [ + "none", + "minimal", + "low", + "medium", + "high", + "max" + ], + "source": "https://inference.runanywhere.ai/v1/models", + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": false, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "wally/deepseek-v4.1-flash-fast": { + "cache_read_input_token_cost": 1.4e-8, + "input_cost_per_token": 6e-7, + "litellm_provider": "wally", + "max_input_tokens": 1048576, + "max_output_tokens": 65536, "mode": "chat", - "source": "https://docs.volcengine.com/docs/82379/1330310", + "output_cost_per_token": 0.0000024, + "reasoning_effort_levels": [ + "none", + "low", + "medium", + "high", + "max" + ], + "source": "https://www.runwally.com/pricing", + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], "supports_function_calling": true, + "supports_prompt_caching": true, "supports_reasoning": true, - "supports_tool_choice": false, - "supports_vision": true, - "tiered_pricing": [ - { - "input_cost_per_token": 8.7e-8, - "output_cost_per_token": 5.2e-7, - "range": [ - 0, - 32000 - ] - }, - { - "input_cost_per_token": 1.3e-7, - "output_cost_per_token": 7.8e-7, - "range": [ - 32000, - 128000 - ] - }, - { - "input_cost_per_token": 2.6e-7, - "output_cost_per_token": 0.0000016, - "range": [ - 128000, - 256000 - ] - } - ] + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": true }, - "volcengine/doubao-seed-2-0-mini-260215": { - "litellm_provider": "volcengine", - "max_input_tokens": 256000, - "max_output_tokens": 128000, - "max_tokens": 128000, + "wally/glm-5.3-fast": { + "cache_read_input_token_cost": 3.9e-7, + "input_cost_per_token": 0.0000021, + "litellm_provider": "wally", + "max_input_tokens": 1048576, + "max_output_tokens": 131072, "mode": "chat", - "source": "https://docs.volcengine.com/docs/82379/1330310", + "output_cost_per_token": 0.0000066, + "reasoning_effort_levels": [ + "low", + "medium", + "high", + "max" + ], + "source": "https://www.runwally.com/pricing", + "supported_modalities": [ + "text" + ], + "supported_output_modalities": [ + "text" + ], "supports_function_calling": true, + "supports_prompt_caching": true, "supports_reasoning": true, - "supports_tool_choice": false, - "supports_vision": true, - "tiered_pricing": [ - { - "input_cost_per_token": 2.9e-8, - "output_cost_per_token": 2.9e-7, - "range": [ - 0, - 32000 - ] - }, - { - "input_cost_per_token": 5.8e-8, - "output_cost_per_token": 5.8e-7, - "range": [ - 32000, - 128000 - ] - }, - { - "input_cost_per_token": 1.2e-7, - "output_cost_per_token": 0.0000012, - "range": [ - 128000, - 256000 - ] - } - ] + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false }, - "volcengine/doubao-seed-2-0-pro-260215": { - "litellm_provider": "volcengine", - "max_input_tokens": 256000, - "max_output_tokens": 128000, - "max_tokens": 128000, + "wally/glm-5.3-flash": { + "cache_read_input_token_cost": 7.6e-8, + "input_cost_per_token": 2.72e-7, + "litellm_provider": "wally", + "max_input_tokens": 1048567, + "max_output_tokens": 131072, "mode": "chat", - "source": "https://docs.volcengine.com/docs/82379/1330310", + "output_cost_per_token": 6.5e-7, + "reasoning_effort_levels": [ + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "source": "https://www.runwally.com/pricing", + "supported_modalities": [ + "text" + ], + "supported_output_modalities": [ + "text" + ], "supports_function_calling": true, + "supports_prompt_caching": true, "supports_reasoning": true, - "supports_tool_choice": false, - "supports_vision": true, - "tiered_pricing": [ - { - "input_cost_per_token": 4.6e-7, - "output_cost_per_token": 0.0000023, - "range": [ - 0, - 32000 - ] - }, - { - "input_cost_per_token": 7e-7, - "output_cost_per_token": 0.0000035, - "range": [ - 32000, - 128000 - ] - }, - { - "input_cost_per_token": 0.0000014, - "output_cost_per_token": 0.000007, - "range": [ - 128000, - 256000 - ] - } - ] + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false }, - "volcengine/doubao-seed-2-1-pro-260628": { - "cache_read_input_token_cost": 1.725e-7, - "input_cost_per_token": 8.625e-7, - "litellm_provider": "volcengine", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, + "wally/kimi-k3": { + "cache_read_input_token_cost": 3e-7, + "input_cost_per_token": 0.000003, + "litellm_provider": "wally", + "max_input_tokens": 1048576, + "max_output_tokens": 65536, "mode": "chat", - "output_cost_per_token": 0.0000043125, - "source": "https://www.volcengine.com/docs/82379/1544106", + "output_cost_per_token": 0.000015, + "reasoning_effort_levels": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "source": "https://www.runwally.com/pricing", + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], "supports_function_calling": true, "supports_prompt_caching": true, "supports_reasoning": true, - "supports_tool_choice": false, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, "supports_vision": true }, - "volcengine/doubao-seed-2-1-turbo-260628": { - "cache_read_input_token_cost": 8.625e-8, - "input_cost_per_token": 4.3125e-7, - "litellm_provider": "volcengine", - "max_input_tokens": 256000, - "max_output_tokens": 256000, - "max_tokens": 256000, + "wally/minimax-m3": { + "cache_read_input_token_cost": 6.6e-8, + "input_cost_per_token": 3.3e-7, + "litellm_provider": "wally", + "max_input_tokens": 524287, + "max_output_tokens": 131072, "mode": "chat", - "output_cost_per_token": 0.00000215625, - "source": "https://www.volcengine.com/docs/82379/1544106", + "output_cost_per_token": 0.00000132, + "reasoning_effort_levels": [ + "none", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "source": "https://www.runwally.com/pricing", + "supported_modalities": [ + "text" + ], + "supported_output_modalities": [ + "text" + ], "supports_function_calling": true, "supports_prompt_caching": true, "supports_reasoning": true, - "supports_tool_choice": false, - "supports_vision": true + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false }, "wandb/JetBrains/Mellum2-12B-A2.5B-Instruct": { "deprecation_date": "2026-10-05", - "max_tokens": 131072, + "max_output_tokens": 131072, "max_input_tokens": 131000, "input_cost_per_token": 5e-8, "output_cost_per_token": 1e-7, @@ -58540,7 +64029,7 @@ }, "wandb/MiniMaxAI/MiniMax-M3": { "supports_reasoning": true, - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262000, "input_cost_per_token": 2.3e-7, "output_cost_per_token": 9.6e-7, @@ -58553,7 +64042,7 @@ }, "wandb/OpenPipe/Qwen3-14B-Instruct": { "deprecation_date": "2026-10-05", - "max_tokens": 32768, + "max_output_tokens": 32768, "max_input_tokens": 32800, "input_cost_per_token": 5e-8, "output_cost_per_token": 2.2e-7, @@ -58564,7 +64053,7 @@ }, "wandb/Qwen/Qwen3-30B-A3B-Instruct-2507": { "deprecation_date": "2026-10-05", - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262000, "input_cost_per_token": 1e-7, "output_cost_per_token": 3e-7, @@ -58576,7 +64065,7 @@ "wandb/Qwen/Qwen3.5-35B-A3B": { "deprecation_date": "2026-10-05", "supports_reasoning": true, - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262000, "input_cost_per_token": 2.5e-7, "output_cost_per_token": 0.00000125, @@ -58587,7 +64076,7 @@ }, "wandb/Qwen/Qwen3.6-27B": { "supports_reasoning": true, - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262000, "input_cost_per_token": 6e-7, "output_cost_per_token": 0.0000036, @@ -58601,7 +64090,7 @@ }, "wandb/Qwen/Qwen3.6-35B-A3B": { "supports_reasoning": true, - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262000, "input_cost_per_token": 2.5e-7, "output_cost_per_token": 0.00000125, @@ -58612,7 +64101,7 @@ }, "wandb/Qwen/Qwen3.8-27B": { "supports_reasoning": true, - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262000, "input_cost_per_token": 4e-7, "output_cost_per_token": 0.000003, @@ -58625,18 +64114,17 @@ }, "wandb/deepseek-ai/DeepSeek-V3.1": { "supports_reasoning": true, - "max_tokens": 128000, - "max_input_tokens": 161000, + "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 5.5e-7, "output_cost_per_token": 0.00000165, "litellm_provider": "wandb", "mode": "chat", - "source": "https://wandb.ai/site/pricing/tokens/" + "source": "https://www.coreweave.com/products/coreweave-forge/serverless-inference" }, "wandb/deepseek-ai/DeepSeek-V4-Flash": { "supports_reasoning": true, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "max_input_tokens": 1049000, "input_cost_per_token": 1.4e-7, "output_cost_per_token": 2.8e-7, @@ -58650,7 +64138,7 @@ }, "wandb/deepseek-ai/DeepSeek-V4-Flash-0731": { "supports_reasoning": true, - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262000, "input_cost_per_token": 1.3e-7, "output_cost_per_token": 2.8e-7, @@ -58663,7 +64151,7 @@ }, "wandb/deepseek-ai/DeepSeek-V4-Pro": { "supports_reasoning": true, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "max_input_tokens": 1049000, "input_cost_per_token": 0.00000115, "output_cost_per_token": 0.00000255, @@ -58691,7 +64179,7 @@ "input_cost_per_token": 2e-7, "litellm_provider": "wandb", "max_input_tokens": 1049000, - "max_tokens": 1048576, + "max_output_tokens": 1048576, "mode": "chat", "output_cost_per_token": 6.5e-7, "source": "https://wandb.ai/site/pricing/tokens/", @@ -58704,7 +64192,7 @@ "input_cost_per_token": 1e-7, "litellm_provider": "wandb", "max_input_tokens": 262000, - "max_tokens": 262144, + "max_output_tokens": 262144, "mode": "chat", "output_cost_per_token": 3e-7, "source": "https://wandb.ai/site/pricing/tokens/", @@ -58716,7 +64204,7 @@ }, "wandb/google/gemma-4-31B-it": { "supports_reasoning": true, - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262000, "input_cost_per_token": 1e-7, "output_cost_per_token": 3.4e-7, @@ -58727,7 +64215,7 @@ }, "wandb/ibm-granite/granite-4.1-8b": { "deprecation_date": "2026-10-05", - "max_tokens": 131072, + "max_output_tokens": 131072, "max_input_tokens": 131000, "input_cost_per_token": 5e-8, "output_cost_per_token": 1e-7, @@ -58749,7 +64237,7 @@ }, "wandb/meta-llama/Llama-3.1-70B-Instruct": { "deprecation_date": "2026-10-05", - "max_tokens": 128000, + "max_output_tokens": 128000, "max_input_tokens": 131000, "input_cost_per_token": 8e-7, "output_cost_per_token": 8e-7, @@ -58759,17 +64247,15 @@ "source": "https://wandb.ai/site/pricing/tokens/" }, "wandb/meta-llama/Llama-3.1-8B-Instruct": { - "max_tokens": 128000, - "max_input_tokens": 131000, + "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 2.2e-7, "output_cost_per_token": 2.2e-7, "litellm_provider": "wandb", "mode": "chat", - "source": "https://wandb.ai/site/pricing/tokens/" + "source": "https://www.coreweave.com/products/coreweave-forge/serverless-inference" }, "wandb/meta-llama/Llama-3.3-70B-Instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 7.1e-7, @@ -58779,7 +64265,6 @@ "source": "https://wandb.ai/site/pricing/tokens/" }, "wandb/moonshotai/Kimi-K2.5": { - "max_tokens": 262144, "max_input_tokens": 262144, "max_output_tokens": 262144, "cache_read_input_token_cost": 1e-7, @@ -58795,7 +64280,7 @@ }, "wandb/moonshotai/Kimi-K2.6": { "supports_reasoning": true, - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262000, "input_cost_per_token": 6.5e-7, "output_cost_per_token": 0.00000341, @@ -58808,7 +64293,7 @@ }, "wandb/moonshotai/Kimi-K2.7-Code": { "supports_reasoning": true, - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262000, "input_cost_per_token": 7.1e-7, "output_cost_per_token": 0.0000035, @@ -58821,7 +64306,7 @@ }, "wandb/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B": { "supports_reasoning": true, - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262000, "input_cost_per_token": 5e-7, "output_cost_per_token": 0.00000215, @@ -58834,7 +64319,7 @@ }, "wandb/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B": { "supports_reasoning": true, - "max_tokens": 262144, + "max_output_tokens": 262144, "max_input_tokens": 262000, "input_cost_per_token": 7e-8, "output_cost_per_token": 2e-7, @@ -58846,14 +64331,14 @@ "source": "https://wandb.ai/site/pricing/tokens/" }, "wandb/nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B": { - "cache_read_input_token_cost": 2e-8, - "input_cost_per_token": 1.5e-7, + "cache_read_input_token_cost": 5e-8, + "input_cost_per_token": 2.5e-7, "litellm_provider": "wandb", "max_input_tokens": 1049000, - "max_tokens": 943718, + "max_output_tokens": 943718, "mode": "chat", - "output_cost_per_token": 7.5e-7, - "source": "https://openrouter.ai/api/v1/models/nvidia/nemotron-3.5-super-vl/endpoints", + "output_cost_per_token": 0.0000015, + "source": "https://www.coreweave.com/products/coreweave-forge/serverless-inference", "supports_function_calling": true, "supports_prompt_caching": true, "supports_reasoning": true, @@ -58863,7 +64348,6 @@ }, "wandb/openai/gpt-oss-120b": { "supports_reasoning": true, - "max_tokens": 131072, "max_input_tokens": 131000, "max_output_tokens": 131072, "input_cost_per_token": 3e-8, @@ -58874,7 +64358,6 @@ }, "wandb/openai/gpt-oss-20b": { "supports_reasoning": true, - "max_tokens": 131072, "max_input_tokens": 131000, "max_output_tokens": 131072, "input_cost_per_token": 3e-8, @@ -58883,10 +64366,25 @@ "mode": "chat", "source": "https://wandb.ai/site/pricing/tokens/" }, + "wandb/reflection/Beam-1.0-501B-A23B": { + "cache_read_input_token_cost": 1e-7, + "input_cost_per_token": 0.000001, + "litellm_provider": "wandb", + "max_input_tokens": 1049000, + "mode": "chat", + "output_cost_per_token": 0.000003, + "source": "https://www.coreweave.com/products/coreweave-forge/serverless-inference", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false + }, "wandb/zai-org/GLM-5.2": { "supports_reasoning": true, - "max_tokens": 262144, - "max_input_tokens": 1049000, + "max_output_tokens": 262144, + "max_input_tokens": 262000, "input_cost_per_token": 7.6e-7, "output_cost_per_token": 0.00000242, "cache_read_input_token_cost": 1.4e-7, @@ -58894,7 +64392,22 @@ "litellm_provider": "wandb", "mode": "chat", "supports_vision": false, - "source": "https://wandb.ai/site/pricing/tokens/" + "source": "https://www.coreweave.com/products/coreweave-forge/serverless-inference" + }, + "wandb/zai-org/GLM-5.3": { + "cache_read_input_token_cost": 1.9e-7, + "input_cost_per_token": 0.0000012, + "litellm_provider": "wandb", + "max_input_tokens": 1049000, + "mode": "chat", + "output_cost_per_token": 0.000004, + "source": "https://www.coreweave.com/products/coreweave-forge/serverless-inference", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false }, "wandb/zai-org/GLM-5.3-Flash": { "cache_read_input_token_cost": 5e-8, @@ -58912,7 +64425,6 @@ "supports_vision": true }, "watsonx/bigscience/mt0-xxl": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 0.000001908, @@ -58925,7 +64437,6 @@ "source": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx" }, "watsonx/bigscience/mt0-xxl-13b": { - "max_tokens": 4096, "max_input_tokens": 4096, "max_output_tokens": 4096, "input_cost_per_token": 0.000001908, @@ -58938,7 +64449,6 @@ "source": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx" }, "watsonx/core42/jais-13b-chat": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 0.0005, @@ -58950,7 +64460,6 @@ "supports_vision": false }, "watsonx/google/flan-t5-xl-3b": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 6e-7, @@ -58962,7 +64471,6 @@ "supports_vision": false }, "watsonx/ibm/granite-13b-chat-v2": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 6e-7, @@ -58974,7 +64482,6 @@ "supports_vision": false }, "watsonx/ibm/granite-13b-instruct-v2": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 6e-7, @@ -58986,7 +64493,6 @@ "supports_vision": false }, "watsonx/ibm/granite-3-3-8b-instruct": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 2e-7, @@ -59002,7 +64508,6 @@ "litellm_provider": "watsonx", "max_input_tokens": 8192, "max_output_tokens": 1024, - "max_tokens": 1024, "mode": "chat", "output_cost_per_token": 2e-7, "supports_audio_input": false, @@ -59016,7 +64521,6 @@ "supports_vision": false }, "watsonx/ibm/granite-4-h-small": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 6.36e-8, @@ -59029,7 +64533,6 @@ "source": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx" }, "watsonx/ibm/granite-guardian-3-2-2b": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 1e-7, @@ -59041,7 +64544,6 @@ "supports_vision": false }, "watsonx/ibm/granite-guardian-3-3-8b": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 2e-7, @@ -59053,7 +64555,6 @@ "supports_vision": false }, "watsonx/ibm/granite-ttm-1024-96-r2": { - "max_tokens": 512, "max_input_tokens": 512, "max_output_tokens": 512, "input_cost_per_token": 3.8e-7, @@ -59065,7 +64566,6 @@ "supports_vision": false }, "watsonx/ibm/granite-ttm-1536-96-r2": { - "max_tokens": 512, "max_input_tokens": 512, "max_output_tokens": 512, "input_cost_per_token": 3.8e-7, @@ -59077,7 +64577,6 @@ "supports_vision": false }, "watsonx/ibm/granite-ttm-512-96-r2": { - "max_tokens": 512, "max_input_tokens": 512, "max_output_tokens": 512, "input_cost_per_token": 3.8e-7, @@ -59089,7 +64588,6 @@ "supports_vision": false }, "watsonx/ibm/granite-vision-3-2-2b": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 1e-7, @@ -59101,7 +64599,6 @@ "supports_vision": true }, "watsonx/meta-llama/llama-3-2-11b-vision-instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 3.5e-7, @@ -59113,7 +64610,6 @@ "supports_vision": true }, "watsonx/meta-llama/llama-3-2-1b-instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 1e-7, @@ -59125,7 +64621,6 @@ "supports_vision": false }, "watsonx/meta-llama/llama-3-2-3b-instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 1.5e-7, @@ -59137,7 +64632,6 @@ "supports_vision": false }, "watsonx/meta-llama/llama-3-2-90b-vision-instruct": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 0.000002, @@ -59149,7 +64643,6 @@ "supports_vision": true }, "watsonx/meta-llama/llama-3-3-70b-instruct": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 7.526e-7, @@ -59162,7 +64655,6 @@ "source": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx" }, "watsonx/meta-llama/llama-4-maverick-17b": { - "max_tokens": 8192, "max_input_tokens": 131072, "max_output_tokens": 8192, "input_cost_per_token": 3.71e-7, @@ -59175,7 +64667,6 @@ "source": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx" }, "watsonx/meta-llama/llama-4-maverick-17b-128e-instruct-fp8": { - "max_tokens": 8192, "max_input_tokens": 131072, "max_output_tokens": 8192, "input_cost_per_token": 3.71e-7, @@ -59188,7 +64679,6 @@ "source": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx" }, "watsonx/meta-llama/llama-guard-3-11b-vision": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 3.5e-7, @@ -59204,7 +64694,6 @@ "litellm_provider": "watsonx", "max_input_tokens": 131072, "max_output_tokens": 16384, - "max_tokens": 16384, "mode": "chat", "output_cost_per_token": 0.00001, "supports_audio_input": false, @@ -59218,7 +64707,6 @@ "supports_vision": false }, "watsonx/mistralai/mistral-medium-2505": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 0.000003, @@ -59230,7 +64718,6 @@ "supports_vision": false }, "watsonx/mistralai/mistral-small-2503": { - "max_tokens": 32000, "max_input_tokens": 32000, "max_output_tokens": 32000, "input_cost_per_token": 1e-7, @@ -59242,7 +64729,6 @@ "supports_vision": false }, "watsonx/mistralai/mistral-small-3-1-24b-instruct-2503": { - "max_tokens": 16384, "max_input_tokens": 131072, "max_output_tokens": 16384, "input_cost_per_token": 1.06e-7, @@ -59255,7 +64741,6 @@ "source": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx" }, "watsonx/mistralai/pixtral-12b-2409": { - "max_tokens": 128000, "max_input_tokens": 128000, "max_output_tokens": 128000, "input_cost_per_token": 3.5e-7, @@ -59267,7 +64752,6 @@ "supports_vision": true }, "watsonx/openai/gpt-oss-120b": { - "max_tokens": 131072, "max_input_tokens": 131072, "max_output_tokens": 131072, "input_cost_per_token": 1.59e-7, @@ -59280,7 +64764,6 @@ "source": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx" }, "watsonx/sdaia/allam-1-13b-instruct": { - "max_tokens": 8192, "max_input_tokens": 8192, "max_output_tokens": 8192, "input_cost_per_token": 0.0000018, @@ -59299,7 +64782,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 4096, "max_output_tokens": 4096, - "max_tokens": 4096, "mode": "chat", "output_cost_per_token": 6e-7, "output_cost_per_token_batches": 3e-7, @@ -59309,23 +64791,25 @@ "supports_vision": true }, "writer.palmyra-x4-v1:0": { + "deprecation_date": "2027-03-09", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-writer-palmyra-x4.md", "input_cost_per_token": 0.0000025, "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.00001, - "source": "https://aws.amazon.com/bedrock/pricing/", + "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-writer-palmyra-x4.md", "supports_function_calling": true, "supports_pdf_input": true }, "writer.palmyra-x5-v1:0": { + "deprecation_date": "2027-03-21", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-writer-palmyra-x5.md", "input_cost_per_token": 6e-7, "litellm_provider": "bedrock_converse", "max_input_tokens": 128000, "max_output_tokens": 8192, - "max_tokens": 8192, "mode": "chat", "output_cost_per_token": 0.000006, "source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-writer-palmyra-x5.md", @@ -59419,7 +64903,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_batches": 0.000002, @@ -59447,7 +64930,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_batches": 0.000002, @@ -59475,7 +64957,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_batches": 0.000002, @@ -59502,7 +64983,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_batches": 0.000002, @@ -59528,7 +65008,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59550,7 +65029,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59572,7 +65050,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59593,7 +65070,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59615,7 +65091,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59637,7 +65112,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59658,7 +65132,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59680,7 +65153,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59701,7 +65173,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59723,7 +65194,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59745,7 +65215,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59766,7 +65235,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59788,7 +65256,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59810,7 +65277,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59831,7 +65297,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59855,7 +65320,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_batches": 0.000002, @@ -59880,7 +65344,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59903,7 +65366,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_batches": 0.000002, @@ -59930,7 +65392,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_batches": 0.000002, @@ -59956,7 +65417,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "source": "https://api.x.ai/v1/language-models", @@ -59980,7 +65440,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_batches": 0.000002, @@ -60011,9 +65470,10 @@ "input_cost_per_token_above_200k_tokens_batches": 0.000002, "input_cost_per_token_batches": 0.000001, "litellm_provider": "xai", + "token_count_framing": 185, + "token_count_tool_framing": 214, "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_above_200k_tokens": 0.000005, @@ -60041,7 +65501,6 @@ "litellm_provider": "xai", "max_input_tokens": 1000000, "max_output_tokens": 1000000, - "max_tokens": 1000000, "mode": "chat", "output_cost_per_token": 0.0000025, "output_cost_per_token_above_200k_tokens": 0.000005, @@ -60065,7 +65524,6 @@ "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, @@ -60087,7 +65545,6 @@ "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, @@ -60109,7 +65566,6 @@ "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, @@ -60125,16 +65581,21 @@ "xai/grok-4.7": { "cache_read_input_token_cost": 5e-7, "cache_read_input_token_cost_above_200k_tokens": 0.000001, + "cache_read_input_token_cost_above_200k_tokens_batches": 8e-7, + "cache_read_input_token_cost_batches": 4e-7, "input_cost_per_image_token": 0.000002, "input_cost_per_token": 0.000002, "input_cost_per_token_above_200k_tokens": 0.000004, + "input_cost_per_token_above_200k_tokens_batches": 0.0000032, + "input_cost_per_token_batches": 0.0000016, "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, + "output_cost_per_token_above_200k_tokens_batches": 0.0000096, + "output_cost_per_token_batches": 0.0000048, "source": "https://api.x.ai/v1/language-models", "supports_function_calling": true, "supports_prompt_caching": true, @@ -60163,7 +65624,6 @@ "litellm_provider": "xai", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000002, "source": "https://api.x.ai/v1/language-models", @@ -60187,7 +65647,6 @@ "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, @@ -60209,7 +65668,6 @@ "litellm_provider": "xai", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000002, "output_cost_per_token_above_200k_tokens": 0.000004, @@ -60224,13 +65682,13 @@ "xai/grok-code-fast-1": { "cache_read_input_token_cost": 2e-7, "cache_read_input_token_cost_above_200k_tokens": 4e-7, + "deprecation_date": "2026-05-15", "input_cost_per_image_token": 0.000001, "input_cost_per_token": 0.000001, "input_cost_per_token_above_200k_tokens": 0.000002, "litellm_provider": "xai", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000002, "output_cost_per_token_above_200k_tokens": 0.000004, @@ -60251,7 +65709,6 @@ "litellm_provider": "xai", "max_input_tokens": 256000, "max_output_tokens": 256000, - "max_tokens": 256000, "mode": "chat", "output_cost_per_token": 0.000002, "output_cost_per_token_above_200k_tokens": 0.000004, @@ -60283,7 +65740,6 @@ "litellm_provider": "xiaomi_mimo", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 2.8e-7, "source": "https://platform.xiaomimimo.com/static/docs/price/pay-as-you-go.md", @@ -60306,7 +65762,6 @@ "litellm_provider": "xiaomi_mimo", "max_input_tokens": 1048576, "max_output_tokens": 131072, - "max_tokens": 131072, "mode": "chat", "output_cost_per_token": 8.7e-7, "source": "https://platform.xiaomimimo.com/static/docs/price/pay-as-you-go.md", @@ -60325,6 +65780,8 @@ }, "zai.glm-4.7": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", + "successor_model": "zai.glm-5", "input_cost_per_token": 6e-7, "input_cost_per_token_batches": 3e-7, "input_cost_per_token_flex": 3e-7, @@ -60332,7 +65789,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 203000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 0.0000022, "output_cost_per_token_batches": 0.0000011, @@ -60349,6 +65805,7 @@ }, "zai.glm-4.7-flash": { "deprecation_date": "2027-03-30", + "deprecation_source": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html", "input_cost_per_token": 7e-8, "input_cost_per_token_batches": 3.5e-8, "input_cost_per_token_flex": 3.5e-8, @@ -60356,7 +65813,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 203000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token": 4e-7, "output_cost_per_token_batches": 2e-7, @@ -60379,7 +65835,6 @@ "litellm_provider": "bedrock_converse", "max_input_tokens": 200000, "max_output_tokens": 128000, - "max_tokens": 128000, "mode": "chat", "output_cost_per_token_batches": 0.0000016, "output_cost_per_token_priority": 0.0000056, @@ -60589,6 +66044,7 @@ "supports_function_calling": true, "supports_prompt_caching": true, "supports_reasoning": true, + "supports_response_schema": true, "supports_tool_choice": true }, "zai/glm-5.3-flash": { @@ -60603,8 +66059,198 @@ "supports_function_calling": true, "supports_prompt_caching": true, "supports_reasoning": true, + "supports_response_schema": true, "supports_tool_choice": true, "source": "https://docs.z.ai/guides/overview/pricing", "supports_vision": true + }, + "zai/glm-5v-turbo": { + "cache_read_input_token_cost": 2.4e-7, + "input_cost_per_token": 0.0000012, + "litellm_provider": "zai", + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.000004, + "source": "https://vercel.com/ai-gateway/models/glm-5v-turbo", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "zerogpu/LFM2.5-1.2B-Instruct": { + "input_cost_per_token": 2e-8, + "litellm_provider": "zerogpu", + "max_input_tokens": 32768, + "max_output_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 5e-8, + "source": "https://docs.zerogpu.ai/docs/model-catalog" + }, + "zerogpu/LFM2.5-1.2B-Thinking": { + "input_cost_per_token": 2e-8, + "litellm_provider": "zerogpu", + "max_input_tokens": 32768, + "max_output_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 5e-8, + "source": "https://docs.zerogpu.ai/docs/model-catalog" + }, + "zerogpu/deepseek-v4.1-flash": { + "cache_read_input_token_cost": 3e-9, + "input_cost_per_token": 3e-7, + "litellm_provider": "zerogpu", + "max_input_tokens": 1048576, + "max_output_tokens": 65536, + "mode": "chat", + "output_cost_per_token": 0.0000012, + "source": "https://docs.zerogpu.ai/docs/model-catalog", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "zerogpu/glm-5.3-flash": { + "cache_read_input_token_cost": 1.5e-8, + "input_cost_per_token": 1e-7, + "litellm_provider": "zerogpu", + "max_input_tokens": 1048576, + "max_output_tokens": 32768, + "mode": "chat", + "output_cost_per_token": 3.5e-7, + "source": "https://docs.zerogpu.ai/docs/model-catalog", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "zerogpu/gpt-4.1-mini": { + "cache_read_input_token_cost": 1e-7, + "input_cost_per_token": 4e-7, + "litellm_provider": "zerogpu", + "max_input_tokens": 1047576, + "max_output_tokens": 32768, + "mode": "chat", + "output_cost_per_token": 0.0000016, + "source": "https://docs.zerogpu.ai/docs/model-catalog", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "zerogpu/gpt-5.4-nano": { + "cache_read_input_token_cost": 2e-8, + "input_cost_per_token": 2e-7, + "litellm_provider": "zerogpu", + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.00000125, + "source": "https://docs.zerogpu.ai/docs/model-catalog", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "zerogpu/gpt-5.6-luna": { + "cache_read_input_token_cost": 2e-7, + "input_cost_per_token": 2e-7, + "litellm_provider": "zerogpu", + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 0.0000012, + "source": "https://docs.zerogpu.ai/docs/model-catalog", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "zerogpu/gpt-6-luna": { + "cache_read_input_token_cost": 1e-8, + "input_cost_per_token": 1e-7, + "litellm_provider": "zerogpu", + "max_input_tokens": 272000, + "max_output_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 5e-7, + "source": "https://docs.zerogpu.ai/docs/model-catalog", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, + "zerogpu/gpt-oss-120b": { + "cache_read_input_token_cost": 3e-8, + "input_cost_per_token": 1.5e-7, + "litellm_provider": "zerogpu", + "max_input_tokens": 128000, + "max_output_tokens": 32768, + "mode": "chat", + "output_cost_per_token": 6e-7, + "source": "https://docs.zerogpu.ai/docs/model-catalog", + "supports_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "zerogpu/llama-3.1-8b-instruct-fast": { + "cache_read_input_token_cost": 2.5e-8, + "input_cost_per_token": 1.5e-7, + "litellm_provider": "zerogpu", + "max_input_tokens": 131072, + "max_output_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 2.8e-7, + "source": "https://docs.zerogpu.ai/docs/model-catalog", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "zerogpu/llama-3.2-3b-instruct-fast": { + "cache_read_input_token_cost": 2.5e-8, + "input_cost_per_token": 5e-8, + "litellm_provider": "zerogpu", + "max_input_tokens": 131072, + "max_output_tokens": 8192, + "mode": "chat", + "output_cost_per_token": 3e-7, + "source": "https://docs.zerogpu.ai/docs/model-catalog" + }, + "zerogpu/qwen3-30b-a3b-fp8": { + "cache_read_input_token_cost": 5e-8, + "input_cost_per_token": 1e-7, + "litellm_provider": "zerogpu", + "max_input_tokens": 32768, + "max_output_tokens": 16384, + "mode": "chat", + "output_cost_per_token": 4.5e-7, + "source": "https://docs.zerogpu.ai/docs/model-catalog", + "supports_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true + }, + "zerogpu/qwen3.6-35b-a3b": { + "cache_read_input_token_cost": 2e-7, + "input_cost_per_token": 2e-7, + "litellm_provider": "zerogpu", + "max_input_tokens": 262144, + "max_output_tokens": 16384, + "mode": "chat", + "output_cost_per_token": 0.0000015, + "source": "https://docs.zerogpu.ai/docs/model-catalog", + "supports_function_calling": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true } } \ No newline at end of file diff --git a/cecli/resources/providers.json b/cecli/resources/providers.json index e037a6bf452..60c369169ca 100644 --- a/cecli/resources/providers.json +++ b/cecli/resources/providers.json @@ -348,6 +348,15 @@ "display_name": "opencode-zen", "session_header": "x-opencode-session" }, + "openrouter": { + "api_base": "https://openrouter.ai/api/v1", + "api_key_env": [ + "OPENROUTER_API_KEY" + ], + "display_name": "openrouter", + "models_url": "https://openrouter.ai/api/v1/models", + "requires_api_key": false + }, "ovhcloud": { "api_base": "https://oai.endpoints.kepler.ai.cloud.ovh.net/v1", "api_key_env": [ diff --git a/cecli/tools/broadcast.py b/cecli/tools/broadcast.py index fdc513cdbac..0b4215d276e 100644 --- a/cecli/tools/broadcast.py +++ b/cecli/tools/broadcast.py @@ -20,7 +20,8 @@ class Tool(BaseTool): "function": { "name": "Broadcast", "description": ( - "Broadcast a message to one or more sub-agent instances. Sends the message to the " + "Broadcast a message to one or more sub-agent instances." + "This tool is useful for collaboration and coordination. Sends the message to the " "specified target sub-agents, or to every active sub-agent when empty/omitted. " "The message is queued into the target's context if it is actively generating, " "and delivered immediately if the target is idle, waking them." diff --git a/cecli/tools/delegate.py b/cecli/tools/delegate.py index e5650f1b8f8..b0dafaf95d1 100644 --- a/cecli/tools/delegate.py +++ b/cecli/tools/delegate.py @@ -49,6 +49,13 @@ class Tool(BaseTool): " If false, wait for the result." ), }, + "working_dir": { + "type": "string", + "description": ( + "Optional working directory for this delegation. " + "Relative paths resolve against the dispatching agent's root." + ), + }, "persist": { "type": "boolean", "default": False, @@ -76,7 +83,8 @@ async def execute(cls, coder, **kwargs): if not delegations or not isinstance(delegations, list): response.append_error( - "'delegations' parameter must be a non-empty array of {name, prompt, async, persist} objects." + "'delegations' parameter must be a non-empty array of " + "{name, prompt, async, working_dir, persist} objects." ) return response @@ -106,33 +114,39 @@ async def execute(cls, coder, **kwargs): # Separate async (fire-and-forget) and sync (blocking) delegations async_delegations = [ - (d["name"], d["prompt"], d.get("persist", False)) + (d["name"], d["prompt"], d.get("persist", False), d.get("working_dir")) for d in delegations if d.get("async", True) ] sync_delegations = [ - (d["name"], d["prompt"], d.get("persist", False)) + (d["name"], d["prompt"], d.get("persist", False), d.get("working_dir")) for d in delegations if not d.get("async", True) ] - async def _spawn_one(name: str, prompt: str, persist: bool) -> tuple: + async def _spawn_one(name: str, prompt: str, persist: bool, working_dir=None) -> tuple: """Spawn a single sub-agent (fire-and-forget). Returns (name, uuid_or_error, error).""" auto_reap = None if not persist else False try: + spawn_kwargs = {} + if working_dir: + spawn_kwargs["root"] = working_dir new_coder, info = await agent_service.spawn( - name, prompt, parent=coder, auto_reap=auto_reap + name, prompt, parent=coder, auto_reap=auto_reap, **spawn_kwargs ) return name, info.coder.uuid, None except Exception as e: return name, None, f"failed: {e}" - async def _invoke_one(name: str, prompt: str, persist: bool) -> tuple: + async def _invoke_one(name: str, prompt: str, persist: bool, working_dir=None) -> tuple: """Invoke a single sub-agent (blocking). Returns (name, summary_or_error, error).""" auto_reap = None if not persist else False try: + invoke_kwargs = {} + if working_dir: + invoke_kwargs["root"] = working_dir summary = await agent_service.invoke( - name, prompt, parent=coder, auto_reap=auto_reap + name, prompt, parent=coder, auto_reap=auto_reap, **invoke_kwargs ) return name, summary or "(no summary)", None except Exception as e: @@ -141,13 +155,19 @@ async def _invoke_one(name: str, prompt: str, persist: bool) -> tuple: # Process async delegations (fire-and-forget spawn) async_results = [] if async_delegations: - tasks = [_spawn_one(n, p, persist) for n, p, persist in async_delegations] + tasks = [ + _spawn_one(n, p, persist, working_dir) + for n, p, persist, working_dir in async_delegations + ] async_results = list(await asyncio.gather(*tasks)) # Process sync delegations (blocking invoke) sync_results = [] if sync_delegations: - tasks = [_invoke_one(n, p, persist) for n, p, persist in sync_delegations] + tasks = [ + _invoke_one(n, p, persist, working_dir) + for n, p, persist, working_dir in sync_delegations + ] sync_results = list(await asyncio.gather(*tasks)) # Build response @@ -213,10 +233,13 @@ def format_output(cls, coder, mcp_server, tool_response): prompt = d.get("prompt", "") is_async = d.get("async", True) is_persist = d.get("persist", False) + working_dir = d.get("working_dir") coder.io.tool_output(f"{color_start}delegation_{i + 1}:{color_end}") coder.io.tool_output(f"agent: {name}") coder.io.tool_output(f"mode: {'async' if is_async else 'sync'}") coder.io.tool_output(f"persist: {'true' if is_persist else 'false'}") + if working_dir: + coder.io.tool_output(f"working_dir: {working_dir}") coder.io.tool_output(f"task: {prompt}") if i < len(delegations) - 1: coder.io.tool_output("") diff --git a/cecli/tools/edit_file.py b/cecli/tools/edit_file.py index c9bc930e43d..82c1750c64d 100644 --- a/cecli/tools/edit_file.py +++ b/cecli/tools/edit_file.py @@ -1,3 +1,5 @@ +import re + from cecli.helpers import nested from cecli.helpers.hashline import ( HASH_DELIMITER, @@ -9,11 +11,16 @@ strip_hashline, ) from cecli.helpers.hashpos.hashpos import HashPos -from cecli.helpers.hashpos.transformations import resolve_at_l, strip_hashline_prefix +from cecli.helpers.hashpos.transformations import ( + extract_hint, + resolve_at_l, + strip_hashline_prefix, +) from cecli.tools.utils.base_tool import BaseTool from cecli.tools.utils.helpers import ( ToolError, apply_change, + read_text_preserving_newlines, validate_file_for_edit, ) from cecli.tools.utils.output import color_markers, tool_footer, tool_header @@ -36,6 +43,10 @@ } +READFILE_ONLY_HINT_RE = re.compile(r"(?:^|[ \t])@[CPN][0-9]*[ \t]*$") +BARE_AB_HINT_RE = re.compile(r"(?:^|[ \t])@[AB][ \t]*$") + + class Tool(BaseTool): NORM_NAME = "editfile" RESULT_TYPE = "list" @@ -49,20 +60,27 @@ class Tool(BaseTool): "function": { "name": "EditFile", "description": ( - "Modify text in one or more files by targeting lines with their virtual identifiers " - "(as returned by ReadFile). You can batch multiple operations across files in one call." - "" - "Operations:" - " - 'replace' — swap the targeted range with new text" - " - 'delete' — remove the targeted range" - "" - "Start and end markers are inclusive: both referenced lines are modified or removed. " - f"Reference unique lines (prefixed with '{UNIQUE_HASH_DELIMITER}') by their exact text, and " - f"duplicate lines by their hashed prefix (e.g., '{HASH_DELIMITER}WecX{HASH_DELIMITER}'); use " - "'@000' for empty files. Identifiers track content, so edits can re-prefix identical lines " - "elsewhere — re-read the file after editing for fresh identifiers. Multiple edits to one " - "file are applied bottom-to-top automatically; overlapping or contained ranges are merged " - "or rejected automatically." + "Edit lines in one or more files by targeting lines with their virtual identifiers " + "(as returned by ReadFile); batch across files in one call. " + "'replace' swaps the range, 'delete' removes it, " + "'insert' adds text before/after the target line.\n" + "\n" + "start_line and end_line are inclusive; each is one single-line anchor:\n" + f"- unique lines (prefixed with '{UNIQUE_HASH_DELIMITER}') by exact text, " + "or duplicate lines by their hashed prefix " + f"'{HASH_DELIMITER}WecX{HASH_DELIMITER}' (text after it ignored)\n" + "- '@L' (1-based; '@L0' = top)\n" + "- 'text @L', 'text @A{{regex}}' (anchor text required; after regex hit), " + "or 'text @B{{regex}}' (before it); bare '@A'/'@B' is rejected\n" + "- '@C', '@P', and '@N' are ReadFile-only range markers; " + "EditFile rejects them (use '@L' or a content ID instead)\n" + "\n" + "Ambiguous text fails. '@000' = empty/top; '000@' = EOF. " + "Use '@000' for both start_line and end_line to prepend. " + "Use '000@' for both start_line and end_line to append at end of file. " + "end_line resolves nearest start_line. " + "Edits apply bottom-to-top; overlaps merge or reject. " + "Re-read before reusing IDs (they encode position)." ), "parameters": { "type": "object", @@ -84,36 +102,39 @@ class Tool(BaseTool): }, "operation": { "type": "string", - "enum": ["replace", "delete"], + "enum": ["replace", "delete", "insert"], "description": ( - "The kind of edit: 'replace' swaps the targeted range with new text, " - "'delete' removes it entirely." + "'replace' swaps the range with text; 'delete' removes it; " + "'insert' adds text before/after the target line." ), }, "text": { "type": "string", "description": ( - "The replacement text for 'replace'. " - "For 'delete' leave this as an empty string (\"\"). " - "Supplied as-is; do not include identifier prefixes." + "Replacement/insertion text (non-empty); \"\" for 'delete'. " + "Prefixes are stripped." + ), + }, + "position": { + "type": "string", + "enum": ["before", "after"], + "description": ( + "For 'insert': place text before or after the target line. " + "Defaults to 'after'." ), }, "start_line": { "type": "string", "description": ( - "The first line of the edit (inclusive): " - "its exact text if unique, its hashed prefix " - f"(e.g., '{HASH_DELIMITER}WecX{HASH_DELIMITER}') if duplicated, " - "or '@000' for empty files." + "First line (inclusive). See anchor forms above; " + "'@000'/'@L0' = empty/top." ), }, "end_line": { "type": "string", "description": ( - "The last line of the edit (inclusive): " - "its exact text if unique, its hashed " - f"prefix (e.g., '{HASH_DELIMITER}WecX{HASH_DELIMITER}') if duplicated, " - "or '000@' for the end of the file." + "Last line (inclusive). Same forms; '000@' = EOF. " + "Optional for 'insert'." ), }, }, @@ -122,7 +143,6 @@ class Tool(BaseTool): "operation", "text", "start_line", - "end_line", ], }, }, @@ -225,7 +245,7 @@ def execute( if operation not in VALID_OPERATIONS: raise ToolError( f"Edit {edit_index + 1}: Invalid operation '{operation}'. " - "Must be 'replace' or 'delete'" + "Must be 'replace', 'delete', or 'insert'" ) edit_file_raw = edit.get("text") @@ -236,6 +256,19 @@ def execute( edit, ["end_line", "range_end", "line_end", "end"] ) + for anchor_name, anchor_value in ( + ("start_line", edit_start_line), + ("end_line", edit_end_line), + ): + if isinstance(anchor_value, str) and ( + "\n" in anchor_value or "\r" in anchor_value + ): + raise ToolError( + f"Edit {edit_index + 1}: '{anchor_name}' must be a " + "single-line anchor; multi-line text is only supported " + "in 'text'. Use a content ID or '@L' to target one line." + ) + # --------------------------------------------------------- # DEFENSIVE FALLBACKS # --------------------------------------------------------- @@ -245,21 +278,25 @@ def execute( edit_start_line = "@000" edit_end_line = "@000" - # Resolve @L{num} notation directly to content ID - edit_start_line = cls._resolve_at_l_num( - edit_start_line, hp, source_lines, file_path_key + # Resolve line hints (@L/@A/@B) and content references + edit_start_line, start_hint_line = cls._resolve_line_hint( + edit_start_line, + hp, + source_lines, + file_path_key, ) - edit_end_line = cls._resolve_at_l_num( - edit_end_line, hp, source_lines, file_path_key + edit_end_line, _ = cls._resolve_line_hint( + edit_end_line, + hp, + source_lines, + file_path_key, ) - # Strip virtual prefixes from ReadFile output lines - edit_start_line = cls._strip_readfile_prefix(edit_start_line) - edit_end_line = cls._strip_readfile_prefix(edit_end_line) - - # Resolve remaining non-hashline content values to content IDs edit_start_line, edit_end_line = resolve_content_to_hashline_ids( - original_content, edit_start_line, edit_end_line + original_content, + edit_start_line, + edit_end_line, + start_hint_line=start_hint_line, ) # --------------------------------------------------------- @@ -299,6 +336,18 @@ def execute( f"Edit {edit_index + 1}: 'start_line' parameter is required" " for 'insert' operation" ) + + position = nested.getter(edit, ["position"]) + if position is None: + position = "after" + if isinstance(position, str): + position = position.lower() + if position not in ("before", "after"): + raise ToolError( + f"Edit {edit_index + 1}: 'position' must be " + "'before' or 'after'" + ) + # For insert, end_line defaults to start_line edit_end_line = edit_end_line or edit_start_line @@ -310,6 +359,8 @@ def execute( } if edit_file is not None: op_dict["text"] = edit_file + if operation == "insert": + op_dict["position"] = position operations.append(op_dict) @@ -320,6 +371,9 @@ def execute( "end_line": edit_end_line, "text": edit_file, } + if operation == "insert": + metadata["position"] = position + file_metadata.append(metadata) except Exception as e: @@ -419,6 +473,8 @@ def execute( ) coder.files_edited_by_tools.add(rel_path) + if getattr(coder, "uuid", None): + ConversationService.get_chunks(coder).notify_file_edited(abs_path) all_results.append( { @@ -578,7 +634,7 @@ def format_output(cls, coder, mcp_server, tool_response): if file_path_key and start_line and end_line: try: abs_path = coder.abs_root_path(file_path_key) - original_content = coder.io.read_text(abs_path) + original_content = read_text_preserving_newlines(coder, abs_path) if original_content is not None: # Mirror execute()'s preprocessing so the preview @@ -590,17 +646,23 @@ def format_output(cls, coder, mcp_server, tool_response): if original_content and original_content.strip() else [] ) - start_line = cls._resolve_at_l_num( - start_line, hp, source_lines, file_path_key + start_line, start_hint_line = cls._resolve_line_hint( + start_line, + hp, + source_lines, + file_path_key, ) - end_line = cls._resolve_at_l_num( - end_line, hp, source_lines, file_path_key + end_line, _ = cls._resolve_line_hint( + end_line, + hp, + source_lines, + file_path_key, ) - start_line = cls._strip_readfile_prefix(start_line) - end_line = cls._strip_readfile_prefix(end_line) - start_line, end_line = resolve_content_to_hashline_ids( - original_content, start_line, end_line + original_content, + start_line, + end_line, + start_hint_line=start_hint_line, ) diff_output = get_hashline_diff( original_content=strip_hashline(original_content), @@ -621,8 +683,12 @@ def format_output(cls, coder, mcp_server, tool_response): coder.io.tool_output("") elif operation == "insert": - # Show inserted text + # Inserted text is additive, so render it like added diff lines. if text: + lines = [f"+{line}" for line in text.splitlines()] + if coder.agent_config.get("diff_colors", True): + lines = [f"\033[32m{line}\x1b[0m" for line in lines] + text = "\n".join(lines) coder.io.tool_output(text) coder.io.tool_output("") @@ -650,6 +716,91 @@ def _strip_readfile_prefix(value): return strip_hashline_prefix(value) + @classmethod + def _resolve_line_hint(cls, line_spec, hp, source_lines, file_path): + """Resolve a hint suffix on a line spec to a content ID when possible. + + Supports ``@L``, ``@A{regex}``/``@A{{regex}}``, and + ``@B{regex}``/``@B{{regex}}`` suffixes. + Returns ``(resolved_spec, hint_line)``. ``hint_line`` is retained only + when the hint could not be resolved locally, so the caller can fall + back to proximity resolution. + """ + + if not isinstance(line_spec, str): + return line_spec, None + + line_spec = cls._strip_readfile_prefix(line_spec) + + if READFILE_ONLY_HINT_RE.search(line_spec): + raise ToolError( + "ReadFile-only range markers ('@C', '@P', '@N') are not " + "supported by EditFile; use a content ID or '@L' line reference." + ) + + if BARE_AB_HINT_RE.search(line_spec): + raise ToolError( + "Bare '@A'/'@B' hints are not supported; include anchor text before " + "the hint, e.g. 'my line @A{regex}'." + ) + + stripped, hint_line, hint_type = extract_hint(line_spec, source_lines) + + if hint_type is None or hint_line is None: + return stripped, None + + if hint_type in ("A", "B") and not stripped.strip(): + raise ToolError( + "Bare '@" + hint_type + "' hints are not supported; include anchor text " + "before the hint (e.g., 'my line @" + hint_type + "{regex}' or " + "'my line @" + hint_type + "{{regex}}')." + ) + + if not stripped.strip() or (hint_type == "L" and stripped.strip() == line_spec.strip()): + return cls._resolve_at_l_num(f"@L{hint_line + 1}", hp, source_lines, file_path), None + + indices = cls._find_line_indices(stripped, source_lines) + + if hint_type == "A": + candidates = [i for i in indices if i > hint_line] + target = min(candidates) if candidates else None + elif hint_type == "B": + candidates = [i for i in indices if i < hint_line] + target = max(candidates) if candidates else None + else: + target = min(indices, key=lambda i: abs(i - hint_line)) if indices else None + + if target is None: + return stripped, hint_line if hint_type == "L" else None + + line_text = source_lines[target] + occurrence = 1 + sum(1 for line in source_lines[:target] if line == line_text) + + return hp.get_wrapped_id(hp.generate_public_id(line_text, target, occurrence)), None + + @staticmethod + def _find_line_indices(value, lines): + """Return indices of lines matching *value* or its first line. + + Single-line values are matched after trimming indentation. + """ + + value_lines = value.splitlines() + + if len(value_lines) > 1: + matches = [] + + for i in range(len(lines) - len(value_lines) + 1): + if all(lines[i + j] == value_lines[j] for j in range(len(value_lines))): + matches.append(i) + + return matches + + first_line = value_lines[0] if value_lines else value + first_line_stripped = first_line.strip() + + return [i for i, line in enumerate(lines) if line.strip() == first_line_stripped] + @classmethod def _categorize_edit_error(cls, error_msg: str) -> str: """Categorize an edit error message into a user-friendly display category.""" diff --git a/cecli/tools/grep.py b/cecli/tools/grep.py index 3a22dc448aa..b9181f242c3 100644 --- a/cecli/tools/grep.py +++ b/cecli/tools/grep.py @@ -35,18 +35,83 @@ # Output-shaping limits. These bound what is sent to the model while keeping # match locations intact (counts and line numbers survive truncation). MAX_MATCHES_PER_FILE = 10 +MAX_ADDITIONAL_LINE_NUMBERS = 10 MAX_FILES = 20 MAX_TOTAL_SIZE = 50000 MAX_LINE_LENGTH = 256 MAX_LINE_NUMBERS = 50 +MAX_CONTEXT_LINES = 5 def _should_use_regex(pattern, requested): - """Auto-enable regex for alternation unless the caller explicitly disables it.""" + """Choose regex mode, auto-detecting common regex syntax only for auto mode.""" if requested is False: return False - return bool(requested) or "|" in pattern + if requested is True: + return True + + return _looks_like_regex(pattern) + + +def _has_nonempty_alternation(pattern): + """Return True when every alternation branch in *pattern* is non-empty.""" + parts = re.split(r"(? 1 and all(parts) + + +def _has_regex_meta(pattern): + """Return True when a literal search might have been intended as regex.""" + if re.search(r"\\|[.^$\[\](){}*+?]", pattern): + return True + + return _has_nonempty_alternation(pattern) + + +def _looks_like_regex(pattern): + """Detect strong regex signals without treating ordinary code punctuation as regex.""" + if _has_nonempty_alternation(pattern): + return True + + if pattern.startswith("^") or pattern.endswith("$"): + return True + + if re.search(r"\(\?|\.\*|\.\+|\.\?|\{\d+(?:,\d*)?\}", pattern): + return True + + return bool(re.search(r"\\(?:[AbBdDsSwWZz]|p\{|P\{|[.^$*+?()\[\]{}|\\/-])", pattern)) + + +def _needs_pcre2(pattern): + """Return True for regex constructs unsupported by ripgrep's default engine.""" + return bool(re.search(r"\(\?(?:=|!|<=| 0: + counts[filepath] = count_val + except ValueError: + pass + continue + # Format: filepath:count # Use rsplit to handle paths that may contain colons idx = line.rfind(":") @@ -86,18 +207,20 @@ def _parse_count_output(output): filepath = line[:idx] try: count_val = int(line[idx + 1 :]) - counts[filepath] = count_val + if count_val > 0: + counts[filepath] = count_val except (ValueError, IndexError): pass return counts -def _parse_content_into_files(output): +def _parse_content_into_files(output, null_separated=False): """Parse grep -rn output into per-file groups. Returns list of dicts with keys: path, match_count, content_lines Content lines preserve the original grep format (with : for matches, - for context). Merges entries for the same file that appear in non-contiguous match groups. + When *null_separated* is set, each line is ``path\\0line:content``. """ if not output: return [] @@ -143,36 +266,52 @@ def _flush_current(): if line == "--": continue - # Try to extract filename from the line prefix - # Match lines: path:line:content - # Context lines: path-line-content (with - hyphen after line number) - m = re.match(r"^(.+?)[:-](\d+)[:-]", line) - if m: + if null_separated: + if "\0" not in line: + continue + + filepath, rest = line.split("\0", 1) + entry = re.match(r"^(\d+)([:-])(.*)$", rest) + if not entry: + continue + + line_text = ( + f"{filepath}{entry.group(2)}{entry.group(1)}{entry.group(2)}{entry.group(3)}" + ) + is_match_line = entry.group(2) == ":" + else: + # Try to extract filename from the line prefix + # Match lines: path:line:content + # Context lines: path-line-content (with - hyphen after line number) + m = re.match(r"^(.+?)[:-](\d+)[:-]", line) + if not m: + # Line that doesn't match the pattern (e.g. rg --heading output) + if current_file is not None: + current_lines.append(line) + continue + filepath = m.group(1) # Actually check: match lines have :LINE:, context lines have -LINE- # The format is: path:line:content or path-line-content # Check whether the char after line num is : or - line_num_end = len(filepath) + 1 + len(m.group(2)) is_match_line = line_num_end < len(line) and line[line_num_end] == ":" + line_text = line - if current_file is None: - current_file = filepath - match_count = 1 if is_match_line else 0 - current_lines = [line] - elif filepath == current_file: - current_lines.append(line) - if is_match_line: - match_count += 1 - else: - # Different file - flush current block before switching - _flush_current() - current_file = filepath - match_count = 1 if is_match_line else 0 - current_lines = [line] + if current_file is None: + current_file = filepath + match_count = 1 if is_match_line else 0 + current_lines = [line_text] + elif filepath == current_file: + current_lines.append(line_text) + if is_match_line: + match_count += 1 else: - # Line that doesn't match the pattern (e.g. rg --heading output) - if current_file is not None: - current_lines.append(line) + # Different file - flush current block before switching + _flush_current() + current_file = filepath + match_count = 1 if is_match_line else 0 + current_lines = [line_text] # Flush the last file's accumulated block _flush_current() @@ -192,6 +331,34 @@ def _flush_current(): return files +def _extract_warnings(output, null_separated=False): + """Return diagnostic lines that are not match or context records.""" + warnings = [] + if not output: + return warnings + + for raw_line in output.splitlines(): + line = raw_line.strip() + if not line or line == "--": + continue + + if null_separated: + if "\0" not in line: + warnings.append(line) + elif re.match(r"^(?:rg|ag|grep)(?:\.exe)?:\s", line, re.IGNORECASE): + warnings.append(line) + + return warnings + + +def _append_warnings(op_result, warnings): + """Add warnings to an operation result without duplicating messages.""" + bucket = op_result.setdefault("warnings", []) + for warning in warnings: + if warning not in bucket: + bucket.append(warning) + + def _cap_line(text, max_length=MAX_LINE_LENGTH): """Truncate a single line, marking how many characters were omitted.""" if len(text) <= max_length: @@ -450,7 +617,11 @@ class Tool(BaseTool): "file_glob": { "type": "string", "default": "*", - "description": "Glob pattern for files to search.", + "description": ( + "Glob pattern(s) for files to search. " + "Comma-separated lists are supported; use ** for " + "recursive matches and ! for ripgrep negation." + ), }, "directory": { "type": "string", @@ -459,12 +630,19 @@ class Tool(BaseTool): }, "use_regex": { "type": "boolean", - "description": "Whether to use regex search or literal text.", + "description": ( + "Whether to use regex search or literal text. " + "Omit to auto-detect from the pattern and retry " + "the other interpretation when one finds nothing." + ), }, "case_insensitive": { "type": "boolean", "default": True, - "description": "Whether to perform a case-insensitive search.", + "description": ( + "Whether to perform a case-insensitive search " + "(default true)." + ), }, "mode": { "type": "string", @@ -480,21 +658,27 @@ class Tool(BaseTool): "type": "boolean", "default": True, "description": ( - "Whether to run a fast count pass for exact totals." + "Whether to run a fast count pass for exact " + "totals. When false, per-file totals are capped " + f"at {MAX_LINE_NUMBERS} and may be approximate." ), }, "context_before": { "type": "integer", "default": 0, "description": ( - "Number of context lines to show before each match. Max 5" + "Number of context lines to show before each " + f"match. Max {MAX_CONTEXT_LINES}; larger values " + "are clamped with a warning." ), }, "context_after": { "type": "integer", "default": 0, "description": ( - "Number of context lines to show after each match. Max 5" + "Number of context lines to show after each " + f"match. Max {MAX_CONTEXT_LINES}; larger values " + "are clamped with a warning." ), }, }, @@ -641,28 +825,42 @@ def execute( pattern = strip_hashline(search_op.get("pattern", "")) file_pattern = search_op.get("file_glob", "*") directory = search_op.get("directory", search_op.get("path", ".")) - use_regex = _should_use_regex(pattern, search_op.get("use_regex")) + requested_regex = search_op.get("use_regex") + use_regex = _should_use_regex(pattern, requested_regex) case_insensitive = search_op.get("case_insensitive", True) mode = search_op.get("mode", "matches") - if mode not in ("files", "matches"): - mode = "matches" # Context is an orthogonal knob, disabled by default for compact output. - context_before = max(min(int(search_op.get("context_before", 0)), 5), 0) - context_after = max(min(int(search_op.get("context_after", 0)), 5), 0) + context_before, context_before_warning = _parse_context_line_count( + search_op.get("context_before", 0), "context_before" + ) + context_after, context_after_warning = _parse_context_line_count( + search_op.get("context_after", 0), "context_after" + ) count_enabled = search_op.get("count", True) op_result = { "pattern": pattern, + "regex": use_regex, "mode": mode, "total_matches": 0, "total_files": 0, "has_more_files": False, "error": None, - "files": [], } + context_warnings = [ + warning for warning in (context_before_warning, context_after_warning) if warning + ] + if context_warnings: + _append_warnings(op_result, context_warnings) + + if mode not in ("files", "matches"): + op_result["error"] = f"Invalid mode '{mode}'. Expected 'files' or 'matches'." + all_operation_results.append(op_result) + continue + if not pattern: op_result["error"] = "Search operation requires a non-empty 'pattern'." all_operation_results.append(op_result) @@ -676,6 +874,8 @@ def execute( else: search_dir_path = Path(repo.root) / expanded_directory + null_separated = tool_name in ("rg", "grep") + if tool_name == "powershell": # PowerShell (Select-String) backend: build a pipeline script and # invoke it via -EncodedCommand to avoid shell quoting issues. @@ -694,94 +894,121 @@ def execute( tool_path, ) else: - # Build base content command - base_cmd = [tool_path, "-n"] - if tool_name == "rg": - base_cmd.append("--with-filename") - - # Pattern type - pattern_flag = [] - if use_regex: - if tool_name == "grep": - pattern_flag = ["-E"] - else: - if tool_name == "rg": - pattern_flag = ["-F"] - elif tool_name == "ag": - pattern_flag = ["-Q"] + + def _build_commands(regex_enabled): + pattern_flag = [] + if regex_enabled: + if tool_name == "grep": + pattern_flag = ["-P"] if _grep_supports_pcre(tool_path) else ["-E"] + elif tool_name == "rg" and _needs_pcre2(pattern): + pattern_flag = ["--pcre2"] + else: + if tool_name == "rg": + pattern_flag = ["-F"] + elif tool_name == "ag": + pattern_flag = ["-Q"] + elif tool_name == "grep": + pattern_flag = ["-F"] + + # Case sensitivity + case_flag = ["-i"] if case_insensitive else [] + + # File filtering + file_filter = [] + glob_patterns = _split_glob_patterns(file_pattern) + if glob_patterns != ["*"]: + if tool_name == "rg": + for glob_pattern in glob_patterns: + file_filter.extend(["-g", glob_pattern]) + elif tool_name == "ag": + for glob_pattern in glob_patterns: + file_filter.extend(["-G", glob_pattern]) + elif tool_name == "grep": + file_filter = ["-r"] + for glob_pattern in glob_patterns: + file_filter.append(f"--include={glob_pattern}") elif tool_name == "grep": - pattern_flag = ["-F"] + file_filter = ["-r"] - # Case sensitivity - case_flag = ["-i"] if case_insensitive else [] + # Exclusions + exclude_args = [] + _build_exclude_args(tool_name, exclude_args, exclude_cecli=not creator) - # File filtering - file_filter = [] - if file_pattern != "*": + null_flag = [] if tool_name == "rg": - file_filter = ["-g", file_pattern] + null_flag = ["--null"] + elif tool_name == "grep": + null_flag = ["-Z"] + + # --- PASS1: Build count command (fast, no context) --- + count_cmd_parts = [tool_path] + if tool_name == "rg": + count_cmd_parts.extend(["-c", "--no-config"]) elif tool_name == "ag": - file_filter = ["-G", file_pattern] + count_cmd_parts.append("-rc") + else: + # -I skips binary files, matching the content pass. + count_cmd_parts.extend(["-rnc", "-I"]) + count_cmd = ( + count_cmd_parts + + case_flag + + pattern_flag + + file_filter + + exclude_args + + null_flag + + ["--", pattern, str(search_dir_path)] + ) + count_string = oslex.join(count_cmd) + + # Source-level caps: bound matches per file and line length so + # post-processing never sees unbounded content. + output_cap_args = [] + if tool_name == "rg": + output_cap_args = [ + "-m", + str(MAX_LINE_NUMBERS), + "--max-columns", + str(MAX_LINE_LENGTH), + "--max-columns-preview", + ] elif tool_name == "grep": - file_filter = ["-r", f"--include={file_pattern}"] - elif tool_name == "grep": - file_filter = ["-r"] - - # Exclusions - exclude_args = [] - _build_exclude_args(tool_name, exclude_args, exclude_cecli=not creator) - - # --- PASS1: Build count command (fast, no context) --- - count_cmd_parts = [tool_path] - if tool_name == "rg": - count_cmd_parts.append("-c") - elif tool_name == "ag": - count_cmd_parts.append("-rc") - else: - # -I skips binary files, matching the content pass. - count_cmd_parts.append("-rnc") - count_cmd_parts.append("-I") - count_cmd = ( - count_cmd_parts - + case_flag - + pattern_flag - + exclude_args - + file_filter - + ["--", pattern, str(search_dir_path)] - ) - count_string = oslex.join(count_cmd) - - # Source-level caps: bound matches per file and line length so - # post-processing never sees unbounded content. - output_cap_args = [] - if tool_name == "rg": - output_cap_args = [ - "-m", - str(MAX_LINE_NUMBERS), - "--max-columns", - str(MAX_LINE_LENGTH), - "--max-columns-preview", - ] - elif tool_name == "grep": - # -I skips binary files; -m bounds matches per file. - output_cap_args = ["-I", "-m", str(MAX_LINE_NUMBERS)] - - # --- PASS2: Build content with context --- - content_cmd = ( - base_cmd - + output_cap_args - + (["-B", str(context_before)] if context_before > 0 else []) - + (["-A", str(context_after)] if context_after > 0 else []) - + case_flag - + pattern_flag - + exclude_args - + file_filter - + ["--", pattern, str(search_dir_path)] - ) - content_string = oslex.join(content_cmd) + # -I skips binary files; -m bounds matches per file. + output_cap_args = ["-I", "-m", str(MAX_LINE_NUMBERS)] + + # --- PASS2: Build content with context --- + base_cmd = [tool_path, "-n"] + if tool_name == "rg": + base_cmd.extend( + [ + "--with-filename", + "--no-heading", + "--color=never", + "--no-config", + ] + ) + + content_cmd = ( + base_cmd + + output_cap_args + + null_flag + + (["-B", str(context_before)] if context_before > 0 else []) + + (["-A", str(context_after)] if context_after > 0 else []) + + case_flag + + pattern_flag + + file_filter + + exclude_args + + ["--", pattern, str(search_dir_path)] + ) + content_string = oslex.join(content_cmd) + + return count_string, content_string + + count_string, content_string = _build_commands(use_regex) # --- PASS1: Get match counts (fast, no context) --- counts = {} + count_status = 0 + count_output = "" if count_enabled and tool_name != "powershell": coder.io.tool_output( f"⛭ Counting matches with {tool_name}: '{pattern}' in {directory}", @@ -793,8 +1020,54 @@ def execute( cwd=coder.root, should_print=False, ) - if count_status == 0: - counts = _parse_count_output(count_output) + if count_status in (0, 1, 2): + counts = _parse_count_output(count_output, null_separated=null_separated) + + # Auto mode retries the other interpretation when one comes back + # empty or invalid. This is what makes unescaped regex syntax work + # without turning ordinary literal patterns into regexes. + should_try_alternate = False + if requested_regex is None and not counts and _has_regex_meta(pattern): + should_try_alternate = True + elif requested_regex is True and not counts and count_status == 2: + should_try_alternate = True + + if should_try_alternate: + alternate_regex = not use_regex + alternate_count_string, alternate_content_string = _build_commands( + alternate_regex + ) + alternate_status, alternate_output = run_cmd_subprocess( + alternate_count_string, + verbose=coder.verbose, + cwd=coder.root, + should_print=False, + ) + alternate_counts = {} + if alternate_status in (0, 1, 2): + alternate_counts = _parse_count_output( + alternate_output, null_separated=null_separated + ) + + if alternate_counts or (not alternate_regex and alternate_status in (0, 1)): + use_regex = alternate_regex + counts = alternate_counts + count_status = alternate_status + count_output = alternate_output + count_string = alternate_count_string + content_string = alternate_content_string + op_result["regex"] = use_regex + + if requested_regex is True: + _append_warnings( + op_result, + ["Regex search failed; retried as a literal string."], + ) + + if count_status == 2 and null_separated: + count_warnings = _extract_warnings(count_output, null_separated=True) + if count_warnings: + _append_warnings(op_result, count_warnings) # "files" mode only needs counts, so skip the content pass entirely. if mode == "files" and counts: @@ -812,23 +1085,10 @@ def execute( op_result["total_matches"] = sum(count for _, count in rel_files) op_result["total_files"] = len(rel_files) op_result["has_more_files"] = len(rel_files) > MAX_FILES - op_result["files"] = [ - { - "file": rel_path, - "match_count": file_count, - "shown": 0, - "truncated": False, - "additional_line_numbers": [], - } - for rel_path, file_count in shown_files - ] op_result["_lines"] = [ { "file": rel_path, "match_count": file_count, - "shown": 0, - "truncated": False, - "additional_line_numbers": [], "lines": [f"{rel_path}: {file_count}"], } for rel_path, file_count in shown_files @@ -850,11 +1110,23 @@ def execute( output_content = content_output or "" - if content_status == 0 and output_content: + parsed_files = [] + if output_content: if tool_name == "powershell": parsed_files = _parse_select_string_output(output_content, repo.root) else: - parsed_files = _parse_content_into_files(output_content) + parsed_files = _parse_content_into_files( + output_content, null_separated=null_separated + ) + + if content_status == 2 and parsed_files: + content_warnings = _extract_warnings( + output_content, null_separated=null_separated + ) + if content_warnings: + _append_warnings(op_result, content_warnings) + + if parsed_files: # Merge in counts from pass 1 if available if counts: @@ -877,6 +1149,7 @@ def execute( has_more = total_files > MAX_FILES rendered = [] + count_capped = False for pf in parsed_files[:MAX_FILES]: rel_path = safe_relpath(pf["path"], repo.root) count = pf.get("count_from_pass", 0) @@ -886,10 +1159,15 @@ def execute( matches = [entry for entry in entries if entry["is_match"]] extra_line_numbers = [ entry["line"] for entry in matches[MAX_MATCHES_PER_FILE:] - ] + ][:MAX_ADDITIONAL_LINE_NUMBERS] + count_capped_here = False if mode == "files": lines = [f"{rel_path}: {count}"] + if not count_enabled and len(matches) >= MAX_LINE_NUMBERS: + count_capped = True + count_capped_here = True + match_seen = 0 else: lines = [f"{rel_path}: {count} match(es)"] match_seen = 0 @@ -905,49 +1183,94 @@ def execute( f" {entry['line']}{marker} {_cap_line(entry['text'])}" ) + if not count_enabled and len(matches) >= MAX_LINE_NUMBERS: + count_capped = True + count_capped_here = True + shown_count = match_seen if mode == "matches" else 0 - rendered.append( - { - "file": rel_path, - "match_count": count, - "shown": shown_count, - "truncated": mode == "matches" and count > shown_count, - "additional_line_numbers": extra_line_numbers, - "lines": lines, - } - ) + truncated = mode == "matches" and count > shown_count + if truncated: + lines.append(f" … showing {shown_count} of {count} matches") + if extra_line_numbers: + extra = ", ".join(str(num) for num in extra_line_numbers) + lines.append(f" … +{count - shown_count} more locations: {extra}") + if count_capped_here: + lines.append(f" … count capped at {MAX_LINE_NUMBERS} per file") + + item = { + "file": rel_path, + "match_count": count, + "lines": lines, + } + if shown_count: + item["shown"] = shown_count + if truncated: + item["truncated"] = True + if extra_line_numbers: + item["additional_line_numbers"] = extra_line_numbers + rendered.append(item) if has_more: for pf in parsed_files[MAX_FILES:]: total_matches += pf.get("count_from_pass", 0) + if count_capped: + _append_warnings( + op_result, + [ + "count=false: per-file totals are capped at " + f"{MAX_LINE_NUMBERS}; enable count for exact totals." + ], + ) + # Byte-aware eviction: drop the largest blocks until under budget so # a single pathological file cannot crowd out many small ones. + files_omitted_for_size = 0 while rendered and ( sum(len("\n".join(item["lines"])) + 1 for item in rendered) > MAX_TOTAL_SIZE ): largest = max(rendered, key=lambda item: len("\n".join(item["lines"]))) rendered.remove(largest) + files_omitted_for_size += 1 + + if files_omitted_for_size: has_more = True + op_result["files_omitted_for_size"] = files_omitted_for_size op_result["total_matches"] = total_matches op_result["total_files"] = total_files op_result["has_more_files"] = has_more - op_result["files"] = [ - {key: value for key, value in item.items() if key != "lines"} - for item in rendered - ] op_result["_lines"] = rendered - elif content_status == 1 or not output_content: + elif content_status in (0, 1) or not output_content: op_result["total_matches"] = 0 op_result["total_files"] = 0 + if output_content: + content_warnings = _extract_warnings( + output_content, null_separated=null_separated + ) + if content_warnings: + _append_warnings(op_result, content_warnings) else: op_result["error"] = output_content except Exception as e: op_result["error"] = f"Error executing search: {str(e)}" + if ( + op_result.get("total_matches", 0) == 0 + and not op_result.get("error") + and file_pattern + and file_pattern != "*" + ): + _append_warnings( + op_result, + [ + f"No matches with file_glob={file_pattern!r}; " + "verify the glob matches files (comma lists are supported)." + ], + ) + all_operation_results.append(op_result) # Cap total output across operations, dropping the largest rendered blocks @@ -975,8 +1298,19 @@ def execute( break largest_op["_lines"].pop(largest_idx) - largest_op["files"].pop(largest_idx) largest_op["has_more_files"] = True + largest_op["files_omitted_for_size"] = largest_op.get("files_omitted_for_size", 0) + 1 + + for op_result in all_operation_results: + omitted = op_result.get("files_omitted_for_size", 0) + if omitted: + _append_warnings( + op_result, + [ + f"{omitted} file result block(s) omitted to stay within " + f"the {MAX_TOTAL_SIZE} byte output budget." + ], + ) # TUI summary if coder.tui and coder.tui(): @@ -998,21 +1332,37 @@ def execute( response = ToolResponse(cls.NORM_NAME, result_type=cls.RESULT_TYPE) for op_result in all_operation_results: pattern = op_result.get("pattern", "") + pattern_label = pattern or "" if op_result.get("error"): - body = [f"[{pattern}]", f"Error: {op_result['error']}"] + body = [ + f"[{pattern_label}]", + f"Error: {_cap_line(str(op_result['error']).strip(), 1000)}", + ] elif op_result.get("total_matches", 0) == 0: - body = [f"[{pattern}]", "No matches found."] + body = [f"[{pattern_label}]", "No matches found."] else: - body = [f"[{pattern}]"] + body = [f"[{pattern_label}]"] for item in op_result.get("_lines", []): body.extend(item["lines"]) if op_result.get("has_more_files"): body.append( f"... ({op_result['total_files']} files total, " - f"showing {len(op_result['files'])})" + f"showing {len(op_result.get('_lines', []))})" ) + warnings = op_result.get("warnings", []) + if op_result.get("error"): + warnings = [ + warning for warning in warnings if warning not in str(op_result["error"]) + ] + if warnings: + op_result["warnings"] = warnings + else: + op_result.pop("warnings", None) + + for warning in warnings[:5]: + body.append(f"Warning: {_cap_line(warning)}") metadata = {key: value for key, value in op_result.items() if key != "_lines"} response.append_result(content="\n".join(body), metadata=metadata) @@ -1044,8 +1394,12 @@ def format_output(cls, coder, mcp_server, tool_response): use_regex = _should_use_regex(pattern, search_op.get("use_regex")) case_insensitive = search_op.get("case_insensitive", True) mode = search_op.get("mode", "matches") - context_before = search_op.get("context_before", 0) - context_after = search_op.get("context_after", 0) + context_before, _ = _parse_context_line_count( + search_op.get("context_before", 0), "context_before" + ) + context_after, _ = _parse_context_line_count( + search_op.get("context_after", 0), "context_after" + ) formatted_query = ( f"{color_start}search_{i + 1}:{color_end} {pattern} • {file_pattern} •" diff --git a/cecli/tools/shell.py b/cecli/tools/shell.py index fca3f48a54e..c0c5b12feff 100644 --- a/cecli/tools/shell.py +++ b/cecli/tools/shell.py @@ -519,6 +519,7 @@ async def _execute_with_timeout(cls, coder, command_string, timeout, use_pty=Non return response # Timeout elapsed, process continues in background + BackgroundCommandManager.mark_continued_in_background(command_key) coder.io.tool_output( f"\u23f1\ufe0f Command exceeded {timeout}s timeout, continuing in background...", type="tool-result", diff --git a/cecli/tools/undo_change.py b/cecli/tools/undo_change.py index 34c099b22ac..80f1bb0e87d 100644 --- a/cecli/tools/undo_change.py +++ b/cecli/tools/undo_change.py @@ -36,6 +36,8 @@ def execute(cls, coder, change_id=None, file_path=None, **kwargs): Returns a result message. """ + from cecli.helpers.conversation import ConversationService + # Note: Undo does not have a dry_run parameter as it's inherently about reverting a previous action. coder.edit_allowed = False response = ToolResponse(cls.NORM_NAME) @@ -72,6 +74,8 @@ def execute(cls, coder, change_id=None, file_path=None, **kwargs): abs_path = coder.abs_root_path(file_path) # Write the original content back to the file coder.io.write_text(abs_path, change_info["original"]) + if getattr(coder, "uuid", None): + ConversationService.get_chunks(coder).notify_file_edited(abs_path) coder.coder_edited_files.add( file_path ) # Track that the file was modified by the undo diff --git a/cecli/tools/utils/helpers.py b/cecli/tools/utils/helpers.py index ba749024d17..5bc20995aa1 100644 --- a/cecli/tools/utils/helpers.py +++ b/cecli/tools/utils/helpers.py @@ -75,6 +75,19 @@ def resolve_paths(coder, file_path): raise ToolError(f"Error resolving path '{file_path}': {e}") +def read_text_preserving_newlines(coder, abs_path): + """Read a file while retaining its detected CRLF line endings.""" + content = coder.io.read_text(abs_path) + if content is None: + return None + + detect_newline = getattr(coder.io, "_detect_newline", None) + if detect_newline and detect_newline(abs_path) == "\r\n": + content = content.replace("\r\n", "\n").replace("\n", "\r\n") + + return content + + def validate_file_for_edit(coder, file_path): """ Validates if a file exists, is in context, and is editable. @@ -101,7 +114,7 @@ def validate_file_for_edit(coder, file_path): # ) # Reread content immediately before potential modification - content = coder.io.read_text(abs_path) + content = read_text_preserving_newlines(coder, abs_path) if content is None: # This indicates an issue reading a file we know exists and is in context coder.io.tool_error( diff --git a/cecli/tui/app.py b/cecli/tui/app.py index 7a6bdc825cb..3fc6d89d3ee 100644 --- a/cecli/tui/app.py +++ b/cecli/tui/app.py @@ -16,6 +16,7 @@ from textual import events from textual.app import App, ComposeResult from textual.containers import Horizontal, Vertical +from textual.css.query import NoMatches from textual.theme import Theme from textual.widgets import Static @@ -1679,7 +1680,10 @@ def remove_sub_agent_container(self, uuid: str) -> None: # reset foreground_uuid by the time we run here. agent_service = AgentService.get_instance(self.worker.coder) agent_service.foreground_uuid = None - primary = self.query_one("#output", OutputContainer) + try: + primary = self.query_one("#output", OutputContainer) + except NoMatches: + return primary.display = True self._refresh_footer() @@ -1757,7 +1761,12 @@ def _sync_sub_agent_display(self) -> None: Delegates to the InputContainer itself, which queries AgentService via self.app to build the pill indicators. """ - input_container = self.query_one("#input-container", InputContainer) + try: + input_container = self.query_one("#input-container", InputContainer) + except NoMatches: + # The DOM is already torn down when a notification arrives during + # shutdown; there is nothing left to sync. + return coder = self.worker.coder mode = getattr(coder, "edit_format", "code") or "code" input_container.update_mode(mode) diff --git a/cecli/tui/widgets/background_commands_panel.py b/cecli/tui/widgets/background_commands_panel.py index 27bf4ef51c8..51745de4d07 100644 --- a/cecli/tui/widgets/background_commands_panel.py +++ b/cecli/tui/widgets/background_commands_panel.py @@ -18,6 +18,9 @@ class BackgroundCommandsPanel(Vertical): the selected command's output is re-rendered only when its stream offset changes. Reading output is non-destructive so the agent keeps its own incremental view of the same buffer. + + Commands that exceed their timeout and keep running appear here once the + timeout fires, so the user can watch them continue. """ REFRESH_INTERVAL = 0.5 @@ -112,14 +115,16 @@ def _is_shown(self) -> bool: return self.parent is None or self.parent.display def _active_commands(self) -> Dict[str, dict]: - """Return only running commands started in the background.""" + """Return running commands, including timeouts that continued in the background.""" commands = {} for command_key, info in BackgroundCommandManager.list_background_commands().items(): if not info.get("running"): continue - if info.get("persist"): + # Commands started with background=True are always listed; timeout-managed + # commands only once their timeout elapsed and they kept running. + if info.get("persist") and not info.get("continued_in_background"): continue commands[command_key] = info @@ -127,22 +132,30 @@ def _active_commands(self) -> Dict[str, dict]: return commands def _sync_tabs(self, commands: Dict[str, dict]) -> None: - """Rebuild the tab bar when the set of active commands changes.""" + """Add and remove tabs so they match the active command set. + + Tabs must be updated incrementally: ``Tabs.clear`` removes its children + asynchronously, so clearing and immediately re-adding the same IDs + races with the pending removal and raises ``DuplicateIds``. + """ tabs = self.query_one("#bg-command-tabs", Tabs) + previous_keys = list(self._keys) self._keys = list(commands) with self.prevent(Tabs.TabActivated): - tabs.clear() + for command_key in previous_keys: + if command_key not in commands: + tabs.remove_tab(command_key) for command_key in commands: - tabs.add_tab(Tab(command_key, id=command_key, classes="bg-tab")) + if command_key not in previous_keys: + tabs.add_tab(Tab(command_key, id=command_key, classes="bg-tab")) - if self._active_key in commands: - tabs.active = self._active_key - else: + if self._active_key not in commands: self._active_key = next(iter(commands), None) - if self._active_key is not None: - tabs.active = self._active_key + + if self._active_key is not None: + tabs.active = self._active_key def _select_tab(self, command_key: str) -> None: """Mark a tab active without relying on a user click.""" @@ -163,6 +176,10 @@ def _set_command_line(self, info: dict) -> None: """Show the selected command, truncated to the panel width.""" command = " ".join((info.get("command") or "").split()) text = f"command: {command}" if command else "command: (none)" + + if info.get("continued_in_background"): + text += " (timed out, still running)" + width = max(20, self.size.width - 6) if len(text) > width: diff --git a/cecli/website/docs/config/agent-mode.md b/cecli/website/docs/config/agent-mode.md index 26ea45c5b26..11d3339baae 100644 --- a/cecli/website/docs/config/agent-mode.md +++ b/cecli/website/docs/config/agent-mode.md @@ -287,7 +287,7 @@ Tools are loaded automatically when the registry is built and will be available #### Sub-agent Behavior -`Delegate` accepts one or more delegation objects. Each delegation includes a registered sub-agent `name`, a `prompt`, and optional `async` and `persist` flags. Asynchronous delegations run in the background; synchronous delegations wait for the sub-agent result. The system uses `Yield` to wait for outstanding child tasks when finishing the parent task. +`Delegate` accepts one or more delegation objects. Each delegation includes a registered sub-agent `name`, a `prompt`, and optional `working_dir`, `async` and `persist` properties. `working_dir` sets that delegation's working directory and resolves relative paths against the dispatching agent's root. Asynchronous delegations run in the background; synchronous delegations wait for the sub-agent result. The system uses `Yield` to wait for outstanding child tasks when finishing the parent task. Sub-agent results are reported back to the parent conversation as summaries or errors. Sub-agents use `auto_reap: true` by default, so completed agents can be removed automatically after their work and descendants finish. Independent agents may be cleaned up shortly after completion, while the service also reaps completed agents when the configured limit requires space. Set `max_sub_agents` to `-1` to remove the limit on simultaneous sub agents. diff --git a/cecli/website/docs/config/subagents.md b/cecli/website/docs/config/subagents.md index 60773b0fd2f..ec643638601 100644 --- a/cecli/website/docs/config/subagents.md +++ b/cecli/website/docs/config/subagents.md @@ -112,8 +112,29 @@ The primary agent can also delegate work using the `Delegate` tool. This enables 4. Sub-agents work independently and return their summaries 5. The primary agent synthesizes the results +#### Delegation Working Directory + +Each entry in the `Delegate` tool's `delegations` array accepts an optional `working_dir` string. It sets the working directory (the sub-agent coder's root) for that delegation only. + +- Relative paths resolve against the dispatching agent's root. +- Absolute paths are used as-is. +- Omitting `working_dir` keeps the normal inheritance behavior: the sub-agent uses the parent agent's root, or the workflow/workspace/worktree root when applicable. + +```json +{ + "delegations": [ + { + "name": "reviewer", + "prompt": "Review the API package", + "working_dir": "packages/api" + } + ] +} +``` + ### Spawning a Sub-Agent Without a Prompt + Creates a sub-agent that waits for you to interact with it directly: ``` diff --git a/cecli/website/docs/config/workflows.md b/cecli/website/docs/config/workflows.md index 24711f8d05f..1bad2dc7eee 100644 --- a/cecli/website/docs/config/workflows.md +++ b/cecli/website/docs/config/workflows.md @@ -40,6 +40,8 @@ enabled: true # optional (default: true) lease_timeout: 30 # optional minutes (default: 30) model: # optional model override for the worker root: ~/repos/my-project # optional working directory +repo: /repos/app # optional worktree source (local path or remote URL) +worktree: true # optional isolated git worktree; or {branch: main} hooks: # optional, same schema as Hooks start: [{ name: audit, command: "echo start >> ~/.cecli/workflows/audit.log" }] skills: [gitlab-ci] # optional -> preloaded as skills_init @@ -61,6 +63,8 @@ tasks: Keys are `snake_case` or `hyphen-case`; both accepted. `${ENV_VAR}` / `$VAR` inside any string is interpolated from the environment (after `.env` files load). +Validation notes: `repo` must be a string. `worktree` must be a boolean or a mapping; a mapping currently supports only `branch`, which must be a string (unknown keys warn and are ignored). When `worktree` is enabled, the source repository is inferred from `repo`, then `root`, then the git top-level containing the workflow file; if none can be found a warning is logged and the dispatching agent's root is used at run time. + Field meanings: | field | default | meaning | @@ -74,6 +78,8 @@ Field meanings: | `lease_timeout` | 30 | Minutes a scheduler instance holds the job lock before peers may steal an abandoned run | | `model` | inherited | Model (or sentinel) for the worker sub-agent | | `root` | session root | Working directory the worker operates in | +| `repo` | — | Source repository for the optional worktree: a local path or remote URL. When the worktree is enabled, the run's root becomes the generated worktree checkout | +| `worktree` | disabled | Set `true` to run the worker in an isolated git worktree, or `{branch: }` to choose the base ref to start from. See [Worktrees](worktrees.html) | | `hooks` | {} | Per-workflow hooks (start/end/pre_tool/…); run on the worker | | `skills` | [] | Skills loaded into the worker's context at start | | `servers` | [] | MCP servers made available to the worker | @@ -102,6 +108,12 @@ Run-time placeholders are expanded in task prompts in addition to load-time env Because a run is a sub-agent, it doesn't block the main conversation — watch it with `/agent-tree` or the TUI sub-agent pane. Every run also appends a JSON-lines audit log to `~/.cecli/workflows/runs//..jsonl`: a `start` line (with the definition hash), one `task` line per task, and a `finish` line. Before the worker is reaped, its full session is archived to `~/.cecli/workflows/outputs///session.json` using the standard session format (encrypted when session encryption is enabled) — so every run, including replayed or tool-less replies, is completely reviewable on disk without ever touching the parent's context. +## Isolated worktrees + +Set `worktree: true` to give the run its own git worktree instead of operating directly in `root`. The worker starts on a generated branch `cecli/-` (for example `cecli/wf-nightly-tidy-`) based on `branch` (the starting base ref) or the source repository's default branch. `repo` selects the source repository; if it is omitted, `root` (or the workflow file's git root) is used. The agent's actual root is the generated worktree checkout. + +When the run finishes, a dirty worktree is committed with the subject `Unfinished Dirty Worktree from agent ` before the worktree is released. Branches with unmerged commits are kept for review; empty or already-merged branches are deleted. The worktree checkout under `~/.cecli/worktrees/` is removed after the commit/release step. See [Worktrees](worktrees.html) for the full lifecycle and on-disk layout. + ## Commands ``` @@ -124,6 +136,9 @@ Because a run is a sub-agent, it doesn't block the main conversation — watch i name: nightly-tidy schedule: "0 3 * * *" timezone: America/New_York +repo: /repos/app +worktree: + branch: main skills: [code-review] tasks: - prompt: "Run the linter over the repo and fix obvious issues." diff --git a/cecli/website/docs/config/worktrees.md b/cecli/website/docs/config/worktrees.md new file mode 100644 index 00000000000..ef091cd63a7 --- /dev/null +++ b/cecli/website/docs/config/worktrees.md @@ -0,0 +1,40 @@ +--- +parent: Configuration +nav_order: 49 +description: Isolated git worktrees give each agent or workflow run its own checkout and branch. +--- +# Worktrees + +Worktrees let an agent or workflow run modify a repository without touching the main checkout. cecli creates a linked git worktree, runs the agent inside it, and releases it afterwards — committing unfinished changes so nothing is lost. + +## Enabling + +Workflows opt in with `worktree: true` (or `worktree: {branch: }`); see [Workflows](workflows.html). A workflow's `repo` is the source repository; `root` selects the base working directory. When a worktree is enabled, the agent's actual root is the generated worktree checkout. `branch` selects the starting base ref; when omitted the source repository's default branch is used. + +## Branch namespace + +Every worktree gets a generated branch named `cecli/-`. Agent names are sanitized for git, so `wf:nightly-tidy` becomes `cecli/wf-nightly-tidy-`. Generated branches live alongside your normal branches and can be inspected, pushed, or merged like any other branch. + +## Lifecycle + +1. **Create** — a worktree is created from the source repository on the generated branch. An existing checkout for the same agent and repository is reused (ownership is refreshed) instead of creating a duplicate, so repeated or concurrent workflow runs share one checkout. Remote sources are cached as bare repositories first. +2. **Run** — the agent works inside the worktree; its `root` points at the checkout. +3. **Release** — on cleanup, a dirty worktree is committed with the subject `Unfinished Dirty Worktree from agent ` so uncommitted work survives. Branches with unmerged commits are kept; empty or already-merged branches are deleted. +4. **Remove** — the worktree checkout under `~/.cecli/worktrees/` is removed after the commit/release step. Kept branches remain in the source repository. + +## Session restore + +A workflow or delegated agent restored from a saved session keeps its worktree record (`branch`, `path` and related metadata). On restore, cecli recreates or re-attaches the worktree from that record when possible; if the checkout is gone but the branch still contains work, the branch is the durable artifact to recover. + +## Disk layout + +`CECLI_WORKTREES_DIR` overrides the base directory; the default is `~/.cecli/worktrees/`. + +``` +~/.cecli/worktrees/ + _sources/-/ # cached bare clones for remote sources + / + -/ # one linked worktree checkout per agent +``` + +Local `repo:` paths are used in place as the source repository; the checkout itself still lives under the worktrees base directory. Removing a checkout or the whole base directory is safe once a run has finished: commits are on the kept branch, and empty branches are disposable. \ No newline at end of file diff --git a/tests/basic/test_background_commands.py b/tests/basic/test_background_commands.py index cdf9abb7e82..0770c68a40b 100644 --- a/tests/basic/test_background_commands.py +++ b/tests/basic/test_background_commands.py @@ -402,3 +402,24 @@ def test_get_background_command_output_stops_finished_commands(monkeypatch): assert "finished" in output assert stopped == ["bg_3_0001"] + + +def test_mark_continued_in_background_flags_registered_command(monkeypatch): + """Timeout-managed commands are flagged so the panel can list them.""" + process = types.SimpleNamespace(continued_in_background=False) + monkeypatch.setattr(BackgroundCommandManager, "_background_commands", {"bg_1_1234": process}) + + assert BackgroundCommandManager.mark_continued_in_background("bg_1_1234") is True + assert process.continued_in_background is True + assert BackgroundCommandManager.mark_continued_in_background("bg_9_9999") is False + + +def test_mark_continued_in_background_flags_command(monkeypatch): + """A timeout-managed command can be flagged as continuing in the background.""" + process = types.SimpleNamespace(continued_in_background=False) + monkeypatch.setattr(BackgroundCommandManager, "_background_commands", {"bg_1_1234": process}) + + assert BackgroundCommandManager.mark_continued_in_background("bg_1_1234") is True + assert process.continued_in_background is True + + assert BackgroundCommandManager.mark_continued_in_background("bg_9_9999") is False diff --git a/tests/basic/test_file_system_service.py b/tests/basic/test_file_system_service.py index a154dab43e9..77e564df33c 100644 --- a/tests/basic/test_file_system_service.py +++ b/tests/basic/test_file_system_service.py @@ -8,7 +8,7 @@ from cecli.helpers.file_system import FileSystemService from cecli.io import InputOutput from cecli.repo import GitRepoProxy -from cecli.utils import GitTemporaryDirectory +from cecli.utils import ChdirTemporaryDirectory, GitTemporaryDirectory @pytest.fixture(autouse=True) @@ -156,6 +156,23 @@ async def test_coder_gets_per_root_fs_and_repo(self, gpt35_model): class TestRootOverride: """Validates the sub-agent root override and primary_root retention.""" + async def test_root_falls_back_to_cwd_outside_git(self, gpt35_model): + with ChdirTemporaryDirectory() as root: + io = InputOutput(pretty=False, yes=True) + coder = await Coder.create(gpt35_model, None, io) + + assert os.path.normpath(coder.root) == os.path.normpath(root) + assert os.path.normpath(coder.primary_root) == os.path.normpath(root) + + async def test_sub_agent_root_falls_back_to_primary_root_outside_git(self, gpt35_model): + with ChdirTemporaryDirectory(): + io = InputOutput(pretty=False, yes=True) + parent = await Coder.create(gpt35_model, None, io) + child = await Coder.create(from_coder=parent, io=io) + + assert os.path.normpath(child.root) == os.path.normpath(parent.root) + assert os.path.normpath(child.primary_root) == os.path.normpath(parent.root) + async def test_root_kwarg_overrides_working_dir(self, gpt35_model): with GitTemporaryDirectory() as root_a: os.chdir(root_a) diff --git a/tests/basic/test_hashline.py b/tests/basic/test_hashline.py index f2eefaa8b08..cb69025642b 100644 --- a/tests/basic/test_hashline.py +++ b/tests/basic/test_hashline.py @@ -2,6 +2,7 @@ from cecli.helpers.hashline import ( ContentHashError, + _detect_overlapping_ranges, apply_hashline_operations, get_hashline_diff, hashline, @@ -9,6 +10,7 @@ resolve_content_to_hashline_ids, strip_hashline, ) +from cecli.helpers.hashpos.hashpos import HashPos def test_hashline_basic(): @@ -359,3 +361,289 @@ def test_empty_insert_is_a_noop(): assert new_content == original_content assert successful == [] assert failed[0]["failure_type"] == "no_change" + + +def test_append_at_eof_with_000_markers(): + """Using 000@ for both boundaries appends without replacing the last line.""" + original_content = "first\nsecond\n" + + new_content, successful, failed = apply_hashline_operations( + original_content, + [ + { + "start_line_hash": "000@", + "end_line_hash": "000@", + "operation": "replace", + "text": "appended", + } + ], + ) + + assert new_content == "first\nsecond\nappended\n" + assert successful == [0] + assert failed == [] + + +def test_multiline_anchor_is_rejected(): + """Anchors must be single-line; multiline values fail clearly.""" + original_content = "alpha\nbeta\ngamma\n" + + new_content, successful, failed = apply_hashline_operations( + original_content, + [ + { + "start_line_hash": "alpha\nbeta", + "end_line_hash": "alpha\nbeta", + "operation": "replace", + "text": "changed", + } + ], + ) + + assert new_content == original_content + assert successful == [] + assert "single-line" in failed[0]["error"] + + +def test_partial_line_anchor_error_is_explicit(): + """A substring anchor must explain that the complete line is required.""" + original_content = "def main():\n pass\n" + + new_content, successful, failed = apply_hashline_operations( + original_content, + [ + { + "start_line_hash": "def main", + "end_line_hash": "def main", + "operation": "replace", + "text": "changed", + } + ], + ) + + assert new_content == original_content + assert successful == [] + assert "only partially matches" in failed[0]["error"] + assert "complete line" in failed[0]["error"] + + +def test_ambiguous_anchor_reports_line_numbers(): + """Ambiguity errors should identify candidate lines and suggest @L.""" + original_content = "target\nmiddle\ntarget\n" + + new_content, successful, failed = apply_hashline_operations( + original_content, + [ + { + "start_line_hash": "target", + "end_line_hash": "target", + "operation": "replace", + "text": "changed", + } + ], + ) + + assert new_content == original_content + assert successful == [] + assert "lines 1, 3" in failed[0]["error"] + assert "@L" in failed[0]["error"] + + +def test_stale_id_error_suggests_reread(): + """Stale IDs should tell the caller to re-read rather than echo hashes.""" + original_content = "first\nsecond\nthird\n" + stale_id, _ = resolve_content_to_hashline_ids(original_content, "second", "second") + + new_content, successful, failed = apply_hashline_operations( + "changed\nother\nthird\n", + [ + { + "start_line_hash": stale_id, + "end_line_hash": stale_id, + "operation": "replace", + "text": "X", + } + ], + ) + + assert successful == [] + assert "re-read" in failed[0]["error"] + assert "IDs" in failed[0]["error"] + + +def test_crlf_line_endings_are_preserved(): + """A CRLF file should stay CRLF after an edit.""" + original_content = "first\r\nsecond\r\n" + second_id, _ = resolve_content_to_hashline_ids(original_content, "second", "second") + + new_content, successful, failed = apply_hashline_operations( + original_content, + [ + { + "start_line_hash": second_id, + "end_line_hash": second_id, + "operation": "replace", + "text": "SECOND", + } + ], + ) + + assert new_content == "first\r\nSECOND\r\n" + assert successful == [0] + assert failed == [] + + +def test_stale_content_id_error_recommends_reread(): + """Stale IDs should tell the caller to re-read instead of echoing hashes.""" + original_content = "first\nsecond\nthird\n" + stale_id, _ = resolve_content_to_hashline_ids(original_content, "second", "second") + modified_content = "changed\nother\nthird\n" + + new_content, successful, failed = apply_hashline_operations( + modified_content, + [ + { + "start_line_hash": stale_id, + "end_line_hash": stale_id, + "operation": "replace", + "text": "changed again", + } + ], + ) + + assert new_content == modified_content + assert successful == [] + assert "may have changed" in failed[0]["error"] + assert "re-read" in failed[0]["error"] + + +def test_insert_preserves_crlf_line_endings(): + """Inserting into a CRLF file must keep CRLF line endings.""" + original_content = "first\r\nsecond\r\n" + second_id, _ = resolve_content_to_hashline_ids(original_content, "second", "second") + + new_content, successful, failed = apply_hashline_operations( + original_content, + [ + { + "start_line_hash": second_id, + "end_line_hash": second_id, + "operation": "insert", + "text": "middle", + "position": "before", + } + ], + ) + + assert new_content == "first\r\nmiddle\r\nsecond\r\n" + assert successful == [0] + assert failed == [] + + +def test_insert_around_empty_line_preserves_target_line(): + """Inserting before/after a blank line must keep that blank line.""" + original_content = "a\n\nb\n" + empty_id, _ = resolve_content_to_hashline_ids(original_content, "", "") + + def run(position): + new_content, successful, failed = apply_hashline_operations( + original_content, + [ + { + "start_line_hash": empty_id, + "end_line_hash": empty_id, + "operation": "insert", + "text": "X", + "position": position, + } + ], + ) + assert successful == [0] + assert failed == [] + return new_content + + assert run("before") == "a\nX\n\nb\n" + assert run("after") == "a\n\nX\nb\n" + + +def test_overlap_error_reports_one_based_line_numbers(): + """Overlap diagnostics must use file line numbers, not zero-based indices.""" + resolved_ops = [ + { + "index": 0, + "start_idx": 4, + "end_idx": 6, + "op": {"operation": "replace"}, + }, + { + "index": 1, + "start_idx": 5, + "end_idx": 7, + "op": {"operation": "replace"}, + }, + ] + + failed, indices = _detect_overlapping_ranges(resolved_ops) + + assert indices == {0, 1} + assert "lines 5-7" in failed[0]["error"] + assert "lines 6-8" in failed[0]["error"] + + +def test_public_ids_use_local_anchor_and_occurrence(): + """Duplicate lines get distinct IDs from local anchors and local occurrences.""" + content = "anchor_a\ndup\ndup\nanchor_b\ndup\n" + hp = HashPos(content) + + first = hp.generate_public_id("dup", 1, 1) + second = hp.generate_public_id("dup", 2, 2) + third = hp.generate_public_id("dup", 4, 1) + + assert len({first, second, third}) == 3 + _, first_anchor, first_occurrence = hp.unpack_public_id(first) + _, second_anchor, second_occurrence = hp.unpack_public_id(second) + _, third_anchor, third_occurrence = hp.unpack_public_id(third) + + assert first_anchor == second_anchor + assert first_anchor != third_anchor + assert first_occurrence == 1 + assert second_occurrence == 2 + assert third_occurrence == 1 + + for idx, public_id in ((1, first), (2, second), (4, third)): + assert hp.resolve_to_lines(hp.get_wrapped_id(public_id)) == [idx] + + +def test_public_ids_are_stable_when_unrelated_lines_shift(): + """Inserting lines before the local anchor must not change duplicate IDs.""" + original = "top\ndup\nend\nmid\ndup\n" + edited = "new_a\nnew_b\n" + original + + original_hp = HashPos(original) + edited_hp = HashPos(edited) + + original_ids = [ + original_hp.generate_public_id(line, idx, 1) + for idx, line in enumerate(original_hp.lines) + if line == "dup" + ] + edited_ids = [ + edited_hp.generate_public_id(line, idx, 1) + for idx, line in enumerate(edited_hp.lines) + if line == "dup" + ] + + assert original_ids == edited_ids + assert edited_hp.resolve_to_lines(edited_hp.get_wrapped_id(edited_ids[0])) == [3] + assert edited_hp.resolve_to_lines(edited_hp.get_wrapped_id(edited_ids[1])) == [6] + + +def test_public_ids_change_only_when_local_anchor_changes(): + """A new unique line before a duplicate changes that local ID segment.""" + original_hp = HashPos("anchor\ndup\n") + edited_hp = HashPos("anchor\nnew_unique\ndup\n") + + original_id = original_hp.generate_public_id("dup", 1, 1) + edited_id = edited_hp.generate_public_id("dup", 2, 1) + + assert original_id != edited_id diff --git a/tests/basic/test_hashline_closure.py b/tests/basic/test_hashline_closure.py index 3551218d3b3..8be8bd82eec 100644 --- a/tests/basic/test_hashline_closure.py +++ b/tests/basic/test_hashline_closure.py @@ -733,3 +733,33 @@ def test_merge_single_op_returns_as_is(): result = _merge_replace_operations(ops) assert len(result) == 1 assert result[0]["op"]["text"] == "text" + + +def test_closure_safeguard_accepts_batch_valid_combination(): + """Individually invalid edits should survive when the batch is valid.""" + source = "if True:\n if False:\n x = 1\n" + ops = [ + _make_closure_op("replace", " x = 1", 2, 2, index=0), + _make_closure_op("delete", "", 1, 1, index=1), + ] + + result, rejected = _apply_closure_safeguard(source, ops, file_path="test.py") + + assert len(result) == 2 + assert rejected == [] + + +def test_fix_boundaries_does_not_cross_sibling_op(): + """Boundary expansion must stop before another operation's range.""" + source = ["dup", "old1", "dup", "X", "Y"] + ops = [ + _make_op("replace", "dup\nnew", 2, 2, index=0), + _make_op("replace", "KEPT", 1, 1, index=1), + ] + + result = _fix_duplicate_content_boundaries(source, ops) + + assert result[0]["start_idx"] == 2 + assert result[0]["end_idx"] == 2 + assert result[1]["start_idx"] == 1 + assert result[1]["end_idx"] == 1 diff --git a/tests/basic/test_model_provider_manager.py b/tests/basic/test_model_provider_manager.py index 6da85ac6650..db098580ab8 100644 --- a/tests/basic/test_model_provider_manager.py +++ b/tests/basic/test_model_provider_manager.py @@ -553,3 +553,150 @@ def _fake_get(url, *, headers=None, timeout=None, verify=None): manager._fetch_provider_models("demo") assert captured["url"] == "https://example.com/v1/models" + + +def test_nested_openrouter_payload_superset_extraction(monkeypatch, tmp_path): + """Nested OpenRouter fields are mapped through the declarative path sets.""" + payload = { + "data": [ + { + "id": "z-ai/glm-5.3-flash", + "context_length": 1048576, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 131072, + }, + "pricing": {"prompt": "0.0000000269", "completion": "0.0000000996"}, + "supported_parameters": ["tools", "reasoning"], + } + ] + } + + config = { + "openrouter": { + "api_base": "https://openrouter.ai/api/v1", + "models_url": "https://openrouter.ai/api/v1/models", + "requires_api_key": False, + } + } + + manager = _make_manager(tmp_path, config) + monkeypatch.setattr(manager, "_fetch_provider_models", lambda provider: payload) + + assert manager.refresh_provider_cache("openrouter") is True + info = manager.get_model_info("openrouter/z-ai/glm-5.3-flash") + + assert info["max_input_tokens"] == 1048576 + assert info["max_output_tokens"] == 131072 + assert info["input_cost_per_token"] == 0.0000000269 + assert info["output_cost_per_token"] == 0.0000000996 + assert info["litellm_provider"] == "openrouter" + + +def test_nested_payload_alternate_list_path_and_id(monkeypatch, tmp_path): + """Wrapped lists and alternate id keys resolve via the superset paths.""" + payload = { + "result": { + "data": [ + { + "model": "vendor/model", + "limits": {"context_length": 5000}, + "cost": {"input": "2", "output": "4"}, + } + ] + } + } + + config = { + "demo": { + "api_base": "https://example.com/v1", + "requires_api_key": False, + "model_list_paths": ["result.data"], + } + } + + manager = _make_manager(tmp_path, config) + monkeypatch.setattr(manager, "_fetch_provider_models", lambda provider: payload) + + assert manager.refresh_provider_cache("demo") is True + info = manager.get_model_info("demo/vendor/model") + + assert info["max_input_tokens"] == 5000 + assert info["input_cost_per_token"] == 2.0 / manager.DEFAULT_TOKEN_PRICE_RATIO + assert info["output_cost_per_token"] == 4.0 / manager.DEFAULT_TOKEN_PRICE_RATIO + + +def test_openrouter_nested_payload_extraction(monkeypatch, tmp_path): + """OpenRouter's nested limits/pricing are normalized through getter paths.""" + payload = { + "data": [ + { + "id": "z-ai/glm-5.3-flash", + "context_length": 1048576, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 131072, + }, + "pricing": { + "prompt": "0.0000000269", + "completion": "0.0000000996", + "input_cache_read": "0.0000000269", + "input_cache_write": "0.0000000335", + }, + } + ] + } + config = { + "openrouter": { + "api_base": "https://openrouter.ai/api/v1", + "models_url": "https://openrouter.ai/api/v1/models", + "requires_api_key": False, + } + } + + manager = _make_manager(tmp_path, config) + monkeypatch.setattr(manager, "_fetch_provider_models", lambda provider: payload) + + assert manager.refresh_provider_cache("openrouter") is True + + info = manager.get_model_info("openrouter/z-ai/glm-5.3-flash") + + assert info["max_input_tokens"] == 1048576 + assert info["max_output_tokens"] == 131072 + assert abs(info["input_cost_per_token"] - 0.0000000269) < 1e-15 + assert abs(info["output_cost_per_token"] - 0.0000000996) < 1e-15 + assert abs(info["cache_read_input_token_cost"] - 0.0000000269) < 1e-15 + assert abs(info["cache_creation_input_token_cost"] - 0.0000000335) < 1e-15 + + +def test_wrapped_model_list_and_alternate_field_paths(monkeypatch, tmp_path): + """Wrapped list envelopes, ``model`` ids, and ``limit.*`` fields resolve.""" + payload = { + "result": { + "data": [ + { + "model": "vendor/foo", + "limit": {"context": 32000, "output": 8000}, + "pricing": {"prompt": "1.5", "completion": "3.0"}, + } + ] + } + } + config = { + "demo": { + "api_base": "https://example.com/v1", + "requires_api_key": False, + } + } + + manager = _make_manager(tmp_path, config) + monkeypatch.setattr(manager, "_fetch_provider_models", lambda provider: payload) + + assert manager.refresh_provider_cache("demo") is True + + info = manager.get_model_info("demo/vendor/foo") + + assert info["max_input_tokens"] == 32000 + assert info["max_output_tokens"] == 8000 + assert info["input_cost_per_token"] == 1.5 / manager.DEFAULT_TOKEN_PRICE_RATIO + assert info["output_cost_per_token"] == 3.0 / manager.DEFAULT_TOKEN_PRICE_RATIO diff --git a/tests/basic/test_models.py b/tests/basic/test_models.py index 9b873898399..4e442f74d09 100644 --- a/tests/basic/test_models.py +++ b/tests/basic/test_models.py @@ -76,11 +76,8 @@ def test_max_context_tokens(self): assert model.info["max_input_tokens"] == 16385 model = Model("gpt-4") assert model.info["max_input_tokens"] == 8 * 1024 - model = Model("gpt-4-32k") - # gpt-4-32k might not have model info in litellm, use .get() to avoid KeyError - max_tokens = model.info.get("max_input_tokens") - if max_tokens is not None: - assert max_tokens == 32 * 1024 + model = Model("gpt-6-luna") + assert model.info["max_input_tokens"] == 922000 model = Model("gpt-4-0613") assert model.info["max_input_tokens"] == 8 * 1024 diff --git a/tests/basic/test_skills.py b/tests/basic/test_skills.py index a77621edcd7..77d9ab33420 100644 --- a/tests/basic/test_skills.py +++ b/tests/basic/test_skills.py @@ -9,7 +9,7 @@ import pytest -from cecli.helpers.skills import SkillsManager +from cecli.helpers.skills import SkillsManager, _normalize_allowed_tools class TestSkills: @@ -213,6 +213,83 @@ def test_create_and_parse_skill(self): assert "test-skill" not in manager._loaded_skills assert manager._loaded_skills == set() + def test_allowed_tools_scalar_is_split(self): + """A comma-separated allowed-tools scalar is normalized into a list.""" + skill_dir = Path(self.temp_dir) / "scalar-tools" + skill_dir.mkdir() + + (skill_dir / "SKILL.md").write_text("""--- +name: scalar-tools +description: Skill with a scalar allowed-tools value +allowed-tools: Bash(git commit -m "a, b"), Read, Bash(spark-ssh.sh:*) +--- + +# Scalar Tools +""") + + manager = SkillsManager([self.temp_dir]) + metadata = manager._parse_skill_metadata(skill_dir / "SKILL.md") + + assert metadata.allowed_tools == [ + 'Bash(git commit -m "a, b")', + "Read", + "Bash(spark-ssh.sh:*)", + ] + + summary = manager.get_skill_summary("scalar-tools") + assert 'Allowed tools: Bash(git commit -m "a, b"), Read, Bash(spark-ssh.sh:*)' in summary + + def test_allowed_tools_list_is_preserved(self): + """A YAML sequence for allowed-tools is preserved as a list.""" + skill_dir = Path(self.temp_dir) / "list-tools" + skill_dir.mkdir() + + (skill_dir / "SKILL.md").write_text("""--- +name: list-tools +description: Skill with a list allowed-tools value +allowed-tools: + - Read + - Bash(ls:*) +--- + +# List Tools +""") + + manager = SkillsManager([self.temp_dir]) + metadata = manager._parse_skill_metadata(skill_dir / "SKILL.md") + + assert metadata.allowed_tools == ["Read", "Bash(ls:*)"] + + def test_allowed_tools_normalization_validates_types(self): + """Unsupported allowed-tools values raise and missing values become empty.""" + assert _normalize_allowed_tools(None) == [] + assert _normalize_allowed_tools(" ") == [] + assert _normalize_allowed_tools(["Read", " "]) == ["Read"] + + with pytest.raises(ValueError): + _normalize_allowed_tools(42) + + with pytest.raises(ValueError): + _normalize_allowed_tools(["Read", 42]) + + def test_skill_with_invalid_allowed_tools_is_skipped(self): + """A skill whose allowed-tools has an invalid type is not loaded.""" + skill_dir = Path(self.temp_dir) / "bad-tools" + skill_dir.mkdir() + + (skill_dir / "SKILL.md").write_text("""--- +name: bad-tools +description: Skill with invalid allowed-tools +allowed-tools: 42 +--- + +# Bad Tools +""") + + manager = SkillsManager([self.temp_dir]) + + assert "bad-tools" not in [skill.name for skill in manager.find_skills(reload=True)] + def test_skill_summary_loader(self, monkeypatch): """Test the skill_summary_loader function.""" # Isolate from the real ~/.cecli/skills directory so the test is diff --git a/tests/conversations/test_conversation_system.py b/tests/conversations/test_conversation_system.py index 94b3ef074e5..6ad50d259e8 100644 --- a/tests/conversations/test_conversation_system.py +++ b/tests/conversations/test_conversation_system.py @@ -290,6 +290,23 @@ def side_effect(fname, **kwargs): # Clean up os.unlink(temp_file) + def test_notify_file_edited_clears_cached_ranges(self, tmp_path): + """An edit must invalidate ReadFile's cached line ranges for the file.""" + import os + + abs_fname = os.path.abspath(tmp_path / "example.txt") + self.files._numbered_contexts[abs_fname] = [(1, 5)] + self.files._last_merged_ranges[abs_fname] = [(1, 5)] + self.files._emitted_contexts[abs_fname] = [(1, 5)] + self.files._file_context_versions[abs_fname] = 1 + + self.chunks.notify_file_edited(abs_fname) + + assert abs_fname not in self.files._numbered_contexts + assert abs_fname not in self.files._last_merged_ranges + assert abs_fname not in self.files._emitted_contexts + assert abs_fname not in self.files._file_context_versions + def test_has_file_changed(self, mocker): """Test file change detection.""" import os diff --git a/tests/helpers/observations/test_observation_service.py b/tests/helpers/observations/test_observation_service.py index 79a70aaece2..a3658ccf7b6 100644 --- a/tests/helpers/observations/test_observation_service.py +++ b/tests/helpers/observations/test_observation_service.py @@ -263,10 +263,10 @@ async def test_compaction_bails_out_when_fixed_context_dominates(): coder.gpt_prompts = MagicMock() coder._rate_limit_sleep = AsyncMock() - # done/cur/diff/file_context are empty, so the entire context is the fixed - # context (chat files, repo map, prompts). Summarizing cannot shrink it. + # A little compactable history plus a large fixed context (files in the + # chat, repo map, prompts). Summarizing cannot shrink the fixed part. coder.summarizer = MagicMock() - coder.summarizer.count_tokens.side_effect = [0, 0, 0, 0, 6000] + coder.summarizer.count_tokens.side_effect = [1000, 0, 0, 0, 6000] coder.summarizer.summarize_all_as_text = AsyncMock(return_value="Summary Text") mock_conv_manager = MagicMock() @@ -285,10 +285,55 @@ async def test_compaction_bails_out_when_fixed_context_dominates(): return_value=obs, ), ): - await Coder.compact_context_if_needed(coder, force=True) + await Coder.compact_context_if_needed(coder) # Compaction must not summarize anything... coder.summarizer.summarize_all_as_text.assert_not_called() # ...and must tell the user why, with a remedy. coder.io.tool_warning.assert_called_once() coder.io.tool_output.assert_any_call("- Use /drop to remove unneeded files from the chat") + + +@pytest.mark.asyncio +async def test_compaction_force_runs_when_fixed_context_dominates(): + """force=True must bypass the fixed-context bail-out and compact anyway.""" + from cecli.coders.base_coder import Coder + + coder = MagicMock(spec=Coder) + coder.uuid = "test-coder-force-fixed-context" + coder.enable_context_compaction = True + coder.context_compaction_max_tokens = 1000 + coder.context_compaction_summary_tokens = 100 + coder.io = MagicMock() + coder.gpt_prompts = MagicMock() + coder._rate_limit_sleep = AsyncMock() + coder.auto_memory = False + coder.edit_format = "whole" + + # Fixed context dominates, but there is still compactable history to summarize. + coder.summarizer = MagicMock() + coder.summarizer.count_tokens.side_effect = [1000, 0, 0, 0, 6000, 500] + coder.summarizer.summarize_all_as_text = AsyncMock(return_value="Summary Text") + + mock_conv_manager = MagicMock() + mock_conv_manager.get_messages_dict.return_value = [] + + obs = MagicMock() + obs.check_and_trigger = AsyncMock() + + with ( + patch( + "cecli.coders.base_coder.ConversationService.get_manager", + return_value=mock_conv_manager, + ), + patch( + "cecli.coders.base_coder.ObservationService.get_instance", + return_value=obs, + ), + ): + await Coder.compact_context_if_needed(coder, force=True) + + # The bail-out warning must not fire; compaction proceeds and summarizes. + coder.io.tool_warning.assert_not_called() + coder.summarizer.summarize_all_as_text.assert_called_once() + coder.io.tool_output.assert_any_call("Forcing compaction of chat history...") diff --git a/tests/helpers/test_coroutines.py b/tests/helpers/test_coroutines.py new file mode 100644 index 00000000000..4eed6f0619b --- /dev/null +++ b/tests/helpers/test_coroutines.py @@ -0,0 +1,20 @@ +import asyncio + +from cecli.helpers import coroutines + + +def test_cancel_and_abandon_skips_tasks_from_closed_loop(): + loop = asyncio.new_event_loop() + + async def sleeper(): + await asyncio.sleep(10) + + task = loop.create_task(sleeper()) + loop.run_until_complete(asyncio.sleep(0)) + loop.close() + task._log_destroy_pending = False + coroutines.background_tasks.add(task) + + asyncio.run(coroutines.cancel_and_abandon([task])) + + assert task not in coroutines.background_tasks diff --git a/tests/helpers/test_model_config.py b/tests/helpers/test_model_config.py index 80f2a90e37a..fb64b81e279 100644 --- a/tests/helpers/test_model_config.py +++ b/tests/helpers/test_model_config.py @@ -918,3 +918,104 @@ def test_model_init_claude_5_uses_reasoning_effort(tmp_path, monkeypatch): assert "thinking" not in model.extra_params assert "extra_body" not in model.extra_params assert model.get_reasoning_effort() == "medium" + + +# --------------------------------------------------------------------------- +# Router / multi-part model names +# --------------------------------------------------------------------------- + + +def test_router_model_inherits_vendor_alias_record(): + """``openrouter/z-ai/x`` inherits from the bundled ``zai/x`` record.""" + metadata = { + "zai/glm-5.3-flash": _record( + litellm_provider="zai", + max_input_tokens=1048576, + max_output_tokens=128000, + ) + } + config = get_default_config("openrouter/z-ai/glm-5.3-flash", [metadata]) + + assert config["llm"]["litellm_provider"] == "zai" + assert config["llm"]["max_input_tokens"] == 1048576 + assert config["llm"]["max_output_tokens"] == 128000 + + +def test_router_model_inherits_google_to_gemini_alias(): + metadata = { + "gemini/gemini-2.5-pro": _record( + litellm_provider="gemini", + max_input_tokens=1048576, + max_output_tokens=65536, + ) + } + config = get_default_config("openrouter/google/gemini-2.5-pro", [metadata]) + + assert config["llm"]["litellm_provider"] == "gemini" + assert config["llm"]["max_input_tokens"] == 1048576 + assert config["llm"]["max_output_tokens"] == 65536 + + +def test_router_model_falls_back_to_same_route_tail_across_providers(): + """A rehost-only metadata record still supplies limits for a router name.""" + metadata = { + "baseten/zai-org/GLM-5.3-Flash": _record( + litellm_provider="baseten", + max_input_tokens=1048576, + max_output_tokens=131072, + ) + } + config = get_default_config("openrouter/z-ai/glm-5.3-flash", [metadata]) + + assert config["llm"]["max_input_tokens"] == 1048576 + assert config["llm"]["max_output_tokens"] == 131072 + + +def test_router_fallback_requires_matching_route_tail(): + metadata = {"vendor/unrelated-model": _record(litellm_provider="vendor")} + config = get_default_config("openrouter/z-ai/glm-5.3-flash", [metadata]) + + assert "max_input_tokens" not in config["llm"] + assert "max_output_tokens" not in config["llm"] + + +# --------------------------------------------------------------------------- +# Router / multi-part model names +# --------------------------------------------------------------------------- + + +def test_router_model_inherits_vendor_aliased_record(): + """``openrouter/z-ai/x`` inherits from the bundled ``zai/x`` record.""" + metadata = { + "zai/glm-5.3-flash": _record( + litellm_provider="zai", max_input_tokens=1048576, max_output_tokens=128000 + ) + } + config = get_default_config("openrouter/z-ai/glm-5.3-flash", [metadata]) + + assert config["llm"]["litellm_provider"] == "zai" + assert config["llm"]["max_input_tokens"] == 1048576 + assert config["llm"]["max_output_tokens"] == 128000 + + +def test_router_model_inherits_from_rehosted_route_tail(): + """When only a rehosted record exists, match its route tail.""" + metadata = { + "baseten/zai-org/GLM-5.3-Flash": _record( + litellm_provider="baseten", max_input_tokens=1048576, max_output_tokens=131072 + ) + } + config = get_default_config("openrouter/z-ai/glm-5.3-flash", [metadata]) + + assert config["llm"]["litellm_provider"] == "baseten" + assert config["llm"]["max_input_tokens"] == 1048576 + assert config["llm"]["max_output_tokens"] == 131072 + + +def test_router_route_fallback_requires_matching_model_tail(): + """A different model name must not inherit an unrelated record.""" + metadata = {"vendor/other-model": _record(litellm_provider="vendor")} + config = get_default_config("openrouter/z-ai/glm-5.3-flash", [metadata]) + + assert "max_input_tokens" not in config["llm"] + assert config["llm"]["litellm_provider"] == "openrouter" diff --git a/tests/helpers/test_orchestration.py b/tests/helpers/test_orchestration.py index 9a278c5211e..1d782752f2c 100644 --- a/tests/helpers/test_orchestration.py +++ b/tests/helpers/test_orchestration.py @@ -864,499 +864,6 @@ def test_agent_proxy_local_prefix_tool(): assert tool._mcp_server is None -# =================================================================== -# AgentRegion -# =================================================================== - - -def test_agent_region_basic(tmp_path): - """AgentRegion stores patterns and resolves lazily via get_start/get_end.""" - - import os - - from cecli.helpers.orchestration.region_resolver import AgentRegion - - # Create a real file so lazy resolution works - source = "def foo():\n return 42\n" - test_file = os.path.join(str(tmp_path), "basic.py") - with open(test_file, "w") as f: - f.write(source) - - coder = _make_coder_with_io(str(tmp_path)) - - regions = AgentRegion( - "basic.py", - coder, - [ - {"name": "foo", "start": "def foo():", "end": " return 42"}, - ], - ) - - assert "foo" in regions - assert "missing" not in regions - assert len(regions) == 1 - assert "AgentRegion(1" in repr(regions) - - # Lazy resolution on access - start_id = regions.get_start("foo") - end_id = regions.get_end("foo") - - assert "—" in start_id - assert "—" in end_id - - start_line = regions.get_start_line("foo") - end_line = regions.get_end_line("foo") - - assert start_line > 0 - assert end_line > 0 - assert start_line <= end_line - - -# =================================================================== -# AgentProxy.resolve_regions -# =================================================================== - - -def _make_coder_with_io(tmp_path): - """Build a coder mock that supports resolve_paths + file I/O.""" - - import os - - class _MockIO: - def read_text(self, abs_path): - if os.path.isfile(abs_path): - with open(abs_path, "r") as f: - return f.read() - - return None - - class _MockCoder: - root = tmp_path - io = _MockIO() - registered_tools = {"included": set(), "excluded": set()} - mcp_tools = [] - - def abs_root_path(self, file_path): - import os - - return os.path.join(self.root, file_path) - - def get_rel_fname(self, abs_path): - import os - - return os.path.relpath(abs_path, self.root) - - return _MockCoder() - - -def test_resolve_regions_basic(tmp_path): - """AgentProxy.resolve_regions resolves text patterns to content IDs.""" - - import os - - from cecli.helpers.orchestration.environment import AgentProxy - - # Create a test file with known regions - source = """\ -def helper_one(): - \"\"\"Returns 'one'.\"\"\" - return "one" - - -def helper_two(): - \"\"\"Returns 'two'.\"\"\" - return "two" - - -def main(): - result = helper_one() + helper_two() - return result -""" - - test_file = os.path.join(str(tmp_path), "test_regions.py") - - with open(test_file, "w") as f: - f.write(source) - - coder = _make_coder_with_io(str(tmp_path)) - proxy = AgentProxy(coder) - - regions = proxy.resolve_regions( - "test_regions.py", - [ - {"name": "helper_one", "start": "def helper_one():", "end": ' return "one"'}, - {"name": "helper_two", "start": "def helper_two():", "end": ' return "two"'}, - {"name": "main", "start": "def main():", "end": " return result"}, - ], - ) - - from cecli.helpers.orchestration.region_resolver import AgentRegion - - assert isinstance(regions, AgentRegion) - assert len(regions) == 3 - - # Each region should have valid content IDs - for name in ("helper_one", "helper_two", "main"): - start_id = regions.get_start(name) - end_id = regions.get_end(name) - - assert "—" in start_id, f"{name} start_id should be a content ID: {start_id}" - assert "—" in end_id, f"{name} end_id should be a content ID: {end_id}" - - assert regions.get_start_line(name) > 0 - assert regions.get_end_line(name) > 0 - assert regions.get_start_line(name) <= regions.get_end_line(name) - - -def test_resolve_regions_file_not_found(tmp_path): - """Eager validation raises ValueError at resolve_regions time when file doesn't exist.""" - - import pytest - - from cecli.helpers.orchestration.environment import AgentProxy - - coder = _make_coder_with_io(str(tmp_path)) - - proxy = AgentProxy(coder) - - # Eager validation surfaces errors at construction time - with pytest.raises(ValueError, match="File not found"): - proxy.resolve_regions( - "nonexistent.py", - [{"name": "x", "start": "def x", "end": "return"}], - ) - - -def test_resolve_regions_empty_regions_list(tmp_path): - """AgentProxy.resolve_regions handles empty region list.""" - - import os - - from cecli.helpers.orchestration.environment import AgentProxy - from cecli.helpers.orchestration.region_resolver import AgentRegion - - source = "x = 1\n" - - test_file = os.path.join(str(tmp_path), "empty_test.py") - - with open(test_file, "w") as f: - f.write(source) - - coder = _make_coder_with_io(str(tmp_path)) - proxy = AgentProxy(coder) - - regions = proxy.resolve_regions("empty_test.py", []) - - assert isinstance(regions, AgentRegion) - assert len(regions) == 0 - - -def test_agent_region_content_id_fallback(tmp_path): - """AgentRegion snapshots line content from content-ID patterns for stale-ID fallback.""" - - import os - - from cecli.helpers.orchestration.region_resolver import AgentRegion - - source = """\ -def greet(name): - return f"hello {name}" - - -def farewell(name): - return f"goodbye {name}" -""" - - test_file = os.path.join(str(tmp_path), "fallback_test.py") - - with open(test_file, "w") as f: - f.write(source) - - coder = _make_coder_with_io(str(tmp_path)) - - # First, resolve using the Agent to get a real content ID - from cecli.helpers.orchestration.environment import AgentProxy - - proxy = AgentProxy(coder) - regions = proxy.resolve_regions( - "fallback_test.py", - [{"name": "greet", "start": "def greet(name):", "end": ' return f"hello {name}"'}], - ) - - # Get the content ID for the start of "greet" - start_id = regions.get_start("greet") - - # Now create a NEW AgentRegion that uses the raw content ID as the pattern. - # This simulates an agent that captured content IDs from a previous turn. - regions2 = AgentRegion( - "fallback_test.py", - coder, - [{"name": "greet", "start": start_id, "end": start_id}], - ) - - # First resolution should snapshot the line content - result_id = regions2.get_start("greet") - assert "—" in result_id - - # Now modify the file (simulating an edit that shifts hashlines) - new_source = """\ -# header comment added -def greet(name): - return f"hello {name}" - - -def farewell(name): - return f"goodbye {name}" -""" - - with open(test_file, "w") as f: - f.write(new_source) - - # The original content ID is now stale, but the snapshot should let - # us resolve via content matching - result_id2 = regions2.get_start("greet") - assert "—" in result_id2, f"Should resolve via fallback content match, got: {result_id2!r}" - - -def test_agent_region_rejects_ambiguous_pattern(tmp_path): - """AgentRegion raises ValueError eagerly when a text pattern matches multiple locations.""" - - import os - - import pytest - - from cecli.helpers.orchestration.region_resolver import AgentRegion - - # Create a file where "return x" appears multiple times - source = """\ -def foo(): - return x - - -def bar(): - return x - - -def baz(): - return x -""" - - test_file = os.path.join(str(tmp_path), "ambiguous.py") - with open(test_file, "w") as f: - f.write(source) - - coder = _make_coder_with_io(str(tmp_path)) - - # start is unique, but end matches 3 locations — error surfaces eagerly - with pytest.raises(ValueError, match="End pattern"): - AgentRegion( - "ambiguous.py", - coder, - [ - {"name": "bar", "start": "def bar", "end": "return x"}, - ], - ) - - -def test_agent_region_disambiguates_with_l_hint(tmp_path): - """AgentRegion uses @L hint to disambiguate when a pattern matches multiple locations.""" - - import os - - from cecli.helpers.orchestration.region_resolver import AgentRegion - - source = """\ -def foo(): - return x - -def bar(): - return y - -def baz(): - return z -""" - - test_file = os.path.join(str(tmp_path), "hint_test.py") - with open(test_file, "w") as f: - f.write(source) - - coder = _make_coder_with_io(str(tmp_path)) - - # "return" appears on lines 2, 5, 8 — use @L hint to target bar's return - regions = AgentRegion( - "hint_test.py", - coder, - [ - {"name": "bar", "start": "def bar():", "end": " return y @L6"}, - ], - ) - - start_id = regions.get_start("bar") - end_id = regions.get_end("bar") - - assert "—" in start_id - assert "—" in end_id - assert regions.get_start_line("bar") == 4 - assert regions.get_end_line("bar") == 5 - - -def test_agent_region_rejects_l_hint_still_ambiguous(tmp_path): - """AgentRegion raises ValueError eagerly when @L hint has equally-close matches (tie).""" - - import os - - import pytest - - from cecli.helpers.orchestration.region_resolver import AgentRegion - - source = """\ -return x - -return y -middle -return x -return z -""" - - test_file = os.path.join(str(tmp_path), "bad_hint.py") - with open(test_file, "w") as f: - f.write(source) - - coder = _make_coder_with_io(str(tmp_path)) - - # "return x" at lines 1 and 4 (0-based: 0 and 3), hint @L3 (0-based 2) - # Both are distance 1 away from the hint — error surfaces eagerly - with pytest.raises(ValueError, match="End pattern.*@L3 hint ties"): - AgentRegion( - "bad_hint.py", - coder, - [ - {"name": "top", "start": "return x @L1", "end": "return x @L3"}, - ], - ) - - -def test_agent_region_explicit_line_hints(tmp_path): - """Explicit start_line_hint / end_line_hint fields disambiguate patterns.""" - - import os - - from cecli.helpers.orchestration.region_resolver import AgentRegion - - source = """\ -def foo(): - return x - -def bar(): - return y - -def baz(): - return z -""" - - test_file = os.path.join(str(tmp_path), "explicit_hint.py") - with open(test_file, "w") as f: - f.write(source) - - coder = _make_coder_with_io(str(tmp_path)) - - # Use explicit end_line_hint instead of @L in pattern - regions = AgentRegion( - "explicit_hint.py", - coder, - [ - {"name": "bar", "start": "def bar():", "end": " return y", "end_line_hint": 6}, - ], - ) - - start_id = regions.get_start("bar") - end_id = regions.get_end("bar") - - assert "—" in start_id - assert "—" in end_id - assert regions.get_start_line("bar") == 4 - assert regions.get_end_line("bar") == 5 - - -def test_agent_region_explicit_hint_overrides_at_syntax(tmp_path): - """Explicit line_hint fields override @L hints embedded in patterns.""" - - import os - - from cecli.helpers.orchestration.region_resolver import AgentRegion - - source = """\ -def foo(): - return x - -def bar(): - return y - -def baz(): - return z -""" - - test_file = os.path.join(str(tmp_path), "override_hint.py") - with open(test_file, "w") as f: - f.write(source) - - coder = _make_coder_with_io(str(tmp_path)) - - # @L2 points to foo's return, but explicit end_line_hint=3 points to bar's - regions = AgentRegion( - "override_hint.py", - coder, - [ - { - "name": "bar", - "start": "def bar():", - "end": " return y @L3", - "end_line_hint": 6, - }, - ], - ) - - # Explicit hint (6, 1-based) disambiguates; pattern must be the full exact line - assert regions.get_end_line("bar") == 5 - - -def test_resolve_regions_rejects_ambiguous_via_proxy(tmp_path): - """resolve_regions() through AgentProxy surfaces ambiguity errors eagerly at construction time.""" - - import os - - import pytest - - from cecli.helpers.orchestration.environment import AgentProxy - - source = """\ -def one(): - pass - - -def two(): - pass - - -def three(): - pass -""" - - test_file = os.path.join(str(tmp_path), "proxy_ambig.py") - with open(test_file, "w") as f: - f.write(source) - - coder = _make_coder_with_io(str(tmp_path)) - proxy = AgentProxy(coder) - - # "pass" appears 3 times — error surfaces eagerly at resolve_regions time - with pytest.raises(ValueError, match="End pattern.*pass.*matches 3"): - proxy.resolve_regions( - "proxy_ambig.py", - [{"name": "two", "start": "def two", "end": "pass"}], - ) - - def test_gather_result_attribute_access(): """GatherResult supports attribute access for named results.""" from cecli.helpers.orchestration.environment import GatherResult diff --git a/tests/helpers/workflows/test_config.py b/tests/helpers/workflows/test_config.py index a5c82cb9928..4201f50cceb 100644 --- a/tests/helpers/workflows/test_config.py +++ b/tests/helpers/workflows/test_config.py @@ -657,3 +657,115 @@ def test_persist_string_false_is_not_truthy(): ) assert wf.persist is False + + +# ── repo + worktree ──────────────────────────────────────────────────────── + + +@pytest.mark.parametrize( + ("raw", "expected"), + [ + (True, {}), + (None, None), + (False, None), + ({"branch": "main"}, {"branch": "main"}), + ], +) +def test_worktree_normalized(raw, expected): + wf = models.WorkflowConfig.from_dict( + {"name": "wt", "worktree": raw, "tasks": [{"prompt": "x"}]} + ) + + assert wf.worktree == expected + + +def test_repo_and_worktree_round_trip(isolated): + _home_workflow( + isolated["wdir"], + "wt.yml", + "name: wt\n" + "repo: /repos/app\n" + "worktree:\n" + " branch: main\n" + "tasks:\n" + " - prompt: x\n", + ) + + wf = load_workflows()[0] + + assert wf.repo == "/repos/app" + assert wf.worktree == {"branch": "main"} + assert wf.to_dict()["repo"] == "/repos/app" + assert wf.to_dict()["worktree"] == {"branch": "main"} + + +def test_worktree_true_is_enabled_with_defaults(isolated): + _home_workflow( + isolated["wdir"], + "wt-true.yml", + "name: wt-true\nrepo: /repos/app\nworktree: true\ntasks:\n - prompt: x\n", + ) + + wf = load_workflows()[0] + + assert wf.worktree == {} + + +@pytest.mark.parametrize("bad", ["yes", 1, ["main"]]) +def test_worktree_wrong_type_raises(bad): + wf = models.WorkflowConfig(name="wt", tasks=[models.TaskConfig(prompt="p")], worktree=bad) + + with pytest.raises(ValueError, match="'worktree' must be a boolean or a mapping"): + validate_workflow_config(wf, {"name": "wt", "worktree": bad, "tasks": ["p"]}) + + +def test_worktree_branch_must_be_string(): + wf = models.WorkflowConfig( + name="wt", tasks=[models.TaskConfig(prompt="p")], worktree={"branch": 3} + ) + + with pytest.raises(ValueError, match="'worktree.branch' must be a string"): + validate_workflow_config(wf) + + +def test_unknown_worktree_key_warns(): + wf = models.WorkflowConfig( + name="wt", + tasks=[models.TaskConfig(prompt="p")], + worktree={"branch": "main", "remote": "origin"}, + ) + + warnings = validate_workflow_config(wf) + + assert any("unknown 'worktree' key(s) ignored" in w and "remote" in w for w in warnings) + + +def test_repo_must_be_string(): + wf = models.WorkflowConfig(name="wt", tasks=[models.TaskConfig(prompt="p")], repo=123) + + with pytest.raises(ValueError, match="'repo' must be a string"): + validate_workflow_config(wf) + + +def test_worktree_without_source_warns(): + wf = models.WorkflowConfig(name="wt", tasks=[models.TaskConfig(prompt="p")], worktree={}) + + warnings = validate_workflow_config(wf) + + assert any("no source repository could be inferred" in w for w in warnings) + + +def test_worktree_true_is_normalized_programmatically(): + wf = models.WorkflowConfig(name="wt", tasks=[models.TaskConfig(prompt="p")], worktree=True) + + assert wf.worktree == {} + assert wf.to_dict()["worktree"] == {} + + +def test_to_dict_omits_absent_repo_and_worktree(): + wf = models.WorkflowConfig(name="wt", tasks=[models.TaskConfig(prompt="p")]) + + data = wf.to_dict() + + assert "repo" not in data + assert "worktree" not in data diff --git a/tests/helpers/workflows/test_runner.py b/tests/helpers/workflows/test_runner.py index 6105f365d8d..e5b3ccf7eb5 100644 --- a/tests/helpers/workflows/test_runner.py +++ b/tests/helpers/workflows/test_runner.py @@ -34,6 +34,7 @@ def make_worker(): worker.prompt_queue = [] worker._queue_counter = 0 worker._queue_lock = threading.Lock() + worker.worktree = None return worker @@ -476,3 +477,26 @@ async def test_persist_reuses_existing_worker(coder): get_files.return_value.reset.assert_called_once() get_chunks.return_value.add_system_message.assert_called_once() assert service.reaped == [] + + +@pytest.mark.asyncio +async def test_worktree_recorded_and_logged(coder): + worker = make_worker() + worker.received = [] + + class Record: + def to_dict(self): + return {"branch": "cecli/wf-demo-1234", "path": "/tmp/wt"} + + worker.worktree = Record() + service = FakeService(worker, _drain) + wf = _wf(TaskConfig(prompt="x")) + + result = await _execute(service, wf, coder) + + assert result.worktree == {"branch": "cecli/wf-demo-1234", "path": "/tmp/wt"} + + from cecli.helpers.workflows.logs import read_log_lines + + finish = [e for e in read_log_lines(result.log_path) if e.get("event") == "finish"][-1] + assert finish["worktree"] == result.worktree diff --git a/tests/helpers/workflows/test_subagents.py b/tests/helpers/workflows/test_subagents.py index 164a32ed669..53b62bda8a4 100644 --- a/tests/helpers/workflows/test_subagents.py +++ b/tests/helpers/workflows/test_subagents.py @@ -183,3 +183,56 @@ def test_workflow_metadata_overrides_subagent_config(): assert agent_config["servers_includelist"] == ["gitlab"] assert agent_config["skip_cli_confirmations"] is True assert agent_config["detached"] is True + + +# ---------------------------------------------------------------- worktree -- + + +def test_worktree_metadata_uses_repo(): + wf = _wf(repo="/repos/app", worktree={"branch": "main"}) + + register_workflow_subagents([wf]) + cfg = AgentService.get_registry()["wf:check-pipeline"] + + assert cfg.metadata["worktree"] == {"branch": "main"} + assert cfg.metadata["worktree_source"] == "/repos/app" + + +def test_worktree_metadata_uses_normalized_root(tmp_path, monkeypatch): + monkeypatch.setenv("HOME", str(tmp_path)) + monkeypatch.setenv("USERPROFILE", str(tmp_path)) + root = tmp_path / "repo" + root.mkdir() + + wf = _wf(root="~/repo", worktree=True) + + register_workflow_subagents([wf]) + cfg = AgentService.get_registry()["wf:check-pipeline"] + + assert cfg.metadata["worktree"] == {} + assert cfg.metadata["worktree_source"] == str(root.expanduser().resolve()) + + +def test_worktree_metadata_uses_source_path_git_root(tmp_path, monkeypatch): + repo = tmp_path / "repo" + repo.mkdir() + source = repo / "workflows" / "nightly.yml" + monkeypatch.setattr(wf_subagents, "_git_toplevel", lambda path: str(repo)) + + wf = _wf(name="nightly", source_path=str(source), worktree=True) + + register_workflow_subagents([wf]) + cfg = AgentService.get_registry()["wf:nightly"] + + assert cfg.metadata["worktree"] == {} + assert cfg.metadata["worktree_source"] == str(repo) + + +def test_no_worktree_metadata_when_disabled(): + wf = _wf(root="/repos/app") + + register_workflow_subagents([wf]) + cfg = AgentService.get_registry()["wf:check-pipeline"] + + assert "worktree" not in cfg.metadata + assert "worktree_source" not in cfg.metadata diff --git a/tests/helpers/worktrees/__init__.py b/tests/helpers/worktrees/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/helpers/worktrees/test_manager.py b/tests/helpers/worktrees/test_manager.py new file mode 100644 index 00000000000..2fd119e132b --- /dev/null +++ b/tests/helpers/worktrees/test_manager.py @@ -0,0 +1,492 @@ +"""End-to-end tests for worktree creation, recreation, and release.""" + +from __future__ import annotations + +import json +import os +import shutil +import subprocess +import sys +from concurrent.futures import ThreadPoolExecutor +from dataclasses import replace +from pathlib import Path + +import pytest + +from cecli.helpers.worktrees import ( + WorktreeError, + WorktreeManager, + WorktreeRecord, + WorktreeReleaseResult, +) + + +@pytest.fixture(autouse=True) +def isolated_base(tmp_path, monkeypatch): + base = tmp_path / "worktrees" + monkeypatch.setenv("CECLI_WORKTREES_DIR", str(base)) + return base + + +def _git(repo, *args): + result = subprocess.run( + ["git", "-C", str(repo), *args], + capture_output=True, + text=True, + ) + assert result.returncode == 0, result.stderr + return result.stdout.strip() + + +def _init_repo(path: Path, branch: str = "main") -> Path: + path.mkdir(parents=True, exist_ok=True) + subprocess.run(["git", "init", str(path)], check=True, capture_output=True) + subprocess.run( + ["git", "-C", str(path), "symbolic-ref", "HEAD", f"refs/heads/{branch}"], + check=True, + capture_output=True, + ) + subprocess.run( + ["git", "-C", str(path), "config", "user.name", "Test User"], + check=True, + capture_output=True, + ) + subprocess.run( + ["git", "-C", str(path), "config", "user.email", "test@example.com"], + check=True, + capture_output=True, + ) + (path / "README.md").write_text("hello\n", encoding="utf-8") + _git(path, "add", "-A") + _git(path, "commit", "-m", "initial") + + return path + + +def _create(repo: Path, uuid: str = "456abcde", agent: str = "wf:nightly-tidy", **kwargs): + source = kwargs.pop("source", repo) + + return WorktreeManager.create(agent_name=agent, uuid=uuid, source=source, **kwargs) + + +def test_create_from_local_repo(tmp_path, isolated_base): + repo = _init_repo(tmp_path / "repo") + + record = _create(repo) + + assert record.repo == str(repo.resolve()) + assert record.branch == "cecli/wf-nightly-tidy-456abcde" + assert record.path == str((isolated_base / "repo" / "wf-nightly-tidy-456abcde").resolve()) + assert Path(record.path).is_dir() + assert record.base_ref == "main" + assert record.base_sha == _git(repo, "rev-parse", "main") + assert record.agent == "wf:nightly-tidy" + assert record.uuid == "456abcde" + assert record.pid == os.getpid() + assert record.created_at + assert WorktreeManager.get(record.uuid) == record + + +def test_default_branch_master(tmp_path): + repo = _init_repo(tmp_path / "repo", branch="master") + + record = _create(repo) + + assert record.base_ref == "master" + + +def test_explicit_base_ref(tmp_path): + repo = _init_repo(tmp_path / "repo") + _git(repo, "branch", "feature") + feature_sha = _git(repo, "rev-parse", "feature") + + record = _create(repo, base_ref="feature") + + assert record.base_ref == "feature" + assert record.base_sha == feature_sha + + +def test_unknown_base_ref_raises(tmp_path): + repo = _init_repo(tmp_path / "repo") + + with pytest.raises(WorktreeError): + _create(repo, base_ref="does-not-exist") + + +def test_branch_and_path_naming_are_sanitized(tmp_path): + repo = _init_repo(tmp_path / "repo") + + record = _create(repo, agent="wf:nightly tidy", uuid="abc/def") + + assert record.branch == "cecli/wf-nightly-tidy-abc-def" + assert "/" not in Path(record.path).name + assert Path(record.path).name == "wf-nightly-tidy-abc-def" + + +def test_two_creates_produce_distinct_paths_and_branches(tmp_path): + repo = _init_repo(tmp_path / "repo") + + first = _create(repo, uuid="aaaa1111", reuse_existing=False) + second = _create(repo, uuid="bbbb2222", reuse_existing=False) + + assert first.path != second.path + assert first.branch != second.branch + assert Path(first.path).is_dir() + assert Path(second.path).is_dir() + + +def test_create_reuses_existing_worktree_for_same_agent(tmp_path): + repo = _init_repo(tmp_path / "repo") + + first = _create(repo, uuid="aaaa1111") + second = _create(repo, uuid="bbbb2222") + + assert first.uuid == second.uuid + assert first.path == second.path + assert first.branch == second.branch + assert len(list((tmp_path / "worktrees" / "repo").iterdir())) == 1 + + +def test_create_same_uuid_does_not_create_suffixed_copies(tmp_path): + repo = _init_repo(tmp_path / "repo") + + first = _create(repo, uuid="abcd1234", reuse_existing=False) + second = _create(repo, uuid="abcd1234", reuse_existing=False) + + assert first.path == second.path + names = sorted(item.name for item in (tmp_path / "worktrees" / "repo").iterdir()) + assert names == ["wf-nightly-tidy-abcd1234"] + + +def test_concurrent_creates_reuse_a_single_worktree(tmp_path): + repo = _init_repo(tmp_path / "repo") + uuids = [f"aaaa{index:04d}" for index in range(8)] + + with ThreadPoolExecutor(max_workers=len(uuids)) as pool: + records = list(pool.map(lambda value: _create(repo, uuid=value), uuids)) + + assert {record.path for record in records} == {records[0].path} + assert {record.uuid for record in records} == {records[0].uuid} + assert len(list((tmp_path / "worktrees" / "repo").iterdir())) == 1 + + +def test_clean_release_deletes_branch(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + + result = WorktreeManager.release(record) + + assert isinstance(result, WorktreeReleaseResult) + assert result.removed is True + assert result.committed is False + assert result.branch_deleted is True + assert result.branch_kept is False + assert not Path(record.path).exists() + assert WorktreeManager.get(record.uuid) is None + assert record.branch not in _git(repo, "branch", "--list") + + +def test_dirty_release_commits_and_keeps_branch(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + (Path(record.path) / "README.md").write_text("changed\n", encoding="utf-8") + + result = WorktreeManager.release(record) + + subject = f"Unfinished Dirty Worktree from agent {record.uuid}" + body = _git(repo, "log", "-1", "--format=%b", record.branch) + + assert result.committed is True + assert result.removed is True + assert result.branch_kept is True + assert result.branch_deleted is False + assert not Path(record.path).exists() + assert _git(repo, "log", "-1", "--format=%s", record.branch) == subject + assert record.agent in body + assert record.base_sha in body + assert "README.md" in body + assert WorktreeManager.get(record.uuid) is None + + +def test_release_commits_untracked_file(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + (Path(record.path) / "notes.txt").write_text("scratch\n", encoding="utf-8") + + result = WorktreeManager.release(record) + + assert result.committed is True + assert result.branch_kept is True + assert _git(repo, "show", f"{record.branch}:notes.txt") == "scratch" + + +def test_release_keeps_branch_with_agent_commits(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + (Path(record.path) / "agent.txt").write_text("work\n", encoding="utf-8") + _git(Path(record.path), "add", "-A") + _git(Path(record.path), "commit", "-m", "agent work") + + result = WorktreeManager.release(record) + + assert result.committed is False + assert result.removed is True + assert result.branch_kept is True + assert result.branch_deleted is False + assert not Path(record.path).exists() + assert record.branch in _git(repo, "branch", "--list") + + +def test_release_with_missing_path(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + shutil.rmtree(record.path) + + result = WorktreeManager.release(record) + + assert result.removed is False + assert result.branch_kept is False + assert result.branch_deleted is True + assert result.reason == "worktree path missing" + assert WorktreeManager.get(record.uuid) is None + assert record.branch not in _git(repo, "branch", "--list") + + +def test_release_oversized_untracked_guard(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + big = Path(record.path) / "big.bin" + big.write_bytes(b"x" * (WorktreeManager.MAX_UNTRACKED_FILE_BYTES + 1)) + + result = WorktreeManager.release(record) + + assert result.removed is False + assert result.committed is False + assert result.branch_kept is True + assert "untracked files too large" in result.reason + assert Path(record.path).is_dir() + assert record.branch in _git(repo, "branch", "--list") + assert WorktreeManager.get(record.uuid) == record + + +def test_release_oversized_guard_can_be_forced(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + (Path(record.path) / "big.bin").write_bytes( + b"x" * (WorktreeManager.MAX_UNTRACKED_FILE_BYTES + 1) + ) + + result = WorktreeManager.release(record, force=True) + + assert result.removed is True + assert result.committed is True + assert not Path(record.path).exists() + + +def test_is_worktree_rejects_other_repo(tmp_path): + repo_one = _init_repo(tmp_path / "repo-one") + repo_two = _init_repo(tmp_path / "repo-two") + record = _create(repo_one) + + assert WorktreeManager._is_worktree(Path(record.path), repo_one) + assert not WorktreeManager._is_worktree(Path(record.path), repo_two) + + +def test_recreate_from_branch(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + _git(repo, "worktree", "remove", "--force", record.path) + + recreated = WorktreeManager.recreate(record) + + assert recreated.path == record.path + assert recreated.branch == record.branch + assert Path(recreated.path).is_dir() + assert WorktreeManager.get(record.uuid) == recreated + + +def test_recreate_from_base_sha(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + _git(repo, "worktree", "remove", "--force", record.path) + _git(repo, "branch", "-D", record.branch) + + recreated = WorktreeManager.recreate(record) + + assert recreated.path == record.path + assert recreated.branch == record.branch + assert Path(recreated.path).is_dir() + assert _git(repo, "rev-parse", recreated.branch) == record.base_sha + + +def test_recreate_with_path_override(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + _git(repo, "worktree", "remove", "--force", record.path) + new_path = tmp_path / "elsewhere" / "worktree" + + recreated = WorktreeManager.recreate(record, path=new_path) + + assert recreated.path == str(new_path.resolve()) + assert Path(recreated.path).is_dir() + assert WorktreeManager.get(record.uuid) == recreated + + +def test_recreate_with_new_uuid_attaches_saved_branch(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + work = Path(record.path) / "work.txt" + work.write_text("saved work\n", encoding="utf-8") + _git(record.path, "add", "-A") + _git(record.path, "commit", "-m", "saved work") + _git(repo, "worktree", "remove", "--force", record.path) + + recreated = WorktreeManager.recreate(record, agent_name="wf:nightly-tidy", uuid="new99999") + + assert recreated.branch == record.branch + assert recreated.uuid == "new99999" + assert (Path(recreated.path) / "work.txt").read_text(encoding="utf-8") == "saved work\n" + assert WorktreeManager.get(record.uuid) is None + assert WorktreeManager.get("new99999") == recreated + + +def test_recreate_reuses_another_checkout_for_same_agent(tmp_path): + repo = _init_repo(tmp_path / "repo") + missing = _create(repo, uuid="aaaa1111", reuse_existing=False) + _git(repo, "worktree", "remove", "--force", missing.path) + live = _create(repo, uuid="bbbb2222", reuse_existing=False) + + recreated = WorktreeManager.recreate(missing, uuid="cccc3333") + + assert recreated.path == live.path + assert recreated.uuid == live.uuid + assert WorktreeManager.get(missing.uuid) is None + + +def test_release_keeps_saved_branch_when_agent_switched_branches(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + path = Path(record.path) + _git(path, "checkout", "-b", "agent-work") + (path / "work.txt").write_text("switched branch work\n", encoding="utf-8") + _git(path, "add", "-A") + _git(path, "commit", "-m", "agent work") + + result = WorktreeManager.release(record) + + assert result.removed is True + assert result.branch_kept is True + assert result.branch_deleted is False + assert record.branch in _git(repo, "branch", "--list") + assert "agent-work" in _git(repo, "branch", "--list") + assert _git(repo, "show", "agent-work:work.txt") == "switched branch work" + + +def test_registry_round_trip(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + + data = record.to_dict() + assert json.loads(json.dumps(data)) == data + assert WorktreeRecord.from_dict(data) == record + + result = WorktreeManager.release(record) + result_data = result.to_dict() + assert WorktreeReleaseResult(**result_data) == result + + +def test_get_unknown_uuid_returns_none(): + assert WorktreeManager.get("missing") is None + + +def test_release_all_releases_matching_pid(tmp_path): + repo = _init_repo(tmp_path / "repo") + first = _create(repo, uuid="aaaa1111", reuse_existing=False) + second = _create(repo, uuid="bbbb2222", reuse_existing=False) + + results = WorktreeManager.release_all() + + assert {result.uuid for result in results} == {first.uuid, second.uuid} + assert not Path(first.path).exists() + assert not Path(second.path).exists() + assert WorktreeManager.get(first.uuid) is None + assert WorktreeManager.get(second.uuid) is None + + +def test_release_all_skips_other_pids(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + other = replace(record, pid=os.getpid() + 1) + WorktreeManager._replace_record(record.uuid, other) + + results = WorktreeManager.release_all() + + assert results == [] + assert Path(record.path).is_dir() + + +def test_sweep_stale_releases_dead_pid(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + process = subprocess.Popen([sys.executable, "-c", "pass"]) + process.wait() + dead = replace(record, pid=process.pid) + WorktreeManager._replace_record(record.uuid, dead) + + results = WorktreeManager.sweep_stale() + + assert len(results) == 1 + assert results[0].removed is True + assert not Path(record.path).exists() + assert WorktreeManager.get(record.uuid) is None + + +def test_sweep_stale_skips_alive_pid(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + + assert WorktreeManager.sweep_stale() == [] + assert Path(record.path).is_dir() + + +def test_sweep_stale_skips_other_hosts(tmp_path): + repo = _init_repo(tmp_path / "repo") + record = _create(repo) + other_host = replace(record, host="some-other-host", pid=1) + WorktreeManager._replace_record(record.uuid, other_host) + + assert WorktreeManager.sweep_stale() == [] + assert Path(record.path).is_dir() + + +def test_resolve_source_variants(tmp_path): + repo = _init_repo(tmp_path / "repo") + nested = repo / "nested" + nested.mkdir() + + assert WorktreeManager.resolve_source(nested) == str(repo.resolve()) + assert WorktreeManager.resolve_source("repo", base_root=tmp_path) == str(repo.resolve()) + assert WorktreeManager.resolve_source("file:///tmp/example.git") == "file:///tmp/example.git" + assert ( + WorktreeManager.resolve_source("https://example.com/org/repo.git") + == "https://example.com/org/repo.git" + ) + + with pytest.raises(WorktreeError): + WorktreeManager.resolve_source(tmp_path / "missing") + + +def test_create_from_file_url_remote(tmp_path, isolated_base): + repo = _init_repo(tmp_path / "repo") + source = repo.as_uri() + + first = _create(repo, uuid="aaaa1111", source=source, reuse_existing=False) + second = _create(repo, uuid="bbbb2222", source=source, reuse_existing=False) + + assert first.repo == second.repo + assert Path(first.repo).is_dir() + assert Path(first.repo).parent.name == "_sources" + assert first.path != second.path + assert first.base_ref == "main" + assert Path(first.path).is_dir() + assert Path(second.path).is_dir() diff --git a/tests/helpers/worktrees/test_paths.py b/tests/helpers/worktrees/test_paths.py new file mode 100644 index 00000000000..2e9f2564717 --- /dev/null +++ b/tests/helpers/worktrees/test_paths.py @@ -0,0 +1,70 @@ +"""Tests for worktree path layout and naming helpers.""" + +from __future__ import annotations + +import re + +import pytest + +from cecli.helpers.worktrees import paths + + +@pytest.fixture(autouse=True) +def isolated_base(tmp_path, monkeypatch): + base = tmp_path / "worktrees" + monkeypatch.setenv("CECLI_WORKTREES_DIR", str(base)) + return base + + +def test_managed_root_honors_env(isolated_base): + assert paths.managed_root() == isolated_base.resolve() + + +def test_registry_and_lock_paths(isolated_base): + assert paths.registry_path() == isolated_base.resolve() / "registry.json" + assert paths.lock_dir() == isolated_base.resolve() / ".locks" + assert paths.lock_path(None, "My Lock") == isolated_base.resolve() / ".locks" / "My-Lock.lock" + + +def test_slugify_sanitizes_colons_whitespace_and_slashes(): + assert paths.slugify("wf:nightly tidy") == "wf-nightly-tidy" + assert paths.slugify("a/b\\c:d") == "a-b-c-d" + assert paths.slugify(" ??? ") == "item" + assert paths.slugify("x" * 80, max_length=10) == "x" * 10 + + +def test_agent_slug_truncates(): + slug = paths.agent_slug("wf:" + "a" * 100) + assert len(slug) == paths.AGENT_SLUG_MAX + assert not slug.endswith("-") + + +def test_branch_and_dir_names(): + assert paths.branch_name("wf:nightly-tidy", "456abcde") == "cecli/wf-nightly-tidy-456abcde" + assert paths.worktree_dir_name("wf:nightly-tidy", "456abcde") == "wf-nightly-tidy-456abcde" + + +def test_branch_name_has_no_slash_after_prefix(): + branch = paths.branch_name("wf:a/b", "u/u") + assert branch.startswith("cecli/") + assert "/" not in branch[len("cecli/") :] + + +def test_worktree_path_layout(tmp_path): + repo = tmp_path / "my-repo" + path = paths.worktree_path(None, repo, "wf:nightly-tidy", "456abcde") + assert path.parent.name == "my-repo" + assert path.name == "wf-nightly-tidy-456abcde" + assert path.is_relative_to(paths.managed_root()) + + +def test_repo_and_source_slugs(): + assert paths.repo_slug("/tmp/My Repo.git") == "My-Repo" + assert paths.source_slug("https://example.com/org/Cool-Repo.git") == "Cool-Repo" + assert paths.source_slug("git@github.com:org/Cool-Repo.git") == "Cool-Repo" + + +def test_short_digest_is_stable(): + assert paths.short_digest("value") == paths.short_digest("value") + assert len(paths.short_digest("value", 12)) == 12 + assert re.fullmatch(r"[0-9a-f]+", paths.short_digest("value")) diff --git a/tests/subagents/test_delegate.py b/tests/subagents/test_delegate.py index 67097fdc1f6..31a8dbfdea7 100644 --- a/tests/subagents/test_delegate.py +++ b/tests/subagents/test_delegate.py @@ -2,6 +2,8 @@ Tests for cecli/tools/delegate.py — Delegate tool execution. """ +import json +from types import SimpleNamespace from unittest.mock import AsyncMock, MagicMock, patch import pytest @@ -193,3 +195,111 @@ async def test_persist_true_sets_auto_reap_false_invoke(self): "reviewer", "blocking", parent=mock_coder, auto_reap=False ) assert "agent completed" in str(result) + + def test_schema_declares_working_dir(self): + """The delegation schema accepts an optional per-agent working directory.""" + from cecli.tools.delegate import Tool + + item = Tool.SCHEMA["function"]["parameters"]["properties"]["delegations"]["items"] + assert item["properties"]["working_dir"]["type"] == "string" + + @pytest.mark.asyncio + async def test_working_dir_is_passed_to_spawn(self): + """working_dir is passed as root for async delegations.""" + from cecli.tools.delegate import Tool + + mock_coder = MagicMock() + mock_coder.uuid = "parent-uuid" + + with patch("cecli.helpers.agents.service.AgentService") as MockService: + mock_instance = MagicMock() + mock_info = MagicMock() + mock_info.coder.uuid = "child-uuid" + mock_instance.spawn = AsyncMock(return_value=(MagicMock(), mock_info)) + MockService.get_instance.return_value = mock_instance + + await Tool.execute( + mock_coder, + delegations=[ + { + "name": "reviewer", + "prompt": "review", + "working_dir": "packages/api", + } + ], + ) + + mock_instance.spawn.assert_awaited_once_with( + "reviewer", + "review", + parent=mock_coder, + auto_reap=None, + root="packages/api", + ) + + @pytest.mark.asyncio + async def test_working_dir_is_passed_to_invoke(self): + """working_dir is passed as root for sync delegations.""" + from cecli.tools.delegate import Tool + + mock_coder = MagicMock() + mock_coder.uuid = "parent-uuid" + + with patch("cecli.helpers.agents.service.AgentService") as MockService: + mock_instance = MagicMock() + mock_instance.invoke = AsyncMock(return_value="done") + MockService.get_instance.return_value = mock_instance + + await Tool.execute( + mock_coder, + delegations=[ + { + "name": "reviewer", + "prompt": "review", + "working_dir": "/tmp/project", + "async": False, + } + ], + ) + + mock_instance.invoke.assert_awaited_once_with( + "reviewer", + "review", + parent=mock_coder, + auto_reap=None, + root="/tmp/project", + ) + + def test_format_output_shows_working_dir(self): + """format_output displays an explicit delegation working_dir.""" + from cecli.tools.delegate import Tool + + coder = MagicMock() + coder.pretty = False + coder.verbose = False + tool_response = SimpleNamespace( + function=SimpleNamespace( + name="Delegate", + arguments=json.dumps( + { + "delegations": [ + { + "name": "reviewer", + "prompt": "review", + "working_dir": "packages/api", + } + ] + } + ), + ) + ) + + with ( + patch("cecli.tools.delegate.tool_header"), + patch("cecli.tools.delegate.tool_footer"), + patch("cecli.tools.delegate.color_markers", return_value=("", "")), + ): + Tool.format_output(coder, mcp_server=MagicMock(), tool_response=tool_response) + + rendered = "\n".join(str(call.args[0]) for call in coder.io.tool_output.call_args_list) + assert "working_dir: packages/api" in rendered diff --git a/tests/subagents/test_service.py b/tests/subagents/test_service.py index 71f9fbd3c36..300d5932548 100644 --- a/tests/subagents/test_service.py +++ b/tests/subagents/test_service.py @@ -5,6 +5,7 @@ import asyncio import threading import time +from types import SimpleNamespace from unittest.mock import AsyncMock, MagicMock, patch import pytest @@ -732,7 +733,13 @@ async def test_attached_result_is_injected(self, service, mock_coder): ) as get_manager: await service._inject_sub_agent_result(info) - assert get_manager.return_value.add_message.call_count == 2 + add_message = get_manager.return_value.add_message + assert add_message.call_count == 1 + + message_dict = add_message.call_args.kwargs["message_dict"] + assert message_dict["role"] == "user" + assert '' in message_dict["content"] + assert "all done" in message_dict["content"] @pytest.mark.asyncio async def test_wait_skips_detached_children(self, service): @@ -807,6 +814,48 @@ def call_from_thread(self, callback, *args): assert tui.via_thread == [("u2",)] + def test_stopped_app_drops_notification(self): + """Notifications must not touch the DOM of an already stopped app.""" + from cecli.helpers.agents.service import _tui_notify + + hits = [] + + class StoppedTui: + is_running = False + + def call_from_thread(self, callback, *args): + raise RuntimeError("App is not running") + + def container(self, *args): + hits.append(args) + + tui = StoppedTui() + _tui_notify(tui, tui.container, "u3") + + assert hits == [] + + def test_app_stopping_mid_call_drops_notification(self): + """A RuntimeError from an app that stops mid-call is not retried inline.""" + from cecli.helpers.agents.service import _tui_notify + + hits = [] + + class StoppingTui: + def __init__(self): + self.is_running = True + + def call_from_thread(self, callback, *args): + self.is_running = False + raise RuntimeError("App is not running") + + def container(self, *args): + hits.append(args) + + tui = StoppingTui() + _tui_notify(tui, tui.container, "u4") + + assert hits == [] + # ================================================================== # # Foreground tracking @@ -1231,3 +1280,239 @@ async def raise_switch(**kwargs): service.switch_sub_agent_coder.assert_awaited_once() assert service.switch_sub_agent_coder.call_args.args[0] is info assert info.status == SubAgentStatus.FINISHED + + +class TestWorktreeRoots: + """Working-directory and worktree resolution in _create_sub_agent_coder().""" + + def _register(self, name, metadata): + from cecli.helpers.agents.config import SubAgentConfig + + AgentService.register_subagent( + name, SubAgentConfig(name=name, prompt="", metadata=metadata) + ) + + async def _spawn(self, service, name, **kwargs): + mock_new_coder = MagicMock() + mock_new_coder.tui = None + + with patch("cecli.coders.Coder") as MockCoder: + MockCoder.create = AsyncMock(return_value=mock_new_coder) + with patch("cecli.helpers.conversation.service.ConversationService") as MockConv: + MockConv.get_chunks.return_value = MagicMock() + coder, info = await service.spawn(name, parent=service.coder, **kwargs) + + return MockCoder, mock_new_coder, coder, info + + def _record(self, path): + return SimpleNamespace(path=str(path), to_dict=lambda: {"path": str(path)}) + + def test_resolve_root_resolves_relative_against_base(self, tmp_path): + base = tmp_path / "project" + child = base / "packages" / "api" + child.mkdir(parents=True) + + assert AgentService._resolve_root("packages/api", str(base)) == str(child.resolve()) + + def test_resolve_root_rejects_missing_directory(self, tmp_path): + with pytest.raises(ValueError, match="not an existing directory"): + AgentService._resolve_root(str(tmp_path / "missing")) + + @pytest.mark.asyncio + async def test_explicit_root_wins_over_worktree(self, service, tmp_path): + self._register("reviewer", {"worktree": {}}) + explicit = tmp_path / "explicit" + explicit.mkdir() + + with patch("cecli.helpers.worktrees.WorktreeManager.create") as create: + MockCoder, _, _, info = await self._spawn(service, "reviewer", root=str(explicit)) + + create.assert_not_called() + assert MockCoder.create.call_args[1]["root"] == str(explicit.resolve()) + assert info.worktree is None + + @pytest.mark.asyncio + async def test_non_workflow_agent_ignores_worktree_metadata(self, service, tmp_path): + service.coder.root = str(tmp_path) + source = tmp_path / "source" + source.mkdir() + self._register( + "reviewer", + {"worktree": {}, "worktree_source": str(source), "root": str(source)}, + ) + + with patch("cecli.helpers.worktrees.WorktreeManager.create") as create: + _, _, _, info = await self._spawn(service, "reviewer") + + create.assert_not_called() + assert info.worktree is None + + @pytest.mark.asyncio + async def test_override_root_beats_resume_and_spec(self, service, tmp_path, monkeypatch): + override_root = tmp_path / "override" + override_root.mkdir() + monkeypatch.setattr( + AgentService, "_agent_overrides", {"reviewer": {"root": str(override_root)}} + ) + self._register("reviewer", {"worktree": {}}) + + with ( + patch("cecli.helpers.worktrees.WorktreeManager.create") as create, + patch("cecli.helpers.worktrees.WorktreeManager.recreate") as recreate, + ): + MockCoder, _, _, info = await self._spawn( + service, + "reviewer", + resume_worktree=self._record(tmp_path / "saved"), + ) + + create.assert_not_called() + recreate.assert_not_called() + assert MockCoder.create.call_args[1]["root"] == str(override_root.resolve()) + assert info.worktree is None + + @pytest.mark.asyncio + async def test_resume_worktree_recreates_and_attaches_record(self, service, tmp_path): + service.coder.root = str(tmp_path) + self._register("wf:demo", {"worktree": {}}) + saved = {"uuid": "old", "path": str(tmp_path / "old-path")} + record = self._record(tmp_path / "restored") + + with ( + patch( + "cecli.helpers.worktrees.WorktreeManager.recreate", return_value=record + ) as recreate, + patch("cecli.helpers.worktrees.WorktreeManager.create") as create, + ): + MockCoder, new_coder, _, info = await self._spawn( + service, "wf:demo", resume_worktree=saved + ) + + create.assert_not_called() + recreate.assert_called_once() + assert recreate.call_args.args[0] == saved + assert recreate.call_args.kwargs["agent_name"] == "wf:demo" + assert MockCoder.create.call_args[1]["root"] == record.path + assert new_coder.worktree is record + assert info.worktree is record + + @pytest.mark.asyncio + async def test_enabled_worktree_spec_is_a_dict(self, service, tmp_path): + """worktree: true normalises to {} and must still create a worktree.""" + service.coder.root = str(tmp_path) + source = tmp_path / "source" + source.mkdir() + self._register("wf:demo", {"worktree": {}, "worktree_source": str(source)}) + record = self._record(tmp_path / "created") + + with patch("cecli.helpers.worktrees.WorktreeManager.create", return_value=record) as create: + MockCoder, _, _, info = await self._spawn(service, "wf:demo") + + create.assert_called_once() + assert create.call_args.kwargs["source"] == str(source) + assert create.call_args.kwargs["base_ref"] is None + assert create.call_args.kwargs["base_root"] == str(tmp_path) + assert MockCoder.create.call_args[1]["root"] == record.path + assert info.worktree is record + + @pytest.mark.asyncio + async def test_worktree_spec_passes_branch_and_parent_root(self, service, tmp_path): + service.coder.root = str(tmp_path) + self._register("wf:branch", {"worktree": {"branch": "feature"}}) + record = self._record(tmp_path / "branch-worktree") + + with patch("cecli.helpers.worktrees.WorktreeManager.create", return_value=record) as create: + await self._spawn(service, "wf:branch") + + assert create.call_args.kwargs["base_ref"] == "feature" + assert create.call_args.kwargs["source"] == str(tmp_path) + + @pytest.mark.asyncio + async def test_worktree_creation_failure_raises(self, service, tmp_path): + service.coder.root = str(tmp_path) + self._register("wf:fail", {"worktree": {}}) + + with patch( + "cecli.helpers.worktrees.WorktreeManager.create", side_effect=RuntimeError("boom") + ): + with pytest.raises(RuntimeError, match="Failed to create worktree"): + await self._spawn(service, "wf:fail") + + @pytest.mark.asyncio + async def test_coder_creation_failure_releases_worktree(self, service, tmp_path): + service.coder.root = str(tmp_path) + self._register("wf:fail", {"worktree": {}}) + record = self._record(tmp_path / "created") + + with ( + patch("cecli.helpers.worktrees.WorktreeManager.create", return_value=record), + patch("cecli.helpers.worktrees.WorktreeManager.release") as release, + patch("cecli.coders.Coder") as MockCoder, + patch("cecli.helpers.conversation.service.ConversationService"), + ): + MockCoder.create = AsyncMock(side_effect=RuntimeError("coder failed")) + with pytest.raises(RuntimeError, match="coder failed"): + await service.spawn("wf:fail", parent=service.coder) + + release.assert_called_once_with(record) + + def test_cleanup_releases_finished_worktree(self, service, tmp_path): + path = tmp_path / "finished" + record = self._record(path) + info = SubAgentInfo(name="reviewer", coder=MagicMock(), parent_uuid="parent-uuid") + info.coder.uuid = "sub-uuid" + info.worktree = record + service.sub_agents["agent"] = info + service._sub_agent_order.append("agent") + result = SimpleNamespace(to_dict=lambda: {"path": str(path), "branch": "cecli/x"}) + + with ( + patch( + "cecli.helpers.worktrees.WorktreeManager.release", return_value=result + ) as release, + patch("cecli.repo.GitRepoProxy.evict") as evict, + ): + service._cleanup_sub_agent("agent") + + release.assert_called_once_with(record) + evict.assert_called_once_with(str(path)) + events = [ + call + for call in service.coder.io.subagent_event.call_args_list + if call.args[1] == "worktree" + ] + assert events and events[0].kwargs["path"] == str(path) + + def test_cleanup_leaves_running_worktree_to_release_all(self, service, tmp_path): + record = self._record(tmp_path / "running") + info = SubAgentInfo(name="reviewer", coder=MagicMock(), parent_uuid="parent-uuid") + info.coder.uuid = "sub-uuid" + info.worktree = record + info.generate_task = MagicMock() + info.generate_task.done.return_value = False + service.sub_agents["agent"] = info + service._sub_agent_order.append("agent") + + with patch("cecli.helpers.worktrees.WorktreeManager.release") as release: + service._cleanup_sub_agent("agent") + + release.assert_not_called() + + def test_cleanup_survives_release_failure(self, service, tmp_path): + record = self._record(tmp_path / "broken") + info = SubAgentInfo(name="reviewer", coder=MagicMock(), parent_uuid="parent-uuid") + info.coder.uuid = "sub-uuid" + info.worktree = record + service.sub_agents["agent"] = info + service._sub_agent_order.append("agent") + + with ( + patch( + "cecli.helpers.worktrees.WorktreeManager.release", + side_effect=RuntimeError("release failed"), + ), + patch("cecli.repo.GitRepoProxy.evict"), + ): + service._cleanup_sub_agent("agent") + + assert "agent" not in service.sub_agents diff --git a/tests/tools/test_edit_file_format_output.py b/tests/tools/test_edit_file_format_output.py index 5adc9e1ee1d..01f1a4b2a5c 100644 --- a/tests/tools/test_edit_file_format_output.py +++ b/tests/tools/test_edit_file_format_output.py @@ -33,8 +33,19 @@ def tool_output(self, msg, type=None): def read_text(self, path): return Path(path).read_text() + def _detect_newline(self, path): + data = Path(path).read_bytes() + if b"\r\n" in data: + return "\r\n" + if b"\n" in data: + return "\n" + return None + def write_text(self, path, content): - Path(path).write_text(content) + # Mirror the real IO: an already-CRLF payload must not be translated + # again, which would double carriage returns on Windows. + newline = "" if "\r\n" in content else None + Path(path).write_text(content, newline=newline) class DummyChangeTracker: @@ -267,3 +278,356 @@ def test_format_output_unwraps_double_wrapped_arguments(coder_with_file): result = edit_file.Tool.execute(coder, edits=edits) assert result.to_dict()["errors"] == [] + + +def test_description_documents_brace_hint_syntax(): + """The description must document the canonical double-brace hint syntax.""" + description = edit_file.Tool.SCHEMA["function"]["description"] + + assert "@A{{regex}}" in description + assert "@B{{regex}}" in description + assert "@A{regex}" not in description + assert "virtual identifiers" in description + assert "——" in description + assert "ReadFile-only" in description + assert "@C" in description + assert "@P" in description + assert "@N" in description + assert "bare '@A'/'@B' is rejected" in description + assert "EditFile rejects them" in description + assert "indentation may be trimmed" not in description + + +def test_execute_rejects_multiline_anchor(coder_with_file): + """EditFile must reject multiline start_line/end_line values.""" + coder, file_path = coder_with_file + original_content = file_path.read_text() + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "replace", + "start_line": "def foo():\n print('hello')", + "end_line": "def foo():\n print('hello')", + "text": "changed", + } + ], + ).to_dict() + + assert result["errors"] + assert "single-line anchor" in result["errors"][0] + assert file_path.read_text() == original_content + + +def test_execute_appends_with_000_markers(coder_with_file): + """EditFile supports 000@ for both boundaries as an EOF append.""" + coder, file_path = coder_with_file + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "replace", + "start_line": "000@", + "end_line": "000@", + "text": "appended", + } + ], + ).to_dict() + + assert result["errors"] == [] + assert file_path.read_text().endswith(" return foo()\nappended\n") + + +def test_execute_hint_disambiguates_trimmed_duplicate(coder_with_file): + """A trimmed anchor plus @L must resolve duplicate lines correctly.""" + coder, file_path = coder_with_file + file_path.write_text( + "def alpha():\n" " return total\n" "\n" "\n" "def beta():\n" " return total\n" + ) + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "replace", + "start_line": "return total @L6", + "end_line": "return total @L6", + "text": " return 99", + } + ], + ).to_dict() + + assert result["errors"] == [] + lines = file_path.read_text().splitlines() + assert lines[1] == " return total" + assert lines[5] == " return 99" + + +@pytest.mark.parametrize( + "hint", + ["return total @B{def beta}", "return total @B{{def beta}}"], +) +def test_execute_at_b_disambiguates_trimmed_duplicate(coder_with_file, hint): + """A trimmed anchor plus @B must pick the occurrence before the regex hit.""" + coder, file_path = coder_with_file + file_path.write_text( + "def alpha():\n" + " return total\n" + "\n" + "\n" + "def beta():\n" + " return total\n" + "\n" + "\n" + "def gamma():\n" + " return total\n" + ) + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "replace", + "start_line": hint, + "end_line": hint, + "text": " return 1", + } + ], + ).to_dict() + + assert result["errors"] == [] + lines = file_path.read_text().splitlines() + assert lines[1] == " return 1" + assert lines[5] == " return total" + assert lines[9] == " return total" + + +@pytest.mark.parametrize( + "hint", + ["return total @A{def beta}", "return total @A{{def beta}}"], +) +def test_execute_at_a_accepts_single_or_double_braces(coder_with_file, hint): + """@A must pick the occurrence after the regex hit with either brace style.""" + coder, file_path = coder_with_file + file_path.write_text( + "def alpha():\n" " return total\n" "\n" "\n" "def beta():\n" " return total\n" + ) + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "replace", + "start_line": hint, + "end_line": hint, + "text": " return 1", + } + ], + ).to_dict() + + assert result["errors"] == [] + lines = file_path.read_text().splitlines() + assert lines[1] == " return total" + assert lines[5] == " return 1" + + +@pytest.mark.parametrize( + "hint", + ["@A{{def describe}}", "@B{{def describe}}", "@A", "@B"], +) +def test_execute_rejects_bare_at_hints(coder_with_file, hint): + """Bare @A/@B hints must be rejected instead of resolving to the hit line.""" + coder, file_path = coder_with_file + file_path.write_text("def describe(self):\n return 1\n") + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "replace", + "start_line": hint, + "end_line": hint, + "text": "REPLACED", + } + ], + ).to_dict() + + assert result["errors"] + assert "Bare '@" in result["errors"][0] + assert file_path.read_text() == "def describe(self):\n return 1\n" + + +@pytest.mark.parametrize("hint", ["@C1", "@P1", "@N1", "some text @C1"]) +def test_execute_rejects_readfile_only_markers(coder_with_file, hint): + """@C/@P/@N markers must fail with an EditFile-specific message.""" + coder, file_path = coder_with_file + original_content = file_path.read_text() + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "replace", + "start_line": hint, + "end_line": hint, + "text": "REPLACED", + } + ], + ).to_dict() + + assert result["errors"] + assert "ReadFile-only" in result["errors"][0] + assert "not supported by EditFile" in result["errors"][0] + assert file_path.read_text() == original_content + + +def test_execute_prepends_with_at_000_markers(coder_with_file): + """Using @000 for both boundaries inserts at the top of the file.""" + coder, file_path = coder_with_file + original = file_path.read_text() + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "replace", + "start_line": "@000", + "end_line": "@000", + "text": "header", + } + ], + ).to_dict() + + assert result["errors"] == [] + assert file_path.read_text() == "header\n" + original + + +def test_execute_allows_at_l0_prepend(coder_with_file): + """@L0 is treated as the top-of-file marker.""" + coder, file_path = coder_with_file + original = file_path.read_text() + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "replace", + "start_line": "@L0", + "end_line": "@L0", + "text": "header", + } + ], + ).to_dict() + + assert result["errors"] == [] + assert file_path.read_text() == "header\n" + original + + +def test_execute_preserves_crlf_line_endings(coder_with_file): + """Editing a CRLF file must keep CRLF line endings.""" + coder, file_path = coder_with_file + file_path.write_bytes(b"first\r\nsecond\r\n") + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "replace", + "start_line": "second", + "end_line": "second", + "text": "SECOND", + } + ], + ).to_dict() + + assert result["errors"] == [] + assert file_path.read_bytes() == b"first\r\nSECOND\r\n" + + +def test_execute_invalidates_cached_read_ranges(coder_with_file): + """A successful edit must clear ReadFile's cached ranges for the file.""" + import uuid + + from cecli.helpers.conversation import ConversationService + + coder, file_path = coder_with_file + coder.uuid = str(uuid.uuid4()) + abs_path = str(file_path.resolve()) + files = ConversationService.get_files(coder) + files._numbered_contexts[abs_path] = [(1, 1)] + files._last_merged_ranges[abs_path] = [(1, 1)] + files._emitted_contexts[abs_path] = [(1, 1)] + files._file_context_versions[abs_path] = 1 + + try: + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "replace", + "start_line": "@L2", + "end_line": "@L2", + "text": " print('edited')", + } + ], + ).to_dict() + + assert result["errors"] == [] + assert abs_path not in files._numbered_contexts + assert abs_path not in files._last_merged_ranges + assert abs_path not in files._emitted_contexts + assert abs_path not in files._file_context_versions + finally: + ConversationService.destroy_instances(coder.uuid) + + +def test_format_output_colors_inserted_text_green(coder_with_file): + """Inserted text is additive, so preview it green like added diff lines.""" + coder, _ = coder_with_file + coder.agent_config["diff_colors"] = True + edits = [ + { + "file_path": "example.txt", + "operation": "insert", + "text": " print('inserted')", + "start_line": "@L1", + "position": "after", + } + ] + + output = preview_output(coder, edits) + + assert "\033[32m+ print('inserted')\x1b[0m" in output + + +def test_format_output_leaves_inserted_text_plain_without_diff_colors(coder_with_file): + """Inserted text stays uncolored when diff colors are disabled.""" + coder, _ = coder_with_file + coder.agent_config["diff_colors"] = False + edits = [ + { + "file_path": "example.txt", + "operation": "insert", + "text": " print('inserted')", + "start_line": "@L1", + "position": "after", + } + ] + + output = preview_output(coder, edits) + + assert "+ print('inserted')" in output + assert "\033[32m" not in output diff --git a/tests/tools/test_get_lines.py b/tests/tools/test_get_lines.py index 286e04e2556..dd3866f8ee7 100644 --- a/tests/tools/test_get_lines.py +++ b/tests/tools/test_get_lines.py @@ -182,3 +182,29 @@ def test_empty_file_includes_edit_hint(tmp_path): assert "EditFile" in str(result) assert "readfile again" in str(result).lower() coder.io.tool_error.assert_not_called() + + +def test_read_after_edit_resends_changed_range(coder_with_file): + """ReadFile must not claim cached context is current after the file is edited.""" + from cecli.helpers.conversation import ConversationService + + coder, file_path = coder_with_file + params = [ + { + "file_path": "example.txt", + "range_start": "alpha", + "range_end": "gamma", + "padding": 0, + } + ] + + first = str(read_file.Tool.execute(coder, read=params)) + assert "Retrieved context" in first + + file_path.write_text("alpha\nBETA\ngamma\n") + ConversationService.get_chunks(coder).notify_file_edited(str(file_path)) + + second = str(read_file.Tool.execute(coder, read=params)) + + assert "still valid from previous read" not in second + assert "BETA" in second diff --git a/tests/tools/test_grep.py b/tests/tools/test_grep.py index db5da5e3506..43db59f5b29 100644 --- a/tests/tools/test_grep.py +++ b/tests/tools/test_grep.py @@ -113,7 +113,7 @@ def test_powershell_dash_prefixed_pattern_is_searched_literally(search_term, tmp assert op["_"]["error"] is None assert op["_"]["total_files"] >= 1 assert op["_"]["total_matches"] >= 1 - assert any("example.txt" in f["file"] for f in op["_"]["files"]) + assert "example.txt" in _files_from_content(op) coder.io.tool_error.assert_not_called() @@ -157,8 +157,7 @@ def test_powershell_counts_and_context(tmp_path, monkeypatch): op = response_dict["result"][0] assert op["_"]["error"] is None assert op["_"]["total_matches"] >= 3 - file_entry = next(f for f in op["_"]["files"] if f["file"] == "sample.txt") - assert file_entry["match_count"] >= 3 + assert "sample.txt" in _files_from_content(op) coder.io.tool_error.assert_not_called() @@ -172,6 +171,16 @@ def _grep_coder(root): ) +def _files_from_content(op): + """Return the file paths listed in a rendered grep response.""" + files = set() + for line in op["content"].splitlines(): + path, sep, rest = line.rpartition(": ") + if sep and rest.split(" ", 1)[0].isdigit(): + files.add(path) + return files + + @pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") @pytest.mark.parametrize( ("options", "expected_matches"), @@ -217,7 +226,7 @@ def test_matches_mode_is_compact_and_relative(tmp_path, monkeypatch): assert op["_"]["mode"] == "matches" assert "file_glob" not in op["_"] # echoed query params are dropped - assert all("content" not in entry for entry in op["_"]["files"]) + assert "files" not in op["_"] coder.io.tool_error.assert_not_called() @@ -242,7 +251,7 @@ def test_files_mode_skips_content_pass(tmp_path, monkeypatch): @pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") -def test_invalid_mode_falls_back_to_matches(tmp_path, monkeypatch): +def test_invalid_mode_is_rejected(tmp_path, monkeypatch): sample = tmp_path / "sample.txt" sample.write_text("alpha\nbeta\n") coder = _grep_coder(tmp_path) @@ -253,8 +262,9 @@ def test_invalid_mode_falls_back_to_matches(tmp_path, monkeypatch): searches=[{"pattern": "alpha", "file_glob": "*.txt", "directory": ".", "mode": "bogus"}], ) op = result.to_dict()["result"][0] - assert op["_"]["mode"] == "matches" - assert "1: alpha" in op["content"] + assert op["_"]["mode"] == "bogus" + assert "Invalid mode 'bogus'" in op["_"]["error"] + assert "No matches found" not in op["content"] coder.io.tool_error.assert_not_called() @@ -299,9 +309,285 @@ def test_history_files_are_excluded(tmp_path, monkeypatch): coder, searches=[{"pattern": "needle", "directory": ".", "mode": "files"}] ) op = result.to_dict()["result"][0] - files = [entry["file"] for entry in op["_"]["files"]] + files = _files_from_content(op) assert "keep.txt" in files assert all("chat-history" not in name for name in files) assert all("history.md" not in name for name in files) coder.io.tool_error.assert_not_called() + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_regex_syntax_is_auto_detected(tmp_path, monkeypatch): + sample = tmp_path / "sample.py" + sample.write_text("def foo(x):\n return x\n") + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute(coder, searches=[{"pattern": "^def ", "directory": "."}]) + op = result.to_dict()["result"][0] + + assert op["_"]["regex"] is True + assert op["_"]["total_matches"] == 1 + assert "def foo(x)" in op["content"] + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_literal_miss_retries_as_regex(tmp_path, monkeypatch): + sample = tmp_path / "sample.txt" + sample.write_text("alpha\nbeta\n") + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute(coder, searches=[{"pattern": "(alpha)", "directory": "."}]) + op = result.to_dict()["result"][0] + + assert op["_"]["regex"] is True + assert op["_"]["total_matches"] == 1 + assert "1: alpha" in op["content"] + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_empty_alternation_stays_literal(tmp_path, monkeypatch): + sample = tmp_path / "sample.txt" + sample.write_text("alpha\nbeta\nfoo||bar\n") + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute(coder, searches=[{"pattern": "foo||bar", "directory": "."}]) + op = result.to_dict()["result"][0] + + assert op["_"]["regex"] is False + assert op["_"]["total_matches"] == 1 + assert "3: foo||bar" in op["content"] + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_invalid_regex_retries_literal(tmp_path, monkeypatch): + sample = tmp_path / "sample.txt" + sample.write_text("foo(\nbar\n") + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute( + coder, searches=[{"pattern": "foo(", "directory": ".", "use_regex": True}] + ) + op = result.to_dict()["result"][0] + + assert op["_"]["error"] is None + assert op["_"]["regex"] is False + assert op["_"]["total_matches"] == 1 + assert op["_"]["warnings"] + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_lookahead_retries_with_pcre2(tmp_path, monkeypatch): + sample = tmp_path / "sample.txt" + sample.write_text("foo123\nfoo\n") + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute( + coder, + searches=[{"pattern": "foo(?=123)", "directory": ".", "use_regex": True}], + ) + op = result.to_dict()["result"][0] + + assert op["_"]["error"] is None + assert op["_"]["total_matches"] == 1 + assert "1: foo123" in op["content"] + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_backreference_retries_with_pcre2(tmp_path, monkeypatch): + sample = tmp_path / "sample.txt" + sample.write_text("aa\nab\n") + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute( + coder, + searches=[{"pattern": r"(a)\1", "directory": ".", "use_regex": True}], + ) + op = result.to_dict()["result"][0] + + assert op["_"]["error"] is None + assert op["_"]["total_matches"] == 1 + assert "1: aa" in op["content"] + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_paths_with_digit_dash_segments_are_parsed(tmp_path, monkeypatch): + (tmp_path / "proj-1-x" / "src").mkdir(parents=True) + sample = tmp_path / "proj-1-x" / "src" / "main.py" + sample.write_text("alpha\nalpha\n") + root = tmp_path / "proj-1-x" + coder = _grep_coder(root) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute(coder, searches=[{"pattern": "alpha", "directory": "."}]) + op = result.to_dict()["result"][0] + + assert op["_"]["total_matches"] == 2 + assert "src/main.py: 2 match(es)" in op["content"] + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_colon_in_path_is_parsed(tmp_path, monkeypatch): + sample = tmp_path / "a:1:b.txt" + sample.write_text("needle\n") + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute(coder, searches=[{"pattern": "needle", "directory": "."}]) + op = result.to_dict()["result"][0] + + assert op["_"]["total_matches"] == 1 + assert "a:1:b.txt: 1 match(es)" in op["content"] + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_ripgrep_config_does_not_change_output_shape(tmp_path, monkeypatch): + sample = tmp_path / "sample.txt" + sample.write_text("alpha\n") + config = tmp_path / "ripgreprc" + config.write_text("--heading\n--color=always\n") + monkeypatch.setenv("RIPGREP_CONFIG_PATH", str(config)) + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute(coder, searches=[{"pattern": "alpha", "directory": "."}]) + op = result.to_dict()["result"][0] + + assert op["_"]["total_matches"] == 1 + assert "sample.txt: 1 match(es)" in op["content"] + + +@pytest.mark.skipif( + shutil.which("grep") is None or not grep._grep_supports_pcre(shutil.which("grep")), + reason="grep with PCRE support is required", +) +def test_grep_regex_uses_pcre_when_available(tmp_path, monkeypatch): + sample = tmp_path / "sample.txt" + sample.write_text("foo123\nfoo\n") + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("grep", shutil.which("grep"))) + + result = grep.Tool.execute( + coder, + searches=[{"pattern": r"foo\d+", "directory": ".", "use_regex": True}], + ) + op = result.to_dict()["result"][0] + + assert op["_"]["error"] is None + assert op["_"]["total_matches"] == 1 + assert "1: foo123" in op["content"] + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_matches_mode_shows_truncation_marker(tmp_path, monkeypatch): + sample = tmp_path / "sample.txt" + sample.write_text("".join(f"alpha{i}\n" for i in range(15))) + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute(coder, searches=[{"pattern": "alpha", "directory": "."}]) + op = result.to_dict()["result"][0] + + assert "showing 10 of 15 matches" in op["content"] + assert "+5 more locations" in op["content"] + assert "more locations: 11, 12, 13, 14, 15" in op["content"] + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_count_false_warns_about_capped_totals(tmp_path, monkeypatch): + sample = tmp_path / "sample.txt" + sample.write_text("".join("alpha\n" for _ in range(55))) + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute( + coder, searches=[{"pattern": "alpha", "directory": ".", "count": False}] + ) + op = result.to_dict()["result"][0] + + assert op["_"]["total_matches"] == grep.MAX_LINE_NUMBERS + assert "count capped at 50" in op["content"] + assert any("count=false" in warning for warning in op["_"]["warnings"]) + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_context_is_clamped_with_warning(tmp_path, monkeypatch): + sample = tmp_path / "sample.txt" + sample.write_text("alpha\nbeta\ngamma\n") + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute( + coder, searches=[{"pattern": "beta", "directory": ".", "context_before": 9}] + ) + op = result.to_dict()["result"][0] + + assert any("clamped from 9 to 5" in warning for warning in op["_"]["warnings"]) + assert "clamped from 9 to 5" in op["content"] + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_comma_separated_globs_are_supported(tmp_path, monkeypatch): + (tmp_path / "a.py").write_text("needle\n") + (tmp_path / "b.md").write_text("needle\n") + (tmp_path / "c.txt").write_text("needle\n") + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute( + coder, + searches=[{"pattern": "needle", "directory": ".", "file_glob": "*.py,*.md"}], + ) + op = result.to_dict()["result"][0] + + assert op["_"]["total_matches"] == 2 + assert _files_from_content(op) == {"a.py", "b.md"} + + +@pytest.mark.skipif(shutil.which("rg") is None, reason="rg is required") +def test_zero_match_glob_gets_warning(tmp_path, monkeypatch): + (tmp_path / "sample.py").write_text("needle\n") + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("rg", shutil.which("rg"))) + + result = grep.Tool.execute( + coder, + searches=[{"pattern": "needle", "directory": ".", "file_glob": "*.nope"}], + ) + op = result.to_dict()["result"][0] + + assert op["_"]["total_matches"] == 0 + assert any("file_glob='*.nope'" in warning for warning in op["_"]["warnings"]) + + +def test_empty_pattern_body_uses_label(tmp_path): + coder = _grep_coder(tmp_path) + result = grep.Tool.execute(coder, searches=[{"pattern": "", "directory": "."}]) + op = result.to_dict()["result"][0] + + assert op["content"].startswith("[]") + assert op["_"]["error"] + + +@pytest.mark.skipif(shutil.which("grep") is None, reason="grep is required") +def test_grep_comma_separated_globs_are_supported(tmp_path, monkeypatch): + (tmp_path / "a.py").write_text("needle\n") + (tmp_path / "b.md").write_text("needle\n") + (tmp_path / "c.txt").write_text("needle\n") + coder = _grep_coder(tmp_path) + monkeypatch.setattr(grep.Tool, "_find_search_tool", lambda: ("grep", shutil.which("grep"))) + + result = grep.Tool.execute( + coder, + searches=[{"pattern": "needle", "directory": ".", "file_glob": "*.py,*.md"}], + ) + op = result.to_dict()["result"][0] + + assert op["_"]["total_matches"] == 2 + assert _files_from_content(op) == {"a.py", "b.md"} diff --git a/tests/tools/test_insert_block.py b/tests/tools/test_insert_block.py index 5c8a692e0ca..6b66401a31d 100644 --- a/tests/tools/test_insert_block.py +++ b/tests/tools/test_insert_block.py @@ -259,3 +259,105 @@ def test_line_number_beyond_file_length_appends_no_trailing_newline(coder_with_f # Insert respects the original trailing newline: no trailing newline in the result assert content == "first line\nsecond line\nappended line" coder.io.tool_error.assert_not_called() + + +def test_insert_before_target(coder_with_file): + coder, file_path = coder_with_file + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "insert", + "text": "before line", + "start_line": "second line", + "position": "before", + } + ], + ) + + assert "Applied" in result.to_dict()["result"][0]["content"] + assert file_path.read_text() == "first line\nbefore line\nsecond line\n" + + +def test_insert_after_target_explicit(coder_with_file): + coder, file_path = coder_with_file + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "insert", + "text": "after line", + "start_line": "second line", + "position": "after", + } + ], + ) + + assert "Applied" in result.to_dict()["result"][0]["content"] + assert file_path.read_text() == "first line\nsecond line\nafter line\n" + + +def test_insert_invalid_position_fails(coder_with_file): + coder, file_path = coder_with_file + original = file_path.read_text() + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "insert", + "text": "bad", + "start_line": "second line", + "position": "middle", + } + ], + ).to_dict() + + assert result["errors"] + assert "position" in result["errors"][0] + assert file_path.read_text() == original + + +def test_insert_before_top_marker_prepends(coder_with_file): + coder, file_path = coder_with_file + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "insert", + "text": "header", + "start_line": "@000", + "position": "before", + } + ], + ) + + assert "Applied" in result.to_dict()["result"][0]["content"] + assert file_path.read_text() == "header\nfirst line\nsecond line\n" + + +def test_insert_after_eof_marker_appends(coder_with_file): + coder, file_path = coder_with_file + + result = edit_file.Tool.execute( + coder, + edits=[ + { + "file_path": "example.txt", + "operation": "insert", + "text": "footer", + "start_line": "000@", + "position": "after", + } + ], + ) + + assert "Applied" in result.to_dict()["result"][0]["content"] + assert file_path.read_text() == "first line\nsecond line\nfooter\n" diff --git a/tests/tools/test_shell_timeout_paging.py b/tests/tools/test_shell_timeout_paging.py index 2abf4e42204..dacc4b5707c 100644 --- a/tests/tools/test_shell_timeout_paging.py +++ b/tests/tools/test_shell_timeout_paging.py @@ -56,8 +56,10 @@ def make_buffer(page_size=4096, pages_dir=None): monkeypatch.setattr(manager, "_generate_command_key", Mock(return_value=target)) start = Mock(return_value=target) stop = Mock() + mark = Mock(return_value=True) monkeypatch.setattr(manager, "start_background_command", start) monkeypatch.setattr(manager, "stop_background_command", stop) + monkeypatch.setattr(manager, "mark_continued_in_background", mark) pending_tasks = [] async def pending_wait(*args, **kwargs): @@ -85,6 +87,7 @@ async def execute(output, threshold=8, enabled=True): assert not coder.interrupt_event.is_set() popen.assert_called_once() start.assert_called_once() + mark.assert_called_once_with(target) assert start.call_args.kwargs["existing_process"] is process assert start.call_args.kwargs["existing_buffer"] is state["buffer"] assert start.call_args.kwargs["persist"] is True diff --git a/tests/tui/test_background_commands_panel.py b/tests/tui/test_background_commands_panel.py index 20a080d6d75..74c925f26bb 100644 --- a/tests/tui/test_background_commands_panel.py +++ b/tests/tui/test_background_commands_panel.py @@ -32,9 +32,18 @@ "total_chars": 10, }, "bg_3_4444": { + "command": "timeout-tool", + "running": True, + "persist": True, + "continued_in_background": True, + "buffer_size": 10, + "total_chars": 10, + }, + "bg_4_5555": { "command": "foreground-tool", "running": True, "persist": True, + "continued_in_background": False, "buffer_size": 10, "total_chars": 10, }, @@ -43,6 +52,7 @@ OUTPUTS = { "bg_0_1111": "ready in 231 ms\nlistening on 5173", "bg_1_2222": "14 passed\n2 skipped", + "bg_3_4444": "still compiling", } @@ -93,7 +103,7 @@ async def _run_panel_checks(): panel.refresh_data() await pilot.pause() - assert _tab_ids(panel) == ["bg_0_1111", "bg_1_2222"] + assert _tab_ids(panel) == ["bg_0_1111", "bg_1_2222", "bg_3_4444"] tabs = panel.query_one("#bg-command-tabs", Tabs) log = panel.query_one("#bg-command-output", RichLog) @@ -103,7 +113,7 @@ async def _run_panel_checks(): command_line = panel.query_one("#bg-command-line", Static) assert "npm run dev" in str(command_line.render()) - assert panel.border_title == "background commands (2)" + assert panel.border_title == "background commands (3)" assert panel._active_key == "bg_0_1111" assert "listening on 5173" in _log_text(panel) @@ -126,6 +136,14 @@ async def _run_panel_checks(): await pilot.pause() assert "listening on 5173" in _log_text(panel) + tabs.active = "bg_3_4444" + await pilot.pause() + + assert panel._active_key == "bg_3_4444" + assert "timeout-tool" in str(command_line.render()) + assert "timed out, still running" in str(command_line.render()) + assert "still compiling" in _log_text(panel) + def test_background_commands_panel_tabs_output_and_follow(): asyncio.run(_run_panel_checks()) @@ -299,3 +317,43 @@ def test_open_command_without_tui(): asyncio.run(OpenCommand.execute(io, coder, "commands")) assert messages == ["/open commands is only available in the TUI."] + + +def test_background_commands_panel_adds_tabs_incrementally(): + """A command appearing after the initial render must not duplicate tab IDs.""" + app = _PanelApp() + commands = {"bg_0_1111": COMMANDS["bg_0_1111"]} + + with ( + patch.object( + BackgroundCommandManager, + "list_background_commands", + side_effect=lambda: dict(commands), + ), + patch.object( + BackgroundCommandManager, + "get_command_output", + side_effect=lambda key: OUTPUTS.get(key, ""), + ), + patch.object( + BackgroundCommandManager, + "get_new_command_output", + side_effect=AssertionError("panel must not consume agent output"), + ), + ): + + async def run(): + async with app.run_test(size=(120, 40)) as pilot: + panel = app.query_one("#background-commands-panel", BackgroundCommandsPanel) + panel.refresh_data() + await pilot.pause() + + assert _tab_ids(panel) == ["bg_0_1111"] + + commands["bg_3_4444"] = COMMANDS["bg_3_4444"] + panel.refresh_data() + await pilot.pause() + + assert _tab_ids(panel) == ["bg_0_1111", "bg_3_4444"] + + asyncio.run(run()) diff --git a/tests/tui/test_selectable_log.py b/tests/tui/test_selectable_log.py index 12a1c9284ae..cefb2d00ffa 100644 --- a/tests/tui/test_selectable_log.py +++ b/tests/tui/test_selectable_log.py @@ -359,6 +359,7 @@ async def test_reflow_pins_to_end_when_width_and_height_shrink_together(): for i in range(40): log.write(f"{i:02d}-line") await pilot.pause() + await pilot.pause() assert log.is_vertical_scroll_end log.styles.width = 20