I recently migrated from one GCP project to another (both under different billing accounts). After migration, gemini-3-pro-image-preview consistently returns 429 RESOURCE_EXHAUSTED on the new project, while it works perfectly on the old one.
Setup:
- old project:
project1— image generation works fine; - new project:
project2— instant 429 on every request; - both projects use Vertex AI (
vertexai=True) withlocation=global; - authentication: Application Default Credentials (service account);
- SDK: google-genai (Python).
What I’ve verified:
- aiplatform.googleapis.com is enabled on both projects;
- billing is active on the new project;
- the model is recognized (returns 429, not 404);
- regional endpoints (
us-central1,us-east4,europe-west1) return 404 — model is global-only; - other models work fine on the new project: gemini-3-flash-preview (text), gemini-2.5-flash-image (image generation);
- no organization policies blocking AI/ML services (at least I don’t see anything suspicious);
- the quota global_generate_content_requests_per_minute_per_project_per_base_model shows no entry for gemini-3-pro-image-preview on either project, yet it works on the old one.
Minimal reproduction:
from google import genai
from google.genai import types
client = genai.Client(vertexai=True, project="project2", location="global")
response = client.models.generate_content(
model="gemini-3-pro-image-preview",
contents="Generate a simple red square.",
config=types.GenerateContentConfig(response_modalities=["IMAGE", "TEXT"]),
)
Error: google.genai.errors.ClientError: 429 RESOURCE_EXHAUSTED. {‘error’: {‘code’: 429, ‘message’: ‘Resource exhausted. Please try again later.’}}
Yet, again, it does work for project1.
The question is: how do I enable/provision gemini-3-pro-image-preview for a new project? Is there a specific enablement step required for this preview model on new projects? It might be that I did something for the old project, but I can’t remember what exactly it was.