Skip to main content
ideogram avatar

Ideogram V4 Image-to-Image API

ideogram/ideogram-v4/image-to-image

Transform a reference image with a text prompt — restyle, edit, or reinterpret it while rendering accurate, legible in-image text for logos, posters, and signage.

edit
0.06 per megapixel of image

Model Input

Input

URL of the input image to transform. The output keeps the composition of this image, reinterpreted according to the prompt.

The text prompt describing how to transform the image. Put any words you want rendered inside the image in quotes.

The size of the generated image. Use 'auto' to match the input image, a preset string (e.g. 'landscape_16_9'), or a custom {width, height} object.

Min: 0 - Max: 1

How much to transform the input image, from 0 to 1. Higher values follow the prompt more and drift further from the reference; lower values stay closer to the input.

Additional Settings

Customize your input with more control.

Magic Prompt: automatically enriches the prompt before generation. None uses the prompt as written; Large applies the most enrichment for the highest-quality result.

The speed/quality/cost tradeoff. TURBO is fastest and cheapest, BALANCED is the default, QUALITY is best but slowest and most expensive. Affects both speed and cost.

The acceleration level to use.

The same seed and the same prompt given to the same version of the model will output the same image every time.

Safety checker can only be disabled on API call

The format of the generated image.

Min: 1 - Max: 4

The number of images to generate. Each generated image is billed.

You need to be logged in to run this model and view results.
Log in

Model Output

Output

Loading
Generated in 13.679 seconds
Logs (1 lines)

Model Example Requests

Examples

Example output 1Example output 2

Ideogram V4 Image-to-Image API

Ideogram V4 Image-to-Image is a image-to-image AI model by ideogram. On ModelRunner it runs through a REST API or via MCP from any AI assistant, at $0.06 per megapixel.

POST https://queue.modelrunner.run/ideogram/ideogram-v4/image-to-image

cURL

# Submit a request to the queue. Input fields go at the top level of the
# body. The optional reserved "metadata" object holds your own flat string
# tags — stored on the request, never sent to the model; filter later with
# GET https://queue.modelrunner.run/requests?metadata=<url-encoded JSON>.
curl -X POST https://queue.modelrunner.run/ideogram/ideogram-v4/image-to-image \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Transform the scene into a neon-lit cyberpunk shrine: the antique clock rebuilt from chrome, glass and glowing hologr…",
    "strength": 0.7,
    "image_url": "https://media.modelrunner.ai/nDaJs47xN2swuGDYlMDS4.jpeg",
    "image_size": "auto",
    "num_images": 1,
    "acceleration": "none",
    "output_format": "jpeg",
    "expansion_model": "Medium",
    "rendering_speed": "BALANCED",
    "enable_safety_checker": true,
    "metadata": {
      "project": "my-project"
    }
  }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }

# Poll status_url until "COMPLETED", then fetch the result
curl "https://queue.modelrunner.run/ideogram/ideogram-v4/image-to-image/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/ideogram/ideogram-v4/image-to-image/requests/$REQUEST_ID" \
  -H "Authorization: Key $MRUN_API_KEY"

JavaScript

import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("ideogram/ideogram-v4/image-to-image", {
  input: {
    "prompt": "Transform the scene into a neon-lit cyberpunk shrine: the antique clock rebuilt from chrome, glass and glowing hologr…",
    "strength": 0.7,
    "image_url": "https://media.modelrunner.ai/nDaJs47xN2swuGDYlMDS4.jpeg",
    "image_size": "auto",
    "num_images": 1,
    "acceleration": "none",
    "output_format": "jpeg",
    "expansion_model": "Medium",
    "rendering_speed": "BALANCED",
    "enable_safety_checker": true
  },
});
console.log(result);

Python

import os
import requests

headers = {"Authorization": f"Key {os.environ['MRUN_API_KEY']}"}

submitted = requests.post(
    "https://queue.modelrunner.run/ideogram/ideogram-v4/image-to-image",
    headers=headers,
    json={
      "prompt": "Transform the scene into a neon-lit cyberpunk shrine: the antique clock rebuilt from chrome, glass and glowing hologr…",
      "strength": 0.7,
      "image_url": "https://media.modelrunner.ai/nDaJs47xN2swuGDYlMDS4.jpeg",
      "image_size": "auto",
      "num_images": 1,
      "acceleration": "none",
      "output_format": "jpeg",
      "expansion_model": "Medium",
      "rendering_speed": "BALANCED",
      "enable_safety_checker": true
    },
).json()

# Poll submitted["status_url"] until "COMPLETED", then:
result = requests.get(submitted["response_url"], headers=headers).json()

Input parameters

