HappyHorse Video Editing
POST /api/v1/services/aigc/video-generation/video-synthesis — edit a video guided by an instruction and reference images
The HappyHorse video-editing model takes an input video plus optional reference images and performs instruction-driven edits — style transfer, local replacement, and similar.
Models
| Model | Notes |
|---|---|
happyhorse-1.0-video-edit | Video editing |
happyhorse-1.0-video-edit-20260618 | Video editing, 20260618 snapshot |
Create a job
/api/v1/services/aigc/video-generation/video-synthesiscurl https://api.modelsite.ai/api/v1/services/aigc/video-generation/video-synthesis \
-H "Authorization: Bearer $MODELSITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "happyhorse-1.0-video-edit",
"input": {
"prompt": "Dress the character in the striped sweater from the reference image",
"media": [
{ "type": "video", "url": "https://example.com/input.mp4" },
{ "type": "reference_image", "url": "https://example.com/sweater.webp" }
]
},
"parameters": { "resolution": "720P" }
}'Request body
| Field | Type | Notes |
|---|---|---|
model | string (required) | Fixed to happyhorse-1.0-video-edit |
input.prompt | string (required) | The editing instruction (style transfer, local replacement, …). CJK counts as 2, everything else as 1, budget 5000 |
input.media | array (required) | Exactly 1 video entry (required) + 0–5 reference_image entries (optional) |
parameters | object (optional) | Below |
parameters
| Parameter | Type | Notes |
|---|---|---|
resolution | string | 720P / 1080P (default). Sellable tiers follow the price configuration |
watermark | boolean | Defaults to true; pass false explicitly to opt out |
audio_setting | string | Sound control: auto (default, model decides) / origin (keep the source audio) |
seed | integer | [0, 2147483647] |
Asset requirements
- Input video: MP4 / MOV (H.264 recommended), 3–60 s, short side ≥360px and long side ≤4096px, aspect ratio 1:2.5–2.5:1, ≤100MB, 8–60 fps
- Reference images: JPEG / JPG / PNG / WEBP, both sides ≥300px, aspect ratio 1:2.5–2.5:1, ≤20MB
Output duration is 3–15 seconds: inputs at or under 15 s keep their duration; longer inputs are trimmed to the first 15 seconds.
Polling and result
/api/v1/tasks/{task_id}curl "https://api.modelsite.ai/api/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer $MODELSITE_API_KEY"Response fields
| Field | Meaning |
|---|---|
output.task_id | Job ID (same value returned at creation) |
output.task_status | PENDING queued / RUNNING processing / SUCCEEDED done / FAILED failed |
output.video_url | The generated video URL — only on SUCCEEDED; download promptly |
output.code / output.message | Present only on failure, with the reason |
usage | Usage stats (duration, resolution tier, …); counted only on success |
request_id | Unique request ID — include it when reporting issues |
Status flow: PENDING → RUNNING → SUCCEEDED / FAILED.
Billing
Billed by actual generated duration (fractional seconds); failed jobs are not billed. Rates on the Models page.
Error handling
Creation-time errors return {"code": "...", "message": "..."}; mid-job failures surface through the poll's output.code / output.message. General error codes: Errors.