> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apimart.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Kling V4 Flash Generación de vídeos

> Vídeo desde texto, una imagen inicial o referencias de imagen/vídeo, edición y extensión. Solo 720p, 3–20 segundos generados, 24fps.

> [!NOTE]
>
> Este endpoint es asíncrono. Tras enviar la solicitud, usa el `task_id` devuelto con `GET /v1/tasks/{task_id}` para consultar el estado y el resultado.

```bash cURL theme={null}
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"
  }'
```

```python Python theme={null}
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())
```

```javascript JavaScript theme={null}
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());
```

## Selección del modo

Los cinco modos usan el mismo modelo, `kling-v4-flash`. El modo se selecciona según los recursos enviados y `omni_reference_task_type`.

| Modo | Entrada |
| - | - |
| Texto a vídeo | Sin recursos de imagen, vídeo ni audio |
| Imagen a vídeo | Un único fotograma inicial mediante `first_frame_image`, `first_frame` en `image_with_roles`, o la única imagen de `image_urls` |
| Generación con referencias | Proporciona `video_urls` o `reference_image` en `image_with_roles`, o indica `omni_reference_task_type: "reference"` explícitamente |
| Edición de vídeo | Establece `omni_reference_task_type: "edit"` y proporciona un vídeo de entrada |
| Extensión de vídeo | Establece `omni_reference_task_type: "extend"` y proporciona un vídeo de entrada |

`omni_reference_task_type` usa `auto` por defecto, equivalente a omitirlo. Con `reference` explícito, las imágenes de `image_urls` se tratan como referencias.

> [!WARNING]
>
> Enviar solo `video_url` sin indicar `edit` o `extend` devuelve HTTP 400. Para usar un vídeo como referencia, utiliza `video_urls`.

## Cabeceras de la solicitud

**Authorization** `string` *required*

Autenticación Bearer: `Bearer <token>`, donde `<token>` es tu clave API de APIMart.

## Parámetros de la solicitud

**model** `string` *required*

Debe ser `kling-v4-flash`.

**prompt** `string`

Describe el contenido que se generará o editará. Opcional solo en imagen a vídeo. Usa `@Image1` / `@Video1` para referirte a los recursos, numerados desde 1 en cada array. En edición, el vídeo de entrada es `@Video1` y las imágenes son `@Image1`, `@Image2`, etc.

**duration** `integer`

Segundos enteros de `3` a `20`, normalmente `5` por defecto. Al editar, si se omite, se usa la duración de entrada redondeada hacia arriba. Al extender, indica el segmento añadido. `0` explícito devuelve HTTP 400; `null` equivale a omitirlo. Se factura este entero; el archivo puede durar aproximadamente un fotograma más.

**seconds** `integer`

Alias de `duration`, con las mismas reglas. Si se envían ambos, cada valor debe estar entre `3` y `20` y ser idéntico al otro; en caso contrario, HTTP 400.

**resolution** `string` (default: 720p)

Solo `720p`, valor por defecto. `1080p` devuelve HTTP 400. No se admite seleccionar un nivel mediante `mode`.

**aspect\_ratio** `string`

La generación desde texto, con referencias y la edición admiten `16:9`, `9:16`, `1:1` y `21:9`; solo la generación con referencias acepta `auto`. La generación desde una imagen no admite `aspect_ratio` / `size`: los valores no vacíos devuelven HTTP 400; una cadena vacía equivale a omitir el campo. Recorta el fotograma inicial antes del envío para cambiar la proporción.

| Modo | Comportamiento predeterminado |
| - | - |
| Texto a vídeo | `16:9` |
| Imagen a vídeo | Omite `aspect_ratio` / `size`; sigue el fotograma inicial. Recórtalo antes del envío para cambiar la proporción |
| Generación con referencias | `auto` |
| Edición de vídeo | Sigue el vídeo de entrada |
| Extensión de vídeo | No admite este campo; conserva la relación de aspecto original |

**image\_urls** `string[]`

Imagen a vídeo acepta una sola imagen inicial; dos devuelven HTTP 400. En referencias y edición se admiten hasta 10 imágenes de referencia. Para referencias solo de imágenes, indica `omni_reference_task_type: "reference"`. Las URL deben ser públicas. Los fotogramas iniciales y las imágenes de referencia deben tener al menos 300px de ancho y alto, con una proporción ancho:alto entre 2:5 y 5:2. Las imágenes fuera de estos límites devuelven HTTP 400 al enviar la solicitud, sin cobro.

