Utilisez l'API RunComfy pour exécuter blackforestlabs/flux-3-max/keyframes-to-video. Pour les entrées et sorties acceptées, voir le schéma.
curl --request POST \
--url https://model-api.runcomfy.net/v1/models/blackforestlabs/flux-3-max/keyframes-to-video \
--header "Content-Type: application/json" \
--header "Authorization: Bearer <token>" \
--data '{
"prompt": "He sets the robe on the rock, lowers himself into the steaming pool, then turns toward the woman beside him and smiles. Snow keeps falling. Water, soft wind, and a quiet laugh. No text.",
"keyframes": [
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7471/media-files/ref-promo-1.webp",
"frame_index": 0
},
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7471/media-files/ref-promo-2.webp",
"frame_index": 60
},
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7471/media-files/ref-promo-3.webp",
"frame_index": 120
}
]
}'Définissez la variable d'environnement YOUR_API_TOKEN avec votre clé API (gestion dans Profil) et incluez à chaque requête un jeton Bearer dans l'en-tête Authorization : Authorization: Bearer $YOUR_API_TOKEN.
Soumettez une tâche de génération asynchrone et recevez immédiatement un request_id ainsi que des URLs pour le statut, les résultats et l'annulation.
curl --request POST \
--url https://model-api.runcomfy.net/v1/models/blackforestlabs/flux-3-max/keyframes-to-video \
--header "Content-Type: application/json" \
--header "Authorization: Bearer <token>" \
--data '{
"prompt": "He sets the robe on the rock, lowers himself into the steaming pool, then turns toward the woman beside him and smiles. Snow keeps falling. Water, soft wind, and a quiet laugh. No text.",
"keyframes": [
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7471/media-files/ref-promo-1.webp",
"frame_index": 0
},
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7471/media-files/ref-promo-2.webp",
"frame_index": 60
},
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7471/media-files/ref-promo-3.webp",
"frame_index": 120
}
]
}'Récupère l'état actuel pour un request_id (« in_queue », « in_progress », « completed » ou « cancelled »).
curl --request GET \
--url https://model-api.runcomfy.net/v1/requests/{request_id}/status \
--header "Authorization: Bearer <token>"Récupère les sorties finales et métadonnées pour le request_id ; si le travail n'est pas terminé, la réponse indique l'état actuel pour poursuivre le polling.
curl --request GET \
--url https://model-api.runcomfy.net/v1/requests/{request_id}/result \
--header "Authorization: Bearer <token>"Annule un travail en file d'attente via request_id ; les travaux en cours ne peuvent pas être annulés.
curl --request POST \
--url https://model-api.runcomfy.net/v1/requests/{request_id}/cancel \
--header "Authorization: Bearer <token>"Fournissez une URL HTTPS accessible publiquement. L'hôte doit autoriser les récupérations côté serveur (sans login/cookies), sans limitation de débit ni blocage des bots. Recommandé : images ≤ 50 Mo (~4K), vidéos ≤ 100 Mo (~2–5 min en 720p). Préférez des URL stables ou pré-signées pour les actifs privés.
{
"type": "object",
"title": "Schéma d'entrée",
"required": [
"prompt",
"keyframes"
],
"properties": {
"prompt": {
"title": "Prompt",
"description": "Décrivez comment le clip doit se déplacer entre les images-clés fixes.",
"type": "string",
"default": "He sets the robe on the rock, lowers himself into the steaming pool, then turns toward the woman beside him and smiles. Snow keeps falling. Water, soft wind, and a quiet laugh. No text."
},
"keyframes": {
"title": "Images-clés",
"description": "Jusqu’à 10 images. Chaque image doit avoir un frame_index unique sur une chronologie à 24 fps. Cet indice ne doit pas dépasser duration × 24.",
"type": "array",
"default": [
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7471/media-files/ref-promo-1.webp",
"frame_index": 0
},
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7471/media-files/ref-promo-2.webp",
"frame_index": 60
},
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7471/media-files/ref-promo-3.webp",
"frame_index": 120
}
],
"items": {
"image_url": {
"title": "URL de l'image",
"description": "URL de l'image clé. PNG, JPEG ou WebP.",
"type": "string",
"format": "image_uri",
"default": ""
},
"frame_index": {
"title": "Index de cadre",
"description": "Position sur la chronologie à 24 fps. L’indice doit être unique et ne pas dépasser duration × 24.",
"type": "integer",
"format": "int_slider_with_range",
"minimum": 0,
"maximum": 480,
"default": 0
}
},
"maxItems": 10,
"minItems": 1
},
"aspect_ratio": {
"title": "Format d'image",
"description": "Forme du cadre de sortie. auto suit la première image.",
"type": "string",
"enum": [
"auto",
"21:9",
"2:1",
"16:9",
"4:3",
"1:1",
"3:4",
"9:16"
],
"default": "auto"
},
"resolution": {
"title": "Résolution",
"description": "Résolution de sortie. 720p est la valeur par défaut. 1080p est l'option la plus nette.",
"type": "string",
"enum": [
"720p",
"1080p"
],
"default": "720p"
},
"duration": {
"title": "Durée",
"description": "Durée du clip en secondes entières.",
"type": "integer",
"enum": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"default": 5
},
"generate_audio": {
"title": "Générer de l'audio",
"description": "Créez une piste audio avec la vidéo. Désactivez ceci pour un clip silencieux.",
"type": "boolean",
"default": true
},
"reasoning_level": {
"title": "Niveau de raisonnement",
"description": "low revient plus tôt. high passe plus de temps sur l'invite et est plus lent.",
"type": "string",
"enum": [
"low",
"high"
],
"default": "high"
},
"seed": {
"title": "Seed",
"description": "Optionnel. Laissez vide et le modèle choisira une graine aléatoire.",
"type": "integer"
}
}
}{
"output": {
"type": "object",
"properties": {
"image": {
"type": "string",
"format": "uri",
"description": "URL d'une seule image"
},
"video": {
"type": "string",
"format": "uri",
"description": "URL d'une seule vidéo"
},
"images": {
"type": "array",
"description": "plusieurs URLs d'images",
"items": {
"type": "string",
"format": "uri"
}
},
"videos": {
"type": "array",
"description": "plusieurs URLs de vidéos",
"items": {
"type": "string",
"format": "uri"
}
}
}
}
}RunComfy est la première ComfyUI plateforme, offrant des ComfyUI en ligne environnement et services, ainsi que des workflows ComfyUI proposant des visuels époustouflants. RunComfy propose également AI Models, permettant aux artistes d'utiliser les derniers outils d'IA pour créer des œuvres d'art incroyables.