Source: https://ailoot.ai/docs/es/api/video-music/
Canonical: https://ailoot.ai/docs/es/api/video-music/
Language: es

[API](https://ailoot.ai/docs/es/) 

# Vídeo y música

[Markdown](https://ailoot.ai/docs/es/api/video-music/index.md)

Generación de vídeos y música: la solicitud crea una tarea y el resultado se obtiene mediante su identificador.

POST`https://api.ailoot.ai/v1/videos`

Vídeo y música

```bash
# Conserva el Request ID: soporte lo usa para localizar tu solicitud.
# Crea la tarea una sola vez; el bucle de abajo solo consulta su estado.
curl --fail-with-body --max-time 120 -D video-create-headers-v1.txt \
  https://api.ailoot.ai/v1/videos \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"grok-imagine-video-1.5","prompt":"un lago tranquilo","seconds":"8","size":"1280x720"}' \
  -o video-create-v1.json || exit 1
VIDEO_ID=$(jq -er '.id // .request_id' video-create-v1.json) || exit 1
VIDEO_STATUS=""
# Este bucle solo consulta la tarea original. Nunca vuelve a enviar la solicitud de creación.
for ATTEMPT in $(seq 1 60); do
  curl --fail-with-body --max-time 30 \
    "https://api.ailoot.ai/v1/videos/$VIDEO_ID" \
    -H "Authorization: Bearer $AILOOT_API_KEY" \
    -o video-status-v1.json || exit 1
  VIDEO_STATUS=$(jq -r '.status // empty' video-status-v1.json)
  # result_pending_check: true (status sigue siendo in_progress): se está comprobando el resultado. Detente; no vuelvas a crear la tarea.
  if jq -e '.result_pending_check == true' video-status-v1.json >/dev/null; then
    cat video-status-v1.json
    echo "The result is being checked. Do not create the job again: check GET /v1/videos/$VIDEO_ID later or contact support with the Request ID." >&2
    exit 1
  fi
  case "$VIDEO_STATUS" in
    done|completed) break ;;
    queued|in_progress|pending|processing) sleep 5 ;;
    # failed o cualquier otro estado: muéstralo y detente. No vuelvas a crear la tarea.
    *) cat video-status-v1.json; exit 1 ;;
  esac
done
case "$VIDEO_STATUS" in
  done|completed) ;;
  *) echo "The job is not finished yet (status: ${VIDEO_STATUS:-none}). Check it later: GET /v1/videos/$VIDEO_ID" >&2; exit 1 ;;
esac
curl --fail-with-body --max-time 120 -L --max-redirs 3 \
  "https://api.ailoot.ai/v1/videos/$VIDEO_ID/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o video-v1.mp4
# Tras un tiempo de espera agotado al crear la tarea, consulta el Request ID en tu historial de uso antes de volver a ejecutar este script.
```

```bash
curl https://api.ailoot.ai/v1/music/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "google/lyria", "prompt": "Piano y violonchelo tranquilos, sin voces"}' 
```

Respuesta · abreviada

```json
// El identificador de la tarea está en el campo id o request_id
{ "id": "…", … }

// El formato depende del modelo: toma el identificador
// de la respuesta de creación tal como está.
```

## Autenticación

| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `Authorization` | header | obligatorio | Clave en formato `Bearer sk-…`. También se admiten las cabeceras `x-api-key` o `x-goog-api-key`. |

## Vídeo: cuerpo de la solicitud

| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `model` | string | obligatorio | Modelo de vídeo: `google/omni-1.1-flash`, `grok-imagine-video`, `happyhorse-1.1-t2v`, `MiniMax-Hailuo-2.3`, `grok-imagine-video-1.5`, `happyhorse-1.1-r2v`, `grok-imagine-video-1.5-preview`, `happyhorse-1.1-i2v`. |
| `prompt` | string | obligatorio | Descripción del vídeo. |
| `duration / seconds` | integer / string | opcional | Depende de la familia: Grok, 1–15 segundos; MiniMax, 6/10 con 768P o 6 con 1080P; HappyHorse, 3–15; Google Omni, 4/6/8/10. No traslades el campo de una familia a otra. |
| `resolution / size` | string | opcional | Grok: 480p/720p/1080p (1080p en video-1.5) o size 1280x720/720x1280/1920x1080/1080x1920. MiniMax: 768P/1080P. HappyHorse: 480P/720P/1080P. Google Omni: 360p/720p. |
| `image / first_frame_image / image_urls` | string / array | opcional | Los campos de imágenes de origen dependen de la familia y del modo. MiniMax Fast requiere first\_frame\_image. HappyHorse t2v no utiliza images; i2v requiere exactamente una imagen sin ratio; r2v admite 1–9 imágenes. |

La respuesta contiene el identificador de la tarea (campo `id` o `request_id`). Úsalo sin modificarlo ni analizarlo: el formato depende del modelo. Estado y archivo terminado:

GET`https://api.ailoot.ai/v1/videos/{id}`

GET`https://api.ailoot.ai/v1/videos/{id}/content`

Las mismas URL también funcionan con el prefijo `/v1/videos/generations/{id}`. El estado de una tarea terminada y los campos de respuesta dependen del modelo. Guíate por el campo de estado y descarga el archivo mediante `/content`.

## Creación → estado → descarga

Guarda la respuesta de creación y su Request ID. Para MiniMax/HappyHorse, la tarea está terminada cuando aparece `status: completed`; la respuesta contiene `content_url`, `data[]` y usage. Para Grok, `status: done` con `video.url`. Google Omni devuelve 202 queued, después in\_progress con Retry-After y, finalmente, completed o partial/content\_revoked. No interpretes cualquier 200 como un vídeo terminado. Si la respuesta de estado contiene `result_pending_check: true` (`status` es `in_progress`), el resultado se está comprobando. No vuelvas a crear la tarea: consúltala más tarde mediante GET /v1/videos/{id} o contacta con soporte e indica el Request ID.

`/content` puede devolver un MP4 directamente o redirigir a un archivo firmado. Si la respuesta contiene varios resultados en `data[]`, guarda cada uno: se facturan todos los resultados entregados. No se puede cancelar ni eliminar una tarea de vídeo mediante la API. Eliminar el archivo terminado impide acceder a él, pero no cancela la generación.

Se factura por los segundos del vídeo terminado en la resolución elegida o por vídeo, según lo indicado en el catálogo. El coste completo se reserva al crear la tarea.

## Música

POST`https://api.ailoot.ai/v1/music/generations`

| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `model` | string | obligatorio | `google/lyria`, `google/lyria-3-clip-preview`. |
| `prompt` | string | obligatorio | Descripción de la pista: género, instrumentos y ambiente. |

En la respuesta, `data[]` contiene enlaces a los clips terminados. El modelo puede devolver varios clips en una solicitud y se factura cada clip entregado.

No repitas una solicitud de vídeo o música si se pierde la conexión: la tarea podría haber comenzado. Consulta primero su estado mediante el identificador o contacta con soporte e indica el Request ID.

¿Tienes alguna pregunta? Envíanos el Request ID y una descripción; te ayudaremos a resolverla.[Contactar con soporte](mailto:support@ailoot.ai)

## Ailoot · La empresa y su cartera de proyectos





Ailoot se apoya en la experiencia operativa acumulada, una amplia base de clientes, un servicio estable y el seguimiento continuo de KPI.





La empresa y su cartera de proyectos: millones de clientes; ventas por miles de millones al mes.





Ailoot aplica esa experiencia operativa al acceso por API a funciones de IA en productos de clientes, agentes, aplicaciones y automatizaciones.