**image\_with\_roles** `object[]`

Cada elemento incluye `url` y `role`. Imagen a vídeo acepta un único `first_frame`; referencias y edición usan `reference_image`. No se admiten fotogramas finales ni intermedios. Máximo 10 imágenes de referencia y 15 recursos en total, incluidos los vídeos. Los fotogramas iniciales y las imágenes de referencia deben tener al menos 300px de ancho y alto, con una proporción ancho:alto entre 2:5 y 5:2. Las imágenes fuera de estos límites devuelven HTTP 400 al enviar la solicitud, sin cobro.

**first\_frame\_image** `string`

URL del fotograma inicial para imagen a vídeo. También puede enviarse como `first_frame` en `image_with_roles` o como primera imagen de `image_urls`. Los fotogramas iniciales y las imágenes de referencia deben tener al menos 300px de ancho y alto, con una proporción ancho:alto entre 2:5 y 5:2. Las imágenes fuera de estos límites devuelven HTTP 400 al enviar la solicitud, sin cobro.

**video\_urls** `string[]`

Hasta 5 vídeos de referencia y 20 segundos en total. Superar el límite devuelve HTTP 400; no se recortan. En edición o extensión, una única entrada puede sustituir a `video_url` si se indica el tipo de tarea correspondiente.

Los vídeos de referencia deben ser MP4 / MOV, con anchura y altura entre 700 y 4553px cada una. La duración se mide por el flujo de vídeo, no por el contenedor: mínimo 3 segundos por clip y máximo 20 segundos en total. Cualquier vídeo de referencia de menos de 3 segundos devuelve HTTP 400 al enviar la solicitud, sin cobro.

**video\_url** `string`

Vídeo de entrada para edición o extensión. Requiere `omni_reference_task_type: "edit"` o `"extend"` explícito, o devuelve HTTP 400. La entrada de edición debe durar 3–20 segundos. Fuera de ese rango se rechaza sin cargo.

La edición admite vídeos MP4 / MOV con anchura y altura entre 700 y 4553px cada una. El límite de 3–20 segundos se basa en el flujo de vídeo, no en el contenedor. Un formato, anchura, altura o duración de entrada no válidos devuelven HTTP 400 al enviar la solicitud, sin cobro.

Las entradas de extensión no están sujetas al intervalo de altura ni al mínimo de 3 segundos de la edición. Por ejemplo, se puede extender un vídeo 480p de 2 segundos.

**omni\_reference\_task\_type** `string` (default: auto)

Admite `auto`, `reference`, `edit` y `extend`.

* `auto`: selecciona texto a vídeo, imagen a vídeo o generación con referencias según los recursos; equivale a omitir el campo.
* `reference`: generación con referencias; las imágenes de `image_urls` se tratan como referencias.
* `edit`: edición de vídeo; requiere un vídeo de entrada.
* `extend`: extensión de vídeo; requiere un vídeo de entrada.

**audio\_setting** `string`

Para generación con referencias de vídeo: `origin` conserva el audio del primer vídeo de referencia; `auto` genera audio nuevo y es el valor predeterminado. `origin` requiere un vídeo de referencia. Si el primero no tiene pista de audio, la salida tampoco tendrá. La edición genera audio nuevo y no conserva el original; omite este parámetro en las solicitudes de edición. La extensión no lo admite.

## Dimensiones de salida y frecuencia de fotogramas

La salida utiliza el nivel `720p`, con dimensiones reales en píxeles que varían según la proporción, a 24fps. El archivo puede durar aproximadamente un fotograma más que `duration`; por ejemplo, una solicitud de 3 segundos produce unos 3.04 segundos.

| Proporción / modo | Dimensiones reales en píxeles |
| - | - |
| `16:9` | 1280×720 |
| `9:16` | 720×1280 |
| `1:1` | 960×960 |
| `21:9` | 1464×628 |
| Desde una imagen | Sigue el fotograma inicial, unos 0.92MP en total; un fotograma 1:2.5 produce 604×1516 |

## Ejemplos de solicitudes

Las URL siguientes son ejemplos ficticios. Sustitúyelas por URL reales y accesibles públicamente.

### Imagen a vídeo: un único fotograma inicial

```json theme={null}
{
  "model": "kling-v4-flash",
  "image_urls": [
    "https://example.com/start.png"
  ]
}
```

Proporciona una sola imagen inicial; `prompt` es opcional. No se admiten fotogramas finales, intermedios ni una segunda imagen.

