imagen-4.0-ultra-generate-001 ended Aug 17: the Sume images request
Google shut down three imagen-4.0 ids on Aug 17, 2026. A curl call to POST /v1/images that branches on 200 or 202, with an Idempotency-Key and a catalog check.

Replace the retired call with POST /v1/images, send a model id you read from GET /v1/images/models, and branch on the status code: 200 carries the images, 202 carries a job envelope. Google's deprecations page lists imagen-4.0-generate-001, imagen-4.0-ultra-generate-001 and imagen-4.0-fast-generate-001 as shut down on August 17, 2026, with gemini-nano-banana-2.1 as the named replacement.
What changed on the Google side
Google's page gives one date for all three Imagen 4 ids and one successor. Google lists gemini-nano-banana-2.1 with no shutdown date announced. On Sume the same family is google/nano-banana-2.1 (the bare nano-banana-2.1 also works), and nano-banana-2 is retired and runs as 2.1.
| Retired Google id | Shutdown | Google's replacement | Sume id to try |
|---|---|---|---|
| imagen-4.0-generate-001 | 2026-08-17 | gemini-nano-banana-2.1 | google/nano-banana-2.1 |
| imagen-4.0-ultra-generate-001 | 2026-08-17 | gemini-nano-banana-2.1 | google/nano-banana-2.1 |
| imagen-4.0-fast-generate-001 | 2026-08-17 | gemini-nano-banana-2.1 | google/nano-banana-2.1 |
The request
The script writes the body to out.json and reads the status code. A 202 means the 30-second wait ended or the job went async; poll the status_url in the envelope. The Idempotency-Key makes a retry return the original job.
Sume also lists Imagen 4 Fast and Ultra in its image picker, but I did not check the live catalog from the API. Run GET /v1/images/models and use whatever id it returns instead of trusting a name from a blog.
status=$(curl -s -o out.json -w '%{http_code}' https://api.sume.com/v1/images \
-H "Authorization: Bearer $SUME_API_KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: satchel-hero-0007" \
-d '{"model":"google/nano-banana-2.1","prompt":"studio photo of a leather satchel","aspect_ratio":"1:1"}')
if [ "$status" = 200 ]; then
jq -r '.data[].url' out.json # 200: images are in the body
else
jq -r '.data.status_url' out.json # 202: a job envelope, poll this URL
fiWhere behavior differs
Sume's image route returns hosted URLs, not base64, and token counts in usage are always 0 because images are metered per image. It does not stream (stream: true returns 400) and takes no seed. Read price from the per-model endpoints route before a batch; the swap changes cost as well as quality.
Sources
Related posts
More in Developers
- Is there an API for Instagram First Draft? Sume job for each step
The pages we read describe First Draft as an in-app feature, not an API. Each action maps to a Sume job and price, plus the one step that stays manual.
- Japanese speech to text API: Sume STT with language_code ja
Transcribe Japanese audio with Sume STT: send language_code ja, read word times, and test a sample first. $0.01 per audio minute, 10 minute jobs.
- Java HttpClient: POST /v1/images on Sume with a 40-second timeout
A single-file Java program that calls Sume's image API with java.net.http, branches on 200, 202 and errors, and sets a timeout longer than the 30-second wait.
- Date.now() is milliseconds: the Sume webhook timestamp is seconds
A Node webhook verifier that compares Date.now() to x-sume-webhook-timestamp rejects every delivery. The one-line fix and a four-case test around 300 s.
Written by Sume