Seedance 2.0 Mini is now availableTry now
How to Use HappyHorse 1.1 API: Complete EvoLink Guide for Video Generation
Tutorial

How to Use HappyHorse 1.1 API: Complete EvoLink Guide for Video Generation

EvoLink Team
EvoLink Team
Product Team
June 22, 2026
14 min read

How to Use HappyHorse 1.1 API on EvoLink

If you want to use HappyHorse 1.1 through EvoLink, the practical workflow is:

  1. Choose the HappyHorse 1.1 model ID that matches your input type.
  2. Send a video generation task to POST /v1/videos/generations.
  3. Store the returned task ID.
  4. Poll GET /v1/tasks/{task_id} or configure callback_url.
  5. Download or move the generated video result before your application depends on it.
This guide is written for developers building with EvoLink. The blog explains the integration decisions and production workflow, while the HappyHorse 1.1 API page and API reference remain the source of truth for current pricing, parameter ranges, and request schema.

Quick answer

HappyHorse 1.1 currently has three EvoLink routes:

Use caseModel IDBest when
Text-to-videohappyhorse-1.1-text-to-videoYour app starts from a prompt only
Image-to-videohappyhorse-1.1-image-to-videoYour app already has one first-frame image
Reference-to-videohappyhorse-1.1-reference-to-videoYour app needs 1-9 ordered reference images
All three use EvoLink's unified video generation workflow: API key authentication, async task creation, task status retrieval, optional callback_url, and per-second video billing.

Do not mix HappyHorse 1.1 with older HappyHorse 1.0 routes. The current HappyHorse 1.1 integration surface on EvoLink is the three-route setup above.

Table of contents

Confirmed facts

ItemHappyHorse 1.1 on EvoLink
API availabilityLive on EvoLink
Main endpointPOST /v1/videos/generations
Task status endpointGET /v1/tasks/{task_id}
Delivery modelAsync task creation and status retrieval
Callback supportcallback_url is available in the create request
Output resolutions720p and 1080p
Duration rangeInteger seconds from 3 to 15
Generated video linksValid for 24 hours; save or move completed assets promptly
Billing shapePer generated second, affected by resolution and duration
Current pricing sourceHappyHorse 1.1 pricing table

This matters because video generation should be treated as an async production job, not a synchronous API call that blocks a web request.

Choose the right route

The biggest integration mistake is choosing a route by name instead of by input asset. Start from what your workflow already has.

Input assetRecommended routeWhy
A prompt and no imageshappyhorse-1.1-text-to-videoKeeps generation prompt-first and uses explicit aspect ratio control
One product image, character image, or scene imagehappyhorse-1.1-image-to-videoUses the image as the first frame and derives aspect ratio from the source image
Multiple characters, objects, or style referenceshappyhorse-1.1-reference-to-videoLets the prompt refer to ordered images with character1, character2, and similar labels

Use text-to-video for ideation, image-to-video for asset animation, and reference-to-video when consistency across multiple input images matters.

Prerequisites

Before you make the first request, prepare these items:

RequirementWhat to prepare
EvoLink API keyCreate an API key from your EvoLink account
Public image URLsRequired for image-to-video and reference-to-video
Model IDPick one of the three HappyHorse 1.1 model IDs
Storage planDecide where completed video files should be saved
Callback endpointOptional, but recommended for production queues
Cost guardrailsDecide default duration, resolution, and retry limits before batch jobs

For image inputs, use publicly accessible HTTP or HTTPS URLs. Private intranet links, authenticated object storage URLs, and local files are not valid production inputs for the API.

Basic request flow

HappyHorse 1.1 follows EvoLink's video task pattern:

StepAPI actionWhat your app should store
Create taskPOST /v1/videos/generationsTask ID, model ID, user ID, requested duration, requested quality
Track taskGET /v1/tasks/{task_id}Status, progress, output link, usage data
Complete taskPolling or callback_urlFinal video asset, final status, billing metadata
Persist resultYour own storage layerStable URL for your product, job history, audit trail
The endpoint pattern is shared across EvoLink video routes, so the main integration work is selecting the right model value and passing route-specific inputs.

Text-to-video example

Use text-to-video when your app starts from a prompt only. The required fields are model and 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"
  }'

Text-to-video planning notes

