BerriAI/litellm · error · Exception
Model needs to be set for bedrock
Error message
Model needs to be set for bedrock
What it means
Bedrock image generation (e.g. Titan Image, Stability on Bedrock, Nova Canvas) is routed to a Bedrock-specific handler that performs AWS SigV4 signing (litellm/images/main.py:486-497). The model id is required to build the invoke-model URL, so model=None raises this Exception.
Source
Thrown at litellm/images/main.py:486
# Forward OpenAI organization if present (set by proxy pre-call utils)
organization: Final[str | None] = kwargs.get("organization", None)
model_response = openai_chat_completions.image_generation(
model=model,
prompt=prompt,
timeout=timeout,
api_key=api_key or dynamic_api_key,
api_base=api_base,
logging_obj=litellm_logging_obj,
optional_params=optional_params,
model_response=model_response,
organization=organization,
aimg_generation=aimg_generation,
client=client,
headers=headers,
)
elif custom_llm_provider == "bedrock":
if model is None:
raise Exception("Model needs to be set for bedrock")
model_response = bedrock_image_generation.image_generation(
model=model,
prompt=prompt,
timeout=timeout,
logging_obj=litellm_logging_obj,
optional_params=optional_params,
model_response=model_response,
aimg_generation=aimg_generation,
client=client,
api_base=api_base,
api_key=api_key,
)
elif custom_llm_provider in litellm._custom_providers: # Assume custom LLM provider
# Get the Custom Handler
custom_handler: CustomLLM | None = None
for item in litellm.custom_provider_map:
if item["provider"] == custom_llm_provider:
custom_handler = item["custom_handler"]View on GitHub (pinned to 6c2dcb801b)
Solutions
- Pass the full Bedrock model id, e.g. model='bedrock/amazon.titan-image-generator-v1' or 'bedrock/stability.stable-diffusion-xl-v1'
- If specifying custom_llm_provider='bedrock' separately, still pass model='amazon.nova-canvas-v1' etc.
- Confirm AWS credentials (AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_REGION_NAME) are set so the call proceeds after the model fix
Example fix
# before litellm.image_generation(prompt="a cat", custom_llm_provider="bedrock") # after litellm.image_generation(model="bedrock/amazon.titan-image-generator-v1", prompt="a cat")
Defensive patterns
Strategy: validation
Validate before calling
def validate_bedrock_image_call(model: str | None) -> str:
if not model:
raise ValueError("model is required for bedrock image generation, e.g. 'bedrock/amazon.titan-image-generator-v1'")
return model Type guard
def has_model(model: str | None) -> bool:
return isinstance(model, str) and model.strip() != '' Try / catch
try:
r = litellm.image_generation(model=m, prompt=p, custom_llm_provider="bedrock")
except Exception as e:
if "Model needs to be set for bedrock" in str(e):
raise ValueError("pass model='bedrock/<model-id>'") from e
raise Prevention
- Default bedrock image models in your config rather than relying on call sites to remember
- Validate AWS env vars (region, keys) alongside the model check
- Use 'bedrock/<full-model-id>' prefix form
When it happens
Trigger: Calling litellm.image_generation(prompt=..., custom_llm_provider='bedrock') with no model; or the model string failed provider parsing so model resolved to None; or passing model=None explicitly.
Common situations: Developer omits model expecting a default; or uses 'bedrock/' with an empty model suffix; or copies an OpenAI-style call (where dall-e defaults exist) to Bedrock.
Related errors
- err.response.text
- Model needs to be set for black_forest_labs
- BedrockException: Context Window Error - {error_str}
- BedrockException Invalid Authentication - {error_str}
- BedrockException PermissionDeniedError - {error_str}
AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15).
Data as JSON: /api/errors/b9615d2fa30f1626.
Report an issue: GitHub.