BerriAI/litellm · error · ValueError

Error transforming inpainting params

Error message

Error transforming inpainting params: {e}. Got params: {inpainting_params}, Expected params: {AmazonNovaCanvasInpaintingParams.__annotations__}

What it means

For INPAINTING via image generation (litellm.image with taskType='INPAINTING'), inpaintingParams gets 'text' injected and is constructed as AmazonNovaCanvasInpaintingParams(**params); unknown keys raise TypeError, wrapped in this ValueError with the raw dict and annotations. Annotated keys: text, maskImage, inputImage, negativeText.

Solutions

  1. Use annotated keys only: text, maskImage (base64), inputImage (base64), negativeText
  2. For mask-prompt driven inpainting use litellm.image_edit with maskPrompt=, which builds this structure for you
  3. Base64-encode mask and input images; never pass file objects or raw bytes here
  4. Check the 'Got params' dict in the message for the offending key

Example fix

# before
resp = litellm.image(
    model="bedrock/amazon.nova-canvas-v1:0",
    prompt="fill with foliage",
    taskType="INPAINTING",
    inpaintingParams={"mask_prompt": "the bench", "inputImage": img_b64},
)

# after
resp = litellm.image(
    model="bedrock/amazon.nova-canvas-v1:0",
    prompt="fill with foliage",
    taskType="INPAINTING",
    inpaintingParams={"maskImage": mask_b64, "inputImage": img_b64},
)
Defensive patterns

Strategy: validation

Validate before calling

from litellm.types.llms.bedrock import AmazonNovaCanvasInpaintingParams

def validate_inpainting_generation_params(p: dict) -> None:
    allowed = set(AmazonNovaCanvasInpaintingParams.__annotations__)
    stray = set(p) - allowed
    assert not stray, f"unknown inpaintingParams keys: {stray}; allowed: {sorted(allowed)}"
    assert "maskImage" in p, "generation-path INPAINTING needs base64 maskImage"

validate_inpainting_generation_params(inpainting_params)

Type guard

def is_valid_inpainting_generation_params(p: dict) -> bool:
    """True when keys match the TypedDict and a base64 maskImage is present."""
    from litellm.types.llms.bedrock import AmazonNovaCanvasInpaintingParams
    allowed = set(AmazonNovaCanvasInpaintingParams.__annotations__)
    return set(p) <= allowed and isinstance(p.get("maskImage"), str)

Try / catch

try:
    resp = litellm.image(...)
except ValueError as e:
    if "Error transforming inpainting params" in str(e):
        raise UserInputError("inpaintingParams: use text/maskImage/inputImage/negativeText (base64)") from e
    raise

Prevention

When it happens

Trigger: Passing 'mask_prompt' instead of a valid key, including an unknown key like 'mask' inside inpaintingParams, or a misspelled 'input_image' in a generation-path INPAINTING call — note this generation branch has no maskPrompt key (unlike the image-edit path).

Common situations: Confusing the image-edit API (which accepts mask=/maskPrompt) with the raw generation API (which wants base64 maskImage inside inpaintingParams); translating AWS SDK examples with renamed keys.

Understand the failure class

Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.

Related errors


AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18). Data as JSON: /api/errors/488b643399a8d613. Report an issue: GitHub.

Appendix: source

Thrown at litellm/llms/bedrock/image_generation/amazon_nova_canvas_transformation.py:132

            try:
                image_generation_config_typed = AmazonNovaCanvasImageGenerationConfig(**image_generation_config)
            except Exception as e:
                raise ValueError(
                    f"Error transforming image generation config: {e}. Got params: {image_generation_config}, Expected params: {AmazonNovaCanvasImageGenerationConfig.__annotations__}"
                )

            return AmazonNovaCanvasColorGuidedRequest(
                taskType=task_type,
                colorGuidedGenerationParams=color_guided_generation_params_typed,
                imageGenerationConfig=image_generation_config_typed,
            )
        if task_type == "INPAINTING":
            inpainting_params: dict[str, Any] = image_generation_config.pop("inpaintingParams", {})
            inpainting_params = {"text": text, **inpainting_params}
            try:
                inpainting_params_typed: Final = AmazonNovaCanvasInpaintingParams(**inpainting_params)
            except Exception as e:
                raise ValueError(
                    f"Error transforming inpainting params: {e}. Got params: {inpainting_params}, Expected params: {AmazonNovaCanvasInpaintingParams.__annotations__}"
                )

            try:
                image_generation_config_typed = AmazonNovaCanvasImageGenerationConfig(**image_generation_config)
            except Exception as e:
                raise ValueError(
                    f"Error transforming image generation config: {e}. Got params: {image_generation_config}, Expected params: {AmazonNovaCanvasImageGenerationConfig.__annotations__}"
                )

            return AmazonNovaCanvasInpaintingRequest(
                taskType=task_type,
                inpaintingParams=inpainting_params_typed,
                imageGenerationConfig=image_generation_config_typed,
            )
        raise NotImplementedError(f"Task type {task_type} is not supported")

    @classmethod

View on GitHub (pinned to 77b7c6c40c)