# Invocation API Each invocation's `invoke` method is provided a single arg - the Invocation Context. This object provides an API the invocation can use to interact with application services, for example: - Saving images - Logging messages - Loading models ```py class MyInvocation(BaseInvocation): ... def invoke(self, context: InvocationContext) -> ImageOutput: # Load an image image_pil = context.images.get_pil(self.image.image_name) # Do something to the image output_image = do_something_cool(image_pil) # Save the image image_dto = context.images.save(output_image) # Log a message context.logger.info(f"Did something cool, image saved!") # Return the output return ImageOutput.build(image_dto) ... ``` The full API is documented below. ## Mixins Two important mixins are provided to facilitate working with metadata and gallery boards. ### `WithMetadata` Inherit from this class (in addition to `BaseInvocation`) to add a `metadata` input to your node. When you do this, you can access the metadata dict from `self.metadata` in the `invoke()` function. The dict will be populated via the node's input, and you can add any metadata you'd like to it. When you call `context.images.save()`, if the metadata dict has any data, it be automatically embedded in the image. ### `WithBoard` Inherit from this class (in addition to `BaseInvocation`) to add a `board` input to your node. This renders as a drop-down to select a board. The user's selection will be accessible from `self.board` in the `invoke()` function. When you call `context.images.save()`, if a board was selected, the image will added to that board as it is saved. ::: invokeai.app.services.shared.invocation_context.InvocationContext options: members: false ::: invokeai.app.services.shared.invocation_context.ImagesInterface ::: invokeai.app.services.shared.invocation_context.TensorsInterface ::: invokeai.app.services.shared.invocation_context.ConditioningInterface ::: invokeai.app.services.shared.invocation_context.ModelsInterface ::: invokeai.app.services.shared.invocation_context.LoggerInterface ::: invokeai.app.services.shared.invocation_context.ConfigInterface ::: invokeai.app.services.shared.invocation_context.UtilInterface ::: invokeai.app.services.shared.invocation_context.BoardsInterface