Skip to main content

Image Generation

Knox supports image generation through models that have "image" in their output_modalities. These models can create images from text prompts when you specify the appropriate modalities in your request.

Model Discovery​

You can find image generation models in several ways:

On the Models Page​

Visit the Models List and filter by output modalities to find models capable of image generation. Look for models that list "image" in their output modalities.

In the Chatroom​

When using the Chat, click the Image button to automatically filter and select models with image generation capabilities. If no image-capable model is active, you'll be prompted to add one.

API Usage​

To generate images, send a request to the /v1/chat/completions endpoint with the modalities parameter set to include both "image" and "text".

Basic Image Generation​

import requests
import json

url = "https://api.knox.chat/v1/chat/completions"
headers = {
"Authorization": f"Bearer {API_KEY_REF}",
"Content-Type": "application/json"
}

payload = {
"model": "google/gemini-2.5-flash-image",
"messages": [
{
"role": "user",
"content": "Generate a beautiful sunset over mountains"
}
],
"modalities": ["image", "text"]
}

response = requests.post(url, headers=headers, json=payload)
result = response.json()

# The generated image will be in the assistant message
if result.get("choices"):
message = result["choices"][0]["message"]
if message.get("images"):
for image in message["images"]:
image_url = image["image_url"]["url"] # Base64 data URL
print(f"Generated image: {image_url[:50]}...")

Streaming Image Generation​

Image generation also works with streaming responses:

import requests
import json

url = "https://api.knox.chat/v1/chat/completions"
headers = {
"Authorization": f"Bearer {API_KEY_REF}",
"Content-Type": "application/json"
}

payload = {
"model": "google/gemini-2.5-flash-image",
"messages": [
{
"role": "user",
"content": "Create an image of a futuristic city"
}
],
"modalities": ["image", "text"],
"stream": True
}

response = requests.post(url, headers=headers, json=payload, stream=True)

for line in response.iter_lines():
if line:
line = line.decode('utf-8')
if line.startswith('data: '):
data = line[6:]
if data != '[DONE]':
try:
chunk = json.loads(data)
if chunk.get("choices"):
delta = chunk["choices"][0].get("delta", {})
if delta.get("images"):
for image in delta["images"]:
print(f"Generated image: {image['image_url']['url'][:50]}...")
except json.JSONDecodeError:
continue

Response Format​

When generating images, the assistant message includes an images field containing the generated images:

{
"choices": [
{
"message": {
"role": "assistant",
"content": "I've generated a beautiful sunset image for you.",
"images": [
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}
}
]
}
}
]
}

Image Format​

  • Format: Images are returned as base64-encoded data URLs
  • Types: Typically PNG format (data:image/png;base64,)
  • Multiple Images: Some models can generate multiple images in a single response
  • Size: Image dimensions vary by model capabilities

Model Compatibility​

Not all models support image generation. To use this feature:

  1. Check Output Modalities: Ensure the model has "image" in its output_modalities
  2. Set Modalities Parameter: Include "modalities": ["image", "text"] in your request
  3. Use Compatible Models: Examples include:
    • google/gemini-2.5-flash-image
    • google/gemini-2.5-flash-image-preview
    • google/gemini-3-pro-image-preview
    • Other models with image generation capabilities

Best Practices​

  • Clear Prompts: Provide detailed descriptions for better image quality
  • Model Selection: Choose models specifically designed for image generation
  • Error Handling: Check for the images field in responses before processing
  • Rate Limits: Image generation may have different rate limits than text generation
  • Storage: Consider how you'll handle and store the base64 image data

Troubleshooting​

No images in response?

  • Verify the model supports image generation (output_modalities includes "image")
  • Ensure you've included "modalities": ["image", "text"] in your request
  • Check that your prompt is requesting image generation

Model not found?

  • Use the Models List to find available image generation models
  • Filter by output modalities to see compatible models