5434 lines
143 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="author" content="mauwii">
<link rel="canonical" href="https://invoke-ai.github.io/InvokeAI/nodes/INVOCATION_API/">
<link rel="prev" href="../NODES_MIGRATION_V3_V4/">
<link rel="next" href="../communityNodes/">
<link rel="icon" href="../../img/favicon.ico">
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.33">
<title>Invocation API - InvokeAI Documentation</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.3cba04c6.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../assets/_mkdocstrings.css">
<link rel="stylesheet" href="../../stylesheets/extra.css">
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function n(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],n("js",new Date),n("config","G-2X4JR4S4FB"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){this.value&&n("event","search",{search_term:this.value})}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");n("event","feedback",{page:t,data:e}),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){n("config","G-2X4JR4S4FB",{page_path:e.pathname})})});var e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=G-2X4JR4S4FB",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script>
<script>"undefined"!=typeof __md_analytics&&__md_analytics()</script>
</head>
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#invocation-api" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="InvokeAI Documentation" class="md-header__button md-logo" aria-label="InvokeAI Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
InvokeAI Documentation
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Invocation API
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/invoke-ai/InvokeAI" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</div>
<div class="md-source__repository">
invoke-ai/InvokeAI
</div>
</a>
</div>
</nav>
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../.." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="../../installation/INSTALLATION/" class="md-tabs__link">
Installation
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../overview/" class="md-tabs__link">
Workflows & Nodes
</a>
</li>
<li class="md-tabs__item">
<a href="../communityNodes/" class="md-tabs__link">
Community Nodes
</a>
</li>
<li class="md-tabs__item">
<a href="../../features/" class="md-tabs__link">
Features
</a>
</li>
<li class="md-tabs__item">
<a href="../../contributing/CONTRIBUTING/" class="md-tabs__link">
Contributing
</a>
</li>
<li class="md-tabs__item">
<a href="../../help/gettingStartedWithAI/" class="md-tabs__link">
Help
</a>
</li>
<li class="md-tabs__item">
<a href="../../other/CONTRIBUTORS/" class="md-tabs__link">
Other
</a>
</li>
</ul>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="InvokeAI Documentation" class="md-nav__button md-logo" aria-label="InvokeAI Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
InvokeAI Documentation
</label>
<div class="md-nav__source">
<a href="https://github.com/invoke-ai/InvokeAI" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</div>
<div class="md-source__repository">
invoke-ai/InvokeAI
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
Installation
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Installation
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../installation/INSTALLATION/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../installation/INSTALL_REQUIREMENTS/" class="md-nav__link">
<span class="md-ellipsis">
Requirements
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../installation/010_INSTALL_AUTOMATED/" class="md-nav__link">
<span class="md-ellipsis">
Automatic Install
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../installation/020_INSTALL_MANUAL/" class="md-nav__link">
<span class="md-ellipsis">
Manual Install
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../installation/INSTALL_DEVELOPMENT/" class="md-nav__link">
<span class="md-ellipsis">
Developer Install
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../installation/040_INSTALL_DOCKER/" class="md-nav__link">
<span class="md-ellipsis">
Docker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../installation/050_INSTALLING_MODELS/" class="md-nav__link">
<span class="md-ellipsis">
Installing Models
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../installation/060_INSTALL_PATCHMATCH/" class="md-nav__link">
<span class="md-ellipsis">
Installing PyPatchMatch
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
<span class="md-ellipsis">
Workflows & Nodes
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Workflows & Nodes
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../overview/" class="md-nav__link">
<span class="md-ellipsis">
Nodes Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../NODES/" class="md-nav__link">
<span class="md-ellipsis">
Workflow Editor Basics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../defaultNodes/" class="md-nav__link">
<span class="md-ellipsis">
List of Default Nodes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../exampleWorkflows/" class="md-nav__link">
<span class="md-ellipsis">
Example Workflows
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../comfyToInvoke/" class="md-nav__link">
<span class="md-ellipsis">
ComfyUI to InvokeAI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../detailedNodes/faceTools/" class="md-nav__link">
<span class="md-ellipsis">
Facetool Node
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../contributingNodes/" class="md-nav__link">
<span class="md-ellipsis">
Contributing Nodes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../NODES_MIGRATION_V3_V4/" class="md-nav__link">
<span class="md-ellipsis">
Migrating from v3 to v4
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Invocation API
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Invocation API
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#invocation-mixins" class="md-nav__link">
<span class="md-ellipsis">
Invocation Mixins
</span>
</a>
<nav class="md-nav" aria-label="Invocation Mixins">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#withmetadata" class="md-nav__link">
<span class="md-ellipsis">
WithMetadata
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#withboard" class="md-nav__link">
<span class="md-ellipsis">
WithBoard
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.InvocationContext" class="md-nav__link">
<span class="md-ellipsis">
InvocationContext
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ImagesInterface" class="md-nav__link">
<span class="md-ellipsis">
ImagesInterface
</span>
</a>
<nav class="md-nav" aria-label="ImagesInterface">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ImagesInterface.get_dto" class="md-nav__link">
<span class="md-ellipsis">
get_dto
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ImagesInterface.get_metadata" class="md-nav__link">
<span class="md-ellipsis">
get_metadata
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ImagesInterface.get_path" class="md-nav__link">
<span class="md-ellipsis">
get_path
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ImagesInterface.get_pil" class="md-nav__link">
<span class="md-ellipsis">
get_pil
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ImagesInterface.save" class="md-nav__link">
<span class="md-ellipsis">
save
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.TensorsInterface" class="md-nav__link">
<span class="md-ellipsis">
TensorsInterface
</span>
</a>
<nav class="md-nav" aria-label="TensorsInterface">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.TensorsInterface.load" class="md-nav__link">
<span class="md-ellipsis">
load
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.TensorsInterface.save" class="md-nav__link">
<span class="md-ellipsis">
save
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ConditioningInterface" class="md-nav__link">
<span class="md-ellipsis">
ConditioningInterface
</span>
</a>
<nav class="md-nav" aria-label="ConditioningInterface">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ConditioningInterface.load" class="md-nav__link">
<span class="md-ellipsis">
load
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ConditioningInterface.save" class="md-nav__link">
<span class="md-ellipsis">
save
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface" class="md-nav__link">
<span class="md-ellipsis">
ModelsInterface
</span>
</a>
<nav class="md-nav" aria-label="ModelsInterface">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.download_and_cache_model" class="md-nav__link">
<span class="md-ellipsis">
download_and_cache_model
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.exists" class="md-nav__link">
<span class="md-ellipsis">
exists
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.get_config" class="md-nav__link">
<span class="md-ellipsis">
get_config
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.load" class="md-nav__link">
<span class="md-ellipsis">
load
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.load_by_attrs" class="md-nav__link">
<span class="md-ellipsis">
load_by_attrs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.load_local_model" class="md-nav__link">
<span class="md-ellipsis">
load_local_model
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.load_remote_model" class="md-nav__link">
<span class="md-ellipsis">
load_remote_model
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.search_by_attrs" class="md-nav__link">
<span class="md-ellipsis">
search_by_attrs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.search_by_path" class="md-nav__link">
<span class="md-ellipsis">
search_by_path
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.LoggerInterface" class="md-nav__link">
<span class="md-ellipsis">
LoggerInterface
</span>
</a>
<nav class="md-nav" aria-label="LoggerInterface">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.LoggerInterface.debug" class="md-nav__link">
<span class="md-ellipsis">
debug
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.LoggerInterface.error" class="md-nav__link">
<span class="md-ellipsis">
error
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.LoggerInterface.info" class="md-nav__link">
<span class="md-ellipsis">
info
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.LoggerInterface.warning" class="md-nav__link">
<span class="md-ellipsis">
warning
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ConfigInterface" class="md-nav__link">
<span class="md-ellipsis">
ConfigInterface
</span>
</a>
<nav class="md-nav" aria-label="ConfigInterface">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.ConfigInterface.get" class="md-nav__link">
<span class="md-ellipsis">
get
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.UtilInterface" class="md-nav__link">
<span class="md-ellipsis">
UtilInterface
</span>
</a>
<nav class="md-nav" aria-label="UtilInterface">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.UtilInterface.is_canceled" class="md-nav__link">
<span class="md-ellipsis">
is_canceled
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.UtilInterface.sd_step_callback" class="md-nav__link">
<span class="md-ellipsis">
sd_step_callback
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.BoardsInterface" class="md-nav__link">
<span class="md-ellipsis">
BoardsInterface
</span>
</a>
<nav class="md-nav" aria-label="BoardsInterface">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.BoardsInterface.add_image_to_board" class="md-nav__link">
<span class="md-ellipsis">
add_image_to_board
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.BoardsInterface.create" class="md-nav__link">
<span class="md-ellipsis">
create
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.BoardsInterface.get_all" class="md-nav__link">
<span class="md-ellipsis">
get_all
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.BoardsInterface.get_all_image_names_for_board" class="md-nav__link">
<span class="md-ellipsis">
get_all_image_names_for_board
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#invokeai.app.services.shared.invocation_context.BoardsInterface.get_dto" class="md-nav__link">
<span class="md-ellipsis">
get_dto
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../communityNodes/" class="md-nav__link">
<span class="md-ellipsis">
Community Nodes
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
<div class="md-nav__link md-nav__container">
<a href="../../features/" class="md-nav__link ">
<span class="md-ellipsis">
Features
</span>
</a>
<label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Features
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../help/gettingStartedWithAI/" class="md-nav__link">
<span class="md-ellipsis">
New to InvokeAI?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/CONFIGURATION/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/DATABASE/" class="md-nav__link">
<span class="md-ellipsis">
Database
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/CONTROLNET/" class="md-nav__link">
<span class="md-ellipsis">
Control Adapters
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/IMG2IMG/" class="md-nav__link">
<span class="md-ellipsis">
Image-to-Image
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/LOGGING/" class="md-nav__link">
<span class="md-ellipsis">
Controlling Logging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/LORAS/" class="md-nav__link">
<span class="md-ellipsis">
LoRAs & LCM-LoRAs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/MODEL_MERGING/" class="md-nav__link">
<span class="md-ellipsis">
Model Merging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../overview" class="md-nav__link">
<span class="md-ellipsis">
Workflows & Nodes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/WATERMARK%2BNSFW/" class="md-nav__link">
<span class="md-ellipsis">
NSFW Checker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/POSTPROCESS/" class="md-nav__link">
<span class="md-ellipsis">
Postprocessing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/PROMPTS/" class="md-nav__link">
<span class="md-ellipsis">
Prompting Features
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_14" >
<label class="md-nav__link" for="__nav_5_14" id="__nav_5_14_label" tabindex="0">
<span class="md-ellipsis">
Textual Inversions
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_14_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5_14">
<span class="md-nav__icon md-icon"></span>
Textual Inversions
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../features/TEXTUAL_INVERSIONS/" class="md-nav__link">
<span class="md-ellipsis">
Textual Inversions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/TRAINING/" class="md-nav__link">
<span class="md-ellipsis">
Textual Inversion Training
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../features/UNIFIED_CANVAS/" class="md-nav__link">
<span class="md-ellipsis">
Unified Canvas
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/WEB/" class="md-nav__link">
<span class="md-ellipsis">
InvokeAI Web Server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/WEBUIHOTKEYS/" class="md-nav__link">
<span class="md-ellipsis">
WebUI Hotkeys
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/UTILITIES/" class="md-nav__link">
<span class="md-ellipsis">
Maintenance Utilities
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/OTHER/" class="md-nav__link">
<span class="md-ellipsis">
Other
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
Contributing
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Contributing
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../contributing/CONTRIBUTING/" class="md-nav__link">
<span class="md-ellipsis">
How to Contribute
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../CODE_OF_CONDUCT/" class="md-nav__link">
<span class="md-ellipsis">
InvokeAI Code of Conduct
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_3" >
<label class="md-nav__link" for="__nav_6_3" id="__nav_6_3_label" tabindex="0">
<span class="md-ellipsis">
Development
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6_3">
<span class="md-nav__icon md-icon"></span>
Development
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../contributing/contribution_guides/development/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/contribution_guides/newContributorChecklist/" class="md-nav__link">
<span class="md-ellipsis">
New Contributors
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/MODEL_MANAGER/" class="md-nav__link">
<span class="md-ellipsis">
Model Manager v2
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/contribution_guides/contributingToFrontend.md" class="md-nav__link">
<span class="md-ellipsis">
Frontend Documentation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/LOCAL_DEVELOPMENT/" class="md-nav__link">
<span class="md-ellipsis">
Local Development
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/TESTS/" class="md-nav__link">
<span class="md-ellipsis">
Testing
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_3_7" >
<label class="md-nav__link" for="__nav_6_3_7" id="__nav_6_3_7_label" tabindex="0">
<span class="md-ellipsis">
Frontend
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_6_3_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6_3_7">
<span class="md-nav__icon md-icon"></span>
Frontend
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../contributing/frontend/OVERVIEW/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/frontend/STATE_MGMT/" class="md-nav__link">
<span class="md-ellipsis">
State Management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/frontend/WORKFLOWS/" class="md-nav__link">
<span class="md-ellipsis">
Workflows
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../contributing/contribution_guides/documentation/" class="md-nav__link">
<span class="md-ellipsis">
Documentation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/INVOCATIONS/" class="md-nav__link">
<span class="md-ellipsis">
Nodes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/MODEL_MANAGER/" class="md-nav__link">
<span class="md-ellipsis">
Model Manager v2
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/DOWNLOAD_QUEUE/" class="md-nav__link">
<span class="md-ellipsis">
Download Queue
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/contribution_guides/translation/" class="md-nav__link">
<span class="md-ellipsis">
Translation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/contribution_guides/tutorials/" class="md-nav__link">
<span class="md-ellipsis">
Tutorials
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
Help
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Help
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../help/gettingStartedWithAI/" class="md-nav__link">
<span class="md-ellipsis">
New to InvokeAI?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../help/FAQ/" class="md-nav__link">
<span class="md-ellipsis">
FAQ
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../help/diffusion/" class="md-nav__link">
<span class="md-ellipsis">
Diffusion Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../help/SAMPLER_CONVERGENCE/" class="md-nav__link">
<span class="md-ellipsis">
Sampler Convergence
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
<span class="md-ellipsis">
Other
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Other
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../other/CONTRIBUTORS/" class="md-nav__link">
<span class="md-ellipsis">
Contributors
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../other/README-CompViz/" class="md-nav__link">
<span class="md-ellipsis">
CompViz-README
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="invocation-api">Invocation API<a class="headerlink" href="#invocation-api" title="Permanent link">#</a></h1>
<p>Each invocation's <code>invoke</code> method is provided a single arg - the Invocation
Context.</p>
<p>This object provides access to various methods, used to interact with the
application. Loading and saving images, logging messages, etc.</p>
<div class="admonition warning">
<p>This API may shift slightly until the release of v4.0.0 as we work through a few final updates to the Model Manager.</p>
</div>
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="k">class</span> <span class="nc">MyInvocation</span><span class="p">(</span><span class="n">BaseInvocation</span><span class="p">):</span>
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="o">...</span>
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="k">def</span> <span class="nf">invoke</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">:</span> <span class="n">InvocationContext</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">ImageOutput</span><span class="p">:</span>
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">image_pil</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">images</span><span class="o">.</span><span class="n">get_pil</span><span class="p">(</span><span class="n">image_name</span><span class="p">)</span>
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="c1"># Do something to the image</span>
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">image_dto</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">images</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">image_pil</span><span class="p">)</span>
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="c1"># Log a message</span>
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">context</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Did something cool, image saved!&quot;</span><span class="p">)</span>
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> <span class="o">...</span>
</code></pre></div>
<p>The full API is documented below.</p>
<h2 id="invocation-mixins">Invocation Mixins<a class="headerlink" href="#invocation-mixins" title="Permanent link">#</a></h2>
<p>Two important mixins are provided to facilitate working with metadata and gallery boards.</p>
<h3 id="withmetadata"><code>WithMetadata</code><a class="headerlink" href="#withmetadata" title="Permanent link">#</a></h3>
<p>Inherit from this class (in addition to <code>BaseInvocation</code>) to add a <code>metadata</code> input to your node. When you do this, you can access the metadata dict from <code>self.metadata</code> in the <code>invoke()</code> function.</p>
<p>The dict will be populated via the node's input, and you can add any metadata you'd like to it. When you call <code>context.images.save()</code>, if the metadata dict has any data, it be automatically embedded in the image.</p>
<h3 id="withboard"><code>WithBoard</code><a class="headerlink" href="#withboard" title="Permanent link">#</a></h3>
<p>Inherit from this class (in addition to <code>BaseInvocation</code>) to add a <code>board</code> input to your node. This renders as a drop-down to select a board. The user's selection will be accessible from <code>self.board</code> in the <code>invoke()</code> function.</p>
<p>When you call <code>context.images.save()</code>, if a board was selected, the image will added to that board as it is saved.</p>
<!-- prettier-ignore-start -->
<div class="doc doc-object doc-class">
<h2 id="invokeai.app.services.shared.invocation_context.InvocationContext" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">InvocationContext</span>
<a href="#invokeai.app.services.shared.invocation_context.InvocationContext" class="headerlink" title="Permanent link">#</a></h2>
<div class="doc doc-contents first">
<p>Provides access to various services and data for the current invocation.</p>
<p><span class="doc-section-title">Attributes:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code><span title="invokeai.app.services.shared.invocation_context.InvocationContext.images">images</span></code></td>
<td>
<code><a class="autorefs autorefs-internal" title="invokeai.app.services.shared.invocation_context.ImagesInterface" href="#invokeai.app.services.shared.invocation_context.ImagesInterface">ImagesInterface</a></code>
</td>
<td>
<div class="doc-md-description">
<p>Methods to save, get and update images and their metadata.</p>
</div>
</td>
</tr>
<tr class="doc-section-item">
<td><code><span title="invokeai.app.services.shared.invocation_context.InvocationContext.tensors">tensors</span></code></td>
<td>
<code><a class="autorefs autorefs-internal" title="invokeai.app.services.shared.invocation_context.TensorsInterface" href="#invokeai.app.services.shared.invocation_context.TensorsInterface">TensorsInterface</a></code>
</td>
<td>
<div class="doc-md-description">
<p>Methods to save and get tensors, including image, noise, masks, and masked images.</p>
</div>
</td>
</tr>
<tr class="doc-section-item">
<td><code><span title="invokeai.app.services.shared.invocation_context.InvocationContext.conditioning">conditioning</span></code></td>
<td>
<code><a class="autorefs autorefs-internal" title="invokeai.app.services.shared.invocation_context.ConditioningInterface" href="#invokeai.app.services.shared.invocation_context.ConditioningInterface">ConditioningInterface</a></code>
</td>
<td>
<div class="doc-md-description">
<p>Methods to save and get conditioning data.</p>
</div>
</td>
</tr>
<tr class="doc-section-item">
<td><code><span title="invokeai.app.services.shared.invocation_context.InvocationContext.models">models</span></code></td>
<td>
<code><a class="autorefs autorefs-internal" title="invokeai.app.services.shared.invocation_context.ModelsInterface" href="#invokeai.app.services.shared.invocation_context.ModelsInterface">ModelsInterface</a></code>
</td>
<td>
<div class="doc-md-description">
<p>Methods to check if a model exists, get a model, and get a model's info.</p>
</div>
</td>
</tr>
<tr class="doc-section-item">
<td><code><span title="invokeai.app.services.shared.invocation_context.InvocationContext.logger">logger</span></code></td>
<td>
<code><a class="autorefs autorefs-internal" title="invokeai.app.services.shared.invocation_context.LoggerInterface" href="#invokeai.app.services.shared.invocation_context.LoggerInterface">LoggerInterface</a></code>
</td>
<td>
<div class="doc-md-description">
<p>The app logger.</p>
</div>
</td>
</tr>
<tr class="doc-section-item">
<td><code><span title="invokeai.app.services.shared.invocation_context.InvocationContext.config">config</span></code></td>
<td>
<code><a class="autorefs autorefs-internal" title="invokeai.app.services.shared.invocation_context.ConfigInterface" href="#invokeai.app.services.shared.invocation_context.ConfigInterface">ConfigInterface</a></code>
</td>
<td>
<div class="doc-md-description">
<p>The app config.</p>
</div>
</td>
</tr>
<tr class="doc-section-item">
<td><code><span title="invokeai.app.services.shared.invocation_context.InvocationContext.util">util</span></code></td>
<td>
<code><a class="autorefs autorefs-internal" title="invokeai.app.services.shared.invocation_context.UtilInterface" href="#invokeai.app.services.shared.invocation_context.UtilInterface">UtilInterface</a></code>
</td>
<td>
<div class="doc-md-description">
<p>Utility methods, including a method to check if an invocation was canceled and step callbacks.</p>
</div>
</td>
</tr>
<tr class="doc-section-item">
<td><code><span title="invokeai.app.services.shared.invocation_context.InvocationContext.boards">boards</span></code></td>
<td>
<code><a class="autorefs autorefs-internal" title="invokeai.app.services.shared.invocation_context.BoardsInterface" href="#invokeai.app.services.shared.invocation_context.BoardsInterface">BoardsInterface</a></code>
</td>
<td>
<div class="doc-md-description">
<p>Methods to interact with boards.</p>
</div>
</td>
</tr>
</tbody>
</table>
<div class="doc doc-children">
</div>
</div>
</div>
<div class="doc doc-object doc-class">
<h2 id="invokeai.app.services.shared.invocation_context.ImagesInterface" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">ImagesInterface</span>
<a href="#invokeai.app.services.shared.invocation_context.ImagesInterface" class="headerlink" title="Permanent link">#</a></h2>
<div class="doc doc-contents first">
<div class="doc doc-children">
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ImagesInterface.get_dto" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">get_dto</span>
<a href="#invokeai.app.services.shared.invocation_context.ImagesInterface.get_dto" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">get_dto</span><span class="p">(</span><span class="n">image_name</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="invokeai.app.services.images.images_common.ImageDTO">ImageDTO</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Gets an image as an ImageDTO object.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>image_name</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The name of the image to get.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="invokeai.app.services.images.images_common.ImageDTO">ImageDTO</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The image as an ImageDTO object.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ImagesInterface.get_metadata" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">get_metadata</span>
<a href="#invokeai.app.services.shared.invocation_context.ImagesInterface.get_metadata" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">get_metadata</span><span class="p">(</span><span class="n">image_name</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="invokeai.app.invocations.fields.MetadataField">MetadataField</span></span><span class="p">]</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Gets an image's metadata, if it has any.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>image_name</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The name of the image to get the metadata for.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="typing.Optional">Optional</span>[<span title="invokeai.app.invocations.fields.MetadataField">MetadataField</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>The image's metadata, if it has any.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ImagesInterface.get_path" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">get_path</span>
<a href="#invokeai.app.services.shared.invocation_context.ImagesInterface.get_path" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">get_path</span><span class="p">(</span><span class="n">image_name</span><span class="p">:</span> <span class="n">str</span><span class="p">,</span> <span class="n">thumbnail</span><span class="p">:</span> <span class="n">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="pathlib.Path">Path</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Gets the internal path to an image or thumbnail.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>image_name</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The name of the image to get the path of.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td><code>thumbnail</code></td>
<td>
<code>bool</code>
</td>
<td>
<div class="doc-md-description">
<p>Get the path of the thumbnail instead of the full image</p>
</div>
</td>
<td>
<code>False</code>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="pathlib.Path">Path</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The local path of the image or thumbnail.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ImagesInterface.get_pil" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">get_pil</span>
<a href="#invokeai.app.services.shared.invocation_context.ImagesInterface.get_pil" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">get_pil</span><span class="p">(</span><span class="n">image_name</span><span class="p">:</span> <span class="n">str</span><span class="p">,</span> <span class="n">mode</span><span class="p">:</span> <span class="n"><span title="invokeai.app.invocations.constants.IMAGE_MODES">IMAGE_MODES</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="PIL.Image.Image">Image</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Gets an image as a PIL Image object.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>image_name</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The name of the image to get.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td><code>mode</code></td>
<td>
<code><span title="invokeai.app.invocations.constants.IMAGE_MODES">IMAGE_MODES</span> | None</code>
</td>
<td>
<div class="doc-md-description">
<p>The color mode to convert the image to. If None, the original mode is used.</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="PIL.Image.Image">Image</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The image as a PIL Image object.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ImagesInterface.save" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">save</span>
<a href="#invokeai.app.services.shared.invocation_context.ImagesInterface.save" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">save</span><span class="p">(</span><span class="n">image</span><span class="p">:</span> <span class="n"><span title="PIL.Image.Image">Image</span></span><span class="p">,</span> <span class="n">board_id</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">image_category</span><span class="p">:</span> <span class="n"><span title="invokeai.app.services.image_records.image_records_common.ImageCategory">ImageCategory</span></span> <span class="o">=</span> <span class="n">ImageCategory</span><span class="o">.</span><span class="n">GENERAL</span><span class="p">,</span> <span class="n">metadata</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="invokeai.app.invocations.fields.MetadataField">MetadataField</span></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="invokeai.app.services.images.images_common.ImageDTO">ImageDTO</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Saves an image, returning its DTO.</p>
<p>If the current queue item has a workflow or metadata, it is automatically saved with the image.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>image</code></td>
<td>
<code><span title="PIL.Image.Image">Image</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The image to save, as a PIL image.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td><code>board_id</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[str]</code>
</td>
<td>
<div class="doc-md-description">
<p>The board ID to add the image to, if it should be added. It the invocation inherits from <code>WithBoard</code>, that board will be used automatically. <strong>Use this only if you want to override or provide a board manually!</strong></p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
<tr class="doc-section-item">
<td><code>image_category</code></td>
<td>
<code><span title="invokeai.app.services.image_records.image_records_common.ImageCategory">ImageCategory</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The category of the image. Only the GENERAL category is added to the gallery.</p>
</div>
</td>
<td>
<code><span title="invokeai.app.services.image_records.image_records_common.ImageCategory.GENERAL">GENERAL</span></code>
</td>
</tr>
<tr class="doc-section-item">
<td><code>metadata</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[<span title="invokeai.app.invocations.fields.MetadataField">MetadataField</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>The metadata to save with the image, if it should have any. If the invocation inherits from <code>WithMetadata</code>, that metadata will be used automatically. <strong>Use this only if you want to override or provide metadata manually!</strong></p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="invokeai.app.services.images.images_common.ImageDTO">ImageDTO</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The saved image DTO.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="doc doc-object doc-class">
<h2 id="invokeai.app.services.shared.invocation_context.TensorsInterface" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">TensorsInterface</span>
<a href="#invokeai.app.services.shared.invocation_context.TensorsInterface" class="headerlink" title="Permanent link">#</a></h2>
<div class="doc doc-contents first">
<div class="doc doc-children">
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.TensorsInterface.load" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">load</span>
<a href="#invokeai.app.services.shared.invocation_context.TensorsInterface.load" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">load</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="torch.Tensor">Tensor</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Loads a tensor by name.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>name</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The name of the tensor to load.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="torch.Tensor">Tensor</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The loaded tensor.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.TensorsInterface.save" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">save</span>
<a href="#invokeai.app.services.shared.invocation_context.TensorsInterface.save" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">save</span><span class="p">(</span><span class="n">tensor</span><span class="p">:</span> <span class="n"><span title="torch.Tensor">Tensor</span></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">str</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Saves a tensor, returning its name.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>tensor</code></td>
<td>
<code><span title="torch.Tensor">Tensor</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The tensor to save.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The name of the saved tensor.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="doc doc-object doc-class">
<h2 id="invokeai.app.services.shared.invocation_context.ConditioningInterface" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">ConditioningInterface</span>
<a href="#invokeai.app.services.shared.invocation_context.ConditioningInterface" class="headerlink" title="Permanent link">#</a></h2>
<div class="doc doc-contents first">
<div class="doc doc-children">
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ConditioningInterface.load" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">load</span>
<a href="#invokeai.app.services.shared.invocation_context.ConditioningInterface.load" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">load</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="invokeai.backend.stable_diffusion.diffusion.conditioning_data.ConditioningFieldData">ConditioningFieldData</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Loads conditioning data by name.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>name</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The name of the conditioning data to load.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="invokeai.backend.stable_diffusion.diffusion.conditioning_data.ConditioningFieldData">ConditioningFieldData</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The loaded conditioning data.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ConditioningInterface.save" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">save</span>
<a href="#invokeai.app.services.shared.invocation_context.ConditioningInterface.save" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">save</span><span class="p">(</span><span class="n">conditioning_data</span><span class="p">:</span> <span class="n"><span title="invokeai.backend.stable_diffusion.diffusion.conditioning_data.ConditioningFieldData">ConditioningFieldData</span></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">str</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Saves a conditioning data object, returning its name.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>conditioning_data</code></td>
<td>
<code><span title="invokeai.backend.stable_diffusion.diffusion.conditioning_data.ConditioningFieldData">ConditioningFieldData</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The conditioning data to save.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The name of the saved conditioning data.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="doc doc-object doc-class">
<h2 id="invokeai.app.services.shared.invocation_context.ModelsInterface" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">ModelsInterface</span>
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface" class="headerlink" title="Permanent link">#</a></h2>
<div class="doc doc-contents first">
<p>Common API for loading, downloading and managing models.</p>
<div class="doc doc-children">
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ModelsInterface.download_and_cache_model" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">download_and_cache_model</span>
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.download_and_cache_model" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">download_and_cache_model</span><span class="p">(</span><span class="n">source</span><span class="p">:</span> <span class="n">str</span> <span class="o">|</span> <span class="n"><span title="pydantic.networks.AnyHttpUrl">AnyHttpUrl</span></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="pathlib.Path">Path</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Download the model file located at source to the models cache and return its Path.</p>
<p>This can be used to single-file install models and other resources of arbitrary types
which should not get registered with the database. If the model is already
installed, the cached path will be returned. Otherwise it will be downloaded.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>source</code></td>
<td>
<code>str | <span title="pydantic.networks.AnyHttpUrl">AnyHttpUrl</span></code>
</td>
<td>
<div class="doc-md-description">
<p>A URL that points to the model, or a huggingface repo_id.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="pathlib.Path">Path</span></code>
</td>
<td>
<div class="doc-md-description">
<p>Path to the downloaded model</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ModelsInterface.exists" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">exists</span>
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.exists" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">exists</span><span class="p">(</span><span class="n">identifier</span><span class="p">:</span> <span class="n"><span title="typing.Union">Union</span></span><span class="p">[</span><span class="n">str</span><span class="p">,</span> <span class="n"><span title="invokeai.app.invocations.model.ModelIdentifierField">ModelIdentifierField</span></span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n">bool</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Check if a model exists.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>identifier</code></td>
<td>
<code><span title="typing.Union">Union</span>[str, <span title="invokeai.app.invocations.model.ModelIdentifierField">ModelIdentifierField</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>The key or ModelField representing the model.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code>bool</code>
</td>
<td>
<div class="doc-md-description">
<p>True if the model exists, False if not.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ModelsInterface.get_config" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">get_config</span>
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.get_config" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">get_config</span><span class="p">(</span><span class="n">identifier</span><span class="p">:</span> <span class="n"><span title="typing.Union">Union</span></span><span class="p">[</span><span class="n">str</span><span class="p">,</span> <span class="n"><span title="invokeai.app.invocations.model.ModelIdentifierField">ModelIdentifierField</span></span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n"><span title="invokeai.backend.model_manager.config.AnyModelConfig">AnyModelConfig</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Get a model's config.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>identifier</code></td>
<td>
<code><span title="typing.Union">Union</span>[str, <span title="invokeai.app.invocations.model.ModelIdentifierField">ModelIdentifierField</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>The key or ModelField representing the model.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="invokeai.backend.model_manager.config.AnyModelConfig">AnyModelConfig</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The model's config.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ModelsInterface.load" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">load</span>
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.load" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">load</span><span class="p">(</span><span class="n">identifier</span><span class="p">:</span> <span class="n"><span title="typing.Union">Union</span></span><span class="p">[</span><span class="n">str</span><span class="p">,</span> <span class="n"><span title="invokeai.app.invocations.model.ModelIdentifierField">ModelIdentifierField</span></span><span class="p">],</span> <span class="n">submodel_type</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="invokeai.backend.model_manager.config.SubModelType">SubModelType</span></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="invokeai.backend.model_manager.load.load_base.LoadedModel">LoadedModel</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Load a model.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>identifier</code></td>
<td>
<code><span title="typing.Union">Union</span>[str, <span title="invokeai.app.invocations.model.ModelIdentifierField">ModelIdentifierField</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>The key or ModelField representing the model.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td><code>submodel_type</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[<span title="invokeai.backend.model_manager.config.SubModelType">SubModelType</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>The submodel of the model to get.</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="invokeai.backend.model_manager.load.load_base.LoadedModel">LoadedModel</span></code>
</td>
<td>
<div class="doc-md-description">
<p>An object representing the loaded model.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ModelsInterface.load_by_attrs" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">load_by_attrs</span>
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.load_by_attrs" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">load_by_attrs</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="n">str</span><span class="p">,</span> <span class="n">base</span><span class="p">:</span> <span class="n"><span title="invokeai.backend.model_manager.config.BaseModelType">BaseModelType</span></span><span class="p">,</span> <span class="nb">type</span><span class="p">:</span> <span class="n"><span title="invokeai.backend.model_manager.config.ModelType">ModelType</span></span><span class="p">,</span> <span class="n">submodel_type</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="invokeai.backend.model_manager.config.SubModelType">SubModelType</span></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="invokeai.backend.model_manager.load.load_base.LoadedModel">LoadedModel</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Load a model by its attributes.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>name</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>Name of the model.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td><code>base</code></td>
<td>
<code><span title="invokeai.backend.model_manager.config.BaseModelType">BaseModelType</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The models' base type, e.g. <code>BaseModelType.StableDiffusion1</code>, <code>BaseModelType.StableDiffusionXL</code>, etc.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td><code>type</code></td>
<td>
<code><span title="invokeai.backend.model_manager.config.ModelType">ModelType</span></code>
</td>
<td>
<div class="doc-md-description">
<p>Type of the model, e.g. <code>ModelType.Main</code>, <code>ModelType.Vae</code>, etc.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td><code>submodel_type</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[<span title="invokeai.backend.model_manager.config.SubModelType">SubModelType</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>The type of submodel to load, e.g. <code>SubModelType.UNet</code>, <code>SubModelType.TextEncoder</code>, etc. Only main</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="invokeai.backend.model_manager.load.load_base.LoadedModel">LoadedModel</span></code>
</td>
<td>
<div class="doc-md-description">
<p>An object representing the loaded model.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ModelsInterface.load_local_model" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">load_local_model</span>
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.load_local_model" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">load_local_model</span><span class="p">(</span><span class="n">model_path</span><span class="p">:</span> <span class="n"><span title="pathlib.Path">Path</span></span><span class="p">,</span> <span class="n">loader</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="typing.Callable">Callable</span></span><span class="p">[[</span><span class="n"><span title="pathlib.Path">Path</span></span><span class="p">],</span> <span class="n"><span title="invokeai.backend.model_manager.config.AnyModel">AnyModel</span></span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="invokeai.backend.model_manager.load.load_base.LoadedModelWithoutConfig">LoadedModelWithoutConfig</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Load the model file located at the indicated path</p>
<p>If a loader callable is provided, it will be invoked to load the model. Otherwise,
<code>safetensors.torch.load_file()</code> or <code>torch.load()</code> will be called to load the model.</p>
<p>Be aware that the LoadedModelWithoutConfig object has no <code>config</code> attribute</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>path</code></td>
<td>
</td>
<td>
<div class="doc-md-description">
<p>A model Path</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td><code>loader</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[<span title="typing.Callable">Callable</span>[[<span title="pathlib.Path">Path</span>], <span title="invokeai.backend.model_manager.config.AnyModel">AnyModel</span>]]</code>
</td>
<td>
<div class="doc-md-description">
<p>A Callable that expects a Path and returns a dict[str|int, Any]</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="invokeai.backend.model_manager.load.load_base.LoadedModelWithoutConfig">LoadedModelWithoutConfig</span></code>
</td>
<td>
<div class="doc-md-description">
<p>A LoadedModelWithoutConfig object.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ModelsInterface.load_remote_model" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">load_remote_model</span>
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.load_remote_model" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">load_remote_model</span><span class="p">(</span><span class="n">source</span><span class="p">:</span> <span class="n">str</span> <span class="o">|</span> <span class="n"><span title="pydantic.networks.AnyHttpUrl">AnyHttpUrl</span></span><span class="p">,</span> <span class="n">loader</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="typing.Callable">Callable</span></span><span class="p">[[</span><span class="n"><span title="pathlib.Path">Path</span></span><span class="p">],</span> <span class="n"><span title="invokeai.backend.model_manager.config.AnyModel">AnyModel</span></span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="invokeai.backend.model_manager.load.load_base.LoadedModelWithoutConfig">LoadedModelWithoutConfig</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Download, cache, and load the model file located at the indicated URL or repo_id.</p>
<p>If the model is already downloaded, it will be loaded from the cache.</p>
<p>If the a loader callable is provided, it will be invoked to load the model. Otherwise,
<code>safetensors.torch.load_file()</code> or <code>torch.load()</code> will be called to load the model.</p>
<p>Be aware that the LoadedModelWithoutConfig object has no <code>config</code> attribute</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>source</code></td>
<td>
<code>str | <span title="pydantic.networks.AnyHttpUrl">AnyHttpUrl</span></code>
</td>
<td>
<div class="doc-md-description">
<p>A URL or huggingface repoid.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td><code>loader</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[<span title="typing.Callable">Callable</span>[[<span title="pathlib.Path">Path</span>], <span title="invokeai.backend.model_manager.config.AnyModel">AnyModel</span>]]</code>
</td>
<td>
<div class="doc-md-description">
<p>A Callable that expects a Path and returns a dict[str|int, Any]</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="invokeai.backend.model_manager.load.load_base.LoadedModelWithoutConfig">LoadedModelWithoutConfig</span></code>
</td>
<td>
<div class="doc-md-description">
<p>A LoadedModelWithoutConfig object.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ModelsInterface.search_by_attrs" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">search_by_attrs</span>
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.search_by_attrs" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">search_by_attrs</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">base</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="invokeai.backend.model_manager.config.BaseModelType">BaseModelType</span></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="nb">type</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="invokeai.backend.model_manager.config.ModelType">ModelType</span></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="nb">format</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="invokeai.backend.model_manager.config.ModelFormat">ModelFormat</span></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">list</span><span class="p">[</span><span class="n"><span title="invokeai.backend.model_manager.config.AnyModelConfig">AnyModelConfig</span></span><span class="p">]</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Search for models by attributes.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>name</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[str]</code>
</td>
<td>
<div class="doc-md-description">
<p>The name to search for (exact match).</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
<tr class="doc-section-item">
<td><code>base</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[<span title="invokeai.backend.model_manager.config.BaseModelType">BaseModelType</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>The base to search for, e.g. <code>BaseModelType.StableDiffusion1</code>, <code>BaseModelType.StableDiffusionXL</code>, etc.</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
<tr class="doc-section-item">
<td><code>type</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[<span title="invokeai.backend.model_manager.config.ModelType">ModelType</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>Type type of model to search for, e.g. <code>ModelType.Main</code>, <code>ModelType.Vae</code>, etc.</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
<tr class="doc-section-item">
<td><code>format</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[<span title="invokeai.backend.model_manager.config.ModelFormat">ModelFormat</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>The format of model to search for, e.g. <code>ModelFormat.Checkpoint</code>, <code>ModelFormat.Diffusers</code>, etc.</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code>list[<span title="invokeai.backend.model_manager.config.AnyModelConfig">AnyModelConfig</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>A list of models that match the attributes.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ModelsInterface.search_by_path" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">search_by_path</span>
<a href="#invokeai.app.services.shared.invocation_context.ModelsInterface.search_by_path" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">search_by_path</span><span class="p">(</span><span class="n">path</span><span class="p">:</span> <span class="n"><span title="pathlib.Path">Path</span></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">list</span><span class="p">[</span><span class="n"><span title="invokeai.backend.model_manager.config.AnyModelConfig">AnyModelConfig</span></span><span class="p">]</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Search for models by path.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>path</code></td>
<td>
<code><span title="pathlib.Path">Path</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The path to search for.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code>list[<span title="invokeai.backend.model_manager.config.AnyModelConfig">AnyModelConfig</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>A list of models that match the path.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="doc doc-object doc-class">
<h2 id="invokeai.app.services.shared.invocation_context.LoggerInterface" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">LoggerInterface</span>
<a href="#invokeai.app.services.shared.invocation_context.LoggerInterface" class="headerlink" title="Permanent link">#</a></h2>
<div class="doc doc-contents first">
<div class="doc doc-children">
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.LoggerInterface.debug" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">debug</span>
<a href="#invokeai.app.services.shared.invocation_context.LoggerInterface.debug" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">debug</span><span class="p">(</span><span class="n">message</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Logs a debug message.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>message</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The message to log.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.LoggerInterface.error" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">error</span>
<a href="#invokeai.app.services.shared.invocation_context.LoggerInterface.error" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">error</span><span class="p">(</span><span class="n">message</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Logs an error message.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>message</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The message to log.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.LoggerInterface.info" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">info</span>
<a href="#invokeai.app.services.shared.invocation_context.LoggerInterface.info" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">info</span><span class="p">(</span><span class="n">message</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Logs an info message.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>message</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The message to log.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.LoggerInterface.warning" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">warning</span>
<a href="#invokeai.app.services.shared.invocation_context.LoggerInterface.warning" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">warning</span><span class="p">(</span><span class="n">message</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Logs a warning message.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>message</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The message to log.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="doc doc-object doc-class">
<h2 id="invokeai.app.services.shared.invocation_context.ConfigInterface" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">ConfigInterface</span>
<a href="#invokeai.app.services.shared.invocation_context.ConfigInterface" class="headerlink" title="Permanent link">#</a></h2>
<div class="doc doc-contents first">
<div class="doc doc-children">
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.ConfigInterface.get" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">get</span>
<a href="#invokeai.app.services.shared.invocation_context.ConfigInterface.get" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">get</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n"><a class="autorefs autorefs-internal" title="invokeai.app.services.config.config_default.InvokeAIAppConfig" href="../../features/CONFIGURATION/#invokeai.app.services.config.config_default.InvokeAIAppConfig">InvokeAIAppConfig</a></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Gets the app's config.</p>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><a class="autorefs autorefs-internal" title="invokeai.app.services.config.config_default.InvokeAIAppConfig" href="../../features/CONFIGURATION/#invokeai.app.services.config.config_default.InvokeAIAppConfig">InvokeAIAppConfig</a></code>
</td>
<td>
<div class="doc-md-description">
<p>The app's config.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="doc doc-object doc-class">
<h2 id="invokeai.app.services.shared.invocation_context.UtilInterface" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">UtilInterface</span>
<a href="#invokeai.app.services.shared.invocation_context.UtilInterface" class="headerlink" title="Permanent link">#</a></h2>
<div class="doc doc-contents first">
<div class="doc doc-children">
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.UtilInterface.is_canceled" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">is_canceled</span>
<a href="#invokeai.app.services.shared.invocation_context.UtilInterface.is_canceled" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">is_canceled</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">bool</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Checks if the current session has been canceled.</p>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code>bool</code>
</td>
<td>
<div class="doc-md-description">
<p>True if the current session has been canceled, False if not.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.UtilInterface.sd_step_callback" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">sd_step_callback</span>
<a href="#invokeai.app.services.shared.invocation_context.UtilInterface.sd_step_callback" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">sd_step_callback</span><span class="p">(</span><span class="n">intermediate_state</span><span class="p">:</span> <span class="n"><span title="invokeai.backend.stable_diffusion.diffusers_pipeline.PipelineIntermediateState">PipelineIntermediateState</span></span><span class="p">,</span> <span class="n">base_model</span><span class="p">:</span> <span class="n"><span title="invokeai.backend.model_manager.config.BaseModelType">BaseModelType</span></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>The step callback emits a progress event with the current step, the total number of
steps, a preview image, and some other internal metadata.</p>
<p>This should be called after each denoising step.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>intermediate_state</code></td>
<td>
<code><span title="invokeai.backend.stable_diffusion.diffusers_pipeline.PipelineIntermediateState">PipelineIntermediateState</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The intermediate state of the diffusion pipeline.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td><code>base_model</code></td>
<td>
<code><span title="invokeai.backend.model_manager.config.BaseModelType">BaseModelType</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The base model for the current denoising step.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="doc doc-object doc-class">
<h2 id="invokeai.app.services.shared.invocation_context.BoardsInterface" class="doc doc-heading">
<span class="doc doc-object-name doc-class-name">BoardsInterface</span>
<a href="#invokeai.app.services.shared.invocation_context.BoardsInterface" class="headerlink" title="Permanent link">#</a></h2>
<div class="doc doc-contents first">
<div class="doc doc-children">
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.BoardsInterface.add_image_to_board" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">add_image_to_board</span>
<a href="#invokeai.app.services.shared.invocation_context.BoardsInterface.add_image_to_board" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">add_image_to_board</span><span class="p">(</span><span class="n">board_id</span><span class="p">:</span> <span class="n">str</span><span class="p">,</span> <span class="n">image_name</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Adds an image to a board.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>board_id</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The ID of the board to add the image to.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
<tr class="doc-section-item">
<td><code>image_name</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The name of the image to add to the board.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.BoardsInterface.create" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">create</span>
<a href="#invokeai.app.services.shared.invocation_context.BoardsInterface.create" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">create</span><span class="p">(</span><span class="n">board_name</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="invokeai.app.services.boards.boards_common.BoardDTO">BoardDTO</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Creates a board.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>board_name</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The name of the board to create.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="invokeai.app.services.boards.boards_common.BoardDTO">BoardDTO</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The created board DTO.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.BoardsInterface.get_all" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">get_all</span>
<a href="#invokeai.app.services.shared.invocation_context.BoardsInterface.get_all" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">get_all</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">list</span><span class="p">[</span><span class="n"><span title="invokeai.app.services.boards.boards_common.BoardDTO">BoardDTO</span></span><span class="p">]</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Gets all boards.</p>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code>list[<span title="invokeai.app.services.boards.boards_common.BoardDTO">BoardDTO</span>]</code>
</td>
<td>
<div class="doc-md-description">
<p>A list of all boards.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.BoardsInterface.get_all_image_names_for_board" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">get_all_image_names_for_board</span>
<a href="#invokeai.app.services.shared.invocation_context.BoardsInterface.get_all_image_names_for_board" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">get_all_image_names_for_board</span><span class="p">(</span><span class="n">board_id</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">list</span><span class="p">[</span><span class="n">str</span><span class="p">]</span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Gets all image names for a board.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>board_id</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The ID of the board to get the image names for.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code>list[str]</code>
</td>
<td>
<div class="doc-md-description">
<p>A list of all image names for the board.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="doc doc-object doc-function">
<h3 id="invokeai.app.services.shared.invocation_context.BoardsInterface.get_dto" class="doc doc-heading">
<span class="doc doc-object-name doc-function-name">get_dto</span>
<a href="#invokeai.app.services.shared.invocation_context.BoardsInterface.get_dto" class="headerlink" title="Permanent link">#</a></h3>
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">get_dto</span><span class="p">(</span><span class="n">board_id</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="invokeai.app.services.boards.boards_common.BoardDTO">BoardDTO</span></span>
</code></pre></div>
<div class="doc doc-contents ">
<p>Gets a board DTO.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td><code>board_id</code></td>
<td>
<code>str</code>
</td>
<td>
<div class="doc-md-description">
<p>The ID of the board to get.</p>
</div>
</td>
<td>
<em>required</em>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code><span title="invokeai.app.services.boards.boards_common.BoardDTO">BoardDTO</span></code>
</td>
<td>
<div class="doc-md-description">
<p>The board DTO.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div><!-- prettier-ignore-end -->
<aside class="md-source-file">
<span class="md-source-file__fact">
<span class="md-icon" title="Last update">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1-2.1-2M12.5 7v5.2l4 2.4-1 1L11 13V7h1.5M11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2v1.8Z"/></svg>
</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">August 29, 2024</span>
</span>
<span class="md-source-file__fact">
<span class="md-icon" title="Created">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.47 15.08 11 13V7h1.5v5.25l3.08 1.83c-.41.28-.79.62-1.11 1m-1.39 4.84c-.36.05-.71.08-1.08.08-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8c0 .37-.03.72-.08 1.08.69.1 1.33.32 1.92.64.1-.56.16-1.13.16-1.72 0-5.5-4.5-10-10-10S2 6.5 2 12s4.47 10 10 10c.59 0 1.16-.06 1.72-.16-.32-.59-.54-1.23-.64-1.92M18 15v3h-3v2h3v3h2v-3h3v-2h-3v-3h-2Z"/></svg>
</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">August 29, 2024</span>
</span>
</aside>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 InvokeAI Team
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.instant", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "navigation.indexes", "navigation.path", "search.highlight", "search.suggest", "toc.integrate"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.af256bd8.min.js"></script>
<script src="https://unpkg.com/tablesort@5.3.0/dist/tablesort.min.js"></script>
<script src="../../javascripts/tablesort.js"></script>
<script src="../../javascript/init_kapa_widget.js"></script>
</body>
</html>