GPT-6 Sol y Claude Opus 5.5 ya disponiblesGPT-6 Sol por la mitad del precio de 5.6 Sol

HappyHorse 1.1 imagen a video: guía de la API y 5 clips reales

Un script envía una foto, consulta la tarea y guarda el MP4. Los campos, las sorpresas de la marca de agua y la banda sonora, y 5 clips hechos el 2 de noviembre de 2026.

Kiki, OmniaKey COO11 min de lectura
En esta página

Para animar una foto con HappyHorse 1.1 imagen a video, envíala como first_frame a https://api.omniakey.com/v1/media/tasks con el ID de modelo happyhorse-1.1-i2v, consulta la tarea y descarga el MP4. Nuestros cinco clips de 5 segundos en 720P tardaron entre 92 y 158 segundos el 2 de noviembre de 2026. Todos traían música que no pedimos, y el ajuste por defecto añade una marca de agua "Happy Horse".

Respuesta corta

  • La petición: modelo happyhorse-1.1-i2v, operación image_to_video y exactamente un first_frame en input.media.
  • Relación de aspecto: el clip sigue tu foto, porque no hay campo ratio.
  • Duración y tamaño: de 3 a 15 segundos en 480P, 720P o 1080P, y envía resolution siempre, porque el valor por defecto de Alibaba es 1080P.
  • Marca de agua: activa por defecto, se quita con watermark: false.
  • Sonido: los cinco clips traían música, la API de Alibaba no lista ningún interruptor de audio y ffmpeg quita la pista.

¿Qué necesitas antes de tu primera llamada a HappyHorse 1.1 imagen a video?

Tres cosas: una clave, Python 3 y una foto que cumpla las reglas de Alibaba.

  • La clave en OMNIAKEY_API_KEY. El script la envía como token Bearer, así que no queda en el código.
  • Python 3 sin instalar nada. El script solo usa la biblioteca estándar.
  • Una foto que cumpla la referencia de la API de imagen a video de Alibaba: JPEG, JPG, PNG o WEBP; ancho y alto de al menos 300 píxeles; hasta 20 MB; relación de aspecto de 1:2.5 a 2.5:1. Alibaba no indica un máximo de píxeles.

El problema es el tamaño: la foto en línea viaja dentro del cuerpo de la petición, que debe caber en 1 MiB, Base64 incluido (resumen de la API de medios de OmniaKey, comprobado el 2 de noviembre de 2026). El script se detiene por encima de 700 KB; si la foto es mayor, redúcela o pasa una URL HTTPS pública. Nuestra foto 2K pesaba 2,254,819 bytes y este comando de macOS la dejó en 92,212 bytes:

bash
sips -s format jpeg -s formatOptions 85 -Z 1280 still.jpg --out still-small.jpg

¿Qué campos lleva la petición?

Nueve campos definen la tarea: tres en el nivel superior, dos dentro de input y cuatro dentro de parameters.

CampoValorNotas
modelhappyhorse-1.1-i2vel ID del modelo 1.1 de imagen a video
typevideoel tipo de archivo que crea la tarea
operationimage_to_videonombre sin prefijo
input.prompttextoOmniaKey lo exige, la API de Alibaba lo trata como opcional; hasta 5,000 caracteres no chinos o 2,500 chinos, el texto más largo se corta
input.mediaexactamente un {"type": "first_frame", "url": ...}una URL HTTPS pública o un data URI
parameters.resolution480P, 720P o 1080Penvíalo siempre: el valor por defecto de Alibaba es 1080P
parameters.durationsegundos enteros, de 3 a 15obligatorio en OmniaKey
parameters.watermarktrue (por defecto) o falsefalse quita el texto "Happy Horse"
parameters.seed0 a 2147483647la misma seed tampoco garantiza el mismo clip

