agentsclimarketplace

Happyhorse video

Skill AceDataCloud/Skills/skills/happyhorse-video

Agent Skills for AceDataCloud AI services — music, image, video generation, web search, and more. Compatible with Claude Code, GitHub Copilot, Gemini CLI, and all agentskills.io-compatible agents.

Install
npx -y skills add AceDataCloud/Skills --skill happyhorse-video

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 13 stars13 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Generate and edit AI videos with Happy Horse via AceDataCloud API. Use when creating videos from text prompts, animating a first-frame image, generating scenes from up to 9 subject or style reference images, or editing an existing video with optional references. Supports 720P/1080P output, 3-15 second generation, aspect-ratio control, audio preservation, seeds, callbacks, and asynchronous task polling.

The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

6.9 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it

Happy Horse Video Generation and Editing

Use Happy Horse through AceDataCloud for text-to-video, first-frame animation, reference-guided generation, and video editing.

Setup: See authentication for token setup.

Choose an Action

GoalactionValid modelsRequired input
Generate from textgeneratehappyhorse-1.0-t2v, happyhorse-1.1-t2vprompt
Animate one imageimage_to_videohappyhorse-1.0-i2v, happyhorse-1.1-i2vimage_url
Generate from referencesreference_to_videohappyhorse-1.0-r2v, happyhorse-1.1-r2vprompt, 1-9 image_urls
Edit a videovideo_edithappyhorse-1.0-video-editprompt, video_url

The 1.1 model is the default where available. Video editing currently has only a 1.0 model.

Quick Start

Submit text-to-video asynchronously:

curl -X POST https://api.acedata.cloud/happyhorse/videos \
  -H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "generate",
    "model": "happyhorse-1.1-t2v",
    "prompt": "A cinematic white horse crossing a snowy ridge at sunrise, wind moving its mane, slow camera push",
    "resolution": "720P",
    "ratio": "16:9",
    "duration": 5,
    "async": true
  }'

The response contains a task_id. Poll it after about 15 seconds:

curl -X POST https://api.acedata.cloud/happyhorse/tasks \
  -H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"id": "<task_id>", "action": "retrieve"}'

Async: See async task polling. Continue until response.data[].video_url appears or a terminal error is returned.

Workflows

Text-to-Video

Use generate when no visual input exists. Describe the subject, action, environment, camera, lighting, and style.

POST /happyhorse/videos
{
  "action": "generate",
  "model": "happyhorse-1.1-t2v",
  "prompt": "A white horse gallops across a moonlit beach, side tracking shot, silver reflections, cinematic realism",
  "resolution": "1080P",
  "ratio": "16:9",
  "duration": 8,
  "seed": 42
}

First-Frame Image-to-Video

Use image_to_video to animate one image. prompt is optional but useful for motion and camera direction. The output ratio follows the first-frame image, so omit ratio.

POST /happyhorse/videos
{
  "action": "image_to_video",
  "model": "happyhorse-1.1-i2v",
  "image_url": "https://example.com/horse.jpg",
  "prompt": "The horse slowly lifts its head as the mane moves in the breeze, gentle camera push",
  "resolution": "1080P",
  "duration": 5
}

Reference-to-Video

Use reference_to_video with 1-9 reference images. Mention images as character1, character2, and so on in list order when the prompt needs to distinguish them.

POST /happyhorse/videos
{
  "action": "reference_to_video",
  "model": "happyhorse-1.1-r2v",
  "prompt": "character1 walks through a sunrise meadow wearing the leather and gold style from character2",
  "image_urls": [
    "https://example.com/subject.jpg",
    "https://example.com/style.jpg"
  ],
  "resolution": "720P",
  "ratio": "16:9",
  "duration": 5
}

Video Editing

Use video_edit with an existing video and editing instructions. Add at most 5 reference images for wardrobe, subject, style, or local replacement guidance. Use audio_setting: "origin" to preserve the source audio.

POST /happyhorse/videos
{
  "action": "video_edit",
  "model": "happyhorse-1.0-video-edit",
  "prompt": "Apply the warm leather and gold style from the reference while preserving camera motion",
  "video_url": "https://example.com/source.mp4",
  "image_urls": ["https://example.com/style.jpg"],
  "resolution": "720P",
  "audio_setting": "origin"
}

Do not send duration or ratio for video editing. Output duration follows the source video.

Parameters

ParameterValuesNotes
actiongenerate, image_to_video, reference_to_video, video_editDefaults to generate
modelSee action tableThe model family must match the action
promptstringRequired except for image_to_video
image_urlURLFirst frame for image_to_video
image_urlsURL array1-9 for reference generation; 0-5 for editing
video_urlURLRequired only for editing
resolution720P, 1080PUppercase P is required; default 1080P
ratio16:9, 9:16, 1:1, 4:3, 3:4Text/reference generation only
durationinteger 3-15Generation only; default 5 seconds
watermarkbooleanDefault false
audio_settingauto, originVideo editing only; origin preserves source audio
seedinteger 0-2147483647Optional reproducibility seed
callback_urlURLWebhook for final result; returns immediately
asyncbooleanSet true to return a task ID for polling

Task Queries

Retrieve one task:

POST /happyhorse/tasks
{"id": "<task_id>", "action": "retrieve"}

Retrieve several tasks:

POST /happyhorse/tasks
{"ids": ["<task_id_1>", "<task_id_2>"], "action": "retrieve_batch"}

A completed single-task response stores the original request in request and the final API result in response. Read the media URL from response.data[].video_url.

Gotchas

  • Match the model family to action; for example, an *-i2v model is invalid for generate
  • Resolution values are 720P and 1080P, not lowercase 720p / 1080p
  • Generated duration must be an integer from 3 through 15 seconds
  • image_to_video requires image_url; its prompt is optional and its ratio follows the image
  • reference_to_video requires a prompt and 1-9 images
  • video_edit requires both prompt and video URL, accepts at most 5 references, and ignores duration/ratio
  • audio_setting applies to video editing; use origin to preserve source audio
  • A task_id is not a completed result; poll until a final video URL or terminal error appears
  • Failed tasks are not billed; video edits use the upstream-reported input plus output duration for billing

MCP: pip install mcp-happyhorse | Hosted: https://happyhorse.mcp.acedata.cloud/mcp | See all MCP servers

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.