Google Gemini 3 Pro Image Edit API Documentation
Playground
Try it on WaveSpeedAI!Google’s Gemini 3.0 Pro (Gemini 3.0 Pro Image) Edit enables image editing and text-to-image generation with 4K-capable output for mobile devices. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
Gemini 3.0 Pro Image Edit (Gemini 3.0 Pro Image) is Google’s advanced AI-powered image editing and generation model, designed to make visual transformation as intuitive as describing it in words. Built on Google’s cutting-edge computer vision and generative research, it combines precision, flexibility, and semantic awareness for professional-grade editing.
🌟 Why it stands out
- Natural Language Editing Modify images using simple text instructions — no masking, layering, or manual tools required.
- Context-Aware Understanding Accurately interprets scene structure, spatial relationships, and object semantics for realistic results.
- Style and Tone Preservation Keeps lighting, shadows, and texture consistent with the original image while applying changes seamlessly.
- High Precision Control Excels at fine-grained edits such as color adjustments, object replacement, or composition shifts with minimal distortion.
- Creative Versatility Suitable for concept art, photography, advertising design, and everyday content creation.
⚙️ How to use
-
Input: existing image + text prompt
-
Output: edited image (JPEG/PNG)
-
Size: 1:1, 4:3, 16:9, 21:9, and so on.
-
Supports style transfer, relighting, background replacement, and object modification
-
Works with natural prompts like:
-
“Replace the cloudy sky with a clear sunset.”
-
“Add soft studio lighting and a modern background.”
-
“Turn the model’s outfit into a formal business suit.”
💰 Pricing
| Resolution | Cost per image |
|---|---|
| 1k | $0.14 |
| 2k | $0.14 |
| 4k | $0.24 |
💡 Best Use Cases
- Marketing & Branding — Update campaign visuals without reshooting.
- Product Photography — Adjust materials, lighting, or layout instantly.
- Social Media & Content Creation — Generate multiple variations with minimal effort.
- Artistic Design — Experiment with colors, styles, and compositions effortlessly.
📝 Notes
Please ensure your prompts comply with Google’s Safety Guidelines. If an error occurs, review your prompt for restricted content, adjust it, and try again.
🌏 Where gemini-3-pro-image Edit Fits In
Compare gemini-3-pro-image Edit with:
-
FLUX.1 [dev] – Nano Banana Pro Edit focuses on semantic understanding and layout-aware editing via Gemini 3’s reasoning, making it ideal for complex, text-driven transformations without manual masking. FLUX.1 [dev] emphasizes maximum resolution control and fine detail preservation for highly technical workflows.
-
Stable Diffusion 3.5 – Nano Banana Pro Edit leverages Google’s production-scale multimodal training and advanced reasoning for context-aware edits that understand object relationships and composition. Stable Diffusion 3.5 offers open-source flexibility for custom fine-tuning and local deployment in highly specialized pipelines.
-
Gpt-Image-1 (OpenAI) – Nano Banana Pro Edit emphasizes layout control, multilingual on-image text, and tightly directed edits for design and marketing workflows, while openai/gpt-image-1 shines as a general-purpose creative generator with strong style variety and fast, natural-language image synthesis for broad consumer and developer use.
-
Original Nano Banana (Gemini 2.5 Flash Image) – Nano Banana Pro Edit trades pure speed for quality, delivering better reasoning, sharper text, improved character consistency, and richer camera controls at a higher unit cost. Original Nano Banana remains ideal for rapid, low-latency iterations and lightweight edits.
-
Seedream – Nano Banana Pro Edit is tuned for reliable typography, photo-real edits, and mixed media layouts, while SeeDream excels at fast, stylized T2I generation with strong anime and illustration aesthetics, making it a good choice for heavily stylized concept art.
-
Qwen Image 2509 – Nano Banana Pro Edit focuses on high-fidelity 4K outputs and multilingual on-image design control, whereas Qwen Image shines in open-source ecosystems and document-style rendering, offering flexible integration for developer-centric and research workflows.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
set -euo pipefail
export WAVESPEED_API_KEY="your-api-key"
REQUEST_BODY=$(cat <<'JSON'
{
"prompt": "A cinematic ocean wave at sunrise, highly detailed",
"images": [
"https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
],
"aspect_ratio": "1:1",
"resolution": "1k",
"output_format": "png"
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/google/gemini-3-pro-image/edit" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
-H "Content-Type: application/json" \
-d "${REQUEST_BODY}")
TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi
# 2. Poll until the prediction finishes.
while true; do
RESPONSE=$(curl --silent --show-error --fail-with-body \
"${RESULT_URL}" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}")
RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')
case "${STATUS}" in
completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
failed|cancelled|timeout) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
created|processing) sleep 2 ;;
*) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
esac
doneParameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| prompt | string | Yes | - | The positive prompt for the generation. | |
| images | array<string> | Yes | - | 0 ~ 10 items | List of URLs of input images for editing. The maximum number of images is 10. |
| aspect_ratio | string | No | - | 1:1, 3:2, 2:3, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 | The aspect ratio of the generated media. |
| resolution | string | No | 1k | 1k, 2k, 4k | The resolution of the output image. |
| output_format | string | No | png | png, jpeg | The format of the output image. |
| enable_sync_mode | boolean | No | false | - | If set to `true`, the request attempts to wait for the generated result and return outputs in the same response. If the result is not ready within the sync wait window, the API can return a timeout body while the task continues processing. This option is only available via the API and is supported only by some models. |
| enable_base64_output | boolean | No | false | - | If set to `true`, the prediction's `output` strings are returned as **naked base64** (no `data:<mime>;base64,` prefix). When `false` (default), outputs are returned as URLs pointing to our CDN. |
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 | Output values, usually URL strings; some models return text strings or structured result objects (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 |
| data.model | string | Model ID used for the prediction |
| data.outputs | array<string | object> | Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model. |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to poll for the prediction result |
| data.status | string | Status: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created |
| 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 |