Hay cuatro detalles fáciles de pasar por alto.

  • No hay campo ratio: el clip mantiene la relación de aspecto de tu foto (referencia de la API de imagen a video de Alibaba, comprobada el 2 de noviembre de 2026).
  • Las páginas de Alibaba no muestran un campo de prompt negativo.
  • Cada llamada de creación necesita una cabecera Idempotency-Key. Repetirla con el mismo cuerpo devuelve la tarea original y nunca cobra dos veces; con otro cuerpo se obtiene 409 idempotency_key_reused (documentación de la API de video de OmniaKey, comprobada el 2 de noviembre de 2026).
  • El tamaño de salida varía: la documentación de OmniaKey muestra una foto de 1200×630 en 720P que vuelve como 1324×696.

El script de Python

Este es el archivo exacto que ejecutamos, solo con la biblioteca estándar.

python
"""Animate one still with HappyHorse 1.1 image-to-video through the OmniaKey media API.

Usage:
    export OMNIAKEY_API_KEY="your-omniakey-api-key"
    python3 hh_i2v.py still.jpg "The camera slowly orbits the headphones." clip.mp4

The still can be a local JPEG or PNG (sent inline as a data URL) or a public https:// URL.
"""
import base64
import json
import mimetypes
import os
import sys
import time
import urllib.error
import urllib.request
import uuid

API = "https://api.omniakey.com/v1/media/tasks"
HEADERS = {
    "Authorization": "Bearer " + os.environ["OMNIAKEY_API_KEY"],
    "Content-Type": "application/json",
    "User-Agent": "happyhorse-i2v-example/1.0",
}
POLL_SECONDS = 10
GIVE_UP_AFTER = 15 * 60  # most clips finish in 1-5 minutes


def call(method, url, body=None, extra_headers=None):
    data = json.dumps(body).encode() if body is not None else None
    req = urllib.request.Request(url, data=data, method=method, headers={**HEADERS, **(extra_headers or {})})
    for attempt in range(3):
        try:
            with urllib.request.urlopen(req, timeout=60) as resp:
                return json.load(resp)
        except urllib.error.HTTPError as err:
            sys.exit(f"HTTP {err.code}: {err.read().decode(errors='replace')}")
        except (urllib.error.URLError, TimeoutError, ConnectionError) as err:
            if attempt == 2:
                raise
            print("network error, retrying:", err)  # a retried POST keeps its Idempotency-Key
            time.sleep(5)


def first_frame_url(image):
    if image.startswith("https://"):
        return image
    raw = open(image, "rb").read()
    if len(raw) > 700_000:  # Base64 adds a third, and the whole request must stay under 1 MiB
        sys.exit("The still is over 700 KB. Resize it or pass a public https:// URL instead.")
    mime = mimetypes.guess_type(image)[0] or "image/jpeg"
    return f"data:{mime};base64,{base64.b64encode(raw).decode()}"


def main(image, prompt, out_path):
    task = call("POST", API, {
        "model": "happyhorse-1.1-i2v",
        "type": "video",
        "operation": "image_to_video",
        "input": {"prompt": prompt, "media": [{"type": "first_frame", "url": first_frame_url(image)}]},
        "parameters": {"resolution": "720P", "duration": 5, "watermark": False},  # watermark is on by default
    }, {"Idempotency-Key": str(uuid.uuid4())})
    print("task", task["id"], task["status"])

    start = time.time()
    while task["status"] in ("queued", "processing"):
        if time.time() - start > GIVE_UP_AFTER:
            sys.exit(f"Still {task['status']} after 15 minutes. Do not submit it again; "
                     f"check it later with GET {API}/{task['id']}")
        time.sleep(POLL_SECONDS)
        task = call("GET", f"{API}/{task['id']}")
    print(task["status"], "after", round(time.time() - start), "s")
    if task["status"] != "succeeded":
        sys.exit(json.dumps(task.get("error") or task))

    # The signed download URL is short-lived, so save the file right away.
    req = urllib.request.Request(task["assets"][0]["url"], headers={"User-Agent": HEADERS["User-Agent"]})
    with urllib.request.urlopen(req, timeout=300) as resp, open(out_path, "wb") as f:
        f.write(resp.read())
    print("saved", out_path)


