/ai/v1/images pour les images, /ai/v1/videos pour les vidéos et /ai/v1/tasks pour les enregistrements de tâches unifiés.
- La génération d’images est synchrone par défaut et devient asynchrone avec
async: true. - La génération vidéo est toujours asynchrone.
- Les API de détail des images et des vidéos fournissent le dernier statut des tâches média.
/ai/v1/tasksfournit une vue unifiée en lecture seule des tâches d’image, de vidéo et de LLM.
Tutoriel vidéo : tâches asynchrones
Présente le fonctionnement global des tâches asynchrones et illustre le flux
d’appel complet avec une génération d’image asynchrone.
Activer les tâches asynchrones dans la console
Avant d’utiliser les API de tâches média
/ai/v1, activez les tâches
asynchrones pour le compte courant.Démarrage rapide
L’exemple suivant crée une vidéo avecwan2.6-t2v. Ce modèle accepte duration et size. Les champs valides peuvent varier selon le modèle.
Comment choisir entre les trois groupes d’API ?
La Base URL est
https://aihubmix.com. L’authentification utilise un Bearer Token :
/ai/v1/tasks ne propose pas d’API de création. Les images et vidéos doivent
être créées avec leur API média respective. Les tâches de reprise LLM sont
enregistrées automatiquement par la plateforme après une interruption du
client.Différences entre les API média et l’API de tâches unifiées
Les API de détail média et de tâches unifiées renvoient les mêmes champs de premier niveau, mais leurs élémentsoutput et leur comportement de consultation diffèrent.
Utilisez donc l’API de détail d’image ou de vidéo pour suivre le statut d’une génération média. Utilisez
/ai/v1/tasks pour filtrer toutes les tâches, lire les métadonnées des résultats ou récupérer une réponse LLM.
Comment découvrir les modèles média asynchrones et obtenir leurs schémas ?
La découverte se déroule en deux étapes. Récupérez d’abord dans le catalogue public les modèles texte-image ou texte-vidéo compatibles avec les API asynchrones. Utilisez ensuite lemodel_id du modèle pour obtenir le schéma de requête de ses endpoints.
Lister les modèles compatibles avec les API asynchrones
Le catalogue de modèles utilise la même source de données que Playground. Utiliseztype=image_generation pour les modèles texte-image et type=video pour les modèles texte-vidéo. Le paramètre schema_checked=true limite la liste aux modèles dont le schéma de requête a été publié et vérifié.
type accepte actuellement une seule valeur. Interrogez donc chaque type de modèle séparément.
La réponse suit la forme {success, message, data}. Les champs de data utiles aux intégrations média asynchrones sont les suivants.
Obtenir le schéma de requête d’un modèle
Les champs, les valeurs d’énumération et les plages numériques pris en charge peuvent varier selon le modèle. Avant d’envoyer une requête d’image ou de vidéo, utilisez l’endpoint public ci-dessous pour récupérer les endpoints disponibles et les schémas JSON de requête du modèle sélectionné.modality de la réponse est image ou video. Chaque élément du tableau endpoints décrit un protocole d’appel disponible.
Un modèle peut renvoyer des endpoints
/ai/v1 ainsi que des endpoints /v1 compatibles avec OpenAI. Les endpoints compatibles avec OpenAI peuvent ne pas encore prendre en charge les modèles les plus récents. Utilisez donc de préférence les endpoints /ai/v1. Pour les API de tâches asynchrones, sélectionnez l’élément dont le path est /ai/v1/images/generations ou /ai/v1/videos, puis utilisez son request.schema. Ne dépendez pas de la position d’un élément dans le tableau endpoints.
Les commandes suivantes extraient directement le schéma de requête de chaque endpoint de tâche asynchrone.
404 model_not_found si le modèle n’existe pas ou ne dispose d’aucun endpoint détectable. Il renvoie 500 endpoints_unavailable lorsque les données des endpoints sont temporairement indisponibles.
Modèles et champs pris en charge
Les protocoles d’image et de vidéo définissent des champs standard communs aux modèles. Chaque modèle limite toutefois les champs, les valeurs d’énumération et les plages numériques selon ses capacités. Avant l’appel, récupérez les contraintes actuelles du modèle depuis l’endpoint de schéma du modèle. Par exemple :wan2.6-t2vaccepteduration,sizeetseed, mais pasresolution,aspect_ratio,frame_images,input_referencesnigenerate_audio.qwen-image-2.0accepten,size,seed,negative_prompt,imageetimages, mais pasaspect_rationimask.
Modèles de reprise après interruption LLM
Les modèles suivants sont actuellement pris en charge :- gpt-5.6-sol
- gpt-5.5-pro
- gpt-5.4-pro
- gpt-5.2-pro
- claude-fable-5
- claude-opus-5
Comment créer une tâche d’image ?
Image synchrone
Lorsqueasync est omis ou vaut false, l’API attend la fin de la génération et renvoie l’objet tâche :
GET /ai/v1/images pour retrouver la tâche.
Image asynchrone
Lorsqueasync vaut le booléen true, l’API renvoie immédiatement l’objet tâche et la génération se poursuit en arrière-plan :
GET /ai/v1/images/{id}. Une fois terminée, demandez directement le content_url de chaque élément output. Cette URL contient le result_id de l’image correspondante.
Dans une requête d’image,
async doit être un booléen. webhook_url et
webhook_events_filter ne peuvent être utilisés qu’avec async: true.Champs standard des images
Comment créer une tâche vidéo ?
Les requêtes vidéo sont toujours asynchrones etPrefer: wait ne permet pas d’attendre en mode synchrone. Le protocole standard utilise l’entier duration exprimé en secondes :
Champs standard des vidéos
Structure d’un élément
input_references :
type peut valoir image_url, video_url ou audio_url.
Structure d’un élément frame_images :
frame_type peut valoir first_frame ou last_frame.
Objet de tâche média
Les API propres aux images et aux vidéos renvoient la structure suivante :
Élément
output d’un média :
Description des statuts
Le client peut interroger la tâche toutes les 15 secondes jusqu’au statut
completed, failed ou cancelled. Cet intervalle de 15 secondes est une recommandation pour le polling côté client, pas une restriction du protocole serveur.
Comment consulter les tâches média ?
Consulter le détail d’un média
Lister les médias
Si la réponse de création est perdue, retrouvez l’ID de tâche dans la liste du média correspondant :Comment utiliser l’API de tâches unifiées ?
L’API de tâches unifiées accepte les filtres suivants :
Détail d’une tâche unifiée :
output unifié d’une tâche média :
/ai/v1/tasks/{id}/content. Pour plusieurs résultats, demandez /ai/v1/tasks/{id}/content/{result_id}. Sans ID de résultat, l’API renvoie 400 result_id_required.
Les API de liste, de détail et de contenu des tâches unifiées sont isolées
selon le Bearer Token qui a créé la tâche. Une autre clé API du même compte ne
peut pas lire cette tâche.
Télécharger les résultats média
Télécharger des images
Une fois l’image terminée, demandez chaqueoutput[].content_url de l’objet de tâche média :
/ai/v1/images/{id}/content/{result_id}. L’objet de tâche média n’expose pas result_id séparément. Le client peut utiliser directement content_url.
Lorsque b64_json n’est pas vide, décodez directement ce champ en Base64.
Télécharger une vidéo
Utiliser un Webhook
Les images asynchrones et les vidéos prennent en charge les Webhooks au niveau de la tâche :webhook_url est limité à 512 caractères et ne peut pas pointer vers la machine locale, un réseau privé ou une autre adresse restreinte. Lorsque webhook_events_filter est omis, la plateforme envoie completed, failed et cancelled. Lorsqu’il est fourni, le tableau ne peut pas être vide ni contenir de doublons, et doit être utilisé avec webhook_url.
Si webhook_url est absent de la requête, les images asynchrones et les vidéos tentent d’utiliser l’adresse de rappel par défaut du compte. Une adresse par défaut non valide est ignorée et ne bloque pas la création de la tâche.
Requête de rappel
results n’apparaît que si le résultat a été archivé. Le téléchargement nécessite toujours un Bearer Token.
Nouvelles tentatives et déduplication
La plateforme utilise une livraison au moins une fois. Un même événement peut être envoyé plusieurs fois :- HTTP
2xxindique une réception réussie. - HTTP
5xx, une erreur réseau ou un délai dépassé déclenchent une nouvelle tentative. - HTTP
3xxet4xxne déclenchent pas de nouvelle tentative. - Six livraisons au maximum, avec des intervalles successifs de 1, 4, 16, 64 et 256 secondes.
event_id et renvoyer immédiatement 2xx s’il reçoit à nouveau le même événement.
Fonctionnement de la reprise après interruption LLM
La reprise après interruption LLM permet de récupérer la réponse finale après la déconnexion du client. Le mode de requête, le comportement en streaming et le format de réponse restent inchangés. Aucun ID de tâche n’est renvoyé à l’avance au début de la requête. Les conditions suivantes doivent être remplies simultanément :
La plateforme crée une tâche de reprise et enregistre le JSON ou le SSE final uniquement lorsqu’elle détecte que la réponse n’a pas été entièrement livrée et que le client s’est déconnecté. Une requête LLM terminée normalement et entièrement livrée au client ne crée pas de tâche de reprise.
Les en-têtes de réponse LLM contiennent
X-Aihubmix-Request-Id. Le client doit enregistrer cette valeur au plus tôt pour retrouver la requête correspondante dans la console. L’API publique de tâches ne permet pas actuellement de filtrer par ID de requête. Vous pouvez consulter les tâches LLM récentes par modèle et date de création :
output unifié d’une tâche LLM contient type=response, content_type, content_url et truncated. GET /ai/v1/tasks/{id}/content renvoie le JSON ou le SSE d’origine enregistré.
Réponses et codes d’erreur
Cette section s’applique à/ai/v1/images/*, /ai/v1/videos/* et aux requêtes /ai/v1/tasks/* identifiées comme des tâches d’image ou de vidéo. Les tâches LLM conservent leur contrat d’erreur existant. Les consultations sans type de média précisé et pour lesquelles aucune tâche n’a encore été obtenue continuent d’utiliser le contrat d’erreur général.
- Échec de la requête en cours : un statut HTTP hors 2xx indique que la requête de création, de consultation ou de téléchargement a échoué. Voir Échecs des requêtes HTTP.
- Échec d’exécution de la tâche : la consultation renvoie HTTP 200, mais la tâche porte
status=failed, avec la cause enregistrée dans son champerror. Voir Échecs d’exécution des tâches. - Échec de lecture du résultat d’une ligne de liste : la liste renvoie HTTP 200, mais une tâche comporte
output_error. Voir Échecs de lecture des résultats individuels d’une liste.
message ci-dessous contiennent les messages de réponse en anglais. Les descriptions en expliquent le sens et le traitement. Les erreurs de validation des paramètres présentent un message générique ; la réponse réelle peut préciser les champs et contraintes concernés. Les clients doivent identifier le type d’erreur à partir de code, sans dépendre d’une correspondance avec le message complet.
Signaler une erreur HTTP 5xx
Lorsqu’une requête renvoie HTTP
5xx, signalez le problème en joignant error.tid.Échecs des requêtes HTTP
Les statuts HTTP ci-dessous s’appliquent à l’échec direct de la requête en cours. Pour les échecs d’exécution après la création d’une tâche, consultez le tableau Échecs d’exécution des tâches ci-dessous.Paramètres de requête et médias d’entrée
- Taille du média : les tâches d’image dépassant la limite renvoient
image_too_large; les autres tâches média renvoientmedia_too_large. Les tâches vidéo utilisent aussimedia_too_largelors de l’envoi d’images de référence. La limite exacte figure dans le message d’erreur ou danserror.details.max_bytes. - Taille totale de la requête :
request_too_largesignifie que le corps HTTP dépasse 32 MiB, y compris le texte, les paramètres et l’encodage des médias intégrés. Lorsqu’une URL seule est fournie, elle compte dans la taille du corps ; le fichier qu’elle désigne doit aussi respecter les limites de média du modèle. - Taille réelle :
error.details.actual_bytesest fourni uniquement lorsque la taille complète est confirmée. Lors de la lecture d’un média par URL, ce champ peut être absent si la lecture s’arrête à la limite.
error.details.allowed_mime_types ou la liste de formats du message d’erreur. En l’absence de liste, consultez le Schema du modèle.
Variables dans les messages
{media_kind}: le type réel de média. Lorsque ce type est confirmé, les messages deinvalid_media_dataetmedia_url_unreachableutilisent égalementimageouvideo.{max_bytes}: la limite en octets. Si la limite de l’image est inconnue, la réponse estThe image is too large. Reduce the image size and try again.{allowed_formats}: la liste des formats autorisés. Les messages d’erreur de format peuvent ajouterUse one of: {allowed_formats}.
Requêtes de génération et résultats renvoyés
Compte et autorisations
Disponibilité du service et limites de débit
provider_unavailable indique une défaillance du fournisseur de modèles explicitement identifiée. Un simple statut 429 ou 4xx ne permet pas de confirmer un problème de quota, de modération du contenu ou de paramètres.
Consultation des tâches et téléchargement des résultats
Échecs d’exécution des tâches
Après la création réussie d’une tâche, un échec de génération est signalé parstatus=failed et le champ error de la tâche. Une consultation réussie renvoie toujours HTTP 200.
message se termine par submit a new task., afin d’indiquer de réduire le média avant de soumettre une nouvelle tâche.
output_blocked indique un blocage explicite sans image exploitable renvoyée ; aucun frais de génération n’est facturé pour cette tentative. Les règles existantes de facturation de la modération s’appliquent à output_policy_violation. Consultez l’historique de facturation pour les frais antérieurs.
Échecs de lecture des résultats individuels d’une liste
Certaines lignes des listes de tâches d’image et de vidéo peuvent comporteroutput_error :
output=[] pour cette ligne. Ses champs id, status et error ainsi que la pagination restent inchangés, et les autres tâches lisibles ne sont pas affectées. Même avec status=completed, vérifiez output_error avant de déterminer si le résultat peut être lu.
Contactez l’assistance avec output_error.tid. Si ce champ ne contient pas de tid, fournissez l’ID de requête des en-têtes de la réponse en cours. Cette erreur ne modifie ni le statut de la tâche ni les frais, et ne déclenche pas de Webhook.
Dans la liste unifiée /ai/v1/tasks, les lignes dont le résultat n’a pas pu être lu peuvent renvoyer expires_at=null ; la durée de conservation initiale continue de s’appliquer. Les listes propres aux images et vidéos conservent l’expiration déjà obtenue.
Ce traitement s’applique uniquement lorsqu’un résultat individuel est illisible et qu’aucune solution de repli n’est disponible. L’échec de consultation de tout un lot dans l’API de tâches unifiées renvoie toujours une erreur HTTP ; le même type d’échec lors de la lecture des détails renvoie toujours HTTP 500.
Documentation associée : API image · API vidéo · Tâches asynchrones
Exemple vidéo complet
Questions fréquentes
Faut-il consulter une tâche média via/ai/v1/tasks/{id} ou via l’API de détail média ?
Utilisez l’API de détail média pour suivre le statut de génération : /ai/v1/images/{id} pour une image et /ai/v1/videos/{id} pour une vidéo. /ai/v1/tasks/{id} renvoie un instantané en lecture seule.
Pourquoi le champ seconds d’une requête vidéo provoque-t-il une erreur de paramètre ?
Le protocole standard /ai/v1/videos utilise l’entier duration, exprimé en secondes. Les valeurs autorisées dépendent des paramètres pris en charge par le modèle.
Pourquoi resolution provoque-t-il une erreur avec certains modèles vidéo ?
Le protocole vidéo standard contient resolution et size, mais chaque modèle peut limiter les champs. Par exemple, wan2.6-t2v utilise size et n’accepte pas resolution.
Comment retrouver une tâche média après la perte de la réponse de création ?
Demandez GET /ai/v1/images pour une image ou GET /ai/v1/videos pour une vidéo. Les listes prennent en charge les paramètres de pagination after, limit et order.
Pourquoi les champs output diffèrent-ils entre les deux API de détail ?
L’API de détail média fournit les champs simplifiés nécessaires au téléchargement direct. L’API de tâches unifiées fournit également result_id et content_type, ainsi que truncated pour les archives LLM.
Que faire si le Webhook n’est pas reçu ?
Vérifiez que l’adresse de rappel est accessible publiquement et renvoie rapidement 2xx, puis consultez le statut final avec l’API de détail média.
Date de mise à jour : 2026-08-12