docs
API

Vidéo et musique

Markdown

Génération de vidéos et de musique : la requête crée une tâche, dont le résultat est récupéré par son identifiant.

Guide complet
POSThttps://api.ailoot.ai/v1/videos
Vidéo et musique
# Conservez le Request ID : l’assistance l’utilise pour retrouver votre requête.
# Créez la tâche une seule fois ; la boucle ci-dessous consulte uniquement son état.
curl --fail-with-body --max-time 120 -D video-create-headers-v1.txt \
  https://api.ailoot.ai/v1/videos \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"grok-imagine-video-1.5","prompt":"un lac calme","seconds":"8","size":"1280x720"}' \
  -o video-create-v1.json || exit 1
VIDEO_ID=$(jq -er '.id // .request_id' video-create-v1.json) || exit 1
VIDEO_STATUS=""
# Cette boucle consulte uniquement la tâche d’origine. Elle ne renvoie jamais la requête de création.
for ATTEMPT in $(seq 1 60); do
  curl --fail-with-body --max-time 30 \
    "https://api.ailoot.ai/v1/videos/$VIDEO_ID" \
    -H "Authorization: Bearer $AILOOT_API_KEY" \
    -o video-status-v1.json || exit 1
  VIDEO_STATUS=$(jq -r '.status // empty' video-status-v1.json)
  # result_pending_check: true (status reste in_progress) : le résultat est en cours de vérification. Arrêtez-vous ; ne recréez jamais la tâche.
  if jq -e '.result_pending_check == true' video-status-v1.json >/dev/null; then
    cat video-status-v1.json
    echo "The result is being checked. Do not create the job again: check GET /v1/videos/$VIDEO_ID later or contact support with the Request ID." >&2
    exit 1
  fi
  case "$VIDEO_STATUS" in
    done|completed) break ;;
    queued|in_progress|pending|processing) sleep 5 ;;
    # failed ou tout autre état : affichez-le et arrêtez-vous. Ne recréez jamais la tâche.
    *) cat video-status-v1.json; exit 1 ;;
  esac
done
case "$VIDEO_STATUS" in
  done|completed) ;;
  *) echo "The job is not finished yet (status: ${VIDEO_STATUS:-none}). Check it later: GET /v1/videos/$VIDEO_ID" >&2; exit 1 ;;
esac
curl --fail-with-body --max-time 120 -L --max-redirs 3 \
  "https://api.ailoot.ai/v1/videos/$VIDEO_ID/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o video-v1.mp4
# Après un dépassement de délai lors de la création, vérifiez le Request ID dans votre historique d’utilisation avant de relancer ce script.
Réponse · abrégée
// L’identifiant de la tâche se trouve dans le champ id ou request_id
{ "id": "…", … }

// Le format dépend du modèle : reprenez l’identifiant
// tel quel dans la réponse à la création.

Autorisation

  • Authorizationheaderobligatoire

    Clé au format Bearer sk-…. Les en-têtes suivants conviennent également : x-api-key ou x-goog-api-key.

Vidéo : corps de la requête

  • modelstringobligatoire

    Modèle vidéo : google/omni-1.1-flash, grok-imagine-video, happyhorse-1.1-t2v, MiniMax-Hailuo-2.3, grok-imagine-video-1.5, happyhorse-1.1-r2v, grok-imagine-video-1.5-preview, happyhorse-1.1-i2v.

  • promptstringobligatoire

    Description de la vidéo.

  • duration / secondsinteger / stringfacultatif

    Selon la famille : Grok 1–15 secondes, MiniMax 6/10 en 768P ou 6 en 1080P, HappyHorse 3–15 ; Google Omni 4/6/8/10. Ne réutilisez pas le champ d’une famille pour une autre.

  • resolution / sizestringfacultatif

    Grok : 480p/720p/1080p (1080p pour video-1.5), ou size 1280x720/720x1280/1920x1080/1080x1920. MiniMax : 768P/1080P. HappyHorse : 480P/720P/1080P. Google Omni : 360p/720p.

  • image / first_frame_image / image_urlsstring / arrayfacultatif

    Les champs des images sources dépendent de la famille et du mode. MiniMax Fast exige first_frame_image. HappyHorse t2v n’utilise pas images ; i2v accepte exactement une image sans ratio ; r2v accepte 1–9 images.

La réponse contient l’identifiant de la tâche (champ id ou request_id). Utilisez-le tel quel, sans l’analyser : son format dépend du modèle. Statut et fichier terminé :

GEThttps://api.ailoot.ai/v1/videos/{id}
GEThttps://api.ailoot.ai/v1/videos/{id}/content

Les mêmes adresses fonctionnent aussi avec le préfixe /v1/videos/generations/{id}. Le statut d’une tâche terminée et les champs de la réponse dépendent du modèle : fiez-vous au champ de statut et récupérez le fichier via /content.

Création → statut → téléchargement

Conservez la réponse de création et son Request ID. Pour MiniMax/HappyHorse, le résultat est prêt lorsque le statut est status: completed, et la réponse contient content_url, data[] et usage. Pour Grok, le statut est status: done avec video.url. Google Omni renvoie 202 queued, puis in_progress avec Retry-After, completed ou partial/content_revoked. Ne considérez pas toute réponse 200 comme une vidéo terminée. Si la réponse de statut contient result_pending_check: true (status alors que in_progress), le résultat est en cours de vérification. Ne recréez pas la tâche : vérifiez-la plus tard via GET /v1/videos/{id} ou contactez l’assistance en indiquant le Request ID.

/content peut renvoyer directement un MP4 ou une redirection vers un fichier à URL signée. Si la réponse contient plusieurs résultats dans data[], enregistrez-les tous : chaque résultat livré est facturé. Il est impossible d’annuler ou de supprimer une tâche vidéo via l’API. Supprimer le fichier terminé en bloque l’accès, sans annuler la génération.

La facturation se fait par seconde de vidéo terminée à la résolution choisie, ou par vidéo, selon le catalogue. Le coût total est réservé lors de la création de la tâche.

Musique

POSThttps://api.ailoot.ai/v1/music/generations
  • modelstringobligatoire

    google/lyria, google/lyria-3-clip-preview.

  • promptstringobligatoire

    Description du morceau : genre, instruments, ambiance.

Dans la réponse, data[] contient les liens vers les clips terminés. Un même appel peut produire plusieurs clips ; chaque clip livré est facturé.

Encore des questions ? Envoyez le Request ID et une description : nous vous aiderons à comprendre.Contacter l’assistance