Kling 4
ID da solicitação kling-v4
Protocolos
POST /v1/videos/generations· Gerar vídeo · exemploGET /v1/videos/tasks/{id}· Consultar tarefa de vídeo · exemploGET /v1/videos/tasks/{id}/content· Baixar vídeo · exemploDELETE /v1/videos/tasks/{id}· Excluir tarefa de vídeo encerrada · exemploPOST /v1/videos/assets· Enviar mídia · exemploDELETE /v1/videos/assets/{id}· Excluir mídia · exemplo
Autenticação
Obtenha uma chave em Gerenciar chaves de API. Para requisições JSON, defina Content-Type: application/json.
Authorization: Bearer YOUR_API_KEY
Parâmetros da requisição
POST /v1/videos/generations
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
model | string | Obrigatório | kling-v4. Use o ID do modelo indicado nesta página. |
prompt | string | Condicional | Descreva a cena, a ação e o movimento de câmera. Obrigatório na geração por texto ou referência. Opcional com primeiro quadro. |
content | array<object> | Condicional | Lista de mídias de referência e texto opcional. Omita ao gerar apenas com prompt. Até 8 imagens. O modo de referência aceita até cinco vídeos de 3–30 segundos, com até 30 segundos no total. Edição ou extensão usa um vídeo. |
content[].type | string | Obrigatório | Valores aceitos: text, image_url, input_image, video_url, input_video. |
content[].text | string | Condicional | Informe o prompt quando o item tiver type: "text". |
content[].role | string | Condicional | Use first_frame e last_frame. O último quadro exige o primeiro. A extensão pode usar uma imagem last_frame como quadro final de destino. Use reference_image em imagens de referência comuns. Use reference_video nas entradas de vídeo. |
content[].asset_id | string | Condicional | Envie a mídia para POST /v1/videos/assets e use o id retornado. No formulário multipart, envie kind (image, video) antes de file. |
resolution | string | Opcional | Valores aceitos: 720p, 1080p. Padrão: 720p. |
ratio | string | Opcional | Proporção de saída. Também aceita o alias aspect_ratio. Valores aceitos: 16:9, 9:16, 1:1, 21:9. O modo de referência também aceita auto, seu padrão. Omita na extensão. A geração por texto usa 16:9 por padrão. |
duration | integer | Opcional | Duração de saída em segundos. Aceita segundos inteiros de 3 a 30. Se omitido na edição, a duração segue o vídeo de origem. Os outros modos usam 5 segundos por padrão. Na extensão, indica a duração acrescentada. |
generate_audio | boolean | Opcional | O áudio é sempre gerado. Omita ou use true. |
omni_reference_task_type | string | Opcional | Valores aceitos: auto, reference, edit, extend. O padrão auto determina o modo pela mídia de entrada. edit e extend exigem um vídeo. |
Exemplos de requisição
Defina a chave de API na variável de ambiente local ICODEEASY_API_KEY e escolha um endpoint que aceite chamadas HTTP diretas. Caso o endpoint exija um cliente específico, siga o guia de configuração desse cliente.
Substitua as URLs e os IDs de mídia dos exemplos por ativos válidos.
Video Generations
curl -sS 'https://api.icodeeasy.cc/v1/videos/generations' \
-H "Authorization: Bearer $ICODEEASY_API_KEY" \
-H 'Content-Type: application/json' \
--data '{
"model": "kling-v4",
"prompt": "Slow camera push toward a paper lantern swaying gently by a lake.",
"resolution": "720p",
"ratio": "16:9",
"duration": 5,
"generate_audio": true
}'
Video Generations · Primeiro quadro
curl -sS 'https://api.icodeeasy.cc/v1/videos/generations' \
-H "Authorization: Bearer $ICODEEASY_API_KEY" \
-H 'Content-Type: application/json' \
--data '{
"model": "kling-v4",
"prompt": "Slow camera push toward a paper lantern swaying gently by a lake.",
"resolution": "720p",
"ratio": "16:9",
"duration": 5,
"generate_audio": true,
"content": [
{
"type": "image_url",
"role": "first_frame",
"asset_id": "YOUR_FIRST_FRAME_ASSET_ID"
}
]
}'
Video Generations · Primeiro e último quadros
curl -sS 'https://api.icodeeasy.cc/v1/videos/generations' \
-H "Authorization: Bearer $ICODEEASY_API_KEY" \
-H 'Content-Type: application/json' \
--data '{
"model": "kling-v4",
"prompt": "Slow camera push toward a paper lantern swaying gently by a lake.",
"resolution": "720p",
"ratio": "16:9",
"duration": 5,
"generate_audio": true,
"content": [
{
"type": "image_url",
"role": "first_frame",
"asset_id": "YOUR_FIRST_FRAME_ASSET_ID"
},
{
"type": "image_url",
"role": "last_frame",
"asset_id": "YOUR_LAST_FRAME_ASSET_ID"
}
]
}'
Video Generations · Vídeo de referência
curl -sS 'https://api.icodeeasy.cc/v1/videos/generations' \
-H "Authorization: Bearer $ICODEEASY_API_KEY" \
-H 'Content-Type: application/json' \
--data '{
"model": "kling-v4",
"prompt": "Match the camera motion from the reference video in a lakeside lantern scene.",
"resolution": "720p",
"ratio": "16:9",
"duration": 5,
"generate_audio": true,
"omni_reference_task_type": "reference",
"content": [
{
"type": "video_url",
"role": "reference_video",
"asset_id": "YOUR_VIDEO_ASSET_ID"
}
]
}'
Video Generations · Editar vídeo
curl -sS 'https://api.icodeeasy.cc/v1/videos/generations' \
-H "Authorization: Bearer $ICODEEASY_API_KEY" \
-H 'Content-Type: application/json' \
--data '{
"model": "kling-v4",
"prompt": "Preserve the subject and change the setting to a lakeside at dusk.",
"resolution": "720p",
"ratio": "16:9",
"duration": 5,
"generate_audio": true,
"omni_reference_task_type": "edit",
"content": [
{
"type": "video_url",
"role": "reference_video",
"asset_id": "YOUR_VIDEO_ASSET_ID"
}
]
}'
Video Generations · Estender vídeo
curl -sS 'https://api.icodeeasy.cc/v1/videos/generations' \
-H "Authorization: Bearer $ICODEEASY_API_KEY" \
-H 'Content-Type: application/json' \
--data '{
"model": "kling-v4",
"prompt": "Continue the motion as the camera glides farther over the lake.",
"resolution": "720p",
"duration": 5,
"generate_audio": true,
"omni_reference_task_type": "extend",
"content": [
{
"type": "video_url",
"role": "reference_video",
"asset_id": "YOUR_VIDEO_ASSET_ID"
},
{
"type": "image_url",
"role": "last_frame",
"asset_id": "YOUR_LAST_FRAME_ASSET_ID"
}
]
}'
Consultar tarefa de vídeo
curl -sS 'https://api.icodeeasy.cc/v1/videos/tasks/YOUR_TASK_ID' \
-H "Authorization: Bearer $ICODEEASY_API_KEY"
Baixar vídeo
curl -sS 'https://api.icodeeasy.cc/v1/videos/tasks/YOUR_TASK_ID/content' \
-H "Authorization: Bearer $ICODEEASY_API_KEY" \
-L \
-o result.mp4
Excluir tarefa de vídeo encerrada
curl -sS 'https://api.icodeeasy.cc/v1/videos/tasks/YOUR_TASK_ID' \
-H "Authorization: Bearer $ICODEEASY_API_KEY" \
-i \
-X DELETE
Enviar mídia
curl -sS 'https://api.icodeeasy.cc/v1/videos/assets' \
-H "Authorization: Bearer $ICODEEASY_API_KEY" \
-F 'kind=image' \
-F '[email protected];type=image/png'
Enviar mídia · Enviar vídeo
curl -sS 'https://api.icodeeasy.cc/v1/videos/assets' \
-H "Authorization: Bearer $ICODEEASY_API_KEY" \
-F 'kind=video' \
-F '[email protected];type=video/mp4'
Excluir mídia
curl -sS 'https://api.icodeeasy.cc/v1/videos/assets/YOUR_ASSET_ID' \
-H "Authorization: Bearer $ICODEEASY_API_KEY" \
-i \
-X DELETE
Respostas e tarefas
HTTP 202 · Tarefa aceita
{
"id": "vid_1785398400000000000",
"object": "video.generation.job",
"model": "kling-v4",
"created_at": "2026-07-30T08:00:00Z",
"status_url": "/v1/videos/tasks/vid_1785398400000000000",
"content_url": "/v1/videos/tasks/vid_1785398400000000000/content",
"status": "queued",
"updated_at": "2026-07-30T08:00:00Z",
"task_id": "vid_1785398400000000000"
}
HTTP 200 · Consulta de tarefa concluída
{
"id": "vid_1785398400000000000",
"object": "video.generation.job",
"model": "kling-v4",
"created_at": "2026-07-30T08:00:00Z",
"status_url": "/v1/videos/tasks/vid_1785398400000000000",
"content_url": "/v1/videos/tasks/vid_1785398400000000000/content",
"status": "succeeded",
"updated_at": "2026-07-30T08:01:00Z",
"url": "/v1/videos/tasks/vid_1785398400000000000/content"
}
Guarde id. Com a mesma chave de API, envie requisições GET a status_url até status indicar succeeded ou failed. Em caso de sucesso, baixe o vídeo por content_url e siga os redirecionamentos HTTP. Os dois caminhos são relativos à URL base da API.
| Campo | Tipo | Descrição |
|---|---|---|
id / task_id | string | ID da tarefa. Na resposta de criação, task_id é igual a id. |
status | string | Estado da tarefa: queued, running, succeeded ou failed. |
progress | integer | Progresso da geração. O campo é omitido quando o valor está indisponível. |
error.code | string | Classificação do erro para tarefas com falha. |
Erros comuns
| HTTP | Tipo de erro | Descrição |
|---|---|---|
| 400 | invalid_request | Confira o modelo, a combinação de parâmetros e a mídia de referência. |
| 401 | unauthorized | Confira se a chave de API está ausente, inválida ou desativada. |
| 402 | insufficient_balance | O saldo é insuficiente para enviar a tarefa. |
| 404 | not_found | Se a consulta retornar 404, guarde o ID da tarefa e confira o URL de consulta e a chave da conta que criou a tarefa. Ela pode já ter sido concluída. Não reenvie com base apenas nessa resposta. |
| 409 | video_not_ready | O vídeo ainda está em geração. Continue consultando o status. |
| 503 | submission_unknown | O resultado do envio é desconhecido. Confirme com o suporte se a tarefa foi criada antes de enviar outra requisição. |
Guia completo de integração · Consulte o guia completo da API para ver os campos, estados de tarefas e formatos de resposta.
Recursos e limites
text_to_video· Compatívelimage_to_video· Compatívelfirst_frame· Compatívellast_frame· Compatívelreference_images· Compatívelaudio· Compatível- Limites Resoluções: 720p, 1080p · Durações: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 · Proporções: 16:9, 9:16, 1:1, 21:9 · Imagens de referência: até 8
Catálogo de recursos dos modelos · Ver preços
Guias relacionados
API de geração de vídeo
Crie tarefas de vídeo com texto, quadros inicial e final ou referências; acompanhe o status, baixe o resultado e exclua tarefas concluídas.
Catálogo de recursos dos modelos
Compare modelos públicos de texto, imagem e vídeo por ID normalizado, protocolos, clientes, ferramentas, recursos de mídia, limites e data de revisão.