curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "kling-3.0-turbo",
prompt: "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
aspect_ratio: "16:9",
resolution: "1080p",
duration: 5
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1/videos/generations"
payload := map[string]interface{}{
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5,
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1/videos/generations";
String payload = """
{
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1/videos/generations";
$payload = [
"model" => "kling-3.0-turbo",
"prompt" => "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio" => "16:9",
"resolution" => "1080p",
"duration" => 5
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/videos/generations")
payload = {
model: "kling-3.0-turbo",
prompt: "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
aspect_ratio: "16:9",
resolution: "1080p",
duration: 5
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/videos/generations")!
let payload: [String: Any] = [
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/videos/generations";
var payload = @"{
""model"": ""kling-3.0-turbo"",
""prompt"": ""Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer"",
""aspect_ratio"": ""16:9"",
""resolution"": ""1080p"",
""duration"": 5
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_xxxxxxxxxx"
}
]
}
{
"error": {
"code": 400,
"message": "Parámetros de solicitud no válidos",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "La autenticación ha fallado, comprueba tu clave de API",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Saldo de cuenta insuficiente, recarga e inténtalo de nuevo",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Demasiadas solicitudes, inténtalo de nuevo más tarde",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Error interno del servidor, inténtalo de nuevo más tarde",
"type": "server_error"
}
}
Kling 3.0 Turbo
Generación de video Kling 3.0 Turbo
- Modo de procesamiento asíncrono, devuelve un ID de tarea para consultas posteriores
- Admite texto a video y de imagen a video (control de primer fotograma)
- Admite dos niveles de definición: 720P / 1080P
- Admite duración de video de 3 a 15 segundos
- Admite múltiples tomas (storyboard) (expresadas mediante un prompt con formato fijo)
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-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "kling-3.0-turbo",
prompt: "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
aspect_ratio: "16:9",
resolution: "1080p",
duration: 5
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1/videos/generations"
payload := map[string]interface{}{
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5,
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1/videos/generations";
String payload = """
{
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1/videos/generations";
$payload = [
"model" => "kling-3.0-turbo",
"prompt" => "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio" => "16:9",
"resolution" => "1080p",
"duration" => 5
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/videos/generations")
payload = {
model: "kling-3.0-turbo",
prompt: "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
aspect_ratio: "16:9",
resolution: "1080p",
duration: 5
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/videos/generations")!
let payload: [String: Any] = [
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/videos/generations";
var payload = @"{
""model"": ""kling-3.0-turbo"",
""prompt"": ""Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer"",
""aspect_ratio"": ""16:9"",
""resolution"": ""1080p"",
""duration"": 5
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_xxxxxxxxxx"
}
]
}
{
"error": {
"code": 400,
"message": "Parámetros de solicitud no válidos",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "La autenticación ha fallado, comprueba tu clave de API",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Saldo de cuenta insuficiente, recarga e inténtalo de nuevo",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Demasiadas solicitudes, inténtalo de nuevo más tarde",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Error interno del servidor, inténtalo de nuevo más tarde",
"type": "server_error"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "kling-3.0-turbo",
prompt: "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
aspect_ratio: "16:9",
resolution: "1080p",
duration: 5
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1/videos/generations"
payload := map[string]interface{}{
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5,
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1/videos/generations";
String payload = """
{
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1/videos/generations";
$payload = [
"model" => "kling-3.0-turbo",
"prompt" => "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio" => "16:9",
"resolution" => "1080p",
"duration" => 5
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/videos/generations")
payload = {
model: "kling-3.0-turbo",
prompt: "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
aspect_ratio: "16:9",
resolution: "1080p",
duration: 5
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/videos/generations")!
let payload: [String: Any] = [
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/videos/generations";
var payload = @"{
""model"": ""kling-3.0-turbo"",
""prompt"": ""Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer"",
""aspect_ratio"": ""16:9"",
""resolution"": ""1080p"",
""duration"": 5
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_xxxxxxxxxx"
}
]
}
{
"error": {
"code": 400,
"message": "Parámetros de solicitud no válidos",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "La autenticación ha fallado, comprueba tu clave de API",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Saldo de cuenta insuficiente, recarga e inténtalo de nuevo",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Demasiadas solicitudes, inténtalo de nuevo más tarde",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Error interno del servidor, inténtalo de nuevo más tarde",
"type": "server_error"
}
}
Autenticación
string
requerido
Todas las interfaces requieren autenticación mediante Bearer TokenObtener la API Key:Visita la página de gestión de API Keys para obtener tu API KeyAl usarla, añádela en el encabezado de la solicitud:
Authorization: Bearer YOUR_API_KEY
Parámetros de solicitud
string
requerido
Nombre del modelo de generación de videoModelos admitidos:
kling-3.0-turbo- Kling 3.0 Turbo
string
requerido
Prompt de textoEl límite del proveedor es de 3072 caracteres como máximo; se recomienda no superar los 2500 caracteres.Ejemplo:
"Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer"string
Admite URL de imagen o Base64.
Límites del proveedor para la imagen del primer fotograma:
- Formato:
.jpg/.jpeg/.png - Tamaño: ≤ 50MB
- Ancho y alto: ≥ 300px
- Relación de aspecto:
1:2.5~2.5:1
string
predeterminado:"16:9"
Relación de aspecto del videoValores posibles:
16:9- Horizontal9:16- Vertical1:1- Cuadrado
16:9Solo tiene efecto en texto a video. En imagen a video este campo no es válido; la relación del video la determina el primer fotograma.
string
predeterminado:"720p"
Definición del videoValores posibles:
720p1080p
720pinteger
predeterminado:"5"
Duración del video (segundos)Rango de valores: 3-15 (mínimo 3 segundos, máximo 15 segundos)Valor predeterminado:
5⚠️ Atención: debe introducirse como un número puro (por ejemplo 6), sin comillas, de lo contrario se producirá un errorboolean
Si se añade marca de aguaSolo se envía al proveedor cuando se pasa explícitamente; si no se pasa, no se añade marca de agua.
Texto a video vs imagen a video
El sistema determina automáticamente el modo de generación según se proporcione o nofirst_frame_image: con imagen de primer fotograma usa imagen a video, sin imagen de primer fotograma usa texto a video; el usuario no necesita declararlo explícitamente.
| Parámetro | Texto a video | Imagen a video |
|---|---|---|
prompt | ✅ Obligatorio | ✅ Opcional (si se deja vacío, se genera únicamente a partir del primer fotograma) |
first_frame_image | ❌ No se pasa | ✅ Obligatorio |
aspect_ratio | ✅ Opcional | ❌ No válido (la relación la determina el primer fotograma) |
resolution | ✅ Opcional | ✅ Opcional |
duration | ✅ Opcional (3-15) | ✅ Opcional (3-15) |
watermark | ✅ Opcional | ✅ Opcional |
Respuesta
integer
Código de estado de la respuesta, 200 cuando es exitosa
array
Casos de uso
Caso 1: Texto a video (1080P)
{
"model": "kling-3.0-turbo",
"prompt": "Un corgi corriendo por la playa, estilo cinematográfico, luz del atardecer",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
Caso 2: Texto a video (vertical 720P)
{
"model": "kling-3.0-turbo",
"prompt": "Cruce de Shibuya en Tokio, una noche lluviosa con luces de neón reflejándose en el suelo mojado, peatones caminando bajo sus paraguas",
"aspect_ratio": "9:16",
"resolution": "720p",
"duration": 10
}
Caso 3: Imagen a video (imagen de primer fotograma)
{
"model": "kling-3.0-turbo",
"prompt": "La cámara se acerca lentamente, el personaje sonríe",
"first_frame_image": "https://cdn.example.com/first.jpg",
"resolution": "720p",
"duration": 5
}
Caso 4: Imagen a video solo con el primer fotograma (sin prompt)
{
"model": "kling-3.0-turbo",
"first_frame_image": "https://cdn.example.com/first.jpg",
"resolution": "1080p",
"duration": 5
}
Caso 5: Múltiples tomas (storyboard) (texto a video)
{
"model": "kling-3.0-turbo",
"prompt": "Toma 1,2,un corgi corriendo por la playa;Toma 2,3,la cámara se acerca y el personaje sonríe;",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 5
}
Consultar el resultado de la tareaLa generación de video es una tarea asíncrona; tras el envío se devuelve un
task_id. Usa la interfaz Obtener estado de la tarea para consultar el progreso y el resultado de la generación.⌘I