Skip to main content
hidream avatar

HiDream I1 Full Image-to-Image API

hidream/i1-full/image-to-image

Transform a source image with a text prompt to restyle or reimagine it, with an adjustable strength that controls how far the result moves from the original.

edit
0.05 per megapixel of image

Model Input

Input

The text prompt describing how to transform the source image.

The source image to transform. Provide a public URL to a JPEG or PNG image.

The size of the generated image. Use a preset string (e.g. 'landscape_16_9') or a custom {width, height} object. When omitted, the output tracks the source image's dimensions; 'square_hd' is a good default when you want a square result.

Min: 0 - Max: 1

Image-to-image denoising strength. Lower values (near 0) keep the output close to the source image; higher values (near 1) allow more transformation toward the prompt.

Additional Settings

Customize your input with more control.

Min: 1 - Max: 4

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

The format of the generated image.

Describe what you do NOT want to appear in the image.

Min: 1 - Max: 50

The number of inference steps to perform. More steps can improve detail at the cost of speed.

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

Min: 0 - Max: 20

The CFG (Classifier Free Guidance) scale. Higher values increase adherence to the prompt.

Safety checker can only be disabled on API call

Optional list of LoRA weights to apply. Each entry references a LoRA path and an optional scale.

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

Model Output

Output

Loading
Generated in 9.982 seconds
Logs (1 lines)

Model Example Requests

Examples

Example output 1Example output 2Example output 3Example output 4

HiDream I1 Full Image-to-Image API

HiDream I1 Full Image-to-Image is a image-to-image AI model by hidream. On ModelRunner it runs through a REST API or via MCP from any AI assistant, at $0.05 per megapixel.

POST https://queue.modelrunner.run/hidream/i1-full/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/hidream/i1-full/image-to-image \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "loras": [],
    "prompt": "the mug reimagined as ornate hand-painted blue Delft porcelain with intricate floral patterns, glossy glaze, museum p…",
    "strength": 0.75,
    "image_url": "https://media.modelrunner.ai/h7TbCWZaTGbpZnPlcghGK.jpeg",
    "num_images": 1,
    "output_format": "jpeg",
    "guidance_scale": 5,
    "negative_prompt": "",
    "num_inference_steps": 40,
    "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/hidream/i1-full/image-to-image/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/hidream/i1-full/image-to-image/requests/$REQUEST_ID" \
  -H "Authorization: Key $MRUN_API_KEY"

JavaScript

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

const result = await modelrunner.subscribe("hidream/i1-full/image-to-image", {
  input: {
    "loras": [],
    "prompt": "the mug reimagined as ornate hand-painted blue Delft porcelain with intricate floral patterns, glossy glaze, museum p…",
    "strength": 0.75,
    "image_url": "https://media.modelrunner.ai/h7TbCWZaTGbpZnPlcghGK.jpeg",
    "num_images": 1,
    "output_format": "jpeg",
    "guidance_scale": 5,
    "negative_prompt": "",
    "num_inference_steps": 40,
    "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/hidream/i1-full/image-to-image",
    headers=headers,
    json={
      "loras": [],
      "prompt": "the mug reimagined as ornate hand-painted blue Delft porcelain with intricate floral patterns, glossy glaze, museum p…",
      "strength": 0.75,
      "image_url": "https://media.modelrunner.ai/h7TbCWZaTGbpZnPlcghGK.jpeg",
      "num_images": 1,
      "output_format": "jpeg",
      "guidance_scale": 5,
      "negative_prompt": "",
      "num_inference_steps": 40,
      "enable_safety_checker": true
    },
).json()

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

Input parameters

NameTypeRequiredDescription
promptstringyesThe text prompt describing how to transform the source image.
image_urlstring (uri)yesThe source image to transform. Provide a public URL to a JPEG or PNG image.
image_sizeenumnoThe size of the generated image. Use a preset string (e.g. 'landscape_16_9') or a custom {width, height} object. When omitted, the output tracks the source image's dimensions; 'square_hd' is a good default when you want a square result.
strengthnumbernoImage-to-image denoising strength. Lower values (near 0) keep the output close to the source image; higher values (near 1) allow more transformation toward the prompt. Default: 0.75.
num_imagesintegernoThe number of images to generate. Each generated image is billed. Default: 1.
output_formatenumnoThe format of the generated image. Default: "jpeg".
negative_promptstringnoDescribe what you do NOT want to appear in the image. Default: "".
num_inference_stepsintegernoThe number of inference steps to perform. More steps can improve detail at the cost of speed. Default: 50.
seedintegernoThe same seed and the same prompt given to the same version of the model will output the same image every time.
guidance_scalenumbernoThe CFG (Classifier Free Guidance) scale. Higher values increase adherence to the prompt. Default: 5.
enable_safety_checkerbooleannoIf set to true, the safety checker will be enabled. Default: true.
lorasarraynoOptional list of LoRA weights to apply. Each entry references a LoRA path and an optional scale. Default: [].

Machine-readable: OpenAPI schema · llms.txt

Use HiDream I1 Full Image-to-Image from Claude & Cursor (MCP)

Point Claude Code, Claude Desktop, Cursor, or any MCP client at the ModelRunner MCP server and HiDream I1 Full 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 hidream/i1-full/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 hidream/i1-full/image-to-image on ModelRunner to generate image”. MCP setup guide.

Model Details

Model Details

HiDream I1 Full Image-to-Image transforms an existing image with a text prompt. Give it a source image and a description of the change you want, and it re-renders the image toward that prompt while preserving the original composition and layout. It is the full-quality variant of HiDream.ai's 17-billion-parameter open image foundation model, running at the maximum step count for detailed, coherent results. A `strength` control sets how far the output moves from the source: low values make subtle edits, high values allow a near-complete reinterpretation.

## Best for - Restyling a photo into a new art style, mood, or lighting from a prompt - Reimagining a scene (night, seasons, weather) while keeping its structure - Generating prompt-guided variations of a reference image - Turning a rough or plain image into a polished, detailed render - Applying a custom LoRA to steer style across an existing image

## Choose another model when - You have no source image and want to generate from scratch - use the text-to-image variant `hidream/i1-full` - You need precise, masked local edits or clean object removal - use a dedicated inpainting or editing model - You need the fastest, cheapest draft - use a speed-optimized image model like `hidream/i1-fast` - You need video - use an image-to-video model

## Tips - Set `strength` (0-1, default 0.75): lower stays closer to the source, higher transforms more toward the prompt - Omit `image_size` to keep the source image's dimensions; pass a preset (`square_hd`, `landscape_16_9`, ...) or a custom `{width, height}` object to resize. Billing is per output megapixel, so larger images cost more - Write specific prompts and use `negative_prompt` to exclude unwanted elements - Each image in `num_images` (1-4) is billed separately

## Advanced Configuration - `loras`: attach one or more LoRA weights to bias style or subject. Each entry takes a `path` (a URL or HuggingFace path to the weights) and an optional `scale` (0-4, default 1); configured via the API.

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

const result = await modelrunner.subscribe("hidream/i1-full/image-to-image", { input: { prompt: "the same cobblestone street at night, glowing paper lanterns overhead, cinematic mood", image_url: "https://media.modelrunner.ai/aeMJZC3JHLbOXs7PooU6f.jpeg", strength: 0.75, output_format: "jpeg", }, }); ```