> ## 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.

# Generación de vídeo MiniMax-H3-Max

>  - Versión rápida de MiniMax Video Generation V2 con envío asíncrono de tareas
- Admite texto a vídeo e imagen a vídeo con fotograma inicial, final o ambos
- Admite 768P / 480P, duraciones de 5 a 15 segundos y pista de audio
- No admite 2K, fotogramas intermedios ni referencias multimodales 

<Info>
  **Elección del modelo:** use `MiniMax-H3-Max` cuando la velocidad sea prioritaria y baste con texto a vídeo o el control del fotograma inicial/final. Para 2K, fotogramas intermedios, imágenes, vídeos o audios de referencia, use [MiniMax-H3](/es/api-reference/videos/minimax-h3/generation).
</Info>

<RequestExample>
  ```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": "MiniMax-H3-Max",
      "prompt": "Un detective con gabardina se gira en una calle iluminada por neón bajo la lluvia. La cámara se acerca lentamente.",
      "duration": 5,
      "resolution": "768P",
      "aspect_ratio": "16:9"
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.apimart.ai/v1/videos/generations",
      headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
      json={
          "model": "MiniMax-H3-Max",
          "prompt": "Un detective se gira en una calle de neón bajo la lluvia.",
          "duration": 5,
          "resolution": "768P",
          "aspect_ratio": "16:9",
      },
  )
  print(response.json())
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "code": 200,
    "data": [
      {
        "status": "submitted",
        "task_id": "task_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ"
      }
    ]
  }
  ```

  ```json 400 theme={null}
  {
    "error": {
      "code": 400,
      "message": "Parámetros de solicitud no válidos",
      "type": "invalid_request_error"
    }
  }
  ```

  ```json 401 theme={null}
  {
    "error": {
      "code": 401,
      "message": "Error de autenticación. Compruebe su clave de API.",
      "type": "authentication_error"
    }
  }
  ```

  ```json 402 theme={null}
  {
    "error": {
      "code": 402,
      "message": "Saldo de cuenta insuficiente",
      "type": "payment_required"
    }
  }
  ```
</ResponseExample>

## Autenticación

