Gemini-embedding-2-preview returns HTTP 200 with empty values for video (batchEmbedContents)

Product / API: Gemini API (Generative Language API)
Endpoint: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-2-preview:batchEmbedContents
Model: gemini-embedding-2-preview (3072-dim)

SUMMARY
Multimodal (video) embedding requests return HTTP 200 OK but with an EMPTY
embedding.values array (length 0) and no error. Text embeddings on the same
model/key succeed. The failure is INTERMITTENT under load: retrying the same
input succeeds maybe ~50% of the time, so a 4x retry loop is needed to get
~50% coverage. The async Batch API (create_embeddings) shows the same empty
responses for the same content.

ONSET / SCOPE
Started ~2026-06-15 18:48 UTC; still occurring 2026-06-16 21:00 UTC.
Empty rate on multimodal requests has fluctuated ~30-60% over the period.
Text-only embedding: unaffected.

EXPECTED vs ACTUAL
Expected: HTTP 200 with a 3072-length values array, OR a non-200 error.
Actual: HTTP 200 with an empty values array (silent failure).

IMPACT
Blocking a ~130,000-asset multimodal embedding ingestion; coverage stuck ~50%
because ~half of calls return empty even after retries.

POSSIBLY RELATED
“Some Embeddings are finished with 0B” (topic 136906) may share the root cause.

ASKS

  1. Is this a known regression on the multimodal path of gemini-embedding-2-preview?
  2. ETA / workaround?
  3. Recommended GA alternative for multimodal embeddings (e.g. Vertex multimodalembedding@00..)?