if __name__ == "__main__":
    main(*sys.argv[1:4])

Guárdalo como hh_i2v.py y ejecútalo:

bash
export OMNIAKEY_API_KEY="your-omniakey-api-key"
python3 hh_i2v.py still.jpg "The camera slowly orbits the headphones." clip.mp4

Nuestra ejecución con watermark: false imprimió esto:

text
task task_QqK3ZdAd72vmK1DSOuOxXSytBSaJ244v queued
succeeded after 91 s
saved data/clips/c5-orbit-nowm.mp4

Cinco cosas del script importan.

  • Consulta cada 10 segundos.
  • Se rinde a los 15 minutos con un mensaje que pide no enviar la tarea otra vez.
  • Ante un error de red reintenta, y el reintento de creación conserva su Idempotency-Key, así que recibes la tarea original en lugar de un segundo cobro.
  • Guarda el archivo en cuanto la tarea termina bien, porque la URL de descarga firmada dura poco.
  • Envía un User-Agent en cada petición: el de Python por defecto recibió HTTP 403 con error code: 1010 de Cloudflare en nuestra prueba de Kling 3.0 API del 29 de octubre de 2026.

Cinco clips que hicimos

Generamos cuatro fotos con Nano Banana 2.1 y ejecutamos la imagen de los auriculares dos veces para probar la marca de agua. Salieron cinco clips, todos de 5 segundos y 720P, el 2 de noviembre de 2026. Los de retrato, lago y zorro salieron con los ajustes por defecto, así que la marca de agua aparece en esos fotogramas.

Órbita de los auriculares

prompt
The camera slowly orbits about 90 degrees to the right around the headphones while a soft band of light sweeps across the ear cups. The headphones stay perfectly still on the pedestal. Smooth, steady product-commercial camera move.
Ocho fotogramas de unos auriculares negros sobre un pedestal de piedra. La cámara gira de un lado al otro y en los fotogramas centrales aparece detrás el borde curvo de un fondo.
Ocho fotogramas del clip de órbita en orden temporal, de 0.0 a 4.85 segundos, con la marca de agua en false. HappyHorse 1.1 con la API de OmniaKey, imagen a video, 5 segundos, 720P, hecho el 2 de noviembre de 2026.

La cámara gira de un lado de los auriculares al otro y ellos se quedan en el pedestal. En los fotogramas centrales aparece detrás el borde curvo de un fondo que no está en la foto, y la banda de luz que pedía el prompt apenas se ve.

Ejecutamos el mismo prompt sobre la misma foto dos veces, una con los ajustes por defecto y otra con watermark: false, y la esquina muestra la diferencia.

La esquina inferior derecha de dos clips. El de arriba muestra el texto blanco Happy Horse y el de abajo, con la marca de agua en false, está limpio.
Esquina inferior derecha del último fotograma de cada clip de órbita, ampliada. Arriba: ajustes por defecto. Abajo: marca de agua en false. HappyHorse 1.1 con la API de OmniaKey, imagen a video, 5 segundos, 720P, hecho el 2 de noviembre de 2026.

Retrato bajo la lluvia

prompt
She slowly turns her head toward the camera and gives a small smile while light rain keeps falling. The neon signs behind her flicker softly and the camera pushes in a little.
Cuatro fotogramas de una mujer con impermeable amarillo en una calle de neón mojada. Gira la cabeza desde la izquierda hacia la cámara y sonríe, mientras el plano pasa de medio cuerpo a primer plano.
Cuatro fotogramas del clip de retrato bajo la lluvia en orden temporal, de 0.0 a 4.85 segundos, con la marca de agua por defecto. HappyHorse 1.1 con la API de OmniaKey, imagen a video, 5 segundos, 720P, hecho el 2 de noviembre de 2026.

