{"record":{"id":"f86850922a563382","repo":"BerriAI/litellm","slug":"api-base-is-required-for-topaz-image-variations","errorCode":null,"errorMessage":"API base is required for Topaz image variations","messagePattern":"API base is required for Topaz image variations","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/images/main.py","lineNumber":680,"sourceCode":"            raise ValueError(\"API base is required for OpenAI image variations\")\n\n        response = openai_image_variations.image_variations(\n            model_response=model_response,\n            api_key=api_key,\n            api_base=api_base,\n            model=model,\n            image=image,\n            timeout=litellm_params.get(\"timeout\", None),\n            custom_llm_provider=custom_llm_provider,\n            logging_obj=litellm_logging_obj,\n            optional_params={},\n            litellm_params=litellm_params,\n        )\n    elif image_variation_provider == LITELLM_IMAGE_VARIATION_PROVIDERS.TOPAZ:\n        if api_key is None:\n            raise ValueError(\"API key is required for Topaz image variations\")\n        if api_base is None:\n            raise ValueError(\"API base is required for Topaz image variations\")\n\n        response = base_llm_aiohttp_handler.image_variations(\n            model_response=model_response,\n            api_key=api_key,\n            api_base=api_base,\n            model=model,\n            image=image,\n            timeout=litellm_params.get(\"timeout\", None) or DEFAULT_REQUEST_TIMEOUT,\n            custom_llm_provider=custom_llm_provider,\n            logging_obj=litellm_logging_obj,\n            optional_params={},\n            litellm_params=litellm_params,\n            client=client,\n        )\n\n    # return the response\n    if response is None:\n        raise ValueError(","sourceCodeStart":662,"sourceCodeEnd":698,"githubUrl":"https://github.com/BerriAI/litellm/blob/6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d/litellm/images/main.py#L662-L698","documentation":"Topaz image variations require an explicit api_base; provider_config.get_api_base() returned None at litellm/images/main.py:680 and litellm raises ValueError rather than assuming the Topaz endpoint.","triggerScenarios":"Calling litellm.image_variations(model='topaz/...', ...) with a key but no api_base argument and no resolvable environment base URL for Topaz.","commonSituations":"Developer assumes the default https://api.topazlabs.com is applied automatically; on-prem gateway users forgetting to configure the base.","solutions":["Pass api_base explicitly: api_base='https://api.topazlabs.com'","Or configure the base URL in the environment/litellm.api_base so get_api_base resolves it","For self-hosted Topaz-compatible endpoints, point api_base at your gateway"],"exampleFix":"# before\nlitellm.image_variations(model=\"topaz/topaz-image-alter-v1\", image=img, api_key=key)\n\n# after\nlitellm.image_variations(model=\"topaz/topaz-image-alter-v1\", image=img, api_key=key, api_base=\"https://api.topazlabs.com\")","handlingStrategy":"validation","validationCode":"TOPAZ_DEFAULT_BASE = \"https://api.topazlabs.com\"\n\ndef topaz_base(explicit: str | None = None) -> str:\n    return explicit or TOPAZ_DEFAULT_BASE","typeGuard":null,"tryCatchPattern":"try:\n    r = litellm.image_variations(model=m, image=img, api_key=k)\nexcept ValueError as e:\n    if \"API base is required for Topaz\" in str(e):\n        return litellm.image_variations(model=m, image=img, api_key=k, api_base=\"https://api.topazlabs.com\")\n    raise","preventionTips":["Pass api_base explicitly on every Topaz call","Store provider endpoint defaults in configuration, not assumptions"],"tags":["image-variations","topaz","api-base","configuration"],"backgroundTag":null,"analyzedSha":"6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d","analyzedAt":"2026-08-15T07:12:03.035Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}