Griptape Create: Image Inpainting Variation
Image + Mask + Prompt
- image
- mask
- key_value_replacement
- driver
- IMAGE
- FILE_PATH
Griptape Create: Image Inpainting Variation is the most specific of the pack's image nodes: it takes an image, a mask, and a text prompt, and regenerates the masked region through a Griptape image-generation driver. Where Create Image Variation re-draws the whole image, this one only redraws the area you mask - which is the classic workflow for "remove the thing / fill in the hole / fix this region" without touching the rest of the picture.
What it's for
If you already inpaint in native ComfyUI, this node will feel weirdly familiar and oddly limited at the same time. It does the same conceptual job - masked region regeneration - but through an LLM provider's API rather than the local diffusion stack. The driver is the whole game here: inpainting support is not universal, and the node is blunt about it. It checks your driver against a strict list and raises a hard error if the model can't do inpainting:
- OpenAI - only
dall-e-2(the default when no driver is attached). - Amazon Bedrock - only
stability.stable-diffusion-xl-v1. - Azure OpenAI - only
dall-e-2. - Black Forest / Flux - only
flux-pro-1.0-fill. - Leonardo.AI - explicitly does not support inpainting; the node tells you to pick another driver.
That's the honest reality of API-driven inpainting: a much shorter list of capable models than local SD inpainting, and a much smaller quality lever to pull.
How it works
The input image and mask are each converted to base64, parsed back into image artifacts, and handed to an InpaintingImageGenerationTask along with your prompt. The driver then produces the inpainted result, which lands in ComfyUI's temp directory and comes back to you as an IMAGE tensor plus a file path. There's a small quirk in the source where flux-pro-1.0-fill gets remapped to flux-pro-1.0 for the actual call - worth knowing if you're debugging a Flux inpaint that behaves oddly.
Inputs
STRING(required, multiline) - what the masked region should become.image(IMAGE, required) - the base image.mask(MASK, required) - the region to regenerate. White = affected area, as with standard inpainting masks.input_string(STRING) - appended to STRING with a newline.key_value_replacement(DICT) -{{ key }}placeholder substitution.driver(DRIVER) - your inpainting-capable driver. Defaults to OpenAIdall-e-2.
Outputs
IMAGE- the inpainted result as a ComfyUI tensor.FILE_PATH(STRING) - where the output was written (temp dir).
Installation
Part of ComfyUI Griptape Nodes:
- ComfyUI Manager: search "Griptape" → install.
- Manual:
cd ComfyUI/custom_nodes && git clone https://github.com/griptape-ai/ComfyUI-Griptape, restart ComfyUI.
Standard pack install plus a valid API key for whichever inpainting-capable driver you choose.
Gotchas
- Model support is the whole ballgame. The node raises explicit errors like "OpenAI model must be dall-e-2 for inpainting" or the Leonardo "does not support Inpainting" message. If you attach a fancy driver and get an error, it's not a bug - it's the model refusing the job.
- No mask-blur, feathering, or denoise knobs like native ComfyUI inpainting. You get the mask as-is and whatever the API decides.
- Paid per call. Each inpaint is an API invocation.
If you need precise, cheap, controllable inpainting, stay in native ComfyUI. This node is for the graph that wants the whole image pipeline - describe, mask, inpaint - to live inside the agentic flow.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| STRING | STRING | — | |
| image | IMAGE | — | |
| mask | MASK | — | |
| input_stringopt | STRING | — | |
| key_value_replacementopt | DICT | The will replace the {{ key }} with a value. | |
| driveropt | DRIVER | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| FILE_PATH | STRING | — |