curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "kling-v3-motion-control",
"prompt": "A girl dancing gracefully",
"image_urls": [
"https://example.com/character.jpg"
],
"video_urls": [
"https://example.com/dance-reference.mp4"
],
"quality": "720p",
"model_params": {
"character_orientation": "image"
}
}
'{
"created": 1757169743,
"id": "task-unified-1757169743-7cvnl5zw",
"model": "kling-v3-motion-control",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 300,
"video_duration": 8
},
"type": "video",
"usage": {
"billing_rule": "per_second",
"credits_reserved": 408240,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: kling-v3-motion-control",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Kling-V3 Motion Control
- Kling-V3 Motion Control (kling-v3-motion-control) model supports generating motion-driven videos using reference image + reference video
- The system extracts motion trajectories from the reference video and applies them to the character/object in the reference image, generating a new video with motions consistent with the reference video
- Video duration depends on
character_orientation:imagemax 10 seconds,videomax 30 seconds, minimum 3 seconds - Asynchronous processing mode, use the returned task ID to query task status
- Generated video links are valid for 24 hours, please save them promptly
curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "kling-v3-motion-control",
"prompt": "A girl dancing gracefully",
"image_urls": [
"https://example.com/character.jpg"
],
"video_urls": [
"https://example.com/dance-reference.mp4"
],
"quality": "720p",
"model_params": {
"character_orientation": "image"
}
}
'{
"created": 1757169743,
"id": "task-unified-1757169743-7cvnl5zw",
"model": "kling-v3-motion-control",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 300,
"video_duration": 8
},
"type": "video",
"usage": {
"billing_rule": "per_second",
"credits_reserved": 408240,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: kling-v3-motion-control",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Authorizations
All API endpoints require Bearer Token authentication
Get your API Key:
Visit the API Key Management Page to obtain your API Key
Add the following to your request headers:
Authorization: Bearer YOUR_API_KEY
Body
Video generation model name
kling-v3-motion-control "kling-v3-motion-control"
Array of reference image URLs, used to provide the appearance source of the character/object
Note:
- Provide one reference image
- Image size: no larger than
10MB - Supported file formats:
.jpg,.jpeg,.png - Image dimensions: width and height ≥
300px, aspect ratio between1:2.5and2.5:1 - Image URL must be directly accessible by the server
["https://example.com/character.jpg"]
Array of reference video URLs to provide motion trajectory
Note:
- Provide one reference video
- Video duration:
3to30seconds - Video size: up to
100MB - Video dimensions: width and height between
340pxand3850px - Avoid cuts, fast motion, and scene changes
- The video URL must be directly accessible by the server
["https://example.com/dance-reference.mp4"]
Model-specific parameters (required), used for motion control configuration
Show child attributes
Show child attributes
Text prompt (optional), used to guide the generated content
Note:
- Maximum
2500characters - Can be left empty; the model will automatically generate based on the reference image and video
2500"A girl dancing gracefully"
Resolution tier
Details:
720p: Standard quality (std)1080p: High quality (pro)
720p, 1080p "720p"
HTTPS callback URL triggered upon task completion
Callback Timing:
- Triggered when the task is completed, failed, or cancelled
- Sent after billing confirmation is complete
Security Restrictions:
- Only HTTPS protocol is supported
- Callbacks to private IP addresses are prohibited (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x, etc.)
- URL length must not exceed
2048characters
Callback Mechanism:
- Timeout:
10seconds - Up to
3retries after failure (retries at1/2/4seconds after failure) - Callback response body format is consistent with the task query API response
- A 2xx status code from the callback URL is considered successful; other status codes will trigger a retry
"https://your-domain.com/webhooks/video-task-completed"
Response
Video generation task created successfully
Task creation timestamp
1757169743
Task ID
"task-unified-1757169743-7cvnl5zw"
Actual model name used
"kling-v3-motion-control"
Specific type of the task
video.generation.task Task progress percentage (0-100)
0 <= x <= 1000
Task status
pending, processing, completed, failed "pending"
Video task details
Show child attributes
Show child attributes
Output type of the task
text, image, audio, video "video"
Usage and billing information
Show child attributes
Show child attributes