ParameterPlanning advice
promptDescribe subject, scene, camera movement, motion, lighting, and style
qualityStart with 720p; move to 1080p after prompt quality is stable
aspect_ratioChoose the final channel early: 16:9, 9:16, 1:1, and other supported ratios
durationStart with 3-5 seconds for tests before longer generations
seedUse a fixed seed only when you need reproducible prompt iterations
For multi-shot prompts, structure the prompt by time segment. For example: Shot 1 [0~3s] wide angle...; Shot 2 [3~6s] medium shot....

Image-to-video example

Use image-to-video when your app already has one first-frame image. The required fields are model and 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"
  }'

Image-to-video input rules

RuleRequirement
Number of imagesExactly one first-frame image
Supported formatsJPEG, JPG, PNG, WEBP
Minimum image sizeWidth and height should be at least 300 px
Aspect ratioThe image should be within the supported source-image ratio range
File sizeKeep each image at or below 10MB
URL accessThe URL must be publicly accessible
The image-to-video route derives output aspect ratio from the source image. Do not design this route around an explicit aspect_ratio field.

Reference-to-video example

Use reference-to-video when the prompt needs to refer to ordered reference images. The required fields are model, prompt, and 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"
  }'

Reference-to-video input rules

RuleRequirement
Number of images1-9 reference images
Prompt conventionUse character1, character2, character3, and so on
Image orderThe first URL maps to character1, the second to character2
Supported formatsJPEG, JPG, PNG, WEBP
Recommended qualityUse clear images with short edge at least 400 px and short-edge / long-edge ratio at least 0.4
File sizeKeep each image at or below 10MB
URL accessUse public HTTP or HTTPS URLs
Missing explicit character1 / character2 references can create ambiguity. If your app collects references from users, store the user-visible reference order and the exact image_urls array together.

Parameters to plan before production

The exact API reference should remain your schema authority, but most production issues come from a small set of decisions.

ParameterApplies toProduction decision
modelAll routesMap each product workflow to one model ID
promptText-to-video, reference-to-video, optional image-to-videoDefine prompt templates and validation rules
image_urlsImage-to-video, reference-to-videoValidate URL access, format, size, and image count before calling the API
qualityAll routesUse 720p for testing; reserve 1080p for approved outputs
aspect_ratioText-to-video and reference-to-videoMatch the distribution channel before generation
durationAll routesUse short tests first; longer duration directly affects cost
seedAll routesStore seeds only for reproducible iteration workflows
callback_urlAll routesPrefer callbacks for production queues and background jobs

Keep a server-side allowlist for model IDs. Do not let client input freely choose arbitrary model names.

Async status and callback_url

After creating a task, your application receives a task ID. Store it immediately and query status:

curl --request GET \
  --url https://api.evolink.ai/v1/tasks/<TASK_ID> \
  --header 'Authorization: Bearer <EVOLINK_API_KEY>'

Task responses can include status, progress, model, task information, result details, and usage information. Treat the task ID as the durable link between your user-facing job and the EvoLink generation job.

HappyHorse 1.1 API async workflow with task queue, callback handling, and completed video asset storage
HappyHorse 1.1 API async workflow with task queue, callback handling, and completed video asset storage

Polling vs callback_url

ApproachUse whenTradeoff
PollingYou are testing locally or building a small admin workflowSimple, but can create unnecessary queue load
callback_urlYou are running user-facing generation at scaleCleaner production flow, but requires a secure HTTPS endpoint
callback_url must use HTTPS and should not point to private IP ranges. Your handler should be idempotent because retries can happen after failed callback delivery.

Cost planning

HappyHorse 1.1 uses per-second billing on EvoLink. The blog should not be treated as the live price source; use the HappyHorse 1.1 pricing table before production rollout.

For engineering planning, focus on the cost drivers:

Cost driverWhy it mattersPractical guardrail
DurationMore generated seconds increase costDefault to 3-5 second tests
ResolutionHigher resolution affects billingApprove prompt quality at 720p first
Retry behaviorBlind retries can multiply spendRetry only known transient failures
Route selectionReference workflows can be more operationally complexUse image-to-video when one first frame is enough
Batch sizeBatch jobs can hide cost spikesAdd per-user and per-job spending limits