Pasa de mirar a la izquierda a mirar a la cámara y sonreír, en el orden que daba el prompt, y la marca de agua está en todos los fotogramas. El prompt pedía un acercamiento leve y el plano pasa de medio cuerpo a un primer plano de su cara.

Acercamiento en el lago

prompt
Slow aerial push-in over the water toward the rowboat. Mist drifts across the lake, the boat rocks gently and small ripples spread from its hull, and the golden light grows a little brighter.
Ocho fotogramas de un bote de remos en un lago con niebla al amanecer. La cámara se acerca hasta que el bote ocupa casi todo el encuadre y las ondas se alejan del casco.
Ocho fotogramas del clip del lago en orden temporal, de 0.0 a 4.85 segundos, con la marca de agua por defecto. HappyHorse 1.1 con la API de OmniaKey, imagen a video, 5 segundos, 720P, hecho el 2 de noviembre de 2026.

La cámara se acerca al bote, como se pedía. Al final el bote ocupa casi todo el encuadre y las ondas se alejan del casco.

Ilustración del zorro

prompt
The fox turns a page of the book with its paw and its ears twitch. A few orange leaves drift down from the tree and the branches sway gently. Keep the flat illustration style.
Cuatro fotogramas de una ilustración plana de un zorro que lee bajo un árbol de otoño. Caen hojas naranjas y la vista se acerca desde el árbol entero hasta el zorro.
Cuatro fotogramas del clip del zorro en orden temporal, de 0.0 a 4.85 segundos, con la marca de agua por defecto. HappyHorse 1.1 con la API de OmniaKey, imagen a video, 5 segundos, 720P, hecho el 2 de noviembre de 2026.

El estilo de ilustración plana se mantiene desde el primer fotograma hasta el último mientras caen hojas naranjas. La cámara se acerca desde el árbol entero hasta un primer plano del zorro, algo que el prompt no pedía; las páginas del libro se levantan, aunque los fotogramas no confirman que la pata pase una.

Izquierda: la foto del zorro que enviamos, con todo el árbol a la vista. Derecha: el último fotograma del clip, mucho más cerca del zorro y su libro abierto, con el mismo estilo plano y una marca de agua Happy Horse.
Izquierda: la foto enviada como primer fotograma. Derecha: el último fotograma del clip del zorro. HappyHorse 1.1 con la API de OmniaKey, imagen a video, 5 segundos, 720P, hecho el 2 de noviembre de 2026.

En 2 de nuestros 4 prompts la cámara se movió más de lo que pedíamos, así que revisa el encuadre con una prueba corta. Un clip de 3 segundos en 480P es el más corto y el más bajo que listan los documentos (referencia de la API de imagen a video de Alibaba, comprobada el 2 de noviembre de 2026).

Lo que midieron los archivos

ClipAspectoPíxelesFotogramasTiempoBytes
Órbita, por defecto16:91286×716123128 s1,486,548
Órbita, watermark: false16:91286×71612198 s1,320,527
Retrato bajo la lluvia9:16716×1286123158 s2,108,577
Lago16:91286×716123131 s2,691,558
Zorro1:1960×96012392 s2,405,557

Todos los archivos indican 5.16 segundos aunque pedimos 5: eso es la pista de audio, mientras que la pista de video dura 5.13 segundos con 123 fotogramas y 5.04 segundos con 121. Los cinco son H.264 a 24 fps con una pista AAC de dos canales, y un script de detección de cortes no encontró ninguno.

Nuestros clips tardaron de 92 a 158 segundos desde el envío hasta la descarga, frente a los 1 a 5 minutos que dan los documentos de Alibaba para las tareas de imagen a video (referencia de la API de imagen a video de Alibaba, comprobada el 2 de noviembre de 2026). No probamos 480P, 1080P, otras duraciones, seed, una URL de imagen pública, HappyHorse 1.0 ni el endpoint propio de Alibaba. Para elegir entre modelos, mira HappyHorse 1.1 frente a Seedance 2.0 y HappyHorse 1.1 frente a Kling 3.0. Para repetir un clip sin código, HappyHorse 1.1 está en el generador de video con IA.

