Image Generation
Generate an image through OpenRouter, decode the returned bytes, and display the result with Pillow.
from io import BytesIO
from agno.agent import Agent, RunOutput # noqa
from agno.models.openrouter import OpenRouter
from PIL import Image
# Request both image and text modalities so OpenRouter returns generated images
agent = Agent(
model=OpenRouter(
id="google/gemini-2.5-flash-image",
modalities=["image", "text"],
)
)
run_response = agent.run("Make me an image of a cat in a tree.")
if run_response and isinstance(run_response, RunOutput) and run_response.images:
for image_response in run_response.images:
image_bytes = image_response.content
if image_bytes:
image = Image.open(BytesIO(image_bytes))
image.show()
# Save the image to a file
# image.save("generated_image.png")
else:
print("No images found in run response")Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno openai pillowExport your OpenRouter API key
export OPENROUTER_API_KEY="your_openrouter_api_key_here"Run the example
Save the code above as image_generation.py, then run:
python image_generation.pyFull source: cookbook/90_models/openrouter/chat/image_generation.py