Tutoriel
API Seedance 2.5 image-vers-vidéo : comment transmettre la première image, les images de début et de fin, et les images de référence
Faites bouger une image, ou fournissez une première et une dernière image pour que le modèle génère la transition ; curl, Python et le tableau des tarifs sont ici.
TL;DR
seedance-2.5/image-to-videoanime une image, et vous pouvez aussi fournir la première et la dernière image pour que le modèle génère la transition. Chaque clip dure de 4 à 30 secondes et inclut le son. Ouvrez la page du modèle pour générer en ligne ; les nouveaux utilisateurs inscrits reçoivent 200 crédits.- Même prix que le texte-vers-vidéo : 720p à $0.204 par seconde, 1080p à $0.516 par seconde. 4 secondes en 720p coûtent $0.816.
- Deux modes d'utilisation au choix : première image / première et dernière images, ou images de référence + audio de référence, sans mélange possible.
Un exemple réel d'abord : première et dernière images
Fournissez une première image de « pot de fleurs vide » et une dernière image de « pot de fleurs rempli de basilic », et rédigez le prompt uniquement pour décrire la transformation :


Time-lapse growth of a basil seedling sprouting and unfurling leaves inside the terracotta pot, smooth continuous motion, soft morning light staying consistent, camera locked off, no cuts
Générer avec ce prompt → (importez votre première et votre dernière image, 4 secondes, 720p)
seedance-2.5/image-to-video, première image + dernière image, 720p, 4 secondes, avec son, $0.816.
Gardez la composition, la lumière et la position des accessoires identiques entre les deux images, et ne modifiez que ce que vous voulez voir évoluer dans la vidéo (ici, la plante) : la transition n'en sera que plus fluide. Le « soft morning light staying consistent » du prompt sert à éviter que le modèle ne transforme aussi la lumière en time-lapse.
curl : première image uniquement
L'usage le plus courant : une photo de produit ou une illustration, plus une phrase décrivant « comment ça bouge ensuite » :
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5/image-to-video",
"input": {
"prompt": "镜头缓慢推向冒着热气的咖啡杯,热气在晨光中旋转上升,轻微手持晃动",
"first_frame_url": "https://your-cdn.example.com/coffee-cup.jpg",
"duration": 5,
"resolution": "720p"
}
}'
La réponse contient taskId :
{"code": 200, "data": {"taskId": "tk-hiapi-..."}, "message": "success"}
Pour consulter le résultat :
curl https://api.hiapi.ai/v1/tasks/tk-hiapi-... \
-H "Authorization: Bearer $HIAPI_KEY"
Une fois status à success, téléchargez la vidéo depuis output[0].url.
Première et dernière images : ajoutez un last_frame_url
{
"model": "seedance-2.5/image-to-video",
"input": {
"prompt": "同一张书桌从白天到夜晚的延时:日光渐渐变暗,台灯亮起暖光,窗外的城市灯光逐一亮起,镜头固定不动",
"first_frame_url": "https://your-cdn.example.com/desk-day.jpg",
"last_frame_url": "https://your-cdn.example.com/desk-night.jpg",
"duration": 4,
"resolution": "720p"
}
}
last_frame_urldoit être utilisé avecfirst_frame_url.- Si le ratio de la dernière image diffère de celui de la première, la dernière sera recadrée au centre ; il est préférable de générer les deux images dans le même ratio.
- Le format suit la première image ;
aspect_ration'a qu'une seule valeur,adaptive, inutile de la transmettre.
Python : soumettre, interroger, télécharger
# pip install requests;先 export HIAPI_KEY=你的 Key
import os, time, uuid, requests
KEY = os.environ["HIAPI_KEY"]
H = {"Authorization": f"Bearer {KEY}"}
def generate(prompt, model="seedance-2.5/image-to-video", timeout_s=900, **params):
body = {"model": model, "input": {"prompt": prompt, **params}}
# 重试提交同一个任务时带同一个 Idempotency-Key,避免重复扣费
headers = {**H, "Idempotency-Key": str(uuid.uuid4())}
r = requests.post("https://api.hiapi.ai/v1/tasks", json=body, headers=headers, timeout=30)
r.raise_for_status()
res = r.json()
if res.get("code") != 200:
raise RuntimeError(res)
task_id = res["data"]["taskId"]
deadline = time.time() + timeout_s
while time.time() < deadline:
d = requests.get(f"https://api.hiapi.ai/v1/tasks/{task_id}", headers=H, timeout=30).json()["data"]
if d["status"] == "success":
return d["output"][0]["url"]
if d["status"] == "fail":
raise RuntimeError(d)
time.sleep(10)
raise TimeoutError(task_id)
url = generate(
"Time-lapse growth of a basil seedling sprouting and unfurling leaves, camera locked off, no cuts",
first_frame_url="https://your-cdn.example.com/seedling-start.jpg",
last_frame_url="https://your-cdn.example.com/seedling-grown.jpg",
duration=4, resolution="720p",
)
with open("clip.mp4", "wb") as f:
f.write(requests.get(url).content)
Un autre mode : images de référence + audio de référence
Si vous ne voulez pas figer une image comme première image, mais plutôt que le modèle « s'inspire » de l'apparence d'une personne, d'un produit ou d'un style visuel, utilisez reference_image_urls (30 images maximum), et éventuellement reference_audio_urls (10 pistes maximum) pour référencer un style sonore :
{
"model": "seedance-2.5/image-to-video",
"input": {
"prompt": "参考图里的女孩背着同款蓝色书包,走过下雨的街角,镜头跟随",
"reference_image_urls": [
"https://your-cdn.example.com/girl.jpg",
"https://your-cdn.example.com/backpack.jpg"
],
"duration": 5,
"resolution": "720p"
}
}
Attention : les images de référence et l'audio de référence ne peuvent pas être transmis en même temps que first_frame_url / last_frame_url ; choisissez l'un ou l'autre.
Aperçu des paramètres
| Paramètre | Valeurs | Description |
|---|---|---|
prompt |
chaîne, obligatoire | Décrivez l'action, la caméra et le son ; pas besoin de redécrire toute l'image |
first_frame_url |
URL d'image | Première image |
last_frame_url |
URL d'image | Dernière image, à utiliser avec la première image |
reference_image_urls |
30 maximum | Incompatible avec les images de début et de fin |
reference_audio_urls |
10 maximum | Incompatible avec les images de début et de fin |
duration |
entier de 4 à 30, par défaut 5 | en secondes |
resolution |
720p / 1080p, par défaut 720p |
|
generate_audio |
par défaut true |
Le son est généré en même temps que l'image |
output_format |
mp4 / mov |
Calculons le coût
| Durée | 720p ($0.204/s) | 1080p ($0.516/s) |
|---|---|---|
| 4 secondes | $0.816 | $2.064 |
| 5 secondes | $1.02 | $2.58 |
| 10 secondes | $2.04 | $5.16 |
| 15 secondes | $3.06 | $7.74 |
Les images de début et de fin sont au même prix qu'une seule première image ; le coût dépend uniquement de la résolution et du nombre de secondes. Pour le détail des tarifs, voir Tarifs de l'API Seedance 2.5.
À vérifier avant la mise en production
- L'URL de l'image doit être accessible publiquement : une adresse HTTP(S) ou une data URL convient ; le modèle ne peut pas récupérer une adresse interne.
- Utilisez un callback plutôt que le polling : ajoutez au niveau racine de la requête
"callback": {"url": "https://votre-domaine/hiapi/callback"}, et dédupliquez partaskId. - Copiez rapidement le fichier :
output[0].urlest un lien temporaire ; enregistrez-le dans votre propre stockage dès réception. - Réessayez avec une clé d'idempotence : ajoutez l'en-tête
Idempotency-Key; une même clé ne crée la tâche qu'une seule fois. - Remboursement automatique en cas d'échec : seules les vidéos générées avec succès sont facturées.
Questions fréquentes
Que faire si un « fondu enchaîné » apparaît entre la première et la dernière image ?
Lorsque les deux images sont trop différentes, la transition d'une ou deux secondes ressemble facilement à un fondu entre les deux images. Gardez la composition et les accessoires identiques entre les deux images, ne modifiez que le sujet, puis ajoutez « camera locked off, no cuts » dans le prompt.
Peut-on fournir uniquement la dernière image ?
Non, la dernière image doit être utilisée avec la première image.
Peut-on imposer le format vertical ?
Le format suit la première image ; pour du vertical, importez une première image verticale.
Quelle différence entre une première image et une image de référence ?
La première image devient telle quelle la première image de la vidéo ; l'image de référence sert seulement au modèle pour s'inspirer de l'apparence et du style, et la composition peut être refaite.
Vous n'avez qu'un prompt, sans image ? Voir API Seedance 2.5 texte-vers-vidéo. Pour plus de façons de rédiger la première image, voir Manuel d'utilisation de Seedance 2.5, ou essayez directement en important une image sur la page du modèle.
Articles similaires
Voir tous les articles →-
Tutoriel
Comment appeler hailuo-2.3-fast/image-to-video via l'API HiAPI : curl et Python en pratique
La première requête exploitable du palier image-vers-vidéo rapide et économique — de l'ID du modèle au téléchargement du MP4
-
Tutoriel
Comment appeler hailuo-2.3/text-to-video via l'API HiAPI : curl, Python et exemples de requêtes exécutables
-
Tutoriel
Utiliser Kandinsky 6.0 Pro texte-vers-vidéo sur HiAPI : tutoriel curl et Python
Démonstration pratique axée sur la requête : construire l'appel du prompt au clip vidéo, soumettre la requête, interroger l'état d'achèvement et télécharger le résultat