curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/videos/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "kling-v4-flash",
prompt: "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
duration: 5,
resolution: "720p",
aspect_ratio: "9:16"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
Kling V4 Flash
Kling V4 Flash Geração de vídeos
Vídeo por texto, uma imagem inicial ou referências de imagem/vídeo, edição e extensão. Apenas 720p, 3–20 segundos gerados, 24fps.
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/videos/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "kling-v4-flash",
prompt: "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
duration: 5,
resolution: "720p",
aspect_ratio: "9:16"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
Este endpoint é assíncrono. Após o envio, use o
task_id retornado com GET /v1/tasks/{task_id} para consultar o status e o resultado.curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/videos/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "kling-v4-flash",
prompt: "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
duration: 5,
resolution: "720p",
aspect_ratio: "9:16"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
Seleção do modo
Os cinco modos usam o mesmo modelo,kling-v4-flash. O modo é selecionado conforme os arquivos enviados e omni_reference_task_type.
| Modo | Entrada |
|---|---|
| Texto para vídeo | Sem arquivos de imagem, vídeo ou áudio |
| Imagem para vídeo | Um único quadro inicial via first_frame_image, first_frame em image_with_roles ou a única imagem em image_urls |
| Geração com referências | Forneça video_urls ou reference_image em image_with_roles, ou defina omni_reference_task_type: "reference" explicitamente |
| Edição de vídeo | Defina omni_reference_task_type: "edit" e forneça um vídeo de entrada |
| Extensão de vídeo | Defina omni_reference_task_type: "extend" e forneça um vídeo de entrada |
omni_reference_task_type usa auto por padrão, equivalente a omitir o campo. Com reference explícito, as imagens de image_urls são tratadas como referências.
Enviar apenas
video_url sem especificar edit ou extend retorna HTTP 400. Para usar um vídeo como referência, use video_urls.Cabeçalhos da requisição
string
obrigatório
Autenticação Bearer:
Bearer <token>, em que <token> é sua chave de API APIMart.Parâmetros da requisição
string
obrigatório
Deve ser
kling-v4-flash.string
Descreva o conteúdo a gerar ou editar. Opcional apenas em imagem para vídeo. Use
@Image1 / @Video1 nas referências, numeradas a partir de 1 em cada array. Na edição, a entrada é @Video1 e as imagens são @Image1, @Image2 etc.integer
Segundos inteiros de
3 a 20, normalmente 5 por padrão. Na edição, a omissão usa a duração de entrada arredondada para cima. Na extensão, indica o trecho adicionado. 0 explícito retorna HTTP 400; null equivale à omissão. A cobrança usa esse inteiro; o arquivo pode ter cerca de um quadro a mais.integer
Alias de
duration, com as mesmas regras. Se ambos forem enviados, cada valor deve estar entre 3 e 20 e ser igual ao outro; caso contrário, HTTP 400.string
padrão:"720p"
Apenas
720p, também o padrão. 1080p retorna HTTP 400. A seleção de nível com mode não é suportada.string
Geração por texto, por referências e edição aceitam
16:9, 9:16, 1:1 e 21:9; somente a geração por referências aceita auto. A geração por imagem não aceita aspect_ratio / size: valores não vazios retornam HTTP 400, enquanto uma string vazia equivale à omissão. Recorte o quadro inicial antes do envio para alterar a proporção.| Modo | Comportamento padrão |
|---|---|
| Texto para vídeo | 16:9 |
| Imagem para vídeo | Omita aspect_ratio / size; segue o quadro inicial. Recorte-o previamente para alterar a proporção |
| Geração com referências | auto |
| Edição de vídeo | Segue o vídeo de entrada |
| Extensão de vídeo | Este campo não é aceito; a proporção original é preservada |
string[]
Imagem para vídeo aceita uma única imagem inicial; duas retornam HTTP 400. Referências e edição aceitam até 10 imagens de referência. Para referências apenas de imagens, defina
omni_reference_task_type: "reference". As URLs devem ser públicas. Quadros iniciais e imagens de referência devem ter largura e altura de pelo menos 300px, com proporção largura:altura entre 2:5 e 5:2. Imagens fora desses limites retornam HTTP 400 no envio, sem cobrança.object[]
Cada item contém
url e role. Imagem para vídeo aceita um único first_frame; referências e edição usam reference_image. Quadros finais e intermediários não são suportados. Até 10 imagens e 15 recursos no total, incluindo vídeos de referência. Quadros iniciais e imagens de referência devem ter largura e altura de pelo menos 300px, com proporção largura:altura entre 2:5 e 5:2. Imagens fora desses limites retornam HTTP 400 no envio, sem cobrança.string
URL do quadro inicial para imagem para vídeo. Também pode ser fornecida como
first_frame em image_with_roles ou como primeira imagem de image_urls. Quadros iniciais e imagens de referência devem ter largura e altura de pelo menos 300px, com proporção largura:altura entre 2:5 e 5:2. Imagens fora desses limites retornam HTTP 400 no envio, sem cobrança.string[]
Até 5 vídeos de referência, totalizando no máximo 20 segundos. Exceder o limite retorna HTTP 400, sem corte. Em edição ou extensão, uma entrada pode substituir
video_url se o tipo de tarefa correspondente for explícito.Vídeos de referência devem ser MP4 / MOV, com largura e altura entre 700 e 4553px cada. A duração é medida pelo fluxo de vídeo, não pelo contêiner: mínimo de 3 segundos por clipe e máximo de 20 segundos no total. Qualquer vídeo de referência com menos de 3 segundos retorna HTTP 400 no envio, sem cobrança.string
Vídeo de entrada para edição ou extensão. Exige
omni_reference_task_type: "edit" ou "extend" explícito, caso contrário retorna HTTP 400. A entrada de edição deve durar 3–20 segundos. Fora dessa faixa, é rejeitada sem cobrança.A edição aceita vídeos MP4 / MOV com largura e altura entre 700 e 4553px cada. O limite de 3–20 segundos usa a duração do fluxo de vídeo, não do contêiner. Formato, largura, altura ou duração de entrada inválidos retornam HTTP 400 no envio, sem cobrança.Entradas de extensão não estão sujeitas à faixa de altura nem ao mínimo de 3 segundos da edição. Por exemplo, um vídeo 480p de 2 segundos pode ser estendido.string
padrão:"auto"
Aceita
auto, reference, edit e extend.auto: seleciona texto para vídeo, imagem para vídeo ou geração com referências conforme os arquivos; equivale a omitir o campo.reference: geração com referências; imagens deimage_urlssão tratadas como referências.edit: edição de vídeo; exige um vídeo de entrada.extend: extensão de vídeo; exige um vídeo de entrada.
string
Para geração com referências de vídeo:
origin preserva o áudio do primeiro vídeo de referência; auto gera novo áudio e é o padrão. origin exige um vídeo de referência. Se o primeiro vídeo não tiver faixa de áudio, a saída também não terá. A edição gera novo áudio e não preserva o original; omita este parâmetro nas solicitações de edição. A extensão não o aceita.Dimensões de saída e taxa de quadros
A saída usa o nível720p, com dimensões reais em pixels variando conforme a proporção, a 24fps. O arquivo pode ter cerca de um quadro a mais que duration; por exemplo, uma solicitação de 3 segundos produz cerca de 3.04 segundos.
| Proporção / modo | Dimensões reais em pixels |
|---|---|
16:9 | 1280×720 |
9:16 | 720×1280 |
1:1 | 960×960 |
21:9 | 1464×628 |
| Por imagem | Segue o quadro inicial, cerca de 0.92MP no total; um quadro 1:2.5 produz 604×1516 |
Exemplos de requisições
As URLs abaixo são ilustrativas. Substitua-as por URLs reais e acessíveis publicamente.Imagem para vídeo: um único quadro inicial
{
"model": "kling-v4-flash",
"image_urls": [
"https://example.com/start.png"
]
}
prompt é opcional. Quadros finais, intermediários ou uma segunda imagem não são suportados.
Omita aspect_ratio / size; segue o quadro inicial. Recorte-o previamente para alterar a proporção.
Quadros iniciais e imagens de referência devem ter largura e altura de pelo menos 300px, com proporção largura:altura entre 2:5 e 5:2. Imagens fora desses limites retornam HTTP 400 no envio, sem cobrança.
Geração com referências
{
"model": "kling-v4-flash",
"prompt": "The girl in @Image1 runs along the beach with the camera movement from @Video1.",
"image_with_roles": [
{
"url": "https://example.com/girl.png",
"role": "reference_image"
}
],
"video_urls": [
"https://example.com/camera.mp4"
],
"aspect_ratio": "auto",
"duration": 5
}
audio_setting: "origin" para preservar o áudio do primeiro vídeo de referência. Com origin, se o primeiro vídeo de referência não tiver faixa de áudio, a saída também não terá.
Quadros iniciais e imagens de referência devem ter largura e altura de pelo menos 300px, com proporção largura:altura entre 2:5 e 5:2. Imagens fora desses limites retornam HTTP 400 no envio, sem cobrança.
Vídeos de referência devem ser MP4 / MOV, com largura e altura entre 700 e 4553px cada. A duração é medida pelo fluxo de vídeo, não pelo contêiner: mínimo de 3 segundos por clipe e máximo de 20 segundos no total. Qualquer vídeo de referência com menos de 3 segundos retorna HTTP 400 no envio, sem cobrança.
Edição de vídeo
{
"model": "kling-v4-flash",
"prompt": "Change the scene to a snowy winter night.",
"omni_reference_task_type": "edit",
"video_url": "https://example.com/in.mp4",
"image_urls": [
"https://example.com/style.png"
]
}
duration, a duração de entrada é arredondada para cima; sem aspect_ratio, a proporção de entrada é mantida. A edição gera novo áudio sem preservar o original. Omita audio_setting na solicitação.
Quadros iniciais e imagens de referência devem ter largura e altura de pelo menos 300px, com proporção largura:altura entre 2:5 e 5:2. Imagens fora desses limites retornam HTTP 400 no envio, sem cobrança.
A edição aceita vídeos MP4 / MOV com largura e altura entre 700 e 4553px cada. O limite de 3–20 segundos usa a duração do fluxo de vídeo, não do contêiner. Formato, largura, altura ou duração de entrada inválidos retornam HTTP 400 no envio, sem cobrança.
Extensão de vídeo
{
"model": "kling-v4-flash",
"prompt": "The camera continues moving forward as the sky grows darker.",
"omni_reference_task_type": "extend",
"video_url": "https://example.com/in.mp4",
"duration": 5
}
aspect_ratio ou audio_setting; mantém a proporção original.
Entradas de extensão não estão sujeitas à faixa de altura nem ao mínimo de 3 segundos da edição. Por exemplo, um vídeo 480p de 2 segundos pode ser estendido.
Consultar uma tarefa
Substitua o ID da tarefa na requisição abaixo pelo ID retornado no envio:curl --request GET \
--url 'https://api.apimart.ai/v1/tasks/<task_id>' \
--header 'Authorization: Bearer <token>'
task_id e consulte até completed ou failed. Um vídeo 720p de 3 segundos levou cerca de 1–4 minutos nos testes; é uma referência, não um prazo fixo para declarar falha.
Cobrança
Cobrança por segundo; consulte os preços dos modelos. A geração padrão e a entrada de vídeo usam tarifas diferentes.| Modo | Segundos cobrados |
|---|---|
| Texto para vídeo, imagem para vídeo, referências apenas de imagens | Segundos de saída; kling-v4-flash@720P |
| Extensão de vídeo | Segundos do trecho adicionado; kling-v4-flash@720P |
| Edição, geração com vídeos de referência | Segundos de saída + max(segundos de saída, segundos de vídeo de entrada); kling-v4-flash@720P-input |
duration: 3 resulta em 3 + 4 = 7 segundos cobrados. A edição e a geração com referências de vídeo verificam formato, largura, altura e duração do fluxo no envio. Falha na verificação, formato diferente de MP4 / MOV, largura ou altura fora de 700–4553px, total acima de 20 segundos ou entrada de edição abaixo de 3 segundos retornam HTTP 400 sem cobrança. Cada referência é avaliada pela duração do fluxo de vídeo; clipes com menos de 3 segundos retornam HTTP 400 no envio, sem cobrança.
Tarefas que falham recebem reembolso integral, incluindo aquelas que a plataforma marca como expiradas. Parar as consultas no cliente não cancela a tarefa; se ela tiver sucesso depois, será cobrada normalmente.
Parâmetros não aceitos
Os seguintes parâmetros ou valores retornam HTTP 400:resolution: "1080p"last_frame_image,role: "last_frame",role: "keyframe"audio_urls,audio_urlmode,negative_prompt,watermark: true,audio: falsemulti_shot,multi_prompt,element_list,video_listcamera_control,voice_list
Erros comuns
| Erro | Solução |
|---|---|
kling-v4-flash only supports resolution 720p (got: 1080p) | Use 720p, não 1080p. |
kling-v4-flash duration must be between 3 and 20 seconds | Use um inteiro de 3 a 20 para duration / seconds; não envie 0. |
kling-v4-flash image-to-video follows the first frame's aspect ratio; remove aspect_ratio / size | Remova aspect_ratio / size na geração por imagem. A proporção segue o quadro inicial; recorte-o antes do envio para alterá-la. |
kling-v4-flash first frame: image width and height must be at least 300px | Quadros iniciais e imagens de referência devem ter pelo menos 300px em ambos os eixos. |
kling-v4-flash first frame: image aspect ratio (width:height) must be between 2:5 and 5:2 | Use uma proporção largura:altura entre 2:5 e 5:2. |
kling-v4-flash input video #1: unsupported video format webm/mkv (supported: mp4/mov) | Use MP4 / MOV para edição e referências de vídeo; WebM / MKV não são suportados. |
kling-v4-flash input video #1: video height must be between 700 and 4553px | Vídeos de edição e referência exigem largura e altura entre 700 e 4553px cada. Essa faixa não se aplica a entradas de extensão. |
kling-v4-flash input video #1: video width must be between 700 and 4553px | A largura e a altura dos vídeos de edição e referência devem estar entre 700 e 4553px cada. Vídeos verticais também devem ter pelo menos 700px de largura. |
kling-v4-flash reference video #1 must be at least 3 seconds | Cada referência deve ter um fluxo de vídeo de pelo menos 3 segundos. Clipes mais curtos retornam HTTP 400 no envio, sem cobrança. |
kling-v4-flash only supports aspect_ratio 16:9, 9:16, 1:1 or 21:9 (got: auto) | Somente a geração por referências aceita auto; omita os campos de proporção na geração por imagem. |
kling-v4-flash image-to-video only takes a first frame; last frame and keyframes are not supported | Mantenha uma imagem inicial; remova quadros finais/intermediários ou a segunda imagem. |
kling-v4-flash reference-to-video does not take reference audios | Remova audio_urls / audio_url. |
kling-v4-flash video extend takes no images | Remova imagens e quadros finais alvo das extensões. |
kling-v4-flash input videos must be at most 20 seconds in total | Referências de vídeo ou entrada de edição não podem ultrapassar 20 segundos. Não há corte automático. |
video edit requires an input video of at least 3 seconds | Use uma entrada de edição com fluxo de vídeo de pelo menos 3 segundos, sem considerar a duração do contêiner. |
video_url needs omni_reference_task_type edit ... or extend | Especifique edit / extend; use video_urls para referências. |
Failed to probe the input video duration | Verifique se a URL é acessível e contém um vídeo válido. |
duration (3) and seconds (5) are aliases and must match | Envie um alias ou dois valores iguais dentro de 3–20. |