{"record":{"id":"4a03a7f77cf0be3e","repo":"BerriAI/litellm","slug":"imagevariationconfig-implements-transform-respons","errorCode":null,"errorMessage":"ImageVariationConfig implements 'transform_response_image_variation' for image variation models","messagePattern":"ImageVariationConfig implements 'transform_response_image_variation' for image variation models","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"litellm/llms/base_llm/image_generation/transformation.py","lineNumber":98,"sourceCode":"    ) -> dict:\n        raise NotImplementedError(\n            \"ImageVariationConfig implementa 'transform_request_image_variation' for image variation models\"\n        )\n\n    def transform_image_generation_response(\n        self,\n        model: str,\n        raw_response: httpx.Response,\n        model_response: ImageResponse,\n        logging_obj: LiteLLMLoggingObj,\n        request_data: dict,\n        optional_params: dict,\n        litellm_params: dict,\n        encoding: Any,\n        api_key: str | None = None,\n        json_mode: bool | None = None,\n    ) -> ImageResponse:\n        raise NotImplementedError(\n            \"ImageVariationConfig implements 'transform_response_image_variation' for image variation models\"\n        )\n\n    def use_multipart_form_data(self) -> bool:\n        \"\"\"\n        Returns True if this provider requires multipart/form-data instead of JSON.\n\n        Override this method in subclasses that need form-data (e.g., Stability AI).\n        \"\"\"\n        return False\n","sourceCodeStart":80,"sourceCodeEnd":109,"githubUrl":"https://github.com/BerriAI/litellm/blob/6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d/litellm/llms/base_llm/image_generation/transformation.py#L80-L109","documentation":"Companion stub to the request-side one: ImageVariationConfig does not implement transform_image_generation_response, so parsing a generation API response through a variation config raises NotImplementedError before any response mapping occurs. It marks the generation response path as unsupported for variation-only configs.","triggerScenarios":"A variation config is selected for a model and the response handler (generic for image generation) calls transform_image_generation_response — typically after a generation request already succeeded at HTTP level, or when a handler pre-validates config capabilities.","commonSituations":"Same root cause as the request stub: mis-registered config class, dispatch bug after refactor, or a provider that only wired variation methods being used for generation.","solutions":["Point the model at a config that implements transform_image_generation_response (a generation config).","Implement the method in your subclass to map the provider's generation response to ImageResponse.","Fix the config-selection logic so variation configs are never used on the generation path.","Check provider registry entries (provider config mapping) for copy-paste errors."],"exampleFix":"# before\nclass MyProviderConfig(ImageVariationConfig):  # no generation response mapping\n    ...\n\n# after\nclass MyProviderConfig(ImageVariationConfig):\n    def transform_image_generation_response(self, model, raw_response, model_response, logging_obj, request_data, optional_params, litellm_params, encoding, api_key=None, json_mode=None):\n        data = raw_response.json()\n        model_response.data = [{'url': item['url']} for item in data.get('data', [])]\n        return model_response","handlingStrategy":"type-guard","validationCode":null,"typeGuard":"def implements_generation_response(config) -> bool:\n    return type(config).transform_image_generation_response is not \\\n        BaseImageGenerationConfig.transform_image_generation_response","tryCatchPattern":"try:\n    resp = litellm.image_generation(...)\nexcept NotImplementedError as e:\n    if 'transform_response_image_variation' in str(e) or 'transform_image_generation_response' in str(e):\n        raise ModelConfigError('config/response-path mismatch') from e\n    raise","preventionTips":["Keep generation and variation configs in separate classes from the start.","Smoke-test each provider registration end-to-end (request AND response) in CI.","Check overrides at registration time using introspection like the type guard above."],"tags":["image-generation","image-variation","not-implemented","response-parsing"],"backgroundTag":null,"analyzedSha":"6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d","analyzedAt":"2026-08-15T07:12:03.035Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}