<ParamField header="Authorization" type="string" required>
  Todos los endpoints requieren un Bearer Token. Obtenga su clave en la [página de claves de API](https://apimart.ai/keys).

  ```
  Authorization: Bearer YOUR_API_KEY
  ```
</ParamField>

## Elegir el modelo

| Capacidad                    | `MiniMax-H3`                       | `MiniMax-H3-Max`                       |
| ---------------------------- | ---------------------------------- | -------------------------------------- |
| Resolución                   | `2K` / `768P`, predeterminada `2K` | `768P` / `480P`, predeterminada `768P` |
| Duración                     | 4–15 segundos                      | 5–15 segundos                          |
| Texto a vídeo                | Compatible                         | Compatible                             |
| Fotograma inicial / final    | Compatible                         | Compatible                             |
| Fotograma intermedio         | Compatible                         | No compatible                          |
| Referencias multimodales     | Imagen, vídeo y audio              | No compatible                          |
| Coste de imágenes de entrada | Primeras 5 gratis                  | Gratis                                 |

<Warning>
  `MiniMax-H3-Max` no admite 2K y su salida no puede usarse como origen para [Regeneration](/es/api-reference/videos/minimax-h3/regeneration).
</Warning>

## Modos de generación

Los campos de la solicitud determinan el modo automáticamente; no envíe `mode`.

| Modo                 | Activador                                                                           | Comportamiento                               |
| -------------------- | ----------------------------------------------------------------------------------- | -------------------------------------------- |
| Texto a vídeo (T2V)  | Solo `prompt` y campos comunes                                                      | Genera desde texto                           |
| Imagen a vídeo (I2V) | `first_frame_image` / `last_frame_image` o roles equivalentes en `image_with_roles` | Controla el fotograma inicial, final o ambos |

<Warning>
  Este modelo no admite `image_urls`, `video_urls`, `audio_urls` ni `image_with_roles[].role = "reference_image"`. Cualquier medio de referencia devuelve HTTP 400 antes de crear y cobrar la tarea.
</Warning>

## Parámetros de solicitud

<ParamField body="model" type="string" required>
  Valor fijo: `MiniMax-H3-Max`. No distingue mayúsculas y minúsculas; `minimax-h3-max` también se acepta.
</ParamField>

<ParamField body="prompt" type="string" required>
  Descripción no vacía del vídeo, obligatoria en todos los modos. Máximo de `7000` caracteres.
</ParamField>

<ParamField body="duration" type="integer" default="5">
  Duración en segundos: entero de `5` a `15`, valor predeterminado `5`. No se admiten 4 segundos.
</ParamField>

<ParamField body="resolution" type="string" default="768P">
  Resolución de salida: `768P` (predeterminada) o `480P`.

  <Warning>
    `2K`, `1440P` y `2048P` no se admiten. Un valor no válido devuelve HTTP 400 sin reducción automática.
  </Warning>
</ParamField>

<ParamField body="aspect_ratio" type="string">
  Relación de aspecto. También se aceptan los alias `size` y `ratio`.

  Valores T2V: `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`.

  * T2V sin el campo o con `adaptive`: usa `16:9`
  * I2V: la determina la imagen de entrada; este campo se ignora
</ParamField>

<ParamField body="first_frame_image" type="string">
  URL pública de la imagen usada como fotograma inicial.
</ParamField>

<ParamField body="last_frame_image" type="string">
  URL pública de la imagen usada como fotograma final. Puede usarse sola o junto con `first_frame_image`.
</ParamField>

<ParamField body="image_with_roles" type="object[]">
  Array de imágenes con roles alternativo a `first_frame_image` y `last_frame_image`.

  <Expandable title="Elemento de image_with_roles">
    <ResponseField name="url" type="string" required>
      URL pública de la imagen
    </ResponseField>

    <ResponseField name="role" type="string" required>
      Roles admitidos:

      * `first_frame`; alias `first` y `start`
      * `last_frame`; alias `last`, `end_frame` y `tail`
    </ResponseField>
  </Expandable>

  Se admite como máximo una imagen por rol; `role` no puede estar vacío.
</ParamField>

<ParamField body="watermark" type="boolean" default="false">
  Añade una marca de agua AIGC. Alias: `aigc_watermark`.
</ParamField>

<ParamField body="webhook" type="string">
  Recibe una notificación cuando la tarea termina correctamente o con error.

  <Note>
    Use `webhook`, no el `callback_url` de MiniMax. La puerta de enlace reserva `callback_url` para uso interno.
  </Note>
</ParamField>

## Parámetros no admitidos

Los siguientes valores devuelven HTTP 400 antes de crear y cobrar la tarea:

| Parámetro / valor                             | Motivo                                             |
| --------------------------------------------- | -------------------------------------------------- |
| `image_urls`                                  | Se trata como imágenes de referencia, no admitidas |
| `image_with_roles[].role = "reference_image"` | Solo se admiten fotogramas inicial y final         |
| `video_urls` / `video_url`                    | Vídeo de referencia no admitido                    |
| `audio_urls` / `audio_url`                    | Audio de referencia no admitido                    |
| `resolution: "2K"`                            | Solo `768P` y `480P`                               |
| `duration: 4` o superior a `15`               | Solo 5–15 segundos                                 |

<Tip>
  Para referencias, 2K, fotogramas intermedios o vídeo de 4 segundos, use [MiniMax-H3](/es/api-reference/videos/minimax-h3/generation).
</Tip>

## Límites de las imágenes

El cuerpo total de la solicitud debe ser de 64 MB o menos. Use URL públicas; Base64 no es compatible.

| Elemento            | Límite                                                   |
| ------------------- | -------------------------------------------------------- |
| Formatos            | JPG / JPEG / PNG / WEBP / HEIC / HEIF                    |
| Por archivo         | ≤ 30 MB                                                  |
| Ancho y alto        | 256–5760 px                                              |
| Relación de aspecto | 0,4–2,5                                                  |
| Cantidad            | Hasta 1 fotograma inicial y 1 final; 2 imágenes en total |

## Ejemplos

### Imagen a vídeo con fotograma inicial

```json theme={null}
{
  "model": "MiniMax-H3-Max",
  "prompt": "La cámara se acerca lentamente mientras asciende el vapor.",
  "first_frame_image": "https://cdn.example.com/ramen.png",
  "duration": 5,
  "resolution": "480P"
}
```

### Imagen a vídeo con fotogramas inicial y final

```json theme={null}
{
  "model": "MiniMax-H3-Max",
  "prompt": "La escena pasa gradualmente de la mañana al atardecer.",
  "first_frame_image": "https://cdn.example.com/morning.png",
  "last_frame_image": "https://cdn.example.com/sunset.png",
  "duration": 8,
  "resolution": "768P"
}
```

## Consultar una tarea

El envío devuelve `task_id`. Consulte el [estado de la tarea](/es/api-reference/tasks/status) cada 5–10 segundos y use un timeout de cliente de 15 minutos.

| `status`     | Significado                                    |
| ------------ | ---------------------------------------------- |
| `pending`    | Enviada o en cola                              |
| `processing` | Generándose                                    |
| `completed`  | URL del vídeo en `result.videos[0].url`        |
| `failed`     | Consulte `error.message`; reembolso automático |

<Note>
  Las URL generadas suelen caducar tras unas 24 horas. Descargue y guarde el resultado cuanto antes.
</Note>

## Precios

Coste total = tarifa por segundo × duración. Las imágenes inicial y final son gratuitas.

| Elemento            | Tarifa                 |
| ------------------- | ---------------------- |
| Vídeo 768P          | **\$0.075 / segundo**  |
| Vídeo 480P          | **\$0.0495 / segundo** |
| Imágenes de entrada | **Gratis**             |

El importe estimado se reserva al enviar. Las tareas fallidas se reembolsan íntegramente; el campo `cost` de la tarea es definitivo.

## Errores

| Escenario                                   | Resultado                  |
| ------------------------------------------- | -------------------------- |
| `prompt` vacío o superior a 7000 caracteres | 400; sin tarea             |
| `duration` fuera de 5–15                    | 400; sin tarea             |
| `resolution` no admitida                    | 400; sin tarea             |
| Medio de referencia                         | 400; sin tarea             |
| Rol de imagen no válido o duplicado         | 400; sin tarea             |
| Saldo insuficiente                          | 402                        |
| Rechazo de seguridad de contenido           | 422                        |
| Límite de solicitudes                       | 429; reintente con backoff |

Los fallos de generación devuelven `status = failed` y `error.message`, con reembolso automático.

## Response

<ResponseField name="code" type="integer">
  Código de respuesta; 200 si es correcto
</ResponseField>

<ResponseField name="data" type="array">
  Resultado del envío con estado inicial e ID de tarea

  <Expandable title="Elemento del array">
    <ResponseField name="status" type="string">
      Inicialmente `submitted`
    </ResponseField>

    <ResponseField name="task_id" type="string">
      ID único para consultar progreso y resultado
    </ResponseField>
  </Expandable>
</ResponseField>
