ModelSite
Video GenerationHappyHorse

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

ModelNotes
happyhorse-1.0-video-editVideo editing
happyhorse-1.0-video-edit-20260618Video editing, 20260618 snapshot

Create a job

POST/api/v1/services/aigc/video-generation/video-synthesis
curl 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

FieldTypeNotes
modelstring (required)Fixed to happyhorse-1.0-video-edit
input.promptstring (required)The editing instruction (style transfer, local replacement, …). CJK counts as 2, everything else as 1, budget 5000
input.mediaarray (required)Exactly 1 video entry (required) + 0–5 reference_image entries (optional)
parametersobject (optional)Below

parameters

ParameterTypeNotes
resolutionstring720P / 1080P (default). Sellable tiers follow the price configuration
watermarkbooleanDefaults to true; pass false explicitly to opt out
audio_settingstringSound control: auto (default, model decides) / origin (keep the source audio)
seedinteger[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

GET/api/v1/tasks/{task_id}
curl "https://api.modelsite.ai/api/v1/tasks/$TASK_ID" \
  -H "Authorization: Bearer $MODELSITE_API_KEY"

Response fields

FieldMeaning
output.task_idJob ID (same value returned at creation)
output.task_statusPENDING queued / RUNNING processing / SUCCEEDED done / FAILED failed
output.video_urlThe generated video URL — only on SUCCEEDED; download promptly
output.code / output.messagePresent only on failure, with the reason
usageUsage stats (duration, resolution tier, …); counted only on success
request_idUnique 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.

On this page