Build with HappyHorse Video Edit
Make your first request
Use your Sorceress API key on your server. The playground uses your signed-in account; your application uses the same model with an API key.
curl -X POST 'https://sorceress.games/api/v1/jobs' \
-H 'Authorization: Bearer $SORCERESS_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"model": "happyhorse-video-edit",
"input": {
"seed": 0,
"resolution": "1080p",
"audio_setting": "auto",
"prompt": "<prompt>",
"video_url": "<video_url>"
}
}'Inputs & settings
seedintegerRandom seed for reproducibility.
promptstringRequiredRequired edit instruction describing the intended change (e.g., style transfer / local replacement). Up to 5,000 characters.
video_urlstringRequiredURL of the input video (one video). Video requirements: Format: MP4, MOV (H.264 encoding recommended). Duration: 3–60 seconds. Resolution: the longer side must not exceed 2,160 px; the shorter side must be at least 320 px. Aspect ratio: 1:2.5–2.5:1. File size: up to 100 MB. Frame rate: greater than 8 fps.
resolutionstringOutput video resolution: 720p or 1080p (default).
Options: 720p, 1080p
audio_settingstringAudio handling: auto lets the model handle audio; origin keeps the input video's original audio where possible.
Options: auto, origin
reference_imagearrayOptional reference image URL list (0–5). Image requirements: Format: JPEG, JPG, PNG, WEBP. Resolution: both width and height must be at least 300 px. Aspect ratio: 1:2.5–2.5:1. File size: up to 10 MB.
Full input schema
{
"type": "object",
"required": [
"prompt",
"video_url"
],
"properties": {
"seed": {
"type": "integer",
"title": "Seed",
"default": 0,
"maximum": 2147483647,
"minimum": 0,
"description": "Random seed for reproducibility."
},
"prompt": {
"type": "string",
"title": "Prompt",
"maxLength": 5000,
"description": "Required edit instruction describing the intended change (e.g., style transfer / local replacement). Up to 5,000 characters."
},
"video_url": {
"type": "string",
"title": "Video URL",
"format": "uri",
"x-media": "video",
"description": "URL of the input video (one video). Video requirements: Format: MP4, MOV (H.264 encoding recommended). Duration: 3–60 seconds. Resolution: the longer side must not exceed 2,160 px; the shorter side must be at least 320 px. Aspect ratio: 1:2.5–2.5:1. File size: up to 100 MB. Frame rate: greater than 8 fps."
},
"resolution": {
"enum": [
"720p",
"1080p"
],
"type": "string",
"title": "Resolution",
"default": "1080p",
"description": "Output video resolution: 720p or 1080p (default)."
},
"audio_setting": {
"enum": [
"auto",
"origin"
],
"type": "string",
"title": "Audio setting",
"default": "auto",
"description": "Audio handling: auto lets the model handle audio; origin keeps the input video's original audio where possible."
},
"reference_image": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"title": "Reference image",
"x-media": "image",
"maxItems": 5,
"minItems": 0,
"description": "Optional reference image URL list (0–5). Image requirements: Format: JPEG, JPG, PNG, WEBP. Resolution: both width and height must be at least 300 px. Aspect ratio: 1:2.5–2.5:1. File size: up to 10 MB."
}
}
}Results, saved runs & billing
Media requests return a job ID. Poll GET /api/v1/jobs/:id until it succeeds or fails; keep the same ID while it is processing. Long chat requests can also return a saved job to poll. Completed outputs are stored in your account, and successful work is billed using your model's current rates.
A multi-step workflow may include separately billed successful actions. If a connection drops, check your saved run before submitting it again.






