Google Imagen4

Google Imagen4

Playground

Try it on WaveSpeedAI!

Google’s Imagen 4 is the flagship text-to-image model for generating images from text prompts with strong fidelity and creative control. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

The Imagen 4 series represents Google’s latest generation of high-quality text-to-image models, offering unparalleled fidelity, style flexibility, and advanced text rendering. Whether you need cinematic photorealism, stylized artwork, or crisp typography, Imagen 4 is designed to deliver.


Why it looks great

  • Fine detail rendering: Superior clarity for intricate elements like fabrics, water droplets, and animal fur.
  • Style versatility: Excels in both photorealistic and abstract artistic styles.
  • Resolution flexibility: Supports multiple aspect ratios with outputs up to 2K resolution.
  • Typography improvements: Dramatically better at rendering text on greeting cards, posters, and comics.
  • Fast variant: The upcoming Imagen 4 Fast delivers up to 10× faster generation compared to Imagen 3.

Limits and Performance

  • Max resolution per job: up to 2048 × 2048 pixels (2K)
  • Aspect ratio options: 1:1, 16:9, 9:16, 4:3, 3:4
  • Max images per run: up to 4 images per prompt
  • Processing speed: ~5–12 seconds per image (Ultra variant may take longer; Fast is optimized for speed)
  • Input prompt: supports multi-line, richly detailed descriptions

Pricing

Just $0.038 per image!!!

Billing Rule

You can generate up to 4 images at once, billed individually.


How to Use

  1. Enter your prompt (detailed description of the scene, style, or text).
  2. Select aspect_ratio (e.g., 1:1 for square, 16:9 for widescreen).
  3. Choose resolution (1K or 2K).
  4. Set num_images (up to 4).
  5. (Optional) Add a negative_prompt to exclude unwanted details.
  6. (Optional) Fix a seed for reproducibility across runs.
  7. Click Run → pay per image → preview and download results.

Pro tips for best quality

  • Use rich, descriptive prompts with lighting, mood, and style details.
  • For typography, specify exact text and style (handwritten, bold, comic font, etc.).
  • Use Ultra for maximum fidelity, Fast for speed and iteration.
  • Lock a seed if you want consistent subject appearance across multiple images.

More Versions


Note

If you encounter the error message ‘Content is filtered due to unknown reasons,’ please review your prompt input, modify your prompt, and regenerate.

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",
  "resolution": "1k",
  "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/imagen4" \
  -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.
resolutionstringNo1k1k, 2kThe target resolution 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.