curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_3_0_motion_control",
"params": {
"prompt": "Make the character naturally dance following the reference video, maintaining consistent main identity",
"image_url": "https://example.com/subject.png",
"video_url": "https://example.com/motion.mp4",
"resolution": "720p",
"character_orientation": "video",
"background_source": "input_video"
},
"out_task_id": "my_task_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "kling_3_0_motion_control",
"params": {
"prompt": "Make the character naturally dance following the reference video, maintaining consistent main identity",
"image_url": "https://example.com/subject.png",
"video_url": "https://example.com/motion.mp4",
"resolution": "720p",
"character_orientation": "video",
"background_source": "input_video"
},
"out_task_id": "my_task_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "kling_3_0_motion_control",
params: {
prompt: "Make the character naturally dance following the reference video, maintaining consistent main identity",
image_url: "https://example.com/subject.png",
video_url: "https://example.com/motion.mp4",
resolution: "720p",
character_orientation: "video",
background_source: "input_video"
},
out_task_id: "my_task_123456"
};
fetch(url, {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data));
{
"out_task_id": "<string>",
"status": "<string>",
"estimated_credits": 123,
"created_at": "<string>"
}Kling 3.0 Motion Control
Kling 3.0 Motion Control Video Generation
- Asynchronous processing mode, returns task ID for subsequent queries
- Generate controllable video using one main reference image and one motion reference video
- Supports 720p / 1080p, allows setting character orientation source and background source, billed according to the real duration of the reference video
POST
/
api
/
openapi
/
submit
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_3_0_motion_control",
"params": {
"prompt": "Make the character naturally dance following the reference video, maintaining consistent main identity",
"image_url": "https://example.com/subject.png",
"video_url": "https://example.com/motion.mp4",
"resolution": "720p",
"character_orientation": "video",
"background_source": "input_video"
},
"out_task_id": "my_task_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "kling_3_0_motion_control",
"params": {
"prompt": "Make the character naturally dance following the reference video, maintaining consistent main identity",
"image_url": "https://example.com/subject.png",
"video_url": "https://example.com/motion.mp4",
"resolution": "720p",
"character_orientation": "video",
"background_source": "input_video"
},
"out_task_id": "my_task_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "kling_3_0_motion_control",
params: {
prompt: "Make the character naturally dance following the reference video, maintaining consistent main identity",
image_url: "https://example.com/subject.png",
video_url: "https://example.com/motion.mp4",
resolution: "720p",
character_orientation: "video",
background_source: "input_video"
},
out_task_id: "my_task_123456"
};
fetch(url, {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data));
{
"out_task_id": "<string>",
"status": "<string>",
"estimated_credits": 123,
"created_at": "<string>"
}Authorizations
All endpoints require authentication via Bearer TokenTo get the API Key:Visit the API Key management page to obtain your API KeyInclude in the request header:
Authorization: Bearer YOUR_API_KEY
Body
Model name:
"kling_3_0_motion_control"- Default
Model parameter object
Show params Object Properties
Show params Object Properties
Text description of the expected output effect
- Optional
- Maximum length: 2500 characters
- Example:
No distortion, the character's movements are consistent with the video.
Reference image URL for the subject
- Required
- Supports only a single image
- Supported formats: JPG, JPEG, PNG
- Maximum file size: 10MB
- Image dimensions must be greater than 300px
- Aspect ratio must be between 2:5 and 5:2
- Characters, background, and other elements in the generated video will be based on this reference image
Reference video URL for the motion
- Required
- Supports only a single video
- Supported formats: MP4, MOV / QuickTime
- Maximum file size: 100MB
- Video dimensions must be greater than 300px
- Aspect ratio must be between 2:5 and 5:2
- Duration: max 10 seconds when
character_orientation=image, max 30 seconds whencharacter_orientation=video - Estimated points and actual billing will be calculated based on the real duration of this video; no need to pass
video_length - The character’s motion in the generated video will match this reference video
Output resolution mode
720p- Standard mode (default)1080p- HD mode
Character orientation reference source
video- Match the character orientation in the reference video; video max 30 seconds (default)image- Match the character orientation in the reference image; video max 10 seconds
Background reference source
input_video- Use action video background (default)input_image- Use subject image background
Initiator’s task IDUser-defined task identifier, required
Response
Initiator’s task ID, can be used to query the result
Initial status, fixed as
"pending"Estimated consumption credits
Creation time (ISO format)
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_3_0_motion_control",
"params": {
"prompt": "Make the character naturally dance following the reference video, maintaining consistent main identity",
"image_url": "https://example.com/subject.png",
"video_url": "https://example.com/motion.mp4",
"resolution": "720p",
"character_orientation": "video",
"background_source": "input_video"
},
"out_task_id": "my_task_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "kling_3_0_motion_control",
"params": {
"prompt": "Make the character naturally dance following the reference video, maintaining consistent main identity",
"image_url": "https://example.com/subject.png",
"video_url": "https://example.com/motion.mp4",
"resolution": "720p",
"character_orientation": "video",
"background_source": "input_video"
},
"out_task_id": "my_task_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "kling_3_0_motion_control",
params: {
prompt: "Make the character naturally dance following the reference video, maintaining consistent main identity",
image_url: "https://example.com/subject.png",
video_url: "https://example.com/motion.mp4",
resolution: "720p",
character_orientation: "video",
background_source: "input_video"
},
out_task_id: "my_task_123456"
};
fetch(url, {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data));
⌘I