A AiHubMix oferece uma API unificada de geração de vídeo, compatível com o formato da interface OpenAI Sora, com suporte de back-end para modelos de diversos fornecedores
Tongyi Wanxiang versão mais recente, imagem para vídeo
Alibaba
wan2.5-i2v-preview
Tongyi Wanxiang 2.5, imagem para vídeo
Alibaba
wan2.2-i2v-plus
Tongyi Wanxiang 2.2, imagem para vídeo
ByteDance
doubao-seedance-2-0-260128
Entrada de referência multimodal, suporta imagem/vídeo/áudio
ByteDance
doubao-seedance-2-0-fast-260128
Versão rápida do Seedance 2.0
Kuaishou
kling-v1-6 etc.
Kling imagem para vídeo, suporta quadro final e referência de múltiplas imagens (até 4)
A geração de imagem para vídeo requer o envio da imagem de referência pelo parâmetro input_reference (Tongyi Wanxiang da Alibaba); o Doubao Seedance envia pelo array extra_body.content, com suporte a vários tipos de referência: imagem, vídeo e áudio; o Kling usa image / image_tail / image_list para enviar imagens, veja detalhes na seção Kling abaixo.
Duração do vídeo (segundos), sempre como tipo string, como "5"、"8" (veja os detalhes de cada modelo)
size
string
Não
Resolução, no formato larguraxaltura, como 1920x1080 (os valores suportados variam por modelo)
input_reference
string/object
Não
Imagem de referência (imagem para vídeo), suporta URL ou base64
O formato de resposta varia ligeiramente entre os modelos, mas todos incluem os campos id (video_id) e status. Basta usar status para avaliar o progresso da tarefa.
Quando o status for completed, chame esta interface para baixar o arquivo de vídeo MP4.Resposta: retorna diretamente o stream binário do vídeo (Content-Type: video/mp4).
Dica: o parâmetro seconds de todos os modelos é sempre passado como tipo string (como "8").
Exemplo
curl -X POST https://aihubmix.com/v1/videos \ -H "Authorization: Bearer $AIHUBMIX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "sora-2", "prompt": "A cinematic drone shot soaring over a misty mountain range at sunrise, golden light filtering through the clouds", "seconds": "8", "size": "1280x720" }'
curl -X POST https://aihubmix.com/v1/videos \ -H "Authorization: Bearer $AIHUBMIX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "sora-2-pro", "prompt": "A person walking through a neon-lit city street at night, rain reflecting on the pavement, cinematic lighting", "seconds": "12", "size": "720x1280" }'
720p (padrão)、1080p、4k (4K apenas Veo 3+), ou formato de pixels como 1280x720、1920x1080
Proporção
16:9 (padrão)、9:16
Imagem para vídeo (Veo 3.1)
Quadro inicial: first_frame (ou o campo compatível input_reference); Quadro final: last_frame; Imagens de referência: reference_images (array, até 3). As imagens aceitam uma URL pública, um data URL base64 ou um objeto {"mime_type": "...", "data": "..."}. Duração: quadro inicial / quadro inicial e final suportam "4"/"6"/"8"; ao usar imagens de referência, o Google fixa a saída em 8 segundos
Exemplo
curl -X POST https://aihubmix.com/v1/videos \ -H "Authorization: Bearer $AIHUBMIX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "veo-3.1-generate-preview", "prompt": "A tranquil Japanese garden, cherry blossom petals slowly drifting down, koi swimming in the pond, with the melodious sound of wind chimes in the background", "seconds": "8", "size": "1280x720" }'
curl -X POST https://aihubmix.com/v1/videos \ -H "Authorization: Bearer $AIHUBMIX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "veo-3.1-generate-preview", "prompt": "The camera slowly pushes in from a valley at dawn, transitioning naturally into sunset", "seconds": "8", "size": "1280x720", "first_frame": "https://example.com/first.jpg", "last_frame": "https://example.com/last.jpg" }'
curl -X POST https://aihubmix.com/v1/videos \ -H "Authorization: Bearer $AIHUBMIX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "veo-3.1-generate-preview", "prompt": "The character from the reference images walks through a forest, cinematic shot", "seconds": "8", "size": "1280x720", "reference_images": [ "https://example.com/ref1.jpg", "https://example.com/ref2.jpg" ] }'
Notas sobre os campos de imagem:
Precedência do quadro inicial: first_frame > input_reference (quadro único compatível com OpenAI).
Cada elemento de first_frame / last_frame / reference_images aceita: uma URL pública, um data URL base64 (data:image/png;base64,...) ou um objeto {"mime_type":"image/png","data":"<base64>"}.
Os aliases no estilo OpenRouter frame_images (elementos com frame_type: first_frame | last_frame) e input_references também são aceitos.
Até 3 imagens de referência; exceder esse limite retorna 400.
Dica: o Veo suporta geração de áudio nativo; você pode descrever efeitos sonoros no prompt, como “o som de pássaros cantando ao fundo” ou “uma melodia de piano”.
Atenção: wan2.6 suporta apenas 720P e 1080P; wan2.5 suporta 480P, 720P e 1080P; wan2.2 suporta apenas 480P e 1080P.
Exemplo
curl -X POST https://aihubmix.com/v1/videos \ -H "Authorization: Bearer $AIHUBMIX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "wan2.6-t2v", "prompt": "A winding stream flows through an autumn forest, golden fallen leaves drifting on the water surface, sunlight casting dappled light and shadow through the leaves", "seconds": "5", "size": "1920x1080" }'
curl -X POST https://aihubmix.com/v1/videos \ -H "Authorization: Bearer $AIHUBMIX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "wan2.6-i2v", "prompt": "The character in the frame slowly turns their head and smiles, the camera slowly pushes in", "seconds": "5", "size": "1280x720", "input_reference": "https://example.com/my-image.jpg" }'
Dica: as versões wan2.5 e superiores geram, por padrão, vídeos com som (dublagem automática), e o efeito é melhor com prompts em chinês.
Suportado, envie a URL da imagem ou base64 por input_reference
Proporções suportadas e resoluções correspondentes
Proporção (size)
Resolução real
16:9 ou 1920x1080
1920×1088
9:16 ou 1080x1920
1088×1920
4:3 ou 1664x1248
1664×1248
3:4 ou 1248x1664
1248×1664
1:1 ou 1440x1440
1440×1440
21:9 ou 2176x928
2176×928
Exemplo
curl -X POST https://aihubmix.com/v1/videos \ -H "Authorization: Bearer $AIHUBMIX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "jimeng-3.0-pro", "prompt": "A young woman in Hanfu dances gracefully amid a bamboo forest, her long dress flowing in the wind, with a faint morning mist in the background", "seconds": "5", "size": "16:9" }'
curl -X POST https://aihubmix.com/v1/videos \ -H "Authorization: Bearer $AIHUBMIX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "jimeng-3.0-1080p", "prompt": "A sunset over the ocean, waves gently rolling, warm golden light", "seconds": "5", "size": "9:16" }'
Padrão true; defina como false para gerar vídeo sem som
Marca d’água (watermark)
Padrão false
Referência multimodal
Suporta imagem, vídeo e áudio
Tipos de referência suportados em extra_body.content
Tipo
Valor de type
Valor de role
Descrição
Imagem de referência
image_url
reference_image
Imagem de referência de cena/estilo
Vídeo de referência
video_url
reference_video
Vídeo de referência de movimento de câmera/composição
Áudio de referência
audio_url
reference_audio
Arquivo de áudio de música de fundo
Exemplo
Seedance 2.0 / 2.0 Fast
curl -X POST "https://aihubmix.com/v1/videos" \ -H "Authorization: Bearer $AIHUBMIX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "doubao-seedance-2-0-260128", "prompt": "Use the first-person POV framing from Video 1 throughout, and use Audio 1 as the background music for the entire clip. Create a first-person fruit tea commercial featuring the Seedance brand limited-edition apple fruit tea, "Ping Ping An An." Opening frame: Image 1. From a first-person perspective, your hand picks a dew-covered Aksu red apple, accompanied by a crisp, satisfying bite-like tapping sound.Seconds 2–4: Fast-paced cuts. Your hand drops freshly cut apple chunks into a shaker, adds ice and tea base, then shakes vigorously. The sound of ice clinking and shaking syncs with upbeat percussion. Background voiceover: "Freshly cut, freshly shaken."Seconds 4–6: First-person close-up of the finished drink. The layered fruit tea is poured into a clear cup. Your hand gently squeezes a creamy topping across the surface. A pink label is placed on the cup. The camera pushes in to highlight the rich texture and layering.Seconds 6–8: First-person hand holding the drink. You raise the fruit tea from Image 2 toward the camera, as if offering it directly to the viewer. The label is clearly visible. Background voiceover: "Take a refreshing sip."Final frame: Freeze on Image 2. All background voiceovers should be in a female voice.", "extra_body": { "content": [ { "type": "image_url", "image_url": { "url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic1.jpg" }, "role": "reference_image" }, { "type": "image_url", "image_url": { "url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic2.jpg" }, "role": "reference_image" }, { "type": "video_url", "video_url": { "url": "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_tea_video1.mp4" }, "role": "reference_video" }, { "type": "audio_url", "audio_url": { "url": "https://ark-project.tos-cn-beijing.volces.com/doc_audio/r2v_tea_audio1.mp3" }, "role": "reference_audio" } ], "ratio": "16:9", "duration": 11, "watermark": false } }'
O Kling suporta quatro tipos de capacidades — texto para vídeo, imagem para vídeo, vídeo a partir de referência de múltiplas imagens e OmniVideo multimodal — todos chamados de forma unificada pela interface /v1/videos. O gateway roteia automaticamente para o endpoint correspondente do Kling com base em “nome do modelo + forma de entrada”, sem que o chamador precise distinguir.
Formato de tela: 16:9 / 9:16 / 1:1 (obrigatório no omni para texto puro e referência de vídeo; se ausente, preenchido automaticamente com 16:9)
cfg_scale
float
Relevância do prompt [0, 1], padrão 0.5 (kling-v2.x não suporta)
image
string
Imagem para vídeo: imagem única, URL da imagem ou Base64 (Base64 sem o prefixo data:image/...;base64,)
image_tail
string
Imagem para vídeo: imagem de quadro final (opcional)
image_list
array
Referência de múltiplas imagens: array de URLs de imagens, até 4
sound
string
omni: on/off, se gera áudio nativo, padrão off
video_list
array
omni: vídeo de referência [{ "video_url": "...", "refer_type": "feature" }], refer_type aceita feature (referência de vídeo) / base (edição de vídeo)
Parâmetros-chave não suportados ou não mapeados geram erro explícito, sem serem descartados silenciosamente. Os demais parâmetros nativos do Kling podem ser colocados em extra_body para serem repassados ao upstream.
curl https://aihubmix.com/v1/videos \ -H "Authorization: Bearer $AIHUBMIX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "kling-v3-omni", "prompt": "Generate the next shot based on the reference video", "video_list": [{ "video_url": "https://example.com/in.mp4", "refer_type": "feature" }], "mode": "std", "duration": "5" }'
curl https://aihubmix.com/v1/videos \ -H "Authorization: Bearer $AIHUBMIX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "kling-v3-omni", "prompt": "A man smiles and says hello", "sound": "on", "aspect_ratio": "16:9", "duration": "5" }'
Observações
Três etapas assíncronas: enviar para obter video_id → consultar GET /v1/videos/{video_id} até status ser completed → GET /v1/videos/{video_id}/content para baixar o MP4. Valores de status: in_progress / completed / failed.
A produção do vídeo costuma levar de 1 a 3 minutos; a URL do vídeo resultante é removida após 30 dias, transfira-o o quanto antes.
Excluir tarefa: o Kling não possui interface de exclusão; DELETE /v1/videos/{video_id} retorna 501 not_supported.
Cobrança: cobrado por modelo × mode × duração × capacidade (com ou sem vídeo de referência / com som); falhas na geração não são cobradas, e consultas e downloads não são tarifados.
A geração de vídeo normalmente leva de 1 a 5 minutos, e o tempo exato depende do modelo, da resolução e da duração. Recomenda-se definir um intervalo de consulta de 15 segundos.
input_reference é usado em cenários de imagem para vídeo e suporta três formas de envio:
// Forma 1: Enviar diretamente a URL da imagem"input_reference": "https://example.com/image.jpg"// Forma 2: Enviar a imagem codificada em base64 (formato de objeto)"input_reference": { "mime_type": "image/jpeg", "data": "<BASE64_ENCODED_IMAGE>"}// Forma 3: Enviar uma data URL"input_reference": "data:image/jpeg;base64,<BASE64_ENCODED_IMAGE>"
Os dois têm o mesmo significado, ambos representam a duração do vídeo. A API suporta os dois nomes de parâmetro (exceto o Sora, que aceita apenas seconds). Recomenda-se usar sempre seconds.
As causas comuns de falha incluem: violação de conteúdo, prompt longo demais, formato de imagem não suportado, entre outros. Ajuste de acordo com a informação do erro e tente novamente.