¿Por qué tienen sonido los clips?

HappyHorse 1.1 añadió una banda sonora a los cinco clips, aunque ninguno de nuestros prompts la pedía. Ninguna persona los escuchó: pedimos a Gemini 3.8 Flash por la API de OmniaKey que describiera cada pista.

ClipLo que describió el modeloSonoridad media
Órbita, por defecto"Un ritmo de hip-hop con percusión sincopada, palmas y acordes de sintetizador suaves."−19.5 dB
Órbita, watermark: false"Música electrónica tranquila y rítmica, con un pulso constante y tonos de sintetizador melódicos"−20.5 dB
Retrato bajo la lluvia"Una melodía de piano lenta, melancólica y suave, con un ambiente atmosférico tenue"−22.6 dB
Lago"Una melodía de piano lenta, suave y sentimental"−20.2 dB
Zorro"Una melodía ambiental calmada y suave tocada con tonos de campana", además de "pasos que crujen sobre grava"−27.4 dB

No informó de voz en ningún clip. El mismo prompt y la misma foto, ejecutados dos veces, dieron dos pistas distintas.

La referencia de imagen a video de Alibaba no lista ningún campo de audio ni opción de silencio, aunque su nota de la versión 1.1 menciona la sincronización audiovisual (página de modelos recién publicados de Alibaba, comprobada el 2 de noviembre de 2026). Para obtener un archivo silencioso, quita la pista después de la descarga:

bash
ffmpeg -i clip.mp4 -an -c:v copy silent.mp4

Lo ejecutamos sobre el clip con watermark: false y el resultado tiene pista de video y ninguna de audio. La imagen queda exactamente igual, porque -c:v copy copia la pista en vez de recodificarla.

¿Cuánto tiempo siguen disponibles los resultados?

En OmniaKey el enlace firmado a tu MP4 dura cerca de 1 hora y el registro de la tarea se guarda 24 horas; vuelve a consultar la tarea para obtener una URL nueva (resumen de la API de medios de OmniaKey, comprobado el 2 de noviembre de 2026). En la API propia de Alibaba, la URL del video y el ID de la tarea duran 24 horas, y después una consulta devuelve UNKNOWN y el archivo ya no está. Descarga en cuanto la tarea termine bien.

¿Con qué errores te vas a encontrar?

Ninguna de nuestras cinco ejecuciones falló, así que esta lista sale de la documentación de la API de video de OmniaKey, comprobada el 2 de noviembre de 2026.

EstadoQué significaQué hacer
400 invalid_requestcuerpo mal formado o una tarea sin input.promptrevisa la forma de la petición de arriba
400 model_price_errorduración fuera del rango del modelo o una resolución sin preciousa una duración y una resolución admitidas
403 model_not_allowedtu clave o tu grupo no incluye el modelorevisa el acceso al modelo de la clave
409 idempotency_key_reusedla misma clave ya se envió con otro cuerporeutiliza una clave solo para reintentos idénticos
503 no_available_channelningún canal sirve el modelo o la operación ahora mismointéntalo más tarde o mira el panel

Una tarea que termina en failed se reembolsa automáticamente, así que un render rechazado solo cuesta tu tiempo (resumen de la API de medios de OmniaKey, comprobado el 2 de noviembre de 2026).

El error que conviene evitar es leer un tiempo de espera agotado de tu lado como una tarea fallida. Consulta el mismo ID de tarea; volver a enviarla abre una segunda tarea y un segundo cobro. Si de verdad reenvías, mantén el mismo Idempotency-Key y el mismo cuerpo, y recibes la tarea original.

¿Cuánto cuesta un clip de HappyHorse 1.1?

Un clip de 5 segundos en 720P cuesta $0.70 al precio de lista de Alibaba en Singapur. Estos son los precios por segundo de Alibaba, de su página de precios comprobada el 2 de noviembre de 2026:

ResoluciónSingapurPekín y Global
480P$0.07$0.0618845
720P$0.14$0.123769
1080P$0.18$0.165026

