Usa la API de RunComfy para ejecutar blackforestlabs/flux-3/keyframes-to-video. Para entradas y salidas admitidas, consulta el esquema.
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
}
]
}'Define la variable de entorno YOUR_API_TOKEN con tu clave API (gestión en Perfil) e incluye en cada solicitud un token Bearer en la cabecera Authorization : Authorization: Bearer $YOUR_API_TOKEN.
Envía un trabajo de generación asíncrono y recibe de inmediato un request_id y URLs para consultar estado, obtener resultados y cancelar.
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
}
]
}'Obtiene el estado actual de 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>"Obtiene las salidas finales y metadatos del request_id; si el trabajo no ha terminado, la respuesta devuelve el estado actual para seguir haciendo polling.
curl --request GET \
--url https://model-api.runcomfy.net/v1/requests/{request_id}/result \
--header "Authorization: Bearer <token>"Cancela un trabajo en cola por request_id; los trabajos en curso no se pueden cancelar.
curl --request POST \
--url https://model-api.runcomfy.net/v1/requests/{request_id}/cancel \
--header "Authorization: Bearer <token>"Proporciona una URL HTTPS públicamente accesible. El host debe permitir peticiones del servidor (sin login/cookies), sin rate limit agresivo ni bloqueo de bots. Recomendado: imágenes ≤ 50 MB (~4K), vídeos ≤ 100 MB (~2–5 min a 720p). Para activos privados, URLs estables o firmadas.
{
"type": "object",
"title": "Esquema de entrada",
"required": [
"prompt",
"keyframes"
],
"properties": {
"prompt": {
"title": "Prompt",
"description": "Texto que describe el vídeo que quieres generar.",
"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": "Keyframes",
"description": "Imágenes clave ancladas a posiciones de fotograma en el vídeo generado. Hasta 10 keyframes con valores frame_index únicos (desde 0, como máximo duración × 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 de imagen",
"description": "URL de la imagen del keyframe (PNG, JPEG o WebP).",
"type": "string",
"format": "image_uri",
"default": ""
},
"frame_index": {
"title": "Índice de fotograma",
"description": "Posición de fotograma de este keyframe en el vídeo de 24 fps. Debe ser único y como máximo duración × 24.",
"type": "integer",
"format": "int_slider_with_range",
"minimum": 0,
"maximum": 480,
"default": 0
}
},
"maxItems": 10,
"minItems": 1
},
"aspect_ratio": {
"title": "Relación de aspecto",
"description": "Relación de aspecto del vídeo generado. auto deja que el modelo elija.",
"type": "string",
"enum": [
"auto",
"21:9",
"2:1",
"16:9",
"4:3",
"1:1",
"3:4",
"9:16"
],
"default": "16:9"
},
"resolution": {
"title": "Resolución",
"description": "Resolución del vídeo generado.",
"type": "string",
"enum": [
"720p",
"1080p"
],
"default": "720p"
},
"duration": {
"title": "Duración",
"description": "Duración del vídeo generado en segundos. Se necesita una duración explícita para validar las posiciones de los keyframes.",
"type": "integer",
"enum": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"default": 5
},
"generate_audio": {
"title": "Generar audio",
"description": "Si se debe generar audio sincronizado para el vídeo.",
"type": "boolean",
"default": true
},
"safety_tolerance": {
"title": "Tolerancia de seguridad",
"description": "Nivel de tolerancia de seguridad del vídeo generado. 0 es el más estricto y 4 el más permisivo.",
"type": "integer",
"minimum": 0,
"maximum": 4,
"default": 2
}
}
}{
"output": {
"type": "object",
"properties": {
"image": {
"type": "string",
"format": "uri",
"description": "URL de una sola imagen"
},
"video": {
"type": "string",
"format": "uri",
"description": "URL de un solo vídeo"
},
"images": {
"type": "array",
"description": "varias URLs de imagen",
"items": {
"type": "string",
"format": "uri"
}
},
"videos": {
"type": "array",
"description": "varias URLs de vídeo",
"items": {
"type": "string",
"format": "uri"
}
}
}
}
}RunComfy es la principal ComfyUI plataforma, ofreciendo ComfyUI en línea entorno y servicios, junto con flujos de trabajo de ComfyUI con impresionantes imágenes. RunComfy también ofrece AI Models, permitiendo a los artistas aprovechar las últimas herramientas de AI para crear arte increíble.