Passer au contenu principal
POST
Cette API est asynchrone. Enregistrez l’identifiant de tâche après l’envoi, puis consultez GET /v1/tasks/{task_id} pour obtenir l’état et les résultats. Dans la réponse par défaut, l’identifiant se trouve dans data[0].task_id.

En-têtes de requête

string
requis
Utilisez une APIMart API Key sous la forme Bearer <token>. L’envoi et les requêtes de suivi doivent être authentifiés avec la même identité utilisateur.
string
Fortement recommandé. Utilisez une nouvelle clé pour chaque génération indépendante (1–191 caractères ASCII visibles ; UUID recommandé). Remplacez <unique-operation-key> dans les exemples. Après un délai d’attente dépassé ou une erreur réseau, conservez le même endpoint, corps, version de réponse et clé lors de la nouvelle tentative. Une fois l’identifiant reçu, consultez uniquement cette tâche.

Paramètres de requête

string
requis
Valeur fixe : muse-video-ext.
string
requis
Description du contenu à générer, en chinois ou en anglais. Elle ne doit pas être vide après suppression des espaces en début et fin. Obligatoire même avec des images de référence.
string[]
Jusqu’à 9 entrées d’images de référence non vides. Accepte les URL publiques, Data URI (par exemple data:image/png;base64,...) ou le base64 brut. Omettez ce champ ou envoyez [] pour générer uniquement à partir du texte. PNG, JPEG et WebP sont recommandés. Les URL doivent être directement accessibles au serveur sans cookies de connexion du navigateur.La taille d’origine cumulée de toutes les images ne doit pas dépasser 11 MiB (11 534 336 octets). Cette limite est globale, pas par image. Le base64 augmente aussi la taille du corps de requête. N’envoyez pas d’URL blob:, de chemins locaux ni d’objets File.
string
Accepte les sept ratios ci-dessous. Sans ce champ, la génération depuis du texte utilise 16:9 ; avec des références, elle suit leur composition. Un ratio explicite prévaut. Pour la sélection automatique, omettez le champ ; n’envoyez pas "auto".1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3
string
Champ de compatibilité acceptant les sept ratios ci-dessus ou auto, mais pas des dimensions en pixels comme 1024x1024. Envoyer uniquement size: "auto" revient à ne pas définir de ratio. Préférez aspect_ratio. Si les deux valeurs sont valides, aspect_ratio prévaut, mais chaque champ est validé séparément : un ratio valide ne corrige pas un size invalide.
integer
défaut:"1"
Un seul résultat par requête. Seul le nombre 1 est accepté. Une valeur explicite 0, négative ou supérieure à 1 provoque une erreur.
integer | string
défaut:"10"
Durée fixe d’environ 10 secondes. Accepte le nombre 10 ou les chaînes "10" et "10s" ; le nombre 10 est recommandé. Alias compatibles : seconds et duration_seconds. Utilisez un seul champ de durée ; chaque champ transmis est validé séparément.
string
défaut:"720p"
Seul 720p est accepté, pas 1080p ni 4k. Les dimensions et la durée réelles sont celles des métadonnées du média retourné.
boolean
Les vidéos incluent du son par défaut ; ce champ peut être omis. true ne change pas ce comportement et false est refusé.
Renvoie une URL MP4 : environ 10 secondes, 720p, avec son. Les références guident la génération sans garantir une première image identique au pixel près.

Autres paramètres facultatifs

string
URL de base du backend recevant les notifications. La plateforme retire les barres obliques finales et ajoute /callback : https://your-backend.example/muse devient https://your-backend.example/muse/callback. Omettez ce champ si vous utilisez uniquement le suivi par requêtes.
string
Langue des messages d’erreur du Webhook, sans effet sur le contenu généré. Valeurs : zh, en, ja, ko, ru, fr, de, id, pt, es. Les codes régionaux comme zh-CN ne sont pas acceptés. Pour le suivi, précisez la langue séparément dans la query string GET.

Génération avec des images de référence

Remplacez l’URL d’exemple par une URL d’image accessible. Le ratio est omis pour suivre la composition de la référence ; ajoutez aspect_ratio pour imposer un ratio. Ajoutez les autres images à image_urls, jusqu’à 9 au total.

Réponse à l’envoi

La réponse par défaut est HTTP 200, avec data sous forme de tableau. submitted signifie que la tâche est acceptée, pas terminée. Enregistrez data[0].task_id, puis consultez la tâche.
Avec l’en-tête X-APIMart-Response-Version: 2026-07-27, l’envoi renvoie HTTP 202. Lisez l’identifiant dans data.id et le chemin de suivi dans data.poll_url.
Cette version ne modifie pas la structure des réponses GET. Si vous ajoutez cet en-tête, ne continuez pas à lire l’identifiant d’envoi dans data[0].task_id.

Consulter l’état et les résultats

Utilisez l’identifiant complet reçu à l’envoi et la même identité utilisateur. language est facultatif et définit la langue des erreurs. Tous les champs figurent dans État des tâches.
Interrogez toutes les 5–10 secondes, sans requêtes simultanées pour une même tâche. Un délai d’attente côté client ou l’arrêt du suivi n’annule pas la tâche serveur. Conservez l’identifiant et reprenez les requêtes GET plus tard ; ne relancez pas automatiquement une génération. Déterminez la fin à partir de data.status. HTTP 200 ou progress: 100 ne suffit pas à indiquer une génération réussie. Un polling_error pendant le traitement n’est pas un échec terminal. Exemple de réponse pour une tâche terminée (URL de résultat fictive) :
Dans les réponses de suivi, data est un objet et url un tableau de chaînes. Le premier résultat se trouve dans data.result.videos[0].url[0]. Si présent, expires_at indique l’expiration en secondes Unix ; sauvegardez les fichiers nécessaires avant cette date. actual_time mesure le temps de traitement, pas la durée de lecture vidéo.

Limites et gestion des erreurs

Les vidéos et audios de référence, masques, contrôles de première/dernière image, extensions et remix ne sont pas pris en charge. quality est sans effet. Omettez seed, negative_prompt, width, height, response_format et output_format, qui ne font pas partie des paramètres de génération de ce modèle. async: false n’active pas la génération synchrone et stream ne fournit pas de flux SSE de génération. Une tâche échouée peut encore renvoyer HTTP 200 ; vérifiez data.status et data.error.message. Une erreur réseau ou 5xx lors de l’envoi peut survenir après acceptation : ne renvoyez pas immédiatement avec une nouvelle clé.