Gemini Omni Texte en vidéo
Utilisez le point de terminaison texte vers vidéo pour créer une tâche asynchrone.
Vue d'ensemble
Utilisez le point de terminaison texte vers vidéo avec un modèle compatible. Utilisez l'ID de tâche retourné pour récupérer son état, ou fournissez callback_url pour les livraisons documentées ci-dessous.
Démarrage rapide
- Créez une clé API et définissez-la comme RUNAPI_API_KEY.
- Choisissez un modèle pris en charge et envoyez une requête POST dont le corps correspond au schéma de ce modèle.
- Enregistrez l'identifiant de tâche retourné, puis interrogez l'état jusqu'à atteindre un état terminal ou gérez les callbacks documentés ci-dessous.
Point de terminaison
- URL de base
https://runapi.ai- Version de l'API
v1- Authentification
Authorization: Bearer YOUR_API_TOKEN
Modèles pris en charge
Ouvrez une page de modèle pour consulter la tarification actuelle, les limites de débit et les conditions d'utilisation commerciale.
Schéma de requête
Les champs et les valeurs autorisées dépendent du modèle sélectionné. Lorsqu'il est fourni, callback_url reçoit les livraisons de tâches documentées ci-dessous.
gemini-omni-flash-1-116 champs
aspect_ratiostringRatio d'aspect de la sortie.
Valeurs autorisées:16:9, 9:16
audio_idsarrayIdentifiants de préréglage audio retournés par create-audio.
Limite d'éléments:3
callback_urlstringURL de webhook pour la livraison terminale des tâches.
character_idsarrayLes ID de personnage renvoyés par create-character ; les personnages à double image consomment deux des sept unités de référence partagées.
Limite d'éléments:3
duration_secondsintegerDurée de sortie en secondes.
Valeurs autorisées:4, 6, 8, 10
first_frame_image_urlstringURL d'image de première image publique ; mutuellement exclusive avec les images de référence, les ID audio, les clips vidéo et les ID de personnage.
last_frame_image_urlstringURL d'image de dernière image publique ; nécessite first_frame_image_url.
modelstringSlug du modèle ; par défaut gemini-omni-text-to-video s'il est omis.
output_resolutionstringRésolution de sortie.
Valeurs autorisées:360p, 720p, 1080p, 4k
Par défaut: 720p
promptstringPrompt de génération vidéo.
Limite:20000
reference_image_urlsarrayURLs d'images de référence publiques ; les images, clips vidéo et personnages partagent une limite de référence de sept unités.
Limite d'éléments:7
seedintegerGraine de génération déterministe.
Plage:0 - 2147483647
video_listarrayClips vidéo sources ; chaque clip consomme deux unités de référence.
Limite d'éléments:1
video_list[].endsnumberHeure de fin du clip en secondes ; doit être supérieure au début et ne pas dépasser 10 secondes après le début.
Limite:0
video_list[].startnumberHeure de début du clip en secondes.
Limite:0
video_list[].urlstringURL de vidéo source publique.
gemini-omni-flash-preview5 champs
aspect_ratiostringRatio d'aspect de la sortie.
Valeurs autorisées:16:9, 9:16
Par défaut: 16:9
callback_urlstringURL de webhook pour la livraison terminale des tâches.
modelstringSlug du modèle ; par défaut gemini-omni-text-to-video s'il est omis.
output_resolutionstringRésolution de sortie.
Valeurs autorisées:720p
Par défaut: 720p
promptstringPrompt de génération vidéo.
Limite:20000
gemini-omni-text-to-video14 champs
aspect_ratiostringRatio d'aspect de la sortie.
Valeurs autorisées:16:9, 9:16
audio_idsarrayIdentifiants de préréglage audio retournés par create-audio.
Limite d'éléments:3
callback_urlstringURL de webhook pour la livraison terminale des tâches.
character_idsarrayLes ID de personnage renvoyés par create-character ; les personnages à double image consomment deux des sept unités de référence partagées.
Limite d'éléments:3
duration_secondsintegerDurée de sortie en secondes.
Valeurs autorisées:4, 6, 8, 10
modelstringSlug du modèle ; par défaut gemini-omni-text-to-video s'il est omis.
Par défaut:gemini-omni-text-to-video
output_resolutionstringRésolution de sortie.
Valeurs autorisées:720p, 1080p, 4k
Par défaut: 720p
promptstringPrompt de génération vidéo.
Limite:20000
reference_image_urlsarrayURLs d'images de référence publiques ; les images, clips vidéo et personnages partagent une limite de référence de sept unités.
Limite d'éléments:7
seedintegerGraine de génération déterministe.
Plage:0 - 2147483647
video_listarrayClips vidéo sources ; chaque clip consomme deux unités de référence.
Limite d'éléments:1
video_list[].endsnumberHeure de fin du clip en secondes ; doit être supérieure au début et ne pas dépasser 10 secondes après le début.
Limite:0
video_list[].startnumberHeure de début du clip en secondes.
Limite:0
video_list[].urlstringURL de vidéo source publique.
Règles conditionnelles
Ces exigences s'appliquent lorsque toutes les conditions listées sont réunies.
-
Lorsque
first_frame_image_url = {"present" => true},model = gemini-omni-flash-1-1- Requis
- Non accepté
reference_image_urls,audio_ids,video_list,character_ids
-
Lorsque
last_frame_image_url = {"present" => true},model = gemini-omni-flash-1-1- Requis
first_frame_image_url- Non accepté
-
Lorsque
model = gemini-omni-flash-preview- Requis
- Non accepté
reference_image_urls,audio_ids,video_list,character_ids,first_frame_image_url,last_frame_image_url,duration_seconds,seed
-
Lorsque
model = gemini-omni-text-to-video- Requis
- Non accepté
first_frame_image_url,last_frame_image_url
Créer une acceptation
POST /api/v1/gemini_omni/text_to_video
Schéma de réponse
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"id": {
"type": "string"
},
"status": {
"enum": [
"processing"
],
"type": "string"
},
"task_replayed": {
"type": "boolean"
}
},
"required": [
"id",
"status",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "processing"
}
Interrogation en cours
GET /api/v1/gemini_omni/text_to_video/:id
Schéma de réponse
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"id": {
"type": "string"
},
"status": {
"enum": [
"processing"
],
"type": "string"
}
},
"required": [
"id",
"status",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "processing"
}
Interrogation terminée
GET /api/v1/gemini_omni/text_to_video/:id
Schéma de réponse
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"id": {
"type": "string"
},
"status": {
"enum": [
"completed"
],
"type": "string"
},
"videos": {
"items": {
"properties": {
"url": {
"type": "string",
"x-runapi-generated-media": true
}
},
"required": [
"url"
],
"type": "object",
"unevaluatedProperties": false
},
"type": "array"
}
},
"required": [
"id",
"status",
"videos",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "completed",
"videos": [
{
"url": "https://file.runapi.ai/reference-video.mp4"
}
]
}
Échec de l'interrogation
GET /api/v1/gemini_omni/text_to_video/:id
Schéma de réponse
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"error": {
"type": "string"
},
"id": {
"type": "string"
},
"status": {
"enum": [
"failed"
],
"type": "string"
}
},
"required": [
"id",
"status",
"error",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"error": "Task processing failed.",
"id": "tsk_reference_demo",
"status": "failed"
}
Rappel client : terminé
POST callback_url
Schéma de réponse
{
"properties": {
"id": {
"type": "string"
},
"status": {
"enum": [
"completed"
],
"type": "string"
},
"videos": {
"items": {
"properties": {
"url": {
"type": "string",
"x-runapi-generated-media": true
}
},
"required": [
"url"
],
"type": "object",
"unevaluatedProperties": false
},
"type": "array"
}
},
"required": [
"id",
"status",
"videos"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"id": "tsk_reference_demo",
"status": "completed",
"videos": [
{
"url": "https://file.runapi.ai/reference-video.mp4"
}
]
}
Rappel client : échoué
POST callback_url
Schéma de réponse
{
"properties": {
"error": {
"oneOf": [
{
"type": "string"
},
{
"properties": {
"code": {
"type": "string"
},
"limit_cents": {
"type": "integer"
},
"message": {
"type": "string"
},
"reset_at": {
"format": "date-time",
"type": [
"string",
"null"
]
},
"used_cents": {
"type": "integer"
},
"window": {
"enum": [
"1h",
"1d",
"7d",
"daily",
"weekly",
"monthly",
"lifetime"
],
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object",
"unevaluatedProperties": false
}
]
},
"id": {
"type": "string"
},
"status": {
"enum": [
"failed"
],
"type": "string"
}
},
"required": [
"id",
"status",
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": {
"code": "generation_failed",
"message": "Task processing failed."
},
"id": "tsk_reference_demo",
"status": "failed"
}
Erreurs
POST /api/v1/gemini_omni/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Authentication required"
}
Erreurs
GET /api/v1/gemini_omni/text_to_video/:id
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Authentication required"
}
Erreurs
POST /api/v1/gemini_omni/text_to_video
Schéma de réponse
{
"oneOf": [
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
},
{
"properties": {
"error": {
"description": "Résumé de validation lisible par l'humain.",
"type": "string"
},
"errors": {
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"description": "Messages de validation indexés par champ de requête public, avec un tableau de chaînes lisibles par l'humain pour chaque champ.",
"type": "object"
}
},
"required": [
"error",
"errors"
],
"type": "object",
"unevaluatedProperties": false
}
]
}
Exemple de réponse
{
"error": "model must be one of: gemini-omni-flash-1-1, gemini-omni-flash-preview, gemini-omni-text-to-video"
}
Erreurs
POST /api/v1/gemini_omni/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Insufficient balance"
}
Erreurs
POST /api/v1/gemini_omni/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "API key credit limit exceeded"
}
Erreurs
POST /api/v1/gemini_omni/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "The request uses features that are not supported for the selected model"
}
Erreurs
POST /api/v1/gemini_omni/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Rate limit reached. Please retry later."
}
Erreurs
POST /api/v1/gemini_omni/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Service under maintenance, please try again later"
}
Erreurs
POST /api/v1/gemini_omni/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "The request timed out"
}
Erreurs
GET /api/v1/gemini_omni/text_to_video/:id
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Task with id 'tsk_reference_demo' not found"
}
Exemples de code générés
Utilisez directement cURL, ou installez un SDK pour votre langage. Chaque exemple soumet la requête validée indiquée dans cette référence.
Installer
pip install runapi-gemini-omni
import os
from runapi.gemini_omni import GeminiOmniClient
client = GeminiOmniClient(api_key=os.environ["RUNAPI_API_KEY"])
task = client.text_to_video.create(
model="gemini-omni-text-to-video",
prompt="A presenter walks through a bright studio.",
duration_seconds=4
)