For production, log requested duration, actual task status, model ID, quality, and user/account ID. That makes billing review and incident debugging much easier.

Production rollout checklist

Use this checklist before routing real users to HappyHorse 1.1:

AreaChecklist
Model routingMap product actions to the correct HappyHorse 1.1 model ID
Input validationValidate prompt length, image count, public URL access, file format, and image size
Queue designTreat every video job as async and store task IDs
Callback securityUse HTTPS, verify payload shape, and make handlers idempotent
Cost controlsSet duration defaults, quality defaults, and per-account limits
Asset storageMove completed videos into your own storage within the 24-hour result-link window
Fallback modelKeep another EvoLink video model available for production variance
MonitoringTrack task failure rate, average completion time, retry rate, and spend

This is where EvoLink's unified gateway matters: once your app uses a clean routing layer, switching between HappyHorse, Seedance, Kling, Sora, or another video model is mostly a model selection decision rather than a new vendor integration.

Troubleshooting

Most HappyHorse 1.1 integration issues come from model ID mismatch, invalid image URLs, unsupported route assumptions, or async handling.

SymptomLikely causeFix
model_access_deniedAPI key does not have access to the selected modelCheck account access and use the model ID shown on the HappyHorse 1.1 page
Request fails for image-to-videoMissing image_urls or image URL is not publicPass one public image URL
Reference output confuses charactersPrompt does not use character1, character2, etc.Match prompt references to the image array order
Aspect ratio does not behave as expectedUsing image-to-video and expecting explicit aspect controlAdjust the source image ratio instead
Cost is higher than expectedDuration, resolution, retries, or batch size increasedStart with short 720p tests and add spend limits
User request times outApp is treating video generation as synchronousStore task ID and use polling or callback delivery

If a request example here ever conflicts with the API reference, follow the API reference.

Example implementation pattern

For most products, use a small routing layer instead of hardcoding HappyHorse in every feature.

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',
}

The routing layer should sit behind product logic. Your UI can ask "Do you have a prompt, one first frame, or multiple references?" while your backend turns that answer into a model ID and validated request body.

HappyHorse 1.1 is useful for text, first-frame, and image-reference video workflows. It is not the only video route on EvoLink.

NeedConsider
More reference types such as video or audio referencesSeedance 2.0
Repeatable short-form prompt production with a mature workflowKling 3.0
A different creative style or model behaviorCompare routes in the EvoLink model catalog
For the latest product-side route list, start from the HappyHorse 1.1 API page.

FAQ

Which endpoint do I use for HappyHorse 1.1?

Use EvoLink's video generation endpoint, POST /v1/videos/generations, with the HappyHorse 1.1 model ID that matches your input type.

What are the HappyHorse 1.1 model IDs?

The current model IDs are happyhorse-1.1-text-to-video, happyhorse-1.1-image-to-video, and happyhorse-1.1-reference-to-video.

Which model ID should I use for prompt-only generation?

Use happyhorse-1.1-text-to-video when your workflow starts from a text prompt only.

Which model ID should I use for first-frame animation?

Use happyhorse-1.1-image-to-video when you have one source image that should become the first frame of the video.

Which model ID should I use for multiple reference images?

Use happyhorse-1.1-reference-to-video when you have 1-9 ordered reference images and your prompt needs to refer to them as character1, character2, and so on.

Does image-to-video support aspect_ratio?

The image-to-video route derives output aspect ratio from the source image. For explicit aspect ratio planning, use text-to-video or reference-to-video.

Can I use callback_url?

Yes. HappyHorse 1.1 API references include callback_url for task completion callbacks. Use HTTPS and build the callback handler to be idempotent.

Where do I find current pricing?

Use the HappyHorse 1.1 pricing table. This guide explains cost drivers, but the model page owns the current pricing table.

Yes. HappyHorse 1.1 uses the same EvoLink API key and billing system as the other EvoLink routes available to your account.

Does HappyHorse 1.1 support video-edit?

The current HappyHorse 1.1 page and API references expose text-to-video, image-to-video, and reference-to-video. Do not use a HappyHorse 1.0 video-edit route as if it were a HappyHorse 1.1 route.

Sources

Ready to Reduce Your AI Costs by 89%?

Start using EvoLink today and experience the power of intelligent API routing.