Loading...
Loading...
Animate a still image into video with Gemini Omni 1.1 Flash. The source image becomes the first frame and drives the generated motion.
Connectez-vous pour exécuter des modèles
No output yet
Run the model to see generated results.
import requests
result = requests.post(
'https://api.e2x.ai/v1/jobs/submit',
headers={
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json'
},
json={
'model': 'google/omni-1.1-flash/image-to-video',
'input': {}
}
)import time
job_id = result.json()['jobId']
while True:
response = requests.get(
f'https://api.e2x.ai/v1/jobs/{'{job_id}'}',
headers={'Authorization': f'Bearer {'{API_KEY}'}'}
)
data = response.json()['data']
if data['status'] == 'completed':
print('Done!', data['outputs'][0]['url'])
break
elif data['status'] == 'failed':
raise Exception(f"Job failed: {'{'}data['error']['message']{'}'}")
time.sleep(2)Coût estimé par génération selon la durée et la résolution. Vous ne payez que ce que vous utilisez.
Gemini Omni 1.1 Flash est passé en disponibilité générale chez Google le 27 août 2026. Il appartient à la famille Gemini, pas à Veo, et nous exposons sa capability image-to-video sous google/omni-1.1-flash/image-to-video. Nous facturons à la seconde de vidéo finie — $0.09 la seconde en 720p, face à un tarif catalogue de $0.15, parce qu'une remise permanente de 40 % couvre les quatre capabilities. Le clip de huit secondes par défaut coûte $0.72. Obligatoires : prompt et image_url.
Comprenez ce qu'est l'image fixe avant votre premier appel. C'est un contrat. Elle fixe l'image un, et avec elle le cadre, la focale, la palette, le sujet et le moindre défaut déjà présent dans la photo. Votre prompt n'obtient que les quelques secondes suivantes, rien de ce qui les précède.
Presque tout résultat plat vient ici de la même erreur : un prompt qui décrit la photographie au lieu de décrire le changement. Nommez ce qui bouge. Nommez où va la caméra.
| Longueur du clip | Prix en 720p |
|---|---|
| 4 s | $0.36 |
| 6 s | $0.54 |
| 8 s (par défaut) | $0.72 |
| 10 s | $0.90 |
La résolution met ce tarif à l'échelle : le 360p est à 0.33× ($0.0297 la seconde), le 1080p à 1.5× ($0.135), la 4K à 2× ($0.18). Une passe de quatre secondes en 360p coûte $0.1188 — la façon la moins chère de savoir si votre image bouge tout court.
Deux images avec le milieu laissé au modèle ? Omni 1.1 Flash start-end-frame-to-video. Un sujet photographié sous plusieurs angles, stable sur toute une liste de plans ? Omni 1.1 Flash reference-to-video. Aucun matériau source ? Omni 1.1 Flash text-to-video porte tout l'argumentaire tarifaire.
Traitez le job comme une continuation, pas comme une interprétation. Le modèle accepte votre image fixe comme image un, puis invente derrière elle vingt-quatre images plausibles par seconde, toutes ancrées à ce que vous lui avez confié. Cet ancrage, c'est la valeur : un visuel clé validé reste conforme à la marque parce que personne ne l'a régénéré.
C'est aussi la contrainte. Un cadre chargé donne au modèle davantage d'objets à garder cohérents pendant que tout se déplace, et la cohérence est le point faible de cette génération. La model card de Google le dit : « Maintenir une cohérence totale d'un bout à l'autre des retouches, générer des scènes au mouvement complexe ou rendre du texte parfaitement exact reste un défi. » Les enseignes bavent. Les foules brassent des visages. Un sujet seul sur fond propre survit mieux à dix secondes qu'un cadre encombré à quatre.
Recadrez vous-même. La sortie tombe en 16:9 ou 9:16 — pas de carré, pas de 4:5, pas d'ultra-large. Poussez un portrait 4:5 dans un job 16:9 et quelque chose cède : le modèle remplit les côtés avec de la matière que personne n'a photographiée, ou la composition dérive pour rentrer dans le cadre. Vous payez $0.09 la seconde dans les deux cas. Recadrez d'abord, tant que la décision est gratuite.
N'upscalez pas pour atteindre la 4K. La résolution source plafonne ce que la sortie peut honnêtement porter. Une vignette de 640 pixels de large rendue en 1080p donne un fichier plus lourd avec le même niveau de détail, à 1.5× le tarif.
Laissez au mouvement un endroit où aller. De l'air au-dessus d'un sujet, de la route devant une voiture. Recadrez serré et plus rien ne peut bouger sans être poussé hors champ — une raison fréquente pour qu'un clip ressemble à une photo qui tremble.
Générez une clé dans le dashboard et gardez-la côté serveur. Notre pipeline va chercher image_url lui-même : l'adresse doit donc être joignable depuis l'internet public — une adresse HTTPS sur votre CDN ou votre object store, jamais un chemin local, localhost, ni une URL derrière un login. Les URL signées conviennent avec une fenêtre généreuse : un job tourne environ quatre minutes, et un lien de soixante secondes meurt avant.
curl -X POST https://api.e2x.ai/v1/jobs/submit \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/omni-1.1-flash/image-to-video",
"input": {
"prompt": "La vapeur commence à monter du bec de la bouilloire et dérive vers la droite. La caméra avance lentement sur la poignée. Rumeur de cuisine, une bouilloire qui se met à claquer. Le reste du cadre reste immobile.",
"image_url": "https://cdn.example.com/stills/copper-kettle-16x9.jpg",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": "8"
}
}'
Vous récupérez un job ID. Soit vous faites du polling dessus, soit vous nous passez un webhookUrl et vous sautez la boucle :
const headers = {
Authorization: `Bearer ${process.env.E2X_API_KEY}`,
"Content-Type": "application/json",
};
const start = await fetch("https://api.e2x.ai/v1/jobs/submit", {
method: "POST",
headers,
body: JSON.stringify({
model: "google/omni-1.1-flash/image-to-video",
input: {
prompt:
"Elle se tourne vers la caméra et le foulard se soulève dans le vent. Caméra fixe. Mouettes, ressac lointain.",
image_url: "https://cdn.example.com/stills/portrait-9x16.png",
aspect_ratio: "9:16",
resolution: "360p",
duration: "10",
},
}),
}).then((r) => r.json());
const { jobId } = start.data;
for (let tick = 0; tick < 360; tick++) {
const job = await fetch(`https://api.e2x.ai/v1/jobs/${jobId}`, { headers })
.then((r) => r.json());
if (job.data.status === "completed") {
await archive(job.data.outputs[0].url); // copiez-le quelque part de permanent
break;
}
if (["failed", "cancelled"].includes(job.data.status)) {
throw new Error(job.data.error?.message ?? job.data.status);
}
await new Promise((r) => setTimeout(r, 5000));
}
Un job passe par pending, puis processing, puis completed, failed ou cancelled. Deux détails de schema piègent tout le monde : duration et resolution sont des chaînes, envoyez donc "10" plutôt que 10 ; et il n'existe aucun interrupteur audio, parce que le son est généré avec l'image et piloté depuis votre prompt. Les définitions de champs restent à jour dans la spécification lisible par machine.
N'écrivez que ce qui change. Le sujet, la lumière et la composition sont arrivés avec le fichier ; les répéter dépense une attention que le modèle pourrait consacrer au mouvement. Ne dites aucun mouvement et vous obtenez une quasi-image fixe qui dérive, au plein tarif.
Un mouvement, nommé. La vapeur monte. Une porte s'ouvre vers l'intérieur. Des cheveux se soulèvent. Choisissez l'action qui compte et laissez le reste immobile — le dire à voix haute aide plus qu'on ne le croirait.
Une instruction de caméra. « Lent travelling avant », « caméra fixe », « caméra portée qui dérive vers la gauche ». Une grammaire simple bat un paragraphe de cinématographie, et une caméra non précisée devient la décision du modèle.
Le son en dessous. Ambiance de pièce, circulation, un effet précis. Le silence n'est pas la valeur par défaut ; un mixage non spécifié sera inventé pour vous. Les prompts vont jusqu'à 50 000 caractères : la longueur n'est donc jamais la limite, la précision l'est. Notre guide de prompting Gemini Omni creuse davantage la formulation.
Apprenez-le de nous plutôt que d'une facture. Veo 3.1 Fast image-to-video tourne sur cette même plateforme à $0.01 la seconde — neuf fois en dessous de l'endpoint de cette page.
| Endpoint | Clip de 8 secondes | À sortir quand |
|---|---|---|
| Veo 3.1 Fast image-to-video | $0.08 | Une image, un clip, et rien en aval qui en dépende |
| Omni 1.1 Flash image-to-video | $0.72 | Il vous faut dix secondes, une passe de brouillon en 360p, ou ce plan doit tenir à côté des autres |
| Veo 3.1 Fast text-to-video | $0.08 | L'image fixe ne fait pas $0.64 de travail |
Les prix et les conditions produit peuvent changer. Vérifiez les tarifs en vigueur de chaque provider avant toute décision d'achat. La tarification Google Batch ou Flex n'est pas directement équivalente à une requête API on-demand standard, car les conditions de planification, de disponibilité et de traitement diffèrent ; elle est donc exclue de cette comparaison. Il s'agit d'une comparaison délimitée, et non d'une affirmation selon laquelle E2X serait l'option la moins chère au monde dans toutes les configurations.
Prenez-le au sérieux. Une photographie, animée une fois, appartient à Veo. Le surcoût ici ne se rentabilise que dans trois cas : votre montage a besoin de dix secondes et Veo s'arrête à huit ; vous voulez brouillonner à $0.0297 la seconde ; ou ce clip doit appartenir à un ensemble. D'autres façons d'animer une image fixe se trouvent dans la catégorie image-to-video, aux côtés de notre catalogue de modèles.
La sortie fait 24 fps, de trois à dix secondes par génération, avec un watermark SynthID dans chaque image que personne dans la chaîne ne peut désactiver. Les URL de résultat sont temporaires — archivez le fichier à l'intérieur de votre handler de complétion. Un lien que vous ne pourrez pas récupérer demain est un rendu que vous payez deux fois.
Une règle s'applique précisément parce que vous uploadez une photographie : dans l'EEE, en Suisse et au Royaume-Uni, Google bloque les images sources montrant des mineurs, et certaines personnes reconnaissables aussi. L'anglais reste par ailleurs la seule langue de prompt que Google ait évaluée. Nos notes de version pour Gemini Omni 1.1 Flash couvrent ce qui a changé d'autre par rapport au prédécesseur que nous opérons encore, déprécié en amont le 30 septembre 2026.
Neuf cents achètent une seconde en 720p. Le clip par défaut dure huit secondes, soit $0.72 ; dix secondes, le plafond, reviennent à $0.90. Ce tarif est à 40 % de remise sur un prix catalogue de $0.15, lu dans notre catalogue en direct le 28 août 2026. La résolution déplace le multiplicateur — 0.33× en 360p, 1.5× en 1080p, 2× en 4K.
Veo, pour la plupart des images isolées — $0.01 la seconde contre $0.09, soit $0.08 contre $0.72 sur huit secondes. Revenez ici quand il vous faut dix secondes, quand une passe de brouillon en 360p fait économiser au total, ou quand le clip doit s'accorder avec d'autres tirés du même sujet.
16:9 et 9:16, rien d'autre. Recadrez votre source au format cible avant de soumettre ; sinon le modèle résout l'écart tout seul et vous risquez de perdre une partie de la composition que vous aviez validée.
N'importe où que notre pipeline peut atteindre en HTTPS public — un CDN, un bucket S3 ou GCS, votre propre serveur web. Les chemins locaux, localhost et tout ce qui se trouve derrière une authentification échouent. Les URL signées fonctionnent quand leur expiration dépasse confortablement les quatre minutes que prend un job.
En général parce que le prompt redécrit l'image au lieu de la diriger. L'image fixe a déjà fixé le sujet et le cadre ; sans mouvement ni mouvement de caméra énoncés, le modèle n'a rien sur quoi agir. Réécrivez-le comme un mouvement plus une instruction de caméra.
Oui, produit nativement avec l'image et synchronisé sur elle. Il n'y a pas de champ has_sound ni de mode muet : décrivez donc l'ambiance dans le prompt. L'audio ne peut pas être retouché ensuite — un changement veut dire une nouvelle génération.
Oui. Google bloque les images sources montrant des mineurs, ainsi que certaines personnes reconnaissables, pour les utilisateurs de l'EEE, de la Suisse et du Royaume-Uni — sa politique, appliquée chez tous les providers. Les sorties portent aussi un watermark SynthID invisible : prévoyez des assets IA étiquetés.