Skip to main content
POST
/
v1
/
videos
/
generations
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"
    }
  ]
}
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

Authorization
string
required
All API endpoints require Bearer Token authenticationGet your API Key:Visit the API Key Management Page to get your API KeyAdd it to the request header:
Authorization: Bearer YOUR_API_KEY

Request Parameters

model
string
required
Video generation model nameSupported models:
  • kling-v3 - Kling v3 (recommended)
prompt
string
required
Text promptDescribe scenes, actions, styles in detail for better generation results. English prompts are recommended.Example: "a golden retriever running on the beach, sunset, cinematic"
mode
string
default:"std"
Generation modeOptions:
  • std - Standard mode (720P)
  • pro - Professional mode (1080P)
Default: std
duration
integer
default:"5"
Video duration (seconds)Options: 5, 10, or 15Default: 5
15-second duration is only supported for text-to-video. Image-to-video supports up to 10 seconds.
aspect_ratio
string
default:"16:9"
Video aspect ratioOptions:
  • 16:9 - Landscape
  • 9:16 - Portrait
  • 1:1 - Square
Default: 16:9
negative_prompt
string
Negative prompt to exclude unwanted contentExample: "blurry, low quality, distorted"
image_urls
array<url>
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 supportedExample: ["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
string
Last frame image URL, only available for image-to-videoYou can also pass 2 images via image_urls as an alternative
Only available in image-to-video mode (when image_urls is provided).
watermark
boolean
Whether to add watermark

Feature Support Matrix

TypeFeaturestd 5sstd 10sstd 15spro 5spro 10s
Text-to-VideoGeneration
Image-to-VideoGeneration-
Image-to-VideoFirst Frame-
Image-to-VideoLast 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.
ParameterText-to-VideoImage-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

Response

code
integer
Response status code, 200 on success
data
array
Response data array

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"
  ]
}
Query Task ResultsVideo generation is an async task that returns a task_id upon submission. Use the Get Task Status endpoint to query generation progress and results.