Gemini voice_key with store=false: 7 days; voice_ ids: 200, 1 year
Gemini replicated voices: stored voice_ ids keep 1 year with 200 per project; stateless voicekey_ values last 7 days. What Sume's TTS voice id accepts.

With store=False, the Gemini API returns an encrypted voicekey_... value that your application keeps, and the docs list its retention as 7 days. A stored voice_... id keeps for 1 year, within 200 voices per project. Sume's TTS request accepts only Sume voice ids.
What are the two Gemini storage modes?
Stateful (store=True, the default) keeps the verified profile in your project and returns a persistent voice_id. Stateless (store=False) is for workloads that need zero server-side persistence; your app stores the key and passes it in synthesis requests. Read 2026-10-01.
| Mode | Identifier | Project limit | Retention |
|---|---|---|---|
Stateful (store=True) | voice_... | 200 per project, shared with prompted voices | 1 year |
Stateless (store=False) | voicekey_... | Client-managed | 7 days |
What voice ids does Sume accept?
A TTS voice UUID (8-4-4-4-12 hex) or a Voices library id (voi_ plus 32 hex), up to 128 characters, "not a voice name from another TTS ecosystem". A Gemini voice_ or voicekey_ value is the wrong shape and fails with 400 public_reason=invalid_voice_id before a job is queued or credits are reserved. See the API reference.
Do Sume voices expire after a few days?
The sources do not state a lifetime for Sume voice ids, so do not assume one. A bad or missing id fails fast, before any credit reservation, so you can check an id with a small request. TTS 1.0 has no engine picker, and a request holds up to 20,000 characters.
How does the 200-voice limit compare with Sume?
The Gemini limit is on stored voices per project. For the avatar-based selector on Sume, see Gemini TTS 200 voices and Sume's avatar voice selector.
Sources
Related posts
More in Developers
- Lost a webhook signing secret? Gemini shows it once, Sume re-reads
Gemini static webhooks return the signing secret once at creation. Sume's secret can be read again from the dashboard or GET /v1/webhooks/signing-secret.
- Gemini thin webhook payload vs Sume: artifact URLs in the body
Gemini webhooks send a snapshot with pointers to results. A Sume job.completed webhook already carries the media.sume.com artifact URL, so no second fetch.
- Copilot app sandbox network: Sume hosts to allow
In a sandboxed GitHub Copilot app session, allow api.sume.com, mcp.sume.com and media.sume.com outbound; send the Sume key as a header, not a git credential.
- GITHUB_TOKEN can't redeliver webhooks; Sume uses jobs:write
GitHub's built-in GITHUB_TOKEN cannot redeliver webhooks. For Sume job webhooks, a jobs:write API key calls POST /v1/jobs/{job_id}/webhook/redeliver instead.
Written by Sume