Summary
The Audio Transcription documentation explicitly shows custom_vocabulary,
diarization_mode: "speaker", and timestamp_granularities: ["word"] in the
same transcription configuration. The Gemini Developer API rejects that exact
documented combination.
Documentation:
- https://ai.google.dev/gemini-api/docs/transcribe#word-level-timestamps
- https://ai.google.dev/gemini-api/docs/transcribe#limitations
- https://ai.google.dev/gemini-api/docs/models/gemini-3.5-transcribe
Environment
- Observed at: 2026-08-29T10:18:04Z–10:18:05Z
- API: Gemini Developer API, Interactions API v1beta
- Endpoint:
POST https://generativelanguage.googleapis.com/v1beta/interactions - Model:
gemini-3.5-transcribe - SDK:
@google/genai 2.19.0 - Runtime: Bun 1.3.14 / TypeScript 5.9.3
- OS: macOS 26.3.1 arm64
- Language hint:
ro-RO - Billing tier: Free tier
Documented configuration
{
"generation_config": {
"transcription_config": {
"language_codes": ["ro-RO"],
"custom_vocabulary": ["Noveris"],
"mode": {
"type": "verbatim",
"diarization_mode": "speaker",
"timestamp_granularities": ["word"]
}
}
}
}
Actual behavior
The exact documented combination is rejected with HTTP 400:
custom_vocabulary is incompatible with timestamps.
Removing timestamps while retaining custom vocabulary and diarization is also
rejected with HTTP 400:
custom_vocabulary is incompatible with diarization.
These are deterministic 400 responses, so retrying is not appropriate.
Control result
Using the same endpoint, API key, uploaded audio, MIME type and language hint,
removing only custom_vocabulary while retaining diarization and word timestamps
completes successfully and returns word_info annotations with speaker IDs.
Expected behavior
Either:
- the documented combined configuration should be accepted by the backend; or
- the documentation and API schema should declare these features mutually
exclusive, and the combined example should be removed.
Minimal reproduction
The reproduction used a 37.935-second synthetic fixture with six alternating TTS turns
(Ioana ro-RO / Eddy it-IT) and the invented term Noveris.
Fixture SHA-256:
f6b92b28ecedf1ccf650451d109707624795c8160717a31b6e186215537f5c2c
The forum currently accepts only image attachments for this account. The synthetic audio fixture can be supplied privately on request.
Upload the fixture once, wait until the File is ACTIVE, then send the documented
configuration above. Reuse the same File URI and remove only
timestamp_granularities for the diarization-only incompatibility control. Both
requests use store: false and stream: false. Delete the File in finally.
Request evidence
- vocabulary + diarization:
2026-08-29T10:18:04.277Z, HTTP 400,
custom_vocabulary is incompatible with diarization. - vocabulary + diarization + timestamps:
2026-08-29T10:18:04.617Z, HTTP 400,
custom_vocabulary is incompatible with timestamps. - cleanup control:
filesApiCount=0, uploaded target absent.
Request/correlation IDs and project identifiers can be supplied separately in a
private Customer Care case, but must not be posted in this public topic.