HiAPI
Blog

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.

Oct 15, 2026
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

TL;DR

  • seedance-2.5/image-to-video anime 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_url doit être utilisé avec first_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_ratio n'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 par taskId.
  • Copiez rapidement le fichier : output[0].url est 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 →

Commencez avec des artefacts IA persistants

Obtenez votre clé API et appelez des modèles d'image, de vidéo et d'audio via une API unique basée sur les tasks.

Lire la documentation de l'API