NameTypeRequiredDescription
image_urlstring (uri)yesURL of the input image to transform. The output keeps the composition of this image, reinterpreted according to the prompt.
promptstringyesThe text prompt describing how to transform the image. Put any words you want rendered inside the image in quotes.
image_sizeenumnoThe size of the generated image. Use 'auto' to match the input image, a preset string (e.g. 'landscape_16_9'), or a custom {width, height} object. Default: "auto".
strengthnumbernoHow much to transform the input image, from 0 to 1. Higher values follow the prompt more and drift further from the reference; lower values stay closer to the input. Default: 0.8.
expansion_modelenumnoMagic Prompt: automatically enriches the prompt before generation. None uses the prompt as written; Large applies the most enrichment for the highest-quality result. Default: "Medium".
rendering_speedenumnoThe speed/quality/cost tradeoff. TURBO is fastest and cheapest, BALANCED is the default, QUALITY is best but slowest and most expensive. Affects both speed and cost. Default: "BALANCED".
accelerationenumnoThe acceleration level to use. Default: "none".
seedintegernoThe same seed and the same prompt given to the same version of the model will output the same image every time.
enable_safety_checkerbooleannoIf set to true, the safety checker will be enabled. Default: true.
output_formatenumnoThe format of the generated image. Default: "jpeg".
num_imagesintegernoThe number of images to generate. Each generated image is billed. Default: 1.

Machine-readable: OpenAPI schema · llms.txt

Use Ideogram V4 Image-to-Image from Claude & Cursor (MCP)

Point Claude Code, Claude Desktop, Cursor, or any MCP client at the ModelRunner MCP server and Ideogram V4 Image-to-Image becomes a tool your assistant can call directly — it authorizes via OAuth (no API key in config) and runs this model with the run_model tool using the endpoint ideogram/ideogram-v4/image-to-image.

MCP client config (Claude Desktop, Cursor)

{
  "mcpServers": {
    "modelrunner": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.modelrunner.run/mcp"]
    }
  }
}

Claude Code

claude mcp add --transport http modelrunner https://mcp.modelrunner.run/mcp

Then ask your assistant, for example: “Run ideogram/ideogram-v4/image-to-image on ModelRunner to generate image”. MCP setup guide.

Model Details

Model Details

Ideogram V4 Image-to-Image takes a reference image plus a text prompt and produces a new image that restyles, edits, or reinterprets the original while keeping its composition recognizable. Feed it a photo, sketch, or finished design and a prompt describing the change — a new art style, a different mood, corrected wording — and it returns a reworked version. Its standout strength, shared across the Ideogram V4 family, is rendering accurate, legible text inside the image: ask for a redesigned poster, a product label, or a sign with real words and the spelling and typography stay coherent.

## Best for - Restyling or recoloring a photo (e.g. a snapshot into a watercolor or vintage-poster look) - Changing the mood or setting of an image while keeping its layout - Adding or correcting on-image text — menus, covers, ads, packaging, signage - Pushing a rough sketch or comp toward a finished marketing visual

## Choose another model when - You want to generate an image from a text prompt with no source image — use the text-to-image variant `ideogram/ideogram-v4` - You need to change only a masked region and leave the rest untouched — use a generative-fill / inpainting model

## Tips - Put any words you want rendered inside the image in quotes in your prompt, e.g. a sign reading `"GRAND OPENING"`. - The `strength` knob trades fidelity-to-reference against prompt influence: low values (e.g. `0.3`) stay close to the original composition for a light restyle; high values (toward `1.0`) follow the prompt more aggressively and drift further from the input. Start around the `0.8` default and lower it if the result strays too far. - Provide a clear, high-resolution reference image for the cleanest results.

## Advanced Configuration

### strength How much to transform the input image, from `0` to `1` (default `0.8`). Higher values follow the prompt and drift further from the reference; lower values preserve the original composition and detail. Lower it for a subtle restyle, raise it when the prompt should dominate.

### rendering_speed The speed/quality/cost tradeoff: `TURBO` (fastest, cheapest), `BALANCED` (default), `QUALITY` (best but slowest and most expensive). It affects both generation time and per-image cost — pick `TURBO` for drafts, `QUALITY` for final hero images.

### expansion_model Ideogram's "Magic Prompt", which enriches your prompt with extra descriptive detail before generation. Options are `None`, `Medium` (default), and `Large` — `Large` applies the most enrichment, `None` uses your prompt exactly as written. Use a larger value for short, sparse prompts and `None` when you want literal adherence.

To run via the ModelRunner JavaScript client: ```js import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("ideogram/ideogram-v4/image-to-image", { input: { image_url: "https://media.modelrunner.ai/example-input.jpg", prompt: "restyle this as a vintage travel poster that reads \"VISIT MARS\"", strength: 0.7, rendering_speed: "QUALITY", }, }); ```