Video y música
MarkdownGeneración de videos y música: la solicitud crea una tarea y el resultado se obtiene mediante su identificador.
Guía completa
https://api.ailoot.ai/v1/videos# Conserva el Request ID: soporte lo usa para localizar tu solicitud.
# Crea la tarea una sola vez; el ciclo siguiente 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 ciclo 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
# Si se agota el tiempo de espera al crear la tarea, consulta el Request ID en tu historial de uso antes de volver a ejecutar este script.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"}' // 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
- Authorizationheaderobligatorio
Clave en formato
Bearer sk-…. También se admiten los encabezadosx-api-keyox-goog-api-key.
Video: cuerpo de la solicitud
- modelstringobligatorio
Modelo de video:
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. - promptstringobligatorio
Descripción del video.
- duration / secondsinteger / stringopcional
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 uses el campo de una familia en otra.
- resolution / sizestringopcional
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_urlsstring / arrayopcional
Los campos de las imágenes de entrada dependen de la familia y del modo. MiniMax Fast requiere first_frame_image. HappyHorse t2v: sin images; i2v: exactamente una imagen y sin ratio; r2v: 1–9 imágenes.
La respuesta contiene el identificador de la tarea (campo id o request_id). Úsalo tal como viene, sin descomponerlo: el formato depende del modelo. Estado y archivo terminado:
https://api.ailoot.ai/v1/videos/{id}https://api.ailoot.ai/v1/videos/{id}/contentLas 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 video terminado. Si la respuesta de estado contiene result_pending_check: true (status es in_progress), el resultado se está verificando. No vuelvas a crear la tarea: consulta su estado más tarde mediante GET /v1/videos/{id} o contacta a soporte con 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 video mediante la API. Eliminar el archivo terminado impide acceder a él, pero no cancela la generación.
Se factura por los segundos del video terminado en la resolución elegida o por video, según lo indicado en el catálogo. El costo completo se reserva al crear la tarea.
Música
https://api.ailoot.ai/v1/music/generations- modelstringobligatorio
google/lyria,google/lyria-3-clip-preview. - promptstringobligatorio
Descripción de la pista: género, instrumentos y estado de ánimo.
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.