Enviar uma tarefa de geração de vídeo
Cria uma tarefa assíncrona de geração de vídeo e retorna um task_id imediatamente (HTTP 202). Consulte GET /api/v1/videos/generations/{task_id} em polling até que ela seja concluída com sucesso. O corpo da requisição pode ser enviado achatado ({model, prompt, ...}) ou aninhado ({model, input: {prompt, ...}}); o objeto input tem precedência quando presente. Os campos de callback (callBackUrl / callback_url / callbackUrl) são ignorados.
Três modos de entrada mutuamente exclusivos:
- text-to-video: apenas prompt;
- image-to-video (primeiro/último quadro): first_frame_url (+ last_frame_url opcional);
- omni-reference: reference_image_urls / reference_video_urls / reference_audio_urls. Misturar primeiro/último quadro com qualquer entrada de referência multimodal retorna 400 invalid_request_error.
- Tipo: stringX
- Request - Id ID de requisição do chamador, opcional, retornado na resposta para diagnóstico.
- Tipo: stringX
- Felo - Channel Códigos de canal público separados por vírgula, em ordem. Omita este cabeçalho para usar default; default deve ser usado sozinho. No modo carteira, default percorre a ordem efetiva de canais públicos do modelo em ordem inversa, ignora canais não publicados ou indisponíveis e seleciona o provedor do primeiro canal disponível. Inclui os endpoints disponíveis desse provedor com o mesmo ID de modelo upstream e o mesmo service tier. Canais explícitos são validados na ordem especificada pelo cliente; somente o grupo de provedores do primeiro canal é enviado. Não há fallback automático para outros provedores. Cabeçalhos legados de provedor não podem substituir o roteamento por canal.
Entrada de geração de vídeo. Pode ser achatada ({model, prompt, ...}) ou aninhada ({model, input: {...}}). input tem precedência. Exatamente um modo de entrada deve ser usado; misturar primeiro/último quadro com entradas de referência multimodal é rejeitado.
- Tipo: stringmodelobrigatório
Nome do modelo exposto pela Felo, por exemplo 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 aninhado opcional; quando presente, seus campos têm precedência sobre os campos irmãos.
- aspectTipo: string enum
_ratio Proporção de saída; adaptive segue a proporção da imagem de entrada.
valores- 16:9
- 9:16
- 1:1
- 4:3
- 3:4
- 21:9
- adaptive
- durationTipo: integermín:4máx:15
Duração de saída em segundos.
- firstTipo: string Formato: uri
_frame _url URL da imagem do primeiro quadro (modo image-to-video).
- generateTipo: boolean
_audio Define se uma faixa de áudio sincronizada deve ser gerada.
- lastTipo: string Formato: uri
_frame _url URL da imagem do último quadro; deve ser usada em conjunto com first_frame_url.
- promptTipo: stringtamanho máximo:2000
Prompt. Obrigatório nos modos text-to-video e omni-reference.
- referenceTipo: array string[] …3Formato: uri
_audio _urls Clipes de áudio de referência omni.
- referenceTipo: array string[] …9Formato: uri
_image _urls Imagens de referência omni. Mutuamente exclusivas com primeiro/último quadro.
- referenceTipo: array string[] …3Formato: uri
_video _urls Vídeos de referência omni. Mutuamente exclusivos com primeiro/último quadro. Fornecer vídeo altera o preço unitário de cobrança e soma a duração de entrada à contagem de tokens.
- resolutionTipo: string enum
Resolução de saída. Resoluções mais altas consomem mais tokens e custam mais.
valores- 480p
- 720p
- 1080p
- 4k
- serviceTipo: string | null
_tier Atualmente, apenas default (standard) é suportado. Valores omitidos, null, aliases e strings não suportadas usam default; outros tipos retornam HTTP 400. Os canais e preços configurados permanecem inalterados. As APIs de texto enviam o valor padrão do provedor; as APIs Decisions e de geração omitem o campo upstream.
- Tipo: string Formato: urilast
_frame _url - Tipo: stringprompttamanho máximo: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 Atualmente, apenas default (standard) é suportado. Valores omitidos, null, aliases e strings não suportadas usam default; outros tipos retornam HTTP 400. Os canais e preços configurados permanecem inalterados. As APIs de texto enviam o valor padrão do provedor; as APIs Decisions e de geração omitem o campo upstream.
- Tipo: object · VideoGenerationAccepted202
Tarefa aceita
- enumkindconst:videoobrigatóriovalores
- video
- Tipo: array string[]outputsobrigatório
Vazio até a tarefa ser concluída com sucesso.
- enumstatusconst:queuedobrigatóriovalores
- queued
- Tipo: stringtask
_id obrigatórioID da tarefa a ser usado no polling.
application/json - Tipo: object · GenerationError400
Requisição inválida (modelo desconhecido, modos de entrada misturados, campos inválidos)
Envelope de erro compatível com a OpenAI.
- Tipo: objecterror
- messageTipo: stringobrigatório
- typeTipo: string enumobrigatóriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string aceita nulo
application/json - Tipo: object · GenerationError401
Chave de API da Felo inválida ou ausente
Envelope de erro compatível com a OpenAI.
- Tipo: objecterror
- messageTipo: stringobrigatório
- typeTipo: string enumobrigatóriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string aceita nulo
application/json - Tipo: object · GenerationError402
Saldo insuficiente / requisito de cobrança não atendido
Envelope de erro compatível com a OpenAI.
- Tipo: objecterror
- messageTipo: stringobrigatório
- typeTipo: string enumobrigatóriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string aceita nulo
application/json - Tipo: object · GenerationError403
Conta sem permissão (assinatura necessária ou usuário banido). Modelos desativados também são rejeitados antes das chamadas upstream. Requisições e tarefas já aceitas continuam.
Envelope de erro compatível com a OpenAI.
- Tipo: objecterror
- messageTipo: stringobrigatório
- typeTipo: string enumobrigatóriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string aceita nulo
application/json - Tipo: object · GenerationError429
Limite de requisições ou de gastos atingido
Envelope de erro compatível com a OpenAI.
- Tipo: objecterror
- messageTipo: stringobrigatório
- typeTipo: string enumobrigatóriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string aceita nulo
application/json - Tipo: object · GenerationError502
Falha no provedor upstream
Envelope de erro compatível com a OpenAI.
- Tipo: objecterror
- messageTipo: stringobrigatório
- typeTipo: string enumobrigatóriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string aceita nulo
application/json - Tipo: object · GenerationError503
Serviço de geração ou serviço de cobrança temporariamente indisponível
Envelope de erro compatível com a OpenAI.
- Tipo: objecterror
- messageTipo: stringobrigatório
- typeTipo: string enumobrigatóriovalores
- invalid
_request _error - server
_error
- codeTipo: string
- paramTipo: string aceita nulo
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"
]
}