# Gemini-3-pro-image-preview returning 400 INVALID\_ARGUMENT since ~11:10 UTC Feb 13

**URL:** <https://discuss.ai.google.dev/t/gemini-3-pro-image-preview-returning-400-invalid-argument-since-11-10-utc-feb-13/122920>\
**Category:** Gemini API\
**Tags:** gemini-3\
**Created:** [February 13, 2026, 12:34pm UTC](https://discuss.ai.google.dev/t/gemini-3-pro-image-preview-returning-400-invalid-argument-since-11-10-utc-feb-13/122920 "2026-02-13T12:34:54Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![xsyjeon](https://d1dlmcr85iqnpo.cloudfront.net/user_avatar/discuss.ai.google.dev/xsyjeon/32/93041_2.png) [@xsyjeon](https://discuss.ai.google.dev/u/xsyjeon)\
**Post date:** [February 13, 2026, 12:34pm UTC](https://discuss.ai.google.dev/t/gemini-3-pro-image-preview-returning-400-invalid-argument-since-11-10-utc-feb-13/122920/1 "2026-02-13T12:34:54Z")

</div>

**Environment:**

- Python SDK: google-genai ^1.52.0

- Endpoint: [generativelanguage.googleapis.com/v1beta](http://generativelanguage.googleapis.com/v1beta)

- Model: gemini-3-pro-image-preview

**Issue:**

All image generation requests (both text-to-image and image editing with reference images) to gemini-3-pro-image-preview started returning 400 INVALID\_ARGUMENT around 11:10 UTC on February 13, 2026. Before that, requests were working (last successful at 08:04 UTC, same parameters).

**Error:**

`{"error": {"code": 400, "message": "Request contains an invalid argument.", "status": "INVALID_ARGUMENT"}}`

**What**  **we’ve**  **confirmed:**

- The same raw request via curl to the REST API **succeeds** (with responseModalities: [“TEXT”, “IMAGE”] and imageConfig: {aspectRatio: “16:9”, imageSize: “2K”})

- The Python SDK (google-genai) with the same parameters returns 400

- No code changes between working and broken states

- Affects ALL requests: text-to-image (no images), image editing (2-5 reference images)

- Same API key, same parameters, same prompts that worked at 08:04 UTC

**Request**  **config** **(Python** **SDK):**

```python
  config = types.GenerateContentConfig(

      response_modalities=["TEXT", "IMAGE"],

      image_config=types.ImageConfig(

          aspect_ratio="16:9",

          image_size="2K"

      )

  )

```

```python
  response = client.models.generate_content(

      model="gemini-3-pro-image-preview",

      contents=prompt,

      config=config

  )

```

**Question:**

Since the raw REST API works but the Python SDK doesn’t, is the SDK injecting additional parameters (e.g., thinking config) that are incompatible with image generation models? Was there a server-side change around 11:00 UTC today that tightened parameter validation?

---

<div class="post-metadata">

**Author:** ![xsyjeon](https://d1dlmcr85iqnpo.cloudfront.net/user_avatar/discuss.ai.google.dev/xsyjeon/32/93041_2.png) [@xsyjeon](https://discuss.ai.google.dev/u/xsyjeon)\
**Post date:** [February 13, 2026, 1:06pm UTC](https://discuss.ai.google.dev/t/gemini-3-pro-image-preview-returning-400-invalid-argument-since-11-10-utc-feb-13/122920/2 "2026-02-13T13:06:10Z")

</div>

**Reproduction**  **—**  **same**  **code,**  **different**  **results:**

Running the exact same request 5 times in a loop:

from google import genai

from google.genai import types

client = genai.Client(api\_key=“…”)

config = types.GenerateContentConfig(

```
  response_modalities=\["TEXT", "IMAGE"\],

  image_config=types.ImageConfig(aspect_ratio="16:9", image_size="2K")

```

)

response = client.models.generate\_content(

```
  model="gemini-3-pro-image-preview",

  contents="A red cat on a fence",

  config=config

```

)

Results: SUCCESS, **FAILED** **(400)**, SUCCESS, SUCCESS, SUCCESS

Same API key, same parameters, same prompt, same SDK version — 1 out of 5 fails randomly.

**What**  **we’ve**  **confirmed:**

- The identical payload via curl to the REST API succeeds consistently

- The Python SDK sends the exact same JSON body (verified by intercepting httpx.Client.send)

- Both text-to-image (no reference images) and image editing (with reference images) are affected

- No code changes between working and broken states

- Over 50 failed requests logged between 08:00–12:30 UTC, all with the same generic error message

- The error message provides no detail on which argument is invalid

**Impact:**

In production, this caused a ~100% failure rate for all gemini-3-pro-image-preview requests for over 2 hours (11:10–12:30 UTC), affecting both text-to-image and image editing workflows.

**Request:**

Could the team investigate what changed server-side around 08:00–11:00 UTC on Feb 13? The intermittent nature of the 400 on identical requests suggests a backend validation issue rather than an actual invalid argument. More detailed error messages (specifying which argument is invalid) would also help greatly with debugging.

---

<div class="post-metadata">

**Author:** ![Logan\_Kilpatrick](https://d1dlmcr85iqnpo.cloudfront.net/user_avatar/discuss.ai.google.dev/logan_kilpatrick/32/129_2.png) [@Logan\_Kilpatrick](https://discuss.ai.google.dev/u/Logan_Kilpatrick)\
**Post date:** [February 13, 2026, 5:59pm UTC](https://discuss.ai.google.dev/t/gemini-3-pro-image-preview-returning-400-invalid-argument-since-11-10-utc-feb-13/122920/3 "2026-02-13T17:59:10Z")

</div>

Flagged to the team!

---

<div class="post-metadata">

**Author:** ![phillip\_alvelda](https://d1dlmcr85iqnpo.cloudfront.net/user_avatar/discuss.ai.google.dev/phillip_alvelda/32/93199_2.png) [@phillip\_alvelda](https://discuss.ai.google.dev/u/phillip_alvelda)\
**Post date:** [February 16, 2026, 8:27pm UTC](https://discuss.ai.google.dev/t/gemini-3-pro-image-preview-returning-400-invalid-argument-since-11-10-utc-feb-13/122920/4 "2026-02-16T20:27:47Z")

</div>

**Related issue: “Quota tier: Unavailable” blocking `gemini-3-pro-image-preview` entirely**

**Environment:**

- Model: `gemini-3-pro-image-preview`
- API Key: from Google AI Studio
- Billing: Active ($64.75 spent last 28 days)

**Issue:**  
Google AI Studio shows **“Quota tier: Unavailable”** for `gemini-3-pro-image-preview`. All requests return `429 RESOURCE_EXHAUSTED` with:

```auto
ERROR:quota_project_id: Image output modality is not allowed...

```

This is different from the intermittent 400 INVALID\_ARGUMENT above — our requests fail 100% with quota errors despite having active billing and successful usage of other Gemini models (Flash 2.0, etc.).

**What we’ve confirmed:**

- Billing is active and verified
- Other Gemini models work fine (Gemini 2.5 Flash, etc.)
- The quota console shows “Unavailable” for the image preview tier — not 0, not a number, literally “Unavailable”
- Cannot increase quota through Cloud Console (no request button available)

**Impact:**  
All image generation via `gemini-3-pro-image-preview` blocked. Production workflows down.

**Request:**  
Could the team check if there’s a tier/quota issue affecting projects or API keys for the experimental image models? The “Unavailable” status in AI Studio suggests this may be a backend configuration issue rather than usage limits.

Thanks for investigating! @Logan_Kilpatrick

---

<div class="post-metadata">

**Author:** ![Daniel\_Bracken](https://d1dlmcr85iqnpo.cloudfront.net/user_avatar/discuss.ai.google.dev/daniel_bracken/32/100201_2.png) [@Daniel\_Bracken](https://discuss.ai.google.dev/u/Daniel_Bracken)\
**Post date:** [March 3, 2026, 3:23pm UTC](https://discuss.ai.google.dev/t/gemini-3-pro-image-preview-returning-400-invalid-argument-since-11-10-utc-feb-13/122920/5 "2026-03-03T15:23:36Z")

</div>

@Logan_Kilpatrick We’re experiencing the same issue as outlined in great detail by @xsyjeon . Are there any updates the team is able to share regarding this issue? We have since transitioned to 3.1 Flash Image Preview and encounter the same problem.

---

<div class="post-metadata">

**Author:** ![Nackos](https://d1dlmcr85iqnpo.cloudfront.net/user_avatar/discuss.ai.google.dev/nackos/32/31930_2.png) [@Nackos](https://discuss.ai.google.dev/u/Nackos)\
**Post date:** [March 26, 2026, 7:51am UTC](https://discuss.ai.google.dev/t/gemini-3-pro-image-preview-returning-400-invalid-argument-since-11-10-utc-feb-13/122920/6 "2026-03-26T07:51:29Z")

</div>

Hello!

Did you guys get any feedback regarding this? Were also experiencing this issue at our side.

Br

Nichlas

---

<div class="post-metadata">

**Author:** ![Lorenzo\_Gentile](https://d1dlmcr85iqnpo.cloudfront.net/user_avatar/discuss.ai.google.dev/lorenzo_gentile/32/118610_2.png) [@Lorenzo\_Gentile](https://discuss.ai.google.dev/u/Lorenzo_Gentile)\
**Post date:** [April 28, 2026, 11:02am UTC](https://discuss.ai.google.dev/t/gemini-3-pro-image-preview-returning-400-invalid-argument-since-11-10-utc-feb-13/122920/7 "2026-04-28T11:02:52Z")

</div>

Adding fresh data on this — issue is still live. Same exact error shape on `gemini-3.1-flash-image-preview` via Vertex AI (`@google/genai` 1.45.0, `responseModalities: ["IMAGE"]`, `imageConfig: { aspectRatio: "16:9", imageSize: "1K" }`):

```json
{"error":{"code":400,"message":"Request contains an invalid argument.","status":"INVALID_ARGUMENT"}}                                                                     

```

I ran a small variance probe — 3 prompts × 5 attempts each, no retries — and got a counterintuitive distribution:

| Prompt | 200 success | 400 INVALID\_ARGUMENT |
| --- | --- | --- |
| **A** — generic clean | 0/5 | **5/5** |
| **B** — single trademark word | 1/5 | 4/5 |
| **C** — multi-trademark loaded | 4/5 | 1/5 |

The exact prompt strings:

**A:**

> A minimalist 3D illustration of a smartphone showing a music playlist interface, blue gradient background, floating music notes, clean modern design

**B:**

> A stylized iPhone displaying a clean playlist interface with album artwork, floating against a soft blue gradient background. Modern minimalist friendly style.

**C:**

> A photorealistic Apple iPhone 15 Pro Max running Spotify Premium with the Disney+ logo visible in the playlist. A MacBook Air on the desk and AirPods Pro nearby.  
> Cinematic studio lighting.

Each was wrapped in a JSON envelope as the text content (~650 chars), e.g.:

```json
{                                                                                                                                                                        
  "task": "generate_image",                                                       
  "output_format": "image/png",              
  "scene": { "description": "<prompt above>", "mood": "...", "style": "..." },                                                                                           
  "critical_overrides": { "aspect_ratio": "16:9 landscape", "background": "..." },                                                                                       
  "color_palette": { "background": "#E0F2FE", "primary": "#3B82F6", "accent": "#F59E0B" },                                                                               
  "technical": { "camera": {...}, "lighting": {...}, "resolution": "2048x1152" }                                                                                         
}                                                                                                                                                                        

```

A few observations that might help narrow it down:

1. **The 400 rate is inversely correlated with prompt complexity** — the simplest generic prompt fails 100%, the most brand-laden succeeds 80%. So it’s not a  
content-policy filter triggering on specific words.

2. **Every 400 returns in 10–13s** consistently. Successful generations take 22–36s. The 400 path is ~3× faster than a real generation attempt — looks like a quick  
reject (routing / preflight / queue) rather than a content evaluation.

3. **The 400 wire body has no `details[]`** — `code` / `message` / `status` only — so callers have nothing to dispatch on or surface to users.

Happy to share the probe script if that’d help.
