Create Character
June 5, 2026
Table of contents
Create a character — a reusable Google Flow entity that bundles 1–2 reference images plus an optional attached voice. Characters can be referenced from POST /videos and POST /images via character_1..7 to keep the same identity across generations.
What can use a character?
Per Google Flow’s model rules:
| Model | Character support | Image budget | Voice budget |
|---|---|---|---|
Veo 3.1 Qualityveo-3.1-quality | ✗ | n/a | n/a |
Veo 3.1 Fastveo-3.1-fast | ✓ (Ingredients mode, 8 s duration only) | 3 total (character images + raw image refs) | 1 voice |
Veo 3.1 Liteveo-3.1-lite | ✓ (Ingredients mode, 8 s duration only) | 3 total (character images + raw image refs) | 1 voice |
Veo 3.1 Lite Lower Priorityveo-3.1-lite-low-priority | ✓ (Ingredients mode, 8 s duration only) | 3 total (character images + raw image refs) | 1 voice |
Gemini Omni Flashomni-flash | ✓ (Ingredients mode, all durations) | 7 total (character images + raw image refs) | 5 voices |
Example: character_1 with 2 images + character_2 with 2 images + 3 referenceImage_* = 7 effective image refs — accepted on omni-flash, rejected on veo-3.1-fast (cap 3).
https://api.useapi.net/v1/google-flow/characters
Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
Request Body
{
"displayName": "Carol",
"personalityNotes": "A curious traveler with a sharp wit",
"imageReference_1": "user:12345-email:6a6f...-image:abc123...",
"imageReference_2": "user:12345-email:6a6f...-image:def456...",
"voice": "user:12345-email:6a6f...-voice:d990a2f9-...-mid:d55b6d59-..."
}
displayNameis required, user-facing name. Range: 1-200 chars.imageReference_1is required, an imagemediaGenerationId— either uploaded via POST /assets/emailor generated via POST /images. At least one image is required.imageReference_2is optional, second image reference (max two per character).personalityNotesis optional, short description shown alongside the character. Range: 0-2000 chars.voiceis optional. Either a system voice preset name (e.g.Umbriel, case-insensitive — one of the 30 presets) or a user voice from POST /voices (use thevoicefield from its response).
Responses
-
{ "entityId": "f470f1b5-...", "character": "user:12345-email:6a6f...-character:f470f1b5-...-imgs:2-voice:d990a2f9-...", "displayName": "Carol", "personalityNotes": "A curious traveler with a sharp wit", "imageReferences": [ { "mediaId": "abc123..." }, { "mediaId": "def456..." } ], "voice": "user:12345-email:6a6f...-voice:d990a2f9-...-mid:d55b6d59-..." }Use the
characterfield as the value forcharacter_1..character_7on POST /videos and POST /images. -
Validation error.
{ "error": "Parameter displayName is required" } -
401 Unauthorized
{ "error": "Unauthorized" } -
404 Not Found
{ "error": "Google Flow account [email protected] not found" }
Model
{
entityId: string
character: string // reference-id used in character_1..7 on POST /videos & POST /images
displayName: string
personalityNotes?: string
imageReferences: Array<{ mediaId: string }>
voice?: string // echoed when a voice was attached:
// user voice → the encoded reference-id (`user:N-email:...-voice:...-mid:...`)
// system voice → the Title-case preset name (e.g. 'Umbriel')
}
Examples
-
curl -X POST \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "displayName": "Carol", "imageReference_1": "user:12345-email:6a6f...-image:abc123...", "imageReference_2": "user:12345-email:6a6f...-image:def456..." }' \ "https://api.useapi.net/v1/google-flow/characters" -
const r = await fetch('https://api.useapi.net/v1/google-flow/characters', { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ displayName: 'Carol', imageReference_1: imgA, imageReference_2: imgB, }) }) const result = await r.json() console.log('character ref:', result.character) -
import requests r = requests.post( 'https://api.useapi.net/v1/google-flow/characters', headers={'Authorization': f'Bearer {token}'}, json={ 'displayName': 'Carol', 'imageReference_1': img_a, 'imageReference_2': img_b, }, ) print('character ref:', r.json()['character'])