Flexible parameters
Configure 5 documented parameters, including audio_ids, body_reference_image_url, character_name, descriptions, reference_image_url.
Synchronous reusable character resource creation from one reference image
curl -X POST https://runapi.ai/api/v1/gemini_omni/create_character \
-H "Authorization: Bearer $RUNAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"descriptions": "Create a 1080p neon city tracking shot with a reusable character walking through rain while a calm narrator speaks.",
"image_urls": [
"https://cdn.runapi.ai/public/samples/character.png"
],
"audio_ids": [
"audio_runapi_123"
],
"character_name": "Jenny"
}'
import { GeminiOmniClient } from "@runapi.ai/gemini-omni";
const client = new GeminiOmniClient();
const result = await client.createCharacter.run({
descriptions: "Create a 1080p neon city tracking shot with a reusable character walking through rain while a calm narrator speaks.",
image_urls: ["https://cdn.runapi.ai/public/samples/character.png"],
audio_ids: ["audio_runapi_123"],
character_name: "Jenny",
});
import os
import requests
response = requests.post(
"https://runapi.ai/api/v1/gemini_omni/create_character",
headers={"Authorization": f"Bearer {os.environ['RUNAPI_API_KEY']}"},
json={"descriptions":"Create a 1080p neon city tracking shot with a reusable character walking through rain while a calm narrator speaks.","image_urls":["https://cdn.runapi.ai/public/samples/character.png"],"audio_ids":["audio_runapi_123"],"character_name":"Jenny"}
)
response.raise_for_status()
<?php
$client = curl_init("https://runapi.ai/api/v1/gemini_omni/create_character");
curl_setopt_array($client, [
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("RUNAPI_API_KEY"), "Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode([
'descriptions' => 'Create a 1080p neon city tracking shot with a reusable character walking through rain while a calm narrator speaks.',
'image_urls' => ['https://cdn.runapi.ai/public/samples/character.png'],
'audio_ids' => ['audio_runapi_123'],
'character_name' => 'Jenny',
])
]);
$response = curl_exec($client);
RunApi client = new RunApi(System.getenv("RUNAPI_API_KEY"));
Task task = client.createCharacter().run({"descriptions":"Create a 1080p neon city tracking shot with a reusable character walking through rain while a calm narrator speaks.","image_urls":["https://cdn.runapi.ai/public/samples/character.png"],"audio_ids":["audio_runapi_123"],"character_name":"Jenny"});
task.waitForResult();
require "runapi/gemini_omni"
client = RunApi::GeminiOmni::Client.new
result = client.create_character.run(
descriptions: "Create a 1080p neon city tracking shot with a reusable character walking through rain while a calm narrator speaks.",
image_urls: ["https://cdn.runapi.ai/public/samples/character.png"],
audio_ids: ["audio_runapi_123"],
character_name: "Jenny"
)
client := runapi.NewClient(os.Getenv("RUNAPI_API_KEY"))
task, err := client.createCharacter.Run({"descriptions":"Create a 1080p neon city tracking shot with a reusable character walking through rain while a calm narrator speaks.","image_urls":["https://cdn.runapi.ai/public/samples/character.png"],"audio_ids":["audio_runapi_123"],"character_name":"Jenny"})
if err != nil { log.Fatal(err) }
task.Wait()
$ runapi generate \
--model gemini-omni-character \
--endpoint create_character \
--wait
5 versions available
Pick any model and generate in seconds.
Pick any model and generate in seconds.
| Provider | |
| Model ID | gemini-omni-character |
| Modality | Video |
| Task types | Synchronous |
| API endpoint | /api/v1/gemini_omni/create_character |
| Billing unit | call |
| Input parameters | audio_ids, body_reference_image_url, character_name, descriptions, reference_image_url |
| Catalog status | Operational |
Sign up for free and create an API key for gemini-omni-character from the dashboard.
POST to /api/v1/gemini_omni/create_character with the gemini-omni-character model slug and your parameters.
Read the completed gemini-omni-character response directly from the endpoint.
Configure 5 documented parameters, including audio_ids, body_reference_image_url, character_name, descriptions, reference_image_url.
Exposes 1 public endpoint(s): create_character.
Metered by call with no subscription requirement.
audio_idsAudio preset IDs returned by create-audio.
descriptionsCharacter appearance, identity, style, clothing, or personality description.
character_nameCharacter display name.
reference_image_urlPublic portrait reference image URL.
body_reference_image_urlOptional public full-body reference image URL; reference_image_url must provide the portrait.
Generate product launch clips and short-form ads from a text brief, cutting production from weeks to hours.
Convert lesson scripts into animated explainer videos at scale without a camera or crew.
Produce viral short-form content for social platforms directly from a prompt.
Pass the model ID shown in the quickstart.
Per-key rate limits scale with your usage tier. The pricing page shows current limits. If you need higher throughput, contact support to discuss tier upgrades.
Yes. Variant is a parameter in the request. Switch by changing the model ID — no code changes, no re-authentication, no separate billing setup. All variants share the same API key and request shape.
Where streaming is available, RunAPI streams end-to-end. LLM models support token-level streaming. Media models use async task polling or webhook callbacks for result delivery.
Open an issue on the public GitHub repo or email support at [email protected]. Include the task ID and model ID so the team can investigate the specific generation.
No. Your RunAPI API key is enough to access this variant and every other model in the catalog. You do not need accounts with the underlying provider.
We're here to help with enterprise setup, integrations, and technical questions.
Contact Us