Omite `aspect_ratio` / `size`; sigue el fotograma inicial. Recórtalo antes del envío para cambiar la proporción.

Los fotogramas iniciales y las imágenes de referencia deben tener al menos 300px de ancho y alto, con una proporción ancho:alto entre 2:5 y 5:2. Las imágenes fuera de estos límites devuelven HTTP 400 al enviar la solicitud, sin cobro.

### Generación con referencias

```json theme={null}
{
  "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
}
```

Hasta 10 imágenes y 5 vídeos de referencia, con un total máximo de 15 recursos. Los vídeos deben sumar como máximo 20 segundos. No se admite audio de referencia. Añade `audio_setting: "origin"` para conservar el audio del primer vídeo de referencia. Con `origin`, si el primer vídeo de referencia no tiene pista de audio, la salida tampoco tendrá.

Los fotogramas iniciales y las imágenes de referencia deben tener al menos 300px de ancho y alto, con una proporción ancho:alto entre 2:5 y 5:2. Las imágenes fuera de estos límites devuelven HTTP 400 al enviar la solicitud, sin cobro.

Los vídeos de referencia deben ser MP4 / MOV, con anchura y altura entre 700 y 4553px cada una. La duración se mide por el flujo de vídeo, no por el contenedor: mínimo 3 segundos por clip y máximo 20 segundos en total. Cualquier vídeo de referencia de menos de 3 segundos devuelve HTTP 400 al enviar la solicitud, sin cobro.

### Edición de vídeo

```json theme={null}
{
  "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"
  ]
}
```

El flujo de vídeo de la entrada de edición debe durar 3–20 segundos. Sin `duration`, la duración de entrada se redondea hacia arriba; sin `aspect_ratio`, se conserva la proporción de entrada. La edición genera audio nuevo sin conservar el original. Omite `audio_setting` en la solicitud.

Los fotogramas iniciales y las imágenes de referencia deben tener al menos 300px de ancho y alto, con una proporción ancho:alto entre 2:5 y 5:2. Las imágenes fuera de estos límites devuelven HTTP 400 al enviar la solicitud, sin cobro.

La edición admite vídeos MP4 / MOV con anchura y altura entre 700 y 4553px cada una. El límite de 3–20 segundos se basa en el flujo de vídeo, no en el contenedor. Un formato, anchura, altura o duración de entrada no válidos devuelven HTTP 400 al enviar la solicitud, sin cobro.

### Extensión de vídeo

```json theme={null}
{
  "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
}
```

Genera un segmento nuevo de 3–20 segundos desde el último fotograma de la entrada y devuelve solo ese segmento, sin el vídeo original. Se cobra la duración del segmento nuevo. No se admiten imágenes, un fotograma final objetivo, `aspect_ratio` ni `audio_setting`; se conserva la proporción original.

Las entradas de extensión no están sujetas al intervalo de altura ni al mínimo de 3 segundos de la edición. Por ejemplo, se puede extender un vídeo 480p de 2 segundos.

## Consultar una tarea

Sustituye el ID de tarea de la siguiente solicitud por el devuelto al enviarla:

```bash theme={null}
curl --request GET \
  --url 'https://api.apimart.ai/v1/tasks/<task_id>' \
  --header 'Authorization: Bearer <token>'
```

