Enviar una tarea de generación de vídeo
Crea una tarea asíncrona de generación de vídeo y devuelve un task_id de inmediato (HTTP 202). Consulta GET /api/v1/videos/generations/{task_id} hasta que finalice correctamente. El cuerpo de la solicitud puede enviarse plano ({model, prompt, ...}) o anidado ({model, input: {prompt, ...}}); el objeto input tiene prioridad cuando está presente. Los campos callback (callBackUrl / callback_url / callbackUrl) se ignoran.
Tres modos de entrada mutuamente excluyentes:
- texto a vídeo: solo prompt;
- imagen a vídeo (primer/último fotograma): first_frame_url (+ last_frame_url opcional);
- referencia omni: reference_image_urls / reference_video_urls / reference_audio_urls. Combinar primer/último fotograma con cualquier entrada de referencia multimodal devuelve 400 invalid_request_error.
- Tipo: stringX
- Request - Id ID de solicitud opcional del cliente que se devuelve para diagnóstico.
- Tipo: stringX
- Felo - Channel Códigos de canal públicos separados por comas y en orden. Omite este encabezado para usar default; default debe usarse solo. En modo monedero, default recorre en orden inverso el orden efectivo de canales públicos del modelo, omite los canales no publicados o no disponibles y selecciona el proveedor del primer canal disponible. Incluye los endpoints disponibles de ese proveedor con el mismo ID de modelo upstream y el mismo nivel de servicio. Los canales explícitos se validan en el orden indicado por el cliente; solo se envía el grupo de proveedores del primer canal. No hay respaldo automático a otros proveedores. Los encabezados de proveedor heredados no pueden anular el enrutamiento por canales.
Entrada de generación de vídeo. Puede ser plana ({model, prompt, ...}) o anidada ({model, input: {...}}). input tiene prioridad. Debe usarse exactamente un modo de entrada; se rechaza combinar primer/último fotograma con entradas de referencia multimodales.
- Tipo: stringmodelobligatorio
Nombre del modelo expuesto por Felo, por ejemplo seedance-2.0-mini.
- Tipo: string enumaspect
_ratio valores- 16:9
- 9:16
- 1:1
- 4:3
- 3:4
- 21:9
- adaptive
- Tipo: integerdurationmín.:4máx.:15
Integer numbers.
- Tipo: string Formato: urifirst
_frame _url - Tipo: booleangenerate
_audio - Tipo: objectinput
Objeto input anidado opcional; cuando está presente, sus campos tienen prioridad sobre los campos hermanos.
- aspectTipo: string enum
_ratio Relación de aspecto de salida; adaptive sigue la relación de la imagen de entrada.
valores- 16:9
- 9:16
- 1:1
- 4:3
- 3:4
- 21:9
- adaptive
- durationTipo: integermín.:4máx.:15
Duración de salida en segundos.
- firstTipo: string Formato: uri
_frame _url URL de la imagen del primer fotograma (modo imagen a vídeo).
- generateTipo: boolean
_audio Indica si se genera una pista de audio sincronizada.
- lastTipo: string Formato: uri
_frame _url URL de la imagen del último fotograma; debe usarse junto con first_frame_url.
- promptTipo: stringlongitud máx.:2000
Prompt. Obligatorio en los modos de texto a vídeo y de referencia omni.
- referenceTipo: array string[] …3Formato: uri
_audio _urls Clips de audio de referencia omni.
- referenceTipo: array string[] …9Formato: uri
_image _urls Imágenes de referencia omni. Mutuamente excluyentes con el primer/último fotograma.
- referenceTipo: array string[] …3Formato: uri
_video _urls Vídeos de referencia omni. Mutuamente excluyentes con el primer/último fotograma. Enviar vídeo cambia el precio unitario de facturación y suma la duración de entrada al recuento de tokens.
- resolutionTipo: string enum
Resolución de salida. Una resolución mayor consume más tokens y cuesta más.
valores- 480p
- 720p
- 1080p
- 4k
- serviceTipo: string | null
_tier Actualmente solo se admite default (estándar). Si se omite, es null, es un alias o es una cadena no admitida, se usa default; otros tipos devuelven HTTP 400. Los canales y precios configurados no cambian. Las API de texto envían el valor estándar del proveedor; las API Decisions y de generación omiten el campo upstream.
- Tipo: string Formato: urilast
_frame _url - Tipo: stringpromptlongitud máx.:2000
- Tipo: array string[] …3Formato: urireference
_audio _urls - Tipo: array string[] …9Formato: urireference
_image _urls - Tipo: array string[] …3Formato: urireference
_video _urls - Tipo: string enumresolutionvalores
- 480p
- 720p
- 1080p
- 4k
- Tipo: string | nullservice
_tier Actualmente solo se admite default (estándar). Si se omite, es null, es un alias o es una cadena no admitida, se usa default; otros tipos devuelven HTTP 400. Los canales y precios configurados no cambian. Las API de texto envían el valor estándar del proveedor; las API Decisions y de generación omiten el campo upstream.
- Tipo: object · VideoGenerationAccepted202
Tarea aceptada
- enumkindconstante:videoobligatoriovalores
- video
- Tipo: array string[]outputsobligatorio
Vacío hasta que la tarea finaliza correctamente.
- enumstatusconstante:queuedobligatoriovalores
- queued
- Tipo: stringtask
_id obligatorioID de tarea que se usará para consultar el estado.
application/json - Tipo: object · GenerationError400
Solicitud no válida (modelo desconocido, modos de entrada mezclados, campos no válidos)
Envoltorio de error compatible con OpenAI.
- Tipo: objecterror
- messageTipo: stringobligatorio
- typeTipo: string enumobligatoriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string admite null
application/json - Tipo: object · GenerationError401
Clave de API de Felo no válida o ausente
Envoltorio de error compatible con OpenAI.
- Tipo: objecterror
- messageTipo: stringobligatorio
- typeTipo: string enumobligatoriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string admite null
application/json - Tipo: object · GenerationError402
Saldo insuficiente o requisito de facturación no cumplido
Envoltorio de error compatible con OpenAI.
- Tipo: objecterror
- messageTipo: stringobligatorio
- typeTipo: string enumobligatoriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string admite null
application/json - Tipo: object · GenerationError403
La cuenta no tiene permiso (se requiere suscripción o el usuario está bloqueado). Los modelos deshabilitados también se rechazan antes de las llamadas upstream. Las solicitudes y tareas ya aceptadas continúan.
Envoltorio de error compatible con OpenAI.
- Tipo: objecterror
- messageTipo: stringobligatorio
- typeTipo: string enumobligatoriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string admite null
application/json - Tipo: object · GenerationError429
Se alcanzó el límite de solicitudes o de gasto
Envoltorio de error compatible con OpenAI.
- Tipo: objecterror
- messageTipo: stringobligatorio
- typeTipo: string enumobligatoriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string admite null
application/json - Tipo: object · GenerationError502
Error del proveedor upstream
Envoltorio de error compatible con OpenAI.
- Tipo: objecterror
- messageTipo: stringobligatorio
- typeTipo: string enumobligatoriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string admite null
application/json - Tipo: object · GenerationError503
Servicio de generación o servicio de facturación no disponible temporalmente
Envoltorio de error compatible con OpenAI.
- Tipo: objecterror
- messageTipo: stringobligatorio
- typeTipo: string enumobligatoriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string admite null
application/json
curl https://openapi.felo.ai/api/v1/videos/generations \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"model": "seedance-2.0-mini",
"prompt": "a cinematic trailer shot, 720p",
"resolution": "720p",
"duration": 5,
"generate_audio": true
}'
{
"task_id": "string",
"status": "queued",
"kind": "video",
"outputs": [
"string"
]
}