Hidream O1 Image Edit
Playground
Try it on WavespeedAI!HiDream-O1-Image (Edit) is a unified, native image-editing model that takes a source image plus a text instruction and produces high-resolution edits up to 2K — no external components required. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
HiDream-O1-Image (Edit)
HiDream-O1-Image is a unified, next-generation image model. The same native model that handles text-to-image also handles prompt-driven image editing and subject-driven personalization — no external adapters, controllers, or pipelines required. Provide an input image and an instruction, and the model edits it while preserving identity, composition, and lighting at resolutions up to roughly 2K (2048×2048).
Why Choose This?
- Unified native model — One model, multiple modes (text-to-image / edit / personalization). Consistent quality across every mode.
- Identity-preserving edits — Keeps the subject, pose, and overall composition stable while applying the requested change.
- High-resolution output — Edits delivered at up to ~2048×2048 with sharp detail and natural lighting.
- Strong instruction following — Faithfully interprets edit instructions (wardrobe, scene tweaks, object swaps, style changes, on-image text).
- Flexible aspect ratios — Custom output dimensions; the model snaps to the closest supported resolution.
- Multiple output formats — JPEG, PNG, or WEBP.
- Reproducibility — Use a fixed
seedto recreate exact results.
Parameters
| Parameter | Required | Description |
|---|---|---|
| prompt | Yes | Text instruction describing the edit you want to make. |
| images | Yes | Source images to edit (public URL or base64 data URI). PNG, JPEG, JPG, or WebP, up to 50MB, aspect ratio between 1:4 and 4:1. |
| size | No | Output image size as WIDTH*HEIGHT (default: 2048*2048). The model snaps to the closest supported resolution. |
| output_format | No | Output format: jpeg, png, or webp (default: jpeg). |
| seed | No | Random seed for reproducible generation. |
| enable_sync_mode | No | API only — wait for the result and return it inline. |
| enable_base64_output | No | API only — return the image as a base64 string instead of a URL. |
How to Use
- Upload your image — drag and drop or paste a publicly accessible URL.
- Write your edit instruction — describe both the change and what to keep (e.g., “Change the jacket to black leather. Keep the person, pose, and background unchanged.”).
- Choose
size(optional) — keep the source aspect ratio or pick a new one. - Set
output_format— JPEG for compact files, PNG for lossless, WEBP for balance. - Set
seed(optional) — pin a number to reproduce the same edit. - Run — submit the request and download the edited image.
Pricing
Flat rate per edit.
| Output | Cost |
|---|---|
| Per image edit | $0.04 |
Best Use Cases
- Wardrobe & accessory edits — Swap clothing color/style, add/remove glasses, hats, jewelry.
- E-commerce variations — Generate multiple colorways or styling options from a hero shot.
- Background & scene tweaks — Replace backgrounds or swap props while keeping the subject pixel-stable.
- Object add / remove / replace — Cleanly modify specific elements without disturbing the rest of the scene.
- Style transfer — Apply a new look while preserving the subject’s identity.
- Marketing iteration — Quickly produce multiple creative variants from one source image.
Prompting Guide
For clean results, specify both the change and what to preserve:
Template:
Keep the same person, pose, and background. Change [target edit]. Keep lighting natural and consistent.
Examples:
- “Keep the same person and pose. Change the outfit to a light gray sweater and add gold thin-rimmed glasses. Keep the background and lighting unchanged.”
- “Keep identity and composition. Replace the jacket with a black leather jacket; keep realistic fabric texture and natural shadows.”
- “Keep the subject unchanged. Remove the object on the table and keep the scene lighting consistent.”
- “Keep the person and pose. Change the background to a sunlit beach at golden hour.”
Pro Tips
- Always state what should stay the same — it dramatically improves identity preservation.
- Reference elements explicitly: “the text on the shirt”, “the background”, “the person on the left”.
- Pin a
seedwhile iterating so you can compare prompt variants against a fixed baseline. - For multi-step edits, prefer sequential single-purpose prompts over one long compound instruction.
- Use
pngfor lossless edits when output will be re-edited downstream.
Notes
- If using a URL for the source image, ensure it is publicly accessible.
- The
enable_base64_outputandenable_sync_modeoptions are only available through the API. - Higher resolutions may slightly increase processing time.
- Ensure prompts comply with content guidelines.
Related Models
- HiDream-O1-Image · Text-to-Image — Same unified model, in text-to-image mode.
- HiDream-E1 Full — Previous-generation prompt-driven image editor.
- HiDream-I1 Full — Previous-generation 17B text-to-image foundation model.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/hidream-o1-image/edit" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"size": "2048*2048",
"output_format": "jpeg",
"enable_sync_mode": false,
"enable_base64_output": false
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| prompt | string | Yes | - | Text prompt for image generation. | |
| images | array | Yes | [] | - | Reference images for image editing or subject-driven personalization. |
| size | string | No | 2048*2048 | 256 ~ 4096 per dimension | Specify the width and height pixel values of the generated image.Total pixel value range: [2560*1440, 4096*4096] |
| output_format | string | No | jpeg | png, jpeg, webp | Output image format. |
| seed | integer | No | - | -1 ~ 2147483647 | |
| enable_sync_mode | boolean | No | false | - | If set to true, the function will wait for the result to be generated and uploaded before returning the response. It allows you to get the result directly in the response. This property is only available through the API. |
| enable_base64_output | boolean | No | false | - | If enabled, the output will be encoded into a BASE64 string instead of a URL. This property is only available through the API. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Array of URLs to the generated content (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | Array of URLs to the generated images. |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |