
Guía de HappyHorse 1.1 API: generar video con EvoLink

Cómo usar HappyHorse 1.1 API en EvoLink
Si quieres usar HappyHorse 1.1 mediante EvoLink, el flujo práctico es:
- Elige el model ID de HappyHorse 1.1 que coincide con tu tipo de entrada.
- Crea una tarea de video con
POST /v1/videos/generations. - Guarda el task ID devuelto.
- Consulta
GET /v1/tasks/{task_id}o configuracallback_url. - Descarga o mueve el video generado antes de depender de ese enlace en producción.
Respuesta rápida
HappyHorse 1.1 tiene tres rutas en EvoLink:
| Caso de uso | Model ID | Mejor cuando |
|---|---|---|
| Text-to-video | happyhorse-1.1-text-to-video | Tu app empieza solo con un prompt |
| Image-to-video | happyhorse-1.1-image-to-video | Ya tienes una imagen de primer frame |
| Reference-to-video | happyhorse-1.1-reference-to-video | Necesitas 1-9 imágenes de referencia ordenadas |
callback_url opcional y facturación por segundo generado.No mezcles HappyHorse 1.1 con rutas antiguas de HappyHorse 1.0. La superficie actual de HappyHorse 1.1 en EvoLink es el set de tres rutas anterior.
Datos confirmados
| Elemento | HappyHorse 1.1 en EvoLink |
|---|---|
| Disponibilidad API | Disponible en EvoLink |
| Crear tarea | POST /v1/videos/generations |
| Consultar estado | GET /v1/tasks/{task_id} |
| Entrega | Creación async y consulta de estado |
| Callback | callback_url disponible en el request |
| Resoluciones | 720p y 1080p |
| Duración | Segundos enteros de 3 a 15 |
| Enlaces de resultado | Válidos durante 24 horas; guarda o mueve los assets pronto |
| Facturación | Por segundo generado, afectada por resolución y duración |
| Fuente de precio | Tabla de precios de HappyHorse 1.1 |
Esto importa porque la generación de video debe tratarse como un job async, no como una llamada sincrónica que bloquea una request web.
Elige la ruta correcta
El error más común es elegir por nombre en vez de elegir por el asset de entrada.
| Entrada | Ruta recomendada | Por qué |
|---|---|---|
| Prompt sin imágenes | happyhorse-1.1-text-to-video | Mantiene generación prompt-first y permite planear aspect ratio |
| Una imagen de producto, personaje o escena | happyhorse-1.1-image-to-video | Usa la imagen como primer frame y deriva el aspecto del origen |
| Varias referencias de personajes, objetos o estilo | happyhorse-1.1-reference-to-video | Permite referir imágenes ordenadas como character1, character2, etc. |
Usa text-to-video para ideación, image-to-video para animar assets y reference-to-video cuando la consistencia entre imágenes importa.
Preparación
| Requisito | Qué preparar |
|---|---|
| EvoLink API key | Crear una API key en tu cuenta EvoLink |
| URLs públicas de imagen | Necesarias para image-to-video y reference-to-video |
| Model ID | Elegir una de las tres rutas HappyHorse 1.1 |
| Plan de almacenamiento | Decidir dónde guardar videos terminados |
| Endpoint de callback | Opcional, recomendado para colas de producción |
| Guardrails de costo | Definir duración, resolución y retries antes de batch jobs |
Las imágenes deben estar en URLs HTTP o HTTPS públicas. Links internos, storage autenticado y archivos locales no son entradas válidas para producción.
Flujo básico de request
| Paso | Acción API | Qué debe guardar tu app |
|---|---|---|
| Crear tarea | POST /v1/videos/generations | Task ID, model ID, user ID, duración y calidad solicitadas |
| Seguir tarea | GET /v1/tasks/{task_id} | Estado, progreso, link de salida, usage |
| Completar tarea | Polling o callback_url | Asset final, estado final, metadata de facturación |
| Persistir resultado | Tu storage | URL estable, historial de jobs, audit trail |
model y validar los inputs específicos de cada ruta.Ejemplo text-to-video
model y prompt.curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <EVOLINK_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"model": "happyhorse-1.1-text-to-video",
"prompt": "A cinematic product shot of a transparent electric scooter moving through a clean studio space, slow dolly camera, soft reflections",
"quality": "720p",
"aspect_ratio": "16:9",
"duration": 5,
"callback_url": "https://your-domain.com/webhooks/video-task-completed"
}'| Parámetro | Consejo de planificación |
|---|---|
prompt | Describe sujeto, escena, movimiento de cámara, acción, luz y estilo |
quality | Empieza con 720p; sube a 1080p cuando el prompt esté estable |
aspect_ratio | Define el canal final temprano: 16:9, 9:16, 1:1 |
duration | Prueba primero con 3-5 segundos |
seed | Fija seed solo para iteraciones reproducibles |
Ejemplo image-to-video
model y image_urls.curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <EVOLINK_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"model": "happyhorse-1.1-image-to-video",
"image_urls": ["https://cdn.example.com/product-hero.png"],
"prompt": "Animate the product with a smooth camera orbit and subtle studio lighting movement",
"quality": "720p",
"duration": 5,
"callback_url": "https://your-domain.com/webhooks/video-task-completed"
}'| Regla | Requisito |
|---|---|
| Número de imágenes | Exactamente una imagen de primer frame |
| Formatos | JPEG, JPG, PNG, WEBP |
| Tamaño mínimo | Ancho y alto de al menos 300 px |
| Aspect ratio | La imagen debe estar dentro del rango soportado |
| Tamaño de archivo | Hasta 10MB por imagen |
| Acceso URL | Debe ser pública por HTTP o HTTPS |
aspect_ratio explícito.Ejemplo reference-to-video
model, prompt e image_urls.curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <EVOLINK_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"model": "happyhorse-1.1-reference-to-video",
"prompt": "character1 walks into the scene, picks up the object shown as character2, and places it on the table beside character3",
"image_urls": [
"https://cdn.example.com/person.png",
"https://cdn.example.com/object.png",
"https://cdn.example.com/scene.png"
],
"quality": "720p",
"aspect_ratio": "16:9",
"duration": 5,
"callback_url": "https://your-domain.com/webhooks/video-task-completed"
}'| Regla | Requisito |
|---|---|
| Número de imágenes | 1-9 imágenes de referencia |
| Convención de prompt | Usa character1, character2, character3, etc. |
| Orden | La primera URL corresponde a character1, la segunda a character2 |
| Formatos | JPEG, JPG, PNG, WEBP |
| Calidad recomendada | Imágenes claras, lado corto de al menos 400 px y ratio lado corto/largo de al menos 0.4 |
| Tamaño | Hasta 10MB por imagen |
| URL | HTTP o HTTPS público |
character1 / character2, el resultado puede mezclar personajes u objetos. Guarda el orden visible para el usuario junto con el array final image_urls.Async status y callback_url
Después de crear una tarea, tu app recibe un task ID. Guárdalo de inmediato y consulta el estado:
curl --request GET \
--url https://api.evolink.ai/v1/tasks/<TASK_ID> \
--header 'Authorization: Bearer <EVOLINK_API_KEY>'La respuesta puede incluir estado, progreso, modelo, información de tarea, resultados y usage.

| Enfoque | Úsalo cuando | Compromiso |
|---|---|---|
| Polling | Estás probando localmente o tienes un admin pequeño | Simple, pero puede cargar la cola |
callback_url | Generación para usuarios en producción | Flujo más limpio, requiere endpoint HTTPS seguro |
callback_url debe usar HTTPS y no debe apuntar a IPs privadas. El handler debe ser idempotente.Planificación de costos
| Driver de costo | Por qué importa | Guardrail práctico |
|---|---|---|
| Duración | Más segundos aumentan el costo | Usar tests de 3-5 segundos por defecto |
| Resolución | Mayor resolución afecta facturación | Aprobar prompts en 720p primero |
| Retries | Reintentos ciegos multiplican gasto | Reintentar solo errores transitorios conocidos |
| Ruta | Reference puede ser más complejo | Usar image-to-video si un primer frame basta |
| Tamaño de lote | Los trabajos por lote pueden ocultar picos | Límites por usuario y por job |
Lista de verificación de producción
| Área | Lista de verificación |
|---|---|
| Model routing | Mapear acciones de producto al model ID correcto |
| Validación | Prompt, conteo de imágenes, URL pública, formato y tamaño |
| Cola | Tratar cada video como async job y guardar task IDs |
| Seguridad de callback | HTTPS, validación de payload e idempotencia |
| Costos | Defaults de duración, calidad y límites por cuenta |
| Almacenamiento | Mover videos a storage propio dentro de la ventana de 24 horas |
| Fallback | Mantener otra ruta de video en EvoLink |
| Monitoring | Medir tasa de fallo, tiempo medio, retries y gasto |
Con EvoLink, cambiar entre HappyHorse, Seedance, Kling, Sora u otro modelo de video debe ser una decisión de selección de modelo, no una nueva integración de proveedor.
Troubleshooting
| Síntoma | Causa probable | Solución |
|---|---|---|
model_access_denied | La API key no tiene acceso al modelo | Revisa acceso y usa el model ID de la página HappyHorse 1.1 |
| Falla image-to-video | Falta image_urls o la URL no es pública | Pasa una URL pública |
| Reference mezcla personajes | El prompt no usa character1, character2 | Alinea prompt y orden del array |
| Aspect ratio inesperado | Se espera control explícito en image-to-video | Ajusta el ratio de la imagen fuente |
| Costo más alto | Duración, resolución, retries o batch size aumentaron | Empieza con 720p corto y límites de gasto |
| Timeout de usuario | La app trata video como síncrono | Guarda task ID y usa polling o callback |
Patrón de implementación
type HappyHorseRoute =
| 'text-to-video'
| 'image-to-video'
| 'reference-to-video'
const happyHorseModelIdByRoute: Record<HappyHorseRoute, string> = {
'text-to-video': 'happyhorse-1.1-text-to-video',
'image-to-video': 'happyhorse-1.1-image-to-video',
'reference-to-video': 'happyhorse-1.1-reference-to-video',
}Mantén esta capa detrás de la lógica de producto. La UI puede preguntar qué assets tiene el usuario; el backend convierte esa respuesta en model ID y body validado.
Cuándo usar otro modelo de video en EvoLink
| Necesidad | Considera |
|---|---|
| Referencias como video o audio | Seedance 2.0 |
| Producción short-form repetible | Kling 3.0 |
| Otro estilo creativo | Compara rutas en el catálogo de modelos EvoLink |
FAQ
¿Qué endpoint uso para HappyHorse 1.1?
POST /v1/videos/generations con el model ID de HappyHorse 1.1 que coincide con tu entrada.¿Cuáles son los model IDs de HappyHorse 1.1?
happyhorse-1.1-text-to-video, happyhorse-1.1-image-to-video y happyhorse-1.1-reference-to-video.¿Qué model ID uso para prompt-only?
happyhorse-1.1-text-to-video.¿Qué model ID uso para animar una primera imagen?
happyhorse-1.1-image-to-video.¿Qué model ID uso para varias imágenes de referencia?
happyhorse-1.1-reference-to-video con 1-9 imágenes ordenadas y referencias character1, character2, etc.¿Image-to-video soporta aspect_ratio?
No. Deriva el aspect ratio desde la imagen fuente. Para control explícito, usa text-to-video o reference-to-video.
¿Puedo usar callback_url?
Sí. Usa HTTPS y diseña el handler para ser idempotente.
¿Dónde veo el precio actual?
¿Puedo usar la misma API key de EvoLink?
Sí. HappyHorse 1.1 usa la misma API key y el mismo sistema de facturación de EvoLink.
¿HappyHorse 1.1 soporta video-edit?
La página actual y la referencia API muestran text-to-video, image-to-video y reference-to-video. No uses una ruta video-edit de HappyHorse 1.0 como si fuera HappyHorse 1.1.


