wan2.7-t2v
Apenas model e prompt são obrigatórios. Sem size e duration, o gateway envia 1280*720 com cinco segundos.
Nada corresponde. Tente um protocolo, uma capacidade ou um caminho de endpoint.
Os modelos de vídeo respondem como tarefas, não como uma única resposta. POST /v1/videos devolve um id de tarefa com "status": "queued", e GET /v1/videos/{task_id} informa o progresso até a tarefa chegar a completed ou failed. Ao concluir, o arquivo final é a URL assinada em metadata.url; ela carrega um parâmetro Expires, então baixe o arquivo em vez de guardar o link. Uma tarefa que falha traz o código e a mensagem do provedor em error.code e error.message, o que costuma bastar para descobrir qual campo faltou na requisição. POST /v1/video/generations chega ao mesmo handler, para clientes já escritos para esse caminho.
curl https://api.chinaapi.ai/v1/videos \
-H "Authorization: Bearer $CHINAAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan2.7-i2v",
"prompt": "the cat turns and walks toward the camera",
"input_reference": "https://example.com/first-frame.jpg",
"size": "1280*720",
"duration": 5
}'
# {"id":"task_9f2c...","task_id":"task_9f2c...","object":"video",
# "model":"wan2.7-i2v","status":"queued","progress":0}
curl https://api.chinaapi.ai/v1/videos/task_9f2c... \
-H "Authorization: Bearer $CHINAAPI_KEY"
# {"id":"task_9f2c...","object":"video","model":"wan2.7-i2v",
# "status":"completed","progress":100,
# "metadata":{"url":"https://.../output.mp4?Expires=..."}}
Apenas model e prompt são obrigatórios. Sem size e duration, o gateway envia 1280*720 com cinco segundos.
Anime uma imagem estática. input_reference recebe a URL de uma imagem acessível publicamente, que passa a ser o primeiro quadro; envie size e duration junto.
Monte um vídeo a partir de material de referência. input_reference aceita uma imagem de referência; para enviar várias use images, e video_url acrescenta um vídeo de referência — as referências contam juntas, até cinco. Não envie input_reference e images ao mesmo tempo, porque o gateway mantém apenas input_reference.
Edite um clipe existente a partir de um prompt. video_url recebe o vídeo de origem, que precisa ter de 2 a 10 segundos em MP4 ou MOV, e size define a saída.
As imagens de referência vão em images, e input_reference aceita uma imagem; se você enviar as duas, ambas são mantidas. A duração vai em seconds ou duration, e os parâmetros do fornecedor vão em metadata, onde resolution é 480p ou 720p.
Mesmo formato de requisição de doubao-seedance-2-5-260628, inclusive as regras de role para metadata.content. doubao-seedance-2-0-fast-260128 e doubao-seedance-2-0-mini-260615 trocam qualidade por velocidade e custo, e a linha 2.0 exige ao menos uma referência de imagem ou vídeo, enquanto a 2.5 também aceita só áudio.
O primeiro quadro vai em image; esta família nunca lê input_reference. mode vale std por padrão e duration, 5 segundos. O resto fica em metadata: image_tail para um quadro final, sound como on ou off (off por padrão), além de negative_prompt, cfg_scale e camera_control.
Envie prompt para texto em vídeo, ou acrescente image e o gateway monta o array contents que o provedor espera. O dimensionamento fica em metadata.settings: resolution é 720p ou 1080p, duration vai de 3 a 15 segundos, e aspect_ratio é 16:9, 9:16 ou 1:1. O áudio vem sempre e não tem chave para desligar.
Geração guiada por várias imagens de referência de uma vez. Todos os parâmetros ficam em metadata, e não existe campo resolution — o nível de qualidade é o mode. Veja o exemplo completo abaixo.
Aceita os campos do próprio gateway e monta a carga do provedor para você: image ou input_reference vira o primeiro quadro, images viram imagens de referência, e video_url vira um vídeo de referência. size escolhe 768P ou 2K e duration é um inteiro de 4 a 15. Requisições só de texto precisam de um metadata.ratio explícito diferente de adaptive.
Junto com MiniMax-Hailuo-2.3-Fast e MiniMax-Hailuo-02. Estes leem do nível raiz apenas prompt, duration e size; toda imagem passa por metadata, como first_frame_image, last_frame_image ou subject_reference.
Junto com happyhorse-1.1-i2v e happyhorse-1.1-r2v. Os campos são os da família wan2.7 — prompt, input_reference, size, duration — e aqui o 480P tem preço, então 832*480 é aceito onde wan2.7 recusa. Várias referências vão em metadata.input.media, porque a montagem automática que o campo images dispara é exclusiva de wan2.7-r2v.
size como largura e altura unidas por um asterisco, como em 1280*720. A letra x não é aceita: 832x480 volta como invalid size: 832x480, example: 1920*1080. duration é um número inteiro de segundos. Para wan2.7-i2v, wan2.7-r2v e wan2.7-videoedit, o gateway dobra size em uma faixa de resolução e o provedor só tem duas, então envie 1280*720 para 720P ou 1920*1080 para 1080P. Um tamanho 480P como 832*480 não tem preço nesses três e ou é recusado de imediato, ou é aceito e depois falha no provedor com InvalidParameter; a tarefa que falha é reembolsada, mas de um jeito ou de outro a ida e volta se perde. wan2.7-t2v aceita o valor como está.
size por uma tabela fixa que escreve os tamanhos com a letra x — 1280x720, 1920x1080, 720x1280, 1080x1920, 1024x1024, 512x512 — e o que ela não reconhece vira 1:1 sem erro. Mandar a forma com asterisco 1280*720 para kling-v3 devolve, portanto, um vídeo quadrado em vez de uma reclamação; defina metadata.aspect_ratio diretamente quando o enquadramento importa.
MiniMax-Hailuo-2.3, MiniMax-Hailuo-2.3-Fast e MiniMax-Hailuo-02 descartam os campos de raiz image, input_reference, images e video_url sem avisar: a requisição tem sucesso, mas roda como texto em vídeo e é cobrada assim. Coloque a imagem em metadata.first_frame_image, use metadata.last_frame_image para um quadro final, e metadata.subject_reference para referências de personagem. MiniMax-H3 é a exceção da família e de fato lê os campos de raiz.
curl https://api.chinaapi.ai/v1/video/generations \
-H "Authorization: Bearer $CHINAAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-v3-omni",
"prompt": "the character from the references walks through a neon-lit street",
"metadata": {
"image_list": [
{"image_url": "https://example.com/character.jpg"},
{"image_url": "https://example.com/outfit.jpg"},
{"image_url": "https://example.com/scene.jpg"}
],
"mode": "std",
"duration": "5",
"aspect_ratio": "16:9",
"sound": "off"
}
}'
curl https://api.chinaapi.ai/v1/video/generations/task_9f2c... \
-H "Authorization: Bearer $CHINAAPI_KEY"
# {"code":"success",
# "data":{"task_id":"task_9f2c...","status":"SUCCESS",
# "progress":"100%","fail_reason":"",
# "result_url":"https://.../output.mp4"}}
type; o campo existe só para marcar first_frame ou end_frame, e aspect_ratio passa a ser obrigatório sempre que não houver primeiro quadro. mode é o nível de qualidade — std, pro ou 4k — e o padrão do provedor é pro, cobrado a 1,33x o preço de tabela, enquanto 4k é cobrado a 5x; envie mode explicitamente para que a cobrança seja a esperada. duration é uma string de "3" a "15" e sound vem como off. Um vídeo de referência vai em video_list e precisa definir "refer_type": "feature": o modo de edição base é cobrado pela duração do vídeo enviado, não pode ser precificado antes do envio, e por isso é recusado. As imagens de referência também têm um tamanho mínimo no provedor: um arquivo do tamanho de um ícone passa no envio e só então faz a tarefa falhar com Image pixel is invalid; a tarefa que falha é reembolsada, mas a ida e volta se perde.
GET /v1/videos/{task_id} responde no formato de vídeo da OpenAI, onde o arquivo é metadata.url e o progresso é um número. GET /v1/video/generations/{task_id} responde {"code": "success", "data": {…}}, onde o arquivo é data.result_url, data.status é uma palavra em maiúsculas como SUCCESS ou FAILURE, data.progress é uma string como "100%", e a falha se explica em data.fail_reason. Consulte o mesmo caminho pelo qual você enviou.
curl https://api.chinaapi.ai/v1/videos \
-H "Authorization: Bearer $CHINAAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-5-260628",
"prompt": "the subject slowly turns toward the camera",
"images": ["https://example.com/first-frame.jpg"],
"seconds": "5",
"metadata": {"resolution": "480p"}
}'
curl https://api.chinaapi.ai/v1/videos \
-H "Authorization: Bearer $CHINAAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-5-260628",
"prompt": "keep the subject from the reference image",
"seconds": "5",
"metadata": {
"resolution": "480p",
"ratio": "16:9",
"content": [
{
"type": "image_url",
"image_url": {"url": "https://example.com/reference.jpg"},
"role": "reference_image"
}
]
}
}'
role é lida como primeiro quadro, não como referência: a saída segue a proporção daquela imagem, enviar ratio junto é recusado com InvalidParameter.TaskTypeConstraint, e um seconds igual a 2 também é recusado nesse modo, enquanto 5 funciona. generate_audio é true por padrão no provedor, então o arquivo volta com faixa de áudio a menos que você o defina como false em metadata. Marque cada parte de metadata.content com um role para alcançar o modo de referência completo — até 30 imagens, 10 vídeos e 10 trechos de áudio, entrada só de áudio, e 30 segundos de uma vez — onde ratio é aceito.