Google Imagen3 API Documentation

Google Imagen3 API Documentation

Playground

Try it on WaveSpeedAI!

Imagen3 is Google’s highest-quality text-to-image model, generating highly detailed, beautifully lit and photoreal images from text prompts. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Generate premium images with Google Imagen 3 — Google’s most advanced text-to-image model. Renowned for exceptional photorealism, nuanced understanding of prompts, and superior detail rendering, Imagen 3 delivers the highest quality output for professional creative work.

Looking for faster generation? Try Google Imagen 3 Fast for speed-optimized output at a lower price.

Why It Looks Great

  • Google’s best: The flagship Imagen model with maximum quality and detail.
  • Superior photorealism: Exceptional at lifelike scenes, portraits, and natural imagery.
  • Nuanced understanding: Accurately interprets complex, detailed prompts.
  • Batch support: Generate up to 4 images per request.
  • Negative prompts: Exclude unwanted elements for precise control.
  • Flexible aspect ratios: Multiple format options for any use case.
  • Prompt Enhancer: Built-in tool to refine your descriptions automatically.
  • Reproducible results: Use the seed parameter to recreate exact outputs.

Parameters

ParameterRequiredDescription
promptYesText description of the image you want to generate.
aspect_ratioNoOutput format: 16:9, 9:16, 1:1, 4:3, 3:4, etc. Default: 16:9.
num_imagesNoNumber of images to generate (1-4). Default: 1.
negative_promptNoElements to avoid in the generated image.
seedNoRandom seed for reproducibility. Leave empty for random.

How to Use

  1. Write your prompt — describe the image you want to create in detail.
  2. Use Prompt Enhancer (optional) — click to automatically enrich your description.
  3. Set aspect ratio — choose the format that fits your needs.
  4. Choose number of images — generate 1-4 variations at once.
  5. Add negative prompt (optional) — specify elements to exclude.
  6. Set seed (optional) — for reproducible results.
  7. Run — click the button to generate.
  8. Download — preview and save your images.

Pricing

Flat rate per image generated.

OutputCost
Per image$0.038
4 images (max batch)$0.152

Best Use Cases

  • Professional Photography — Generate photorealistic images for commercial use.
  • Marketing & Advertising — Create high-quality visuals for campaigns.
  • Product Visualization — Produce premium product and lifestyle imagery.
  • Editorial Content — Generate publication-quality illustrations and photos.
  • Final Deliverables — Premium output suitable for client-facing work.

Example Prompts

  • “Professional portrait of a chef in a modern kitchen, natural lighting, genuine smile, editorial quality”
  • “Luxury watch product shot on marble surface, dramatic lighting, reflection details”
  • “Family picnic in a sun-dappled park, candid moment, warm afternoon light, lifestyle photography”
  • “Architectural interior of a minimalist Scandinavian living room, soft natural light, magazine quality”
  • “Close-up of fresh sushi platter, restaurant lighting, appetizing presentation, food photography”

Model Comparison

ModelCostSpeedBest For
Imagen 3$0.038StandardMaximum quality, final deliverables
Imagen 3 Fast$0.018FastRapid iteration, testing, high-volume

Pro Tips for Best Results

  • Use Imagen 3 for final deliverables where quality is paramount.
  • Include photography terms: “editorial quality”, “magazine quality”, “professional lighting”.
  • Batch generate (num_images: 4) to get variations and pick the best.
  • Test concepts with Imagen 3 Fast, then generate finals with standard Imagen 3.
  • Negative prompts help avoid: “blur”, “artifacts”, “distortion”, “watermark”.
  • Detailed prompts yield better results — describe lighting, mood, and style.

Notes

  • Maximum 4 images per generation request.
  • Imagen 3 delivers Google’s highest quality image generation.
  • Processing takes longer than Fast mode but produces superior results.
  • Ideal for professional and commercial creative work.

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",
  "aspect_ratio": "1:1",
  "num_images": 1
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/google/imagen3" \
  -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
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-The positive prompt for the generation.
aspect_ratiostringNo1:11:1, 16:9, 9:16, 4:3, 3:4The aspect ratio of the generated media.
num_imagesintegerNo11 ~ 4The number of images to generate.
negative_promptstringNo-The negative prompt for the generation.
seedintegerNo--The random seed to use for the generation.
enable_base64_outputbooleanNofalse-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

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<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.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.