API de génération vidéo Seedance
Appelez la génération vidéo Seedance (Volcengine Ark) via LMU AI avec le protocole asynchrone natif : créez, consultez, listez et annulez des tâches, avec un exemple complet d'interrogation périodique.
La génération vidéo Seedance (Volcengine Ark) utilise le protocole asynchrone natif du fournisseur : remplacez l'adresse dans le SDK officiel ou la commande curl par l'adresse LMU AI et la clé par votre clé API LMU AI ; le corps de la requête reste inchangé. Pour les règles communes concernant l'authentification, la facturation et les filigranes, les limites de concurrence et les codes d'erreur, consultez la présentation de l'API de génération vidéo.
URL de base
https://api.lmuai.ai| Opération | Endpoint |
|---|---|
| Créer une tâche | POST /api/v3/contents/generations/tasks |
| Consulter une tâche | GET /api/v3/contents/generations/tasks/{id} |
| Lister les tâches | GET /api/v3/contents/generations/tasks |
| Annuler / supprimer | DELETE /api/v3/contents/generations/tasks/{id} |
La génération vidéo doit être activée pour votre groupe
Le groupe de la clé API doit avoir l'option « Génération vidéo » activée ; à défaut, les appels renvoient 403. Le nom du modèle doit correspondre exactement au nom activé pour votre groupe (sensible à la casse) ; vérifiez les modèles disponibles avec GET /v1/models.
1. Créer une tâche
POST /api/v3/contents/generations/tasks
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
model | string | Oui | Nom du modèle ; doit correspondre exactement au nom activé pour votre groupe (sensible à la casse) |
content | array | Oui | Contenu d'entrée. Texte : {"type":"text","text":"…"} ; image de référence : {"type":"image_url","image_url":{"url":"…"},"role":"first_frame"}, où role peut valoir first_frame (première image) ou reference_image (image de référence) |
resolution | string | Non | Niveau de résolution : 480p / 720p / 1080p |
duration | integer | Non | Durée de la vidéo en secondes |
ratio | string | Non | Format d'image : 16:9 / 9:16 / 1:1 / 4:3 |
generate_audio | boolean | Non | Indique s'il faut également générer l'audio |
curl https://api.lmuai.ai/api/v3/contents/generations/tasks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"content": [
{"type": "text", "text": "Waves gently lapping the beach at dusk, slow motion"}
],
"resolution": "720p",
"duration": 5,
"ratio": "16:9",
"generate_audio": true
}'import requests
BASE = "https://api.lmuai.ai"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
resp = requests.post(f"{BASE}/api/v3/contents/generations/tasks", headers=HEADERS, json={
"model": "seedance-2.5",
"content": [{"type": "text", "text": "Waves gently lapping the beach at dusk, slow motion"}],
"resolution": "720p",
"duration": 5,
"ratio": "16:9",
"generate_audio": True,
})
resp.raise_for_status()
task_id = resp.json()["id"]
print(task_id)const BASE = "https://api.lmuai.ai";
const headers = {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
};
const resp = await fetch(`${BASE}/api/v3/contents/generations/tasks`, {
method: "POST",
headers,
body: JSON.stringify({
model: "seedance-2.5",
content: [{ type: "text", text: "Waves gently lapping the beach at dusk, slow motion" }],
resolution: "720p",
duration: 5,
ratio: "16:9",
generate_audio: true,
}),
});
const data = await resp.json();
console.log(data.id);Réponse :
{
"id": "cgt-20261022103211-ab12c"
}Pour utiliser une image de référence en première image, ajoutez un élément image à content :
{
"model": "seedance-2.5",
"content": [
{"type": "text", "text": "The camera slowly pushes in as waves gently lap the beach"},
{"type": "image_url", "image_url": {"url": "https://example.com/first-frame.png"}, "role": "first_frame"}
],
"resolution": "720p",
"duration": 5
}Remarques
- En mode première image (
rolevautfirst_frame), n'envoyez pasratio: le format d'image suit celui de l'image de première image, et le service amont rejette la requête avec400si vous l'envoyez. callback_urln'est pas transmis au service amont ; vous ne recevrez pas de rappel même si vous le transmettez. Utilisez plutôt l'interrogation périodique.
2. Consulter une tâche
GET /api/v3/contents/generations/tasks/{id}
Valeurs de status : queued → running → succeeded / failed / cancelled. En cas de succès, l'URL de la vidéo se trouve dans content.video_url.
curl https://api.lmuai.ai/api/v3/contents/generations/tasks/TASK_ID \
-H "Authorization: Bearer YOUR_API_KEY"Réponse (succès) :
{
"id": "cgt-20261022103211-ab12c",
"model": "seedance-2.5",
"status": "succeeded",
"content": {
"video_url": "https://…/video.mp4"
},
"usage": {
"completion_tokens": 108900,
"total_tokens": 108900
},
"created_at": 1792629131,
"updated_at": 1792629262
}3. Lister les tâches
GET /api/v3/contents/generations/tasks?limit=20&offset=0
Renvoie les tâches créées avec la clé API actuelle (limit de 1 à 100, 20 par défaut). La réponse est de la forme {object, data[], has_more}. Les enregistrements de tâches restent consultables après l'expiration du lien vidéo.
4. Annuler / supprimer
DELETE /api/v3/contents/generations/tasks/{id}
- Les tâches encore en file d'attente (
queued) peuvent être annulées sans frais. - Les tâches dont la génération a commencé (
running) ne peuvent pas être annulées et renvoient409. - Pour les tâches terminées, l'enregistrement amont peut être supprimé, sans remboursement.
5. Exemple complet : créer et interroger
import time, requests
BASE = "https://api.lmuai.ai"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
# 1. Create the task
resp = requests.post(f"{BASE}/api/v3/contents/generations/tasks", headers=HEADERS, json={
"model": "seedance-2.5",
"content": [{"type": "text", "text": "Waves gently lapping the beach at dusk, slow motion"}],
"resolution": "720p", "duration": 5, "ratio": "16:9",
})
resp.raise_for_status()
task_id = resp.json()["id"]
# 2. Poll until a final state (every 10 seconds)
while True:
task = requests.get(f"{BASE}/api/v3/contents/generations/tasks/{task_id}", headers=HEADERS).json()
status = task["status"]
if status in ("succeeded", "failed", "cancelled", "canceled", "expired"):
break
time.sleep(10)
# 3. Download (the link is valid for 24 hours)
if status == "succeeded":
url = task["content"]["video_url"]
with open(f"{task_id}.mp4", "wb") as f:
f.write(requests.get(url).content)
else:
print("Generation failed:", task)6. Facturation et codes d'erreur
Seedance est facturé selon les Token de sortie. Un montant estimé est bloqué à la création de la tâche, et un solde insuffisant renvoie 402 ; en cas de succès, la tâche est réglée selon l'utilisation réelle, et les tâches échouées et annulées sont intégralement remboursées. Chaque utilisateur et chaque clé API peut avoir au maximum 5 tâches en cours de génération simultanément ; au-delà, les requêtes renvoient 429.
Pour les règles complètes, consultez Facturation et filigranes, Limites de concurrence et Codes d'erreur dans la présentation. Pour l'autre fournisseur, consultez l'API de génération vidéo Wan.
Dernière mise à jour :
Encore des questions ? Posez-les sur la communauté LMU AI (en chinois) ; connectez-vous avec votre compte de la console.
Obtenez une clé API LMU AI et utilisez Claude, Codex et plus encore
Inscription gratuite et forfaits flexibles. Une seule clé API pour Claude Code, Codex CLI, Cursor, l'extension VS Code, OpenCode, Cherry Studio et d'autres outils d'IA.
S'inscrireAPI de génération vidéo
Présentation de l'API de génération vidéo LMU AI : choisir entre Seedance et Wan, et règles communes pour l'authentification, les tâches asynchrones, la facturation, les limites de concurrence et les codes d'erreur.
API de génération vidéo Wan
Appelez la génération vidéo Wan (Alibaba DashScope) via LMU AI avec le protocole asynchrone natif : création de tâches, interrogation des résultats, valeurs par défaut et exemple complet d'interrogation.