Build with Kling 2.6 Motion Control
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": "kling-2.6-motion-control",
"input": {
"input_urls": "<input_urls>",
"video_urls": "<video_urls>",
"mode": "<mode>",
"character_orientation": "<character_orientation>"
}
}'Inputs & settings
modestringRequiredRequired. Output resolution: "720p" or "1080p".
Options: 720p, 1080p
promptstringA text description of the desired output. Maximum length is 2500 characters. (Max length: 2500 characters)
input_urlsarrayRequiredAn array containing a single image URL. The photo must clearly show the subject's head, shoulders, and torso. (Accepted types: image/jpeg, image/png, image/jpg; Max size: 10.0MB,size needs to be greater than 300px, aspect ratio 2:5 to 5:2.)
video_urlsarrayRequiredAn array containing a single video URL. The duration must be between 3 to 30 seconds, and the video must clearly show the subject's head, shoulders, and torso. (Accepted types: video/mp4, video/quicktime; Max size: 100.0MB)
character_orientationstringRequiredRequired. Generate the orientation of the characters in the video. 'image': same orientation as the person in the picture (max 10s video). 'video': consistent with the orientation of the characters in the video (max 30s video).
Options: image, video
Full input schema
{
"type": "object",
"required": [
"input_urls",
"video_urls",
"mode",
"character_orientation"
],
"properties": {
"mode": {
"enum": [
"720p",
"1080p"
],
"type": "string",
"title": "Mode",
"description": "Required. Output resolution: \"720p\" or \"1080p\"."
},
"prompt": {
"type": "string",
"title": "Prompt",
"maxLength": 2500,
"description": "A text description of the desired output. Maximum length is 2500 characters. (Max length: 2500 characters)"
},
"input_urls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"title": "Input URLs",
"x-media": "image",
"maxItems": 1,
"description": "An array containing a single image URL. The photo must clearly show the subject's head, shoulders, and torso. (Accepted types: image/jpeg, image/png, image/jpg; Max size: 10.0MB,size needs to be greater than 300px, aspect ratio 2:5 to 5:2.)"
},
"video_urls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"title": "Video URLs",
"x-media": "video",
"maxItems": 1,
"description": "An array containing a single video URL. The duration must be between 3 to 30 seconds, and the video must clearly show the subject's head, shoulders, and torso. (Accepted types: video/mp4, video/quicktime; Max size: 100.0MB)"
},
"character_orientation": {
"enum": [
"image",
"video"
],
"type": "string",
"title": "Character orientation",
"description": "Required. Generate the orientation of the characters in the video. 'image': same orientation as the person in the picture (max 10s video). 'video': consistent with the orientation of the characters in the video (max 30s video)."
}
}
}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.






