cURL
Python
JavaScript
Go
Java
PHP
Ruby
Swift
C#
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
}'
{
"code" : 200 ,
"data" : [
{
"status" : "submitted" ,
"task_id" : "task_xxxxxxxxxx"
}
]
}
Authorization
All API endpoints require Bearer Token authentication Get your API Key: Visit the API Key Management Page to get your API Key Add it to the request header: Authorization: Bearer YOUR_API_KEY
Request Parameters
Video generation model name Supported models:
kling-v3 - Kling v3 (recommended)
Text prompt Describe scenes, actions, styles in detail for better generation results. English prompts are recommended. Example: "a golden retriever running on the beach, sunset, cinematic"
Generation mode Options:
std - Standard mode (720P)
pro - Professional mode (1080P)
Default: std
Default: 5
Video duration (seconds) Range: 3-15 (minimum 3 seconds, maximum 15 seconds) ⚠️ Note: Must be a plain number (e.g. 6), do not add quotes, otherwise an error will occur
Video aspect ratio Options:
16:9 - Landscape
9:16 - Portrait
1:1 - Square
Default: 16:9
Negative prompt to exclude unwanted content Example: "blurry, low quality, distorted"
Image URL array for image-to-video generation
Pass 1 image : used as first frame
Pass 2 images : automatically assigned as first frame + last frame
Maximum 2 images supported Example: ["https://example.com/first.jpg"]
Maximum 2 images supported
Image URLs must be publicly accessible without hotlink protection
In image-to-video mode, aspect_ratio may be overridden by the actual image ratio
Last frame image URL, only available for image-to-video You can also pass 2 images via image_urls as an alternative Only available in image-to-video mode (when image_urls is provided).
Whether to generate video with audio
Feature Support Matrix
Type Feature std 5s std 10s std 15s pro 5s pro 10s Text-to-Video Generation ✅ ✅ ✅ ✅ ✅ Image-to-Video Generation ✅ ✅ - ✅ ✅ Image-to-Video First Frame ✅ ✅ - ✅ ✅ Image-to-Video Last Frame ✅ ✅ - ✅ ✅
Note : 15-second duration is only supported for text-to-video. Image-to-video supports up to 10 seconds.
Text-to-Video vs Image-to-Video
The system automatically determines the mode based on whether image_urls is provided: no images means text-to-video, with images means image-to-video.
Parameter Text-to-Video Image-to-Video prompt✅ Required ✅ Required image_urls❌ Not used ✅ Required (1-2 images) last_frame_image❌ Not used ✅ Optional (last frame) negative_prompt✅ Optional ✅ Optional mode✅ Optional ✅ Optional duration✅ Optional (5/10/15) ✅ Optional (5/10) aspect_ratio✅ Optional ⚠️ May be overridden by image ratio watermark✅ Optional ✅ Optional audio✅ Optional ✅ Optional
Response
Response status code, 200 on success
Response data array Task status, submitted when initially submitted
Unique task identifier for querying task status and results
Use Cases
Case 1: Text-to-Video (Standard Mode)
{
"model" : "kling-v3" ,
"prompt" : "A golden cat running on a sunlit meadow, slow motion, cinematic quality" ,
"mode" : "std" ,
"duration" : 5 ,
"aspect_ratio" : "16:9"
}
Case 2: Text-to-Video (Pro Mode + Negative Prompt)
{
"model" : "kling-v3" ,
"prompt" : "Tokyo Shibuya crossing at night, neon lights reflected on wet ground, people walking with umbrellas" ,
"negative_prompt" : "blurry, low quality, distorted" ,
"mode" : "pro" ,
"duration" : 10 ,
"aspect_ratio" : "16:9"
}
Case 3: Text-to-Video (15 seconds)
{
"model" : "kling-v3" ,
"prompt" : "a time-lapse of a flower blooming in a garden" ,
"duration" : 15 ,
"aspect_ratio" : "16:9"
}
Case 4: Image-to-Video (First Frame)
{
"model" : "kling-v3" ,
"prompt" : "the cat slowly walks forward and looks around" ,
"image_urls" : [ "https://example.com/cat.jpg" ],
"mode" : "std" ,
"duration" : 5
}
Case 5: Image-to-Video (First + Last Frame Control)
{
"model" : "kling-v3" ,
"prompt" : "smooth cinematic transition" ,
"image_urls" : [ "https://example.com/frame-start.jpg" ],
"last_frame_image" : "https://example.com/frame-end.jpg" ,
"mode" : "std" ,
"duration" : 5
}
You can also pass 2 images via image_urls, with the second image automatically used as the last frame:
{
"model" : "kling-v3" ,
"prompt" : "smooth cinematic transition" ,
"image_urls" : [
"https://example.com/frame-start.jpg" ,
"https://example.com/frame-end.jpg"
]
}
Case 6: Generate Video with Audio
{
"model" : "kling-v3" ,
"prompt" : "A rock singer singing on this stage, concert scene, flashing lights" ,
"audio" : true ,
"mode" : "std" ,
"duration" : 5
}
Query Task Results Video generation is an async task that returns a task_id upon submission. Use the Get Task Status endpoint to query generation progress and results.