Usa la [consulta de tareas](https://docs.apimart.ai/es/api-reference/tasks/status.md). Guarda `task_id` y consulta hasta `completed` o `failed`. Un vídeo 720p de 3 segundos tardó unos 1–4 minutos en las pruebas; es una referencia, no un plazo fijo para declarar un fallo.

## Facturación

Se factura por segundo; consulta los [precios de modelos](https://apimart.ai/pricing). La generación estándar y la entrada de vídeo usan tarifas distintas.

| Modo | Segundos facturables |
| - | - |
| Texto a vídeo, imagen a vídeo, referencias solo de imágenes | Segundos de salida; `kling-v4-flash@720P` |
| Extensión de vídeo | Segundos del segmento añadido; `kling-v4-flash@720P` |
| Edición, generación con vídeos de referencia | Segundos de salida + max(segundos de salida, segundos de vídeo de entrada); `kling-v4-flash@720P-input` |

Los segundos de entrada se calculan sumando las duraciones de los flujos de vídeo y redondeando después hacia arriba, no usando las duraciones de los contenedores. Editar un vídeo de 3.04 segundos con `duration: 3` se cobra como 3 + 4 = 7 segundos. La edición y la generación con referencias de vídeo comprueban el formato, la anchura, la altura y la duración del flujo al enviar la solicitud. Un fallo de comprobación, un formato distinto de MP4 / MOV, una anchura o altura fuera de 700–4553px, un total superior a 20 segundos o una entrada de edición inferior a 3 segundos devuelven HTTP 400 sin cobro. Cada referencia se evalúa por la duración de su flujo de vídeo; los clips de menos de 3 segundos devuelven HTTP 400 al enviar la solicitud, sin cobro.

Las tareas fallidas se reembolsan por completo, incluidas las que la plataforma declara agotadas por tiempo. Dejar de consultar desde el cliente no cancela la tarea; si termina correctamente después, se cobra con normalidad.

## Parámetros no admitidos

Los siguientes parámetros o valores devuelven HTTP 400:

* `resolution: "1080p"`
* `last_frame_image`, `role: "last_frame"`, `role: "keyframe"`
* `audio_urls`, `audio_url`
* `mode`, `negative_prompt`, `watermark: true`, `audio: false`
* `multi_shot`, `multi_prompt`, `element_list`, `video_list`
* `camera_control`, `voice_list`

## Errores frecuentes

| Error | Solución |
| - | - |
| `kling-v4-flash only supports resolution 720p (got: 1080p)` | Usa `720p`, no `1080p`. |
| `kling-v4-flash duration must be between 3 and 20 seconds` | Usa un entero de 3 a 20 para `duration` / `seconds`; no envíes 0. |
| `kling-v4-flash image-to-video follows the first frame's aspect ratio; remove aspect_ratio / size` | Elimina `aspect_ratio` / `size` para generar desde una imagen. La proporción sigue el fotograma inicial; recórtalo antes del envío para cambiarla. |
| `kling-v4-flash first frame: image width and height must be at least 300px` | Los fotogramas iniciales y las imágenes de referencia deben tener al menos 300px en ambos ejes. |
| `kling-v4-flash first frame: image aspect ratio (width:height) must be between 2:5 and 5:2` | Usa una proporción ancho:alto entre 2:5 y 5:2. |
| `kling-v4-flash input video #1: unsupported video format webm/mkv (supported: mp4/mov)` | Usa MP4 / MOV para edición o referencias de vídeo; WebM / MKV no son compatibles. |
| `kling-v4-flash input video #1: video height must be between 700 and 4553px` | Los vídeos de edición y referencia requieren anchura y altura entre 700 y 4553px cada una. Este intervalo no se aplica a entradas de extensión. |
| `kling-v4-flash input video #1: video width must be between 700 and 4553px` | La anchura y la altura de los vídeos de edición y referencia deben estar entre 700 y 4553px cada una. Los vídeos verticales también deben tener al menos 700px de ancho. |
| `kling-v4-flash reference video #1 must be at least 3 seconds` | El flujo de vídeo de cada referencia debe durar al menos 3 segundos. Los clips más cortos devuelven HTTP 400 al enviar la solicitud, sin cobro. |
| `kling-v4-flash only supports aspect_ratio 16:9, 9:16, 1:1 or 21:9 (got: auto)` | Solo la generación con referencias admite `auto`; omite los campos de proporción al generar desde una imagen. |
| `kling-v4-flash image-to-video only takes a first frame; last frame and keyframes are not supported` | Conserva una imagen inicial; elimina fotogramas finales/intermedios o la segunda imagen. |
| `kling-v4-flash reference-to-video does not take reference audios` | Elimina `audio_urls` / `audio_url`. |
| `kling-v4-flash video extend takes no images` | Elimina las imágenes y el fotograma final objetivo de las extensiones. |
| `kling-v4-flash input videos must be at most 20 seconds in total` | Los vídeos de referencia o la entrada de edición no pueden superar 20 segundos. No hay recorte automático. |
| `video edit requires an input video of at least 3 seconds` | Usa una entrada de edición cuyo flujo de vídeo dure al menos 3 segundos, sin basarte en la duración del contenedor. |
| `video_url needs omni_reference_task_type edit ... or extend` | Especifica `edit` / `extend`; usa `video_urls` para referencias. |
| `Failed to probe the input video duration` | Comprueba que la URL sea accesible y contenga un vídeo válido. |
| `duration (3) and seconds (5) are aliases and must match` | Envía un solo alias o dos valores iguales dentro de 3–20. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.