Usa l'API RunComfy per eseguire blackforestlabs/flux-3/keyframes-to-video. Per input e output accettati, consulta lo schema.
curl --request POST \
--url https://model-api.runcomfy.net/v1/models/blackforestlabs/flux-3/keyframes-to-video \
--header "Content-Type: application/json" \
--header "Authorization: Bearer <token>" \
--data '{
"prompt": "One continuous tracking shot: she starts on the wet coastal road facing the distant lighthouse, walks through the wooden gate as the mist thins, and arrives at the lighthouse base just as sunlight breaks through. Soft ocean spray, distant gulls, natural footsteps on wet asphalt.",
"keyframes": [
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7399/media-files/ref-promo-1.webp",
"frame_index": 0
},
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7399/media-files/ref-promo-2.webp",
"frame_index": 60
},
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7399/media-files/ref-promo-3.webp",
"frame_index": 120
}
]
}'Imposta la variabile d'ambiente YOUR_API_TOKEN con la tua chiave API (gestione nel Profilo) e includi in ogni richiesta un token Bearer nell'intestazione Authorization : Authorization: Bearer $YOUR_API_TOKEN.
Invia un job di generazione asincrono e ricevi subito un request_id e URL per stato, risultati e annullamento.
curl --request POST \
--url https://model-api.runcomfy.net/v1/models/blackforestlabs/flux-3/keyframes-to-video \
--header "Content-Type: application/json" \
--header "Authorization: Bearer <token>" \
--data '{
"prompt": "One continuous tracking shot: she starts on the wet coastal road facing the distant lighthouse, walks through the wooden gate as the mist thins, and arrives at the lighthouse base just as sunlight breaks through. Soft ocean spray, distant gulls, natural footsteps on wet asphalt.",
"keyframes": [
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7399/media-files/ref-promo-1.webp",
"frame_index": 0
},
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7399/media-files/ref-promo-2.webp",
"frame_index": 60
},
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7399/media-files/ref-promo-3.webp",
"frame_index": 120
}
]
}'Recupera lo stato corrente per un request_id ("in_queue", "in_progress", "completed" o "cancelled").
curl --request GET \
--url https://model-api.runcomfy.net/v1/requests/{request_id}/status \
--header "Authorization: Bearer <token>"Recupera output finali e metadati per il request_id; se il job non è completo, la risposta restituisce lo stato corrente per continuare il polling.
curl --request GET \
--url https://model-api.runcomfy.net/v1/requests/{request_id}/result \
--header "Authorization: Bearer <token>"Annulla un job in coda tramite request_id; i job in corso non possono essere annullati.
curl --request POST \
--url https://model-api.runcomfy.net/v1/requests/{request_id}/cancel \
--header "Authorization: Bearer <token>"Fornisci un URL HTTPS raggiungibile pubblicamente. L'host deve consentire fetch lato server (senza login/cookie), senza rate limit eccessivo o blocco bot. Consigliato: immagini ≤ 50 MB (~4K), video ≤ 100 MB (~2–5 min a 720p). Per asset privati, URL stabili o pre-firmati.
{
"type": "object",
"title": "Schema di input",
"required": [
"prompt",
"keyframes"
],
"properties": {
"prompt": {
"title": "Prompt",
"description": "Testo che descrive il video da generare.",
"type": "string",
"default": "One continuous tracking shot: she starts on the wet coastal road facing the distant lighthouse, walks through the wooden gate as the mist thins, and arrives at the lighthouse base just as sunlight breaks through. Soft ocean spray, distant gulls, natural footsteps on wet asphalt."
},
"keyframes": {
"title": "Keyframe",
"description": "Immagini chiave fissate a posizioni di frame nel video generato. Fino a 10 keyframe con valori frame_index univoci (da 0, al massimo durata × 24 a 24 fps).",
"type": "array",
"default": [
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7399/media-files/ref-promo-1.webp",
"frame_index": 0
},
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7399/media-files/ref-promo-2.webp",
"frame_index": 60
},
{
"image_url": "https://playgrounds-storage-public.runcomfy.net/tools/7399/media-files/ref-promo-3.webp",
"frame_index": 120
}
],
"items": {
"image_url": {
"title": "URL immagine",
"description": "URL dell’immagine keyframe (PNG, JPEG o WebP).",
"type": "string",
"format": "image_uri",
"default": ""
},
"frame_index": {
"title": "Indice frame",
"description": "Posizione del frame di questo keyframe nel video a 24 fps. Deve essere univoco e al massimo durata × 24.",
"type": "integer",
"format": "int_slider_with_range",
"minimum": 0,
"maximum": 480,
"default": 0
}
},
"maxItems": 10,
"minItems": 1
},
"aspect_ratio": {
"title": "Formato",
"description": "Formato del video generato. auto lascia scegliere al modello.",
"type": "string",
"enum": [
"auto",
"21:9",
"2:1",
"16:9",
"4:3",
"1:1",
"3:4",
"9:16"
],
"default": "16:9"
},
"resolution": {
"title": "Risoluzione",
"description": "Risoluzione del video generato.",
"type": "string",
"enum": [
"720p",
"1080p"
],
"default": "720p"
},
"duration": {
"title": "Durata",
"description": "Durata del video generato in secondi. Serve una durata esplicita per validare le posizioni dei keyframe.",
"type": "integer",
"enum": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"default": 5
},
"generate_audio": {
"title": "Genera audio",
"description": "Se generare audio sincronizzato per il video.",
"type": "boolean",
"default": true
},
"safety_tolerance": {
"title": "Tolleranza di sicurezza",
"description": "Livello di tolleranza di sicurezza del video generato. 0 è il più rigoroso, 4 il più permissivo.",
"type": "integer",
"minimum": 0,
"maximum": 4,
"default": 2
}
}
}{
"output": {
"type": "object",
"properties": {
"image": {
"type": "string",
"format": "uri",
"description": "URL immagine singola"
},
"video": {
"type": "string",
"format": "uri",
"description": "URL video singolo"
},
"images": {
"type": "array",
"description": "più URL immagine",
"items": {
"type": "string",
"format": "uri"
}
},
"videos": {
"type": "array",
"description": "più URL video",
"items": {
"type": "string",
"format": "uri"
}
}
}
}
}RunComfy è la piattaforma principale ComfyUI che offre ComfyUI online ambiente e servizi, insieme a workflow di ComfyUI con visuali mozzafiato. RunComfy offre anche AI Models, consentire agli artisti di sfruttare gli ultimi strumenti di AI per creare arte incredibile.