AI GatewayConcepts

Image Generation

Generate images through CoreValue's AI Gateway using models with native image output like Nano Banana Pro

CoreValue's AI Gateway supports image generation through models with native image output capabilities. Use the unified OpenAI-compatible API to generate images - the Gateway handles provider-specific translations automatically.

Image generation is currently supported for Nano Banana Pro (gemini-3-pro-image-preview) via Google AI Studio. Support for additional providers will be added in future updates.


Quick Start

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.COVA_API_KEY,
  baseURL: "https://gateway.corevalue.dev/v1",
});

const response = await client.chat.completions.create({
  model: "google/gemini-3-pro-image-preview",
  messages: [
    { role: "user", content: "Generate an image of a sunset over mountains" }
  ],
  max_tokens: 8192
});

// Access generated images
const images = response.choices[0].message.images;
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.COVA_API_KEY,
  baseURL: "https://gateway.corevalue.dev/v1",
});

const response = await client.responses.create({
  model: "google/gemini-3-pro-image-preview",
  input: "Generate an image of a sunset over mountains",
  max_output_tokens: 8192
});

// Access generated images from output
const messageOutput = response.output.find(item => item.type === "message");
const imageContent = messageOutput?.content.find(c => c.type === "output_image");

Configuration

To enable image generation:

  1. Set the model to one that supports image output (currently google/gemini-3-pro-image-preview, also known as Nano Banana Pro)
  2. Optionally configure image_generation to control aspect ratio and size
{
  model: "google/gemini-3-pro-image-preview",
  messages: [...],
  image_generation: {
    aspect_ratio: "16:9",
    image_size: "2K"
  }
}
{
  model: "google/gemini-3-pro-image-preview",
  input: "...",
  image_generation: {
    aspect_ratio: "16:9",
    image_size: "2K"
  }
}

image_generation

ParameterTypeDescription
aspect_ratiostringImage aspect ratio (e.g., "16:9", "1:1", "9:16")
image_sizestringImage resolution (e.g., "2K", "1K")

The image_generation field is optional. If omitted, the model uses default settings. However, if you specify image_generation, both aspect_ratio and image_size are required.


Handling Responses

Chat Completions

When streaming, images arrive in chunks via the images delta field:

// Image chunks arrive in delta
{
  "choices": [{
    "delta": {
      "images": [{
        "type": "image_url",
        "image_url": {
          "url": "data:image/png;base64,iVBORw0KGgo..."
        }
      }]
    }
  }]
}

Non-streaming responses include images in the message:

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "model": "gemini-3-pro-image-preview",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "Here's the image you requested:",
      "images": [{
        "type": "image_url",
        "image_url": {
          "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
        }
      }]
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 12,
    "completion_tokens": 1024,
    "total_tokens": 1036
  }
}

Responses API

Streaming events follow the Responses API format:

// Content part added for image
{
  "type": "response.content_part.added",
  "item_id": "msg_abc123",
  "output_index": 0,
  "content_index": 0,
  "part": {
    "type": "output_image",
    "image_url": ""
  }
}

// Content part done with full image
{
  "type": "response.content_part.done",
  "item_id": "msg_abc123",
  "output_index": 0,
  "content_index": 0,
  "part": {
    "type": "output_image",
    "image_url": "data:image/png;base64,iVBORw0KGgo..."
  }
}
{
  "id": "resp_abc123",
  "object": "response",
  "status": "completed",
  "model": "gemini-3-pro-image-preview",
  "output": [
    {
      "id": "msg_abc123",
      "type": "message",
      "status": "completed",
      "role": "assistant",
      "content": [
        {
          "type": "output_text",
          "text": "Here's the image you requested:"
        },
        {
          "type": "output_image",
          "image_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
        }
      ]
    }
  ],
  "usage": {
    "input_tokens": 12,
    "output_tokens": 1024
  }
}

Supported Models

ModelProvider RouteDescription
google/gemini-3-pro-image-previewGoogle AI StudioNano Banana Pro - Google's multimodal model with native image generation

On this page