Build with Wan 2.7
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": "wan-2-7-text-to-video",
"input": {
"ratio": "16:9",
"duration": 5,
"watermark": false,
"resolution": "1080p",
"prompt_extend": true,
"prompt": "<prompt>"
}
}'Inputs & settings
seedintegerRandom seed. Minimum: `0` Maximum: `2147483647`
ratiostringVideo aspect ratio. `16:9`: Landscape `9:16`: Portrait `1:1`: Square `4:3`: Landscape 4:3 `3:4`: Portrait 3:4
Options: 16:9, 9:16, 1:1, 4:3, 3:4
promptstringRequiredPositive prompt. Minimum length: 1 character. Maximum length: 5000 characters.
durationintegerVideo duration in seconds. Minimum: `2` Maximum: `15` Default: `5`
audio_urlstringOptional custom audio URL.
watermarkbooleanWhether to add an AI-generated watermark. Default value: `false`.
resolutionstringVideo resolution. `720p`: 720p `1080p`: 1080p
Options: 720p, 1080p
nsfw_checkerbooleanDefaults to false. When false, no additional content filtering is applied and results are returned directly by the model.
prompt_extendbooleanWhether to enable intelligent prompt rewriting. Default value: `true`.
negative_promptstringNegative prompt. Maximum length: 500 characters.
Full input schema
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"seed": {
"type": "integer",
"title": "Seed",
"maximum": 2147483647,
"minimum": 0,
"description": "Random seed. Minimum: `0` Maximum: `2147483647`"
},
"ratio": {
"enum": [
"16:9",
"9:16",
"1:1",
"4:3",
"3:4"
],
"type": "string",
"title": "Ratio",
"default": "16:9",
"description": "Video aspect ratio. `16:9`: Landscape `9:16`: Portrait `1:1`: Square `4:3`: Landscape 4:3 `3:4`: Portrait 3:4"
},
"prompt": {
"type": "string",
"title": "Prompt",
"maxLength": 5000,
"minLength": 1,
"description": "Positive prompt. Minimum length: 1 character. Maximum length: 5000 characters."
},
"duration": {
"type": "integer",
"title": "Duration",
"default": 5,
"maximum": 15,
"minimum": 2,
"description": "Video duration in seconds. Minimum: `2` Maximum: `15` Default: `5`"
},
"audio_url": {
"type": "string",
"title": "Audio URL",
"format": "uri",
"x-media": "audio",
"description": "Optional custom audio URL."
},
"watermark": {
"type": "boolean",
"title": "Watermark",
"default": false,
"description": "Whether to add an AI-generated watermark. Default value: `false`."
},
"resolution": {
"enum": [
"720p",
"1080p"
],
"type": "string",
"title": "Resolution",
"default": "1080p",
"description": "Video resolution. `720p`: 720p `1080p`: 1080p"
},
"nsfw_checker": {
"type": "boolean",
"title": "NSFW checker",
"description": "Defaults to false. When false, no additional content filtering is applied and results are returned directly by the model."
},
"prompt_extend": {
"type": "boolean",
"title": "Prompt extend",
"default": true,
"description": "Whether to enable intelligent prompt rewriting. Default value: `true`."
},
"negative_prompt": {
"type": "string",
"title": "Negative prompt",
"maxLength": 500,
"description": "Negative prompt. Maximum length: 500 characters."
}
}
}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.






