Build with Vidu Q4
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": "vidu-q4-reference-to-video",
"input": {
"audio": true,
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"prompt": "<prompt>",
"reference_image_urls": "<reference_image_urls>"
}
}'Inputs & settings
audiobooleanGenerate synchronized audio (dialogue and sound effects). Set false for a silent video.
promptstringRequiredText description of the video. Refer to inputs by order, e.g. "the man in reference image 2 says... using reference audio 1". Up to 20,000 characters.
durationintegerVideo length in seconds. Integer from 3 to 16.
resolutionstringOutput resolution.
Options: 540p, 720p, 1080p, 2k, 4k
aspect_ratiostringOutput aspect ratio.
Options: 16:9, 9:16, 1:1, 4:3, 3:4
reference_audio_urlsarrayOptional reference audio URLs (http/https), up to 3. MP3 only, each 3-12 seconds and up to 50 MB.
reference_image_urlsarrayRequiredReference image URLs (http/https), 1 to 15. JPG, JPEG, PNG or WEBP.
Full input schema
{
"type": "object",
"required": [
"prompt",
"reference_image_urls"
],
"properties": {
"audio": {
"type": "boolean",
"title": "Audio",
"default": true,
"description": "Generate synchronized audio (dialogue and sound effects). Set false for a silent video."
},
"prompt": {
"type": "string",
"title": "Prompt",
"maxLength": 20000,
"minLength": 1,
"description": "Text description of the video. Refer to inputs by order, e.g. \"the man in reference image 2 says... using reference audio 1\". Up to 20,000 characters."
},
"duration": {
"type": "integer",
"title": "Duration",
"default": 5,
"maximum": 16,
"minimum": 3,
"description": "Video length in seconds. Integer from 3 to 16."
},
"resolution": {
"enum": [
"540p",
"720p",
"1080p",
"2k",
"4k"
],
"type": "string",
"title": "Resolution",
"default": "720p",
"description": "Output resolution."
},
"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."
},
"reference_audio_urls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"title": "Reference audio URLs",
"x-media": "audio",
"maxItems": 3,
"description": "Optional reference audio URLs (http/https), up to 3. MP3 only, each 3-12 seconds and up to 50 MB."
},
"reference_image_urls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"title": "Reference image URLs",
"x-media": "image",
"maxItems": 15,
"minItems": 1,
"description": "Reference image URLs (http/https), 1 to 15. JPG, JPEG, PNG or WEBP."
}
}
}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.