La factura es el precio por segundo multiplicado por los segundos de salida. Las peticiones fallidas no se cobran. Singapur incluye además una cuota gratuita de 10 segundos, válida 90 días. En la página de precios, los precios Global se aplican a Fráncfort, Virginia y Tokio.

OmniaKey cobra por segundo de salida renderizada y hace un cargo previo al crear la tarea, con reembolso automático si falla o se cancela; para las tarifas actuales mira la página de HappyHorse 1.1.

¿Puedes llamar directamente a Alibaba Cloud?

Sí. HappyHorse se sirve en Alibaba Cloud Model Studio, con endpoints regionales para Singapur, EE. UU. (Virginia), Pekín, Fráncfort y Tokio (referencia de la API de imagen a video de Alibaba, comprobada el 2 de noviembre de 2026). Nuestras ejecuciones pasaron por la API de OmniaKey, así que lo siguiente sale de los documentos de Alibaba.

  • Crea con POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis para Singapur.
  • Envía la cabecera X-DashScope-Async: enable, o la petición falla con "current user api does not support synchronous calls".
  • Consulta GET .../api/v1/tasks/{task_id} cada 15 segundos aproximadamente; el estado pasa por PENDING, RUNNING, SUCCEEDED, FAILED, CANCELED, UNKNOWN.
  • Mantén el modelo, el endpoint y la clave en la misma región, porque las llamadas entre regiones fallan.
  • Una clave recibe 5 peticiones por segundo y 5 tareas simultáneas (página de límites de peticiones de Alibaba, comprobada el 2 de noviembre de 2026).

La página de precios lista Tokio, pero la de límites no lista allí imagen a video 1.1, así que Tokio queda sin confirmar.

Preguntas frecuentes

¿Hace falta un prompt para HappyHorse imagen a video?

En OmniaKey sí: una tarea sin input.prompt recibe 400 invalid_request (documentación de la API de video de OmniaKey, comprobada el 2 de noviembre de 2026). La API propia de Alibaba trata el prompt como opcional y toma solo el primer fotograma. En ambos casos, nombra el movimiento y el desplazamiento de cámara, como hacen nuestros prompts de arriba.

¿Cómo quito la marca de agua Happy Horse?

Envía parameters.watermark: false. El valor por defecto true dibuja un pequeño texto blanco "Happy Horse" en la esquina inferior derecha; nuestro segundo clip de órbita, enviado con false, volvió limpio.

¿Cómo fijo la relación de aspecto?

Recorta la foto. Imagen a video no tiene campo ratio y el clip sigue la forma del primer fotograma, así que nuestra foto 16:9 dio un clip 16:9 y el retrato dio un clip 9:16. Mantén el recorte entre 1:2.5 y 2.5:1.

¿Existe HappyHorse 1.5?

Nada posterior a 1.1 aparece en la lista de modelos, las tablas de precios ni la página de ciclo de vida de Alibaba a 2 de noviembre de 2026, y la versión más nueva de esas páginas es happyhorse-1.1-i2v, publicada el 16 de junio de 2026. Algunos sitios usan el nombre "Happy Horse 1.5".

¿Es mejor HappyHorse 1.1 que 1.0 para imagen a video?

Alibaba dice que 1.1 mejora la calidad visual, el rendimiento del movimiento y la consistencia entre clips, y su página de precios lista un nivel 480P solo para 1.1. 1.1 salió el 16 de junio de 2026 y 1.0 el 22 de abril de 2026. Con la tarifa de Singapur de Alibaba, 1080P cuesta $0.18 por segundo en 1.1 frente a $0.24 en 1.0.

Fuentes consultadas

Documentación propia de OmniaKey, comprobada el 2 de noviembre de 2026: API de video y resumen de la API de medios.

Modelos de este artículo

HappyHorse 1.1imagen a videovideo con IAAPI de videoPython

Artículos relacionados

Artículos recientes

Guías populares