Build with HappyHorse
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-reference-to-video",
"input": {
"seed": 0,
"duration": 5,
"resolution": "1080p",
"aspect_ratio": "16:9",
"reference_image": "<reference_image>",
"prompt": "<prompt>"
}
}'Inputs & settings
seedintegerRandom seed for reproducibility.
promptstringRequiredText prompt describing the video to generate (any language). Up to 5,000 characters.
durationintegerOutput duration in seconds (integer). Must be between 3 and 15. Defaults to 5.
resolutionstringOutput video resolution: 720p or 1080p (default).
Options: 720p, 1080p
aspect_ratiostringOutput aspect ratio. Valid values: 16:9 (default), 9:16, 1:1, 4:3, 3:4.
Options: 16:9, 9:16, 1:1, 4:3, 3:4
reference_imagearrayRequiredReference image URL list. Provide 1–9 images. The order defines which image is character1, character2, etc. Image limits: Format: JPEG, JPG, PNG, and WEBP. Resolution: shortest side at least 400 px. 720P or higher recommended. Avoid small, blurry, or heavily compressed images, as they degrade output quality. File size: 10 MB maximum.
Full input schema
{
"type": "object",
"required": [
"reference_image",
"prompt"
],
"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": "Text prompt describing the video to generate (any language). Up to 5,000 characters."
},
"duration": {
"type": "integer",
"title": "Duration",
"default": 5,
"maximum": 15,
"minimum": 3,
"description": "Output duration in seconds (integer). Must be between 3 and 15. Defaults to 5."
},
"resolution": {
"enum": [
"720p",
"1080p"
],
"type": "string",
"title": "Resolution",
"default": "1080p",
"description": "Output video resolution: 720p or 1080p (default)."
},
"aspect_ratio": {
"enum": [
"16:9",
"9:16",
"1:1",
"4:3",
"3:4"
],
"type": "string",
"title": "Aspect ratio",
"default": "16:9",
"description": "Output aspect ratio. Valid values: 16:9 (default), 9:16, 1:1, 4:3, 3:4."
},
"reference_image": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"title": "Reference image",
"x-media": "image",
"maxItems": 9,
"minItems": 1,
"description": "Reference image URL list. Provide 1–9 images. The order defines which image is character1, character2, etc. Image limits: Format: JPEG, JPG, PNG, and WEBP. Resolution: shortest side at least 400 px. 720P or higher recommended. Avoid small, blurry, or heavily compressed images, as they degrade output quality. File size: 10 MB maximum."
}
}
}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.






