Skip to main content

Video Generation AI API

한국어로 보기: Video 생성 AI API | View in English (current page)

kvidAI's Video Generation AI API creates high-quality short videos from text or images, specializing in K-pop and K-beauty content.

🎯 Service Overview

Supported Features

  • Text-to-Video: Generate videos from text prompts
  • Image-to-Video: Create videos based on input images
  • Resolution: 480p / 720p / 1080p (model-dependent)
  • Duration: typically 5–10 seconds (model-dependent)

Specialized Capabilities

  • Camera angle manipulation prompts (may not be perfect)
  • Various generation options and controls
  • K-pop dance and K-beauty content optimization

📡 API Endpoints

Basic Information

Base URL:       https://api.kvid.ai
Authentication: api-key header
Content-Type: application/json

The Video Generation API is asynchronous — first POST a generation request to get a job_id, then poll the status endpoint until the job completes, and finally fetch the result.

MethodPathPurpose
POST/ai/generation/text-to-video/generate-asyncSubmit text-to-video job
POST/ai/generation/image-to-video/generate-asyncSubmit image-to-video job
GET/ai/generation/status?jobId={job_id}Check job status
GET/ai/generation/result?jobId={job_id}Fetch completed result

The api-key header identifies the user and their subscription. You don't need to include email or product_code in the request body or query string — the backend resolves both from the API key.

1. Create a text-to-video job

Python Example

import requests

url = "https://api.kvid.ai/ai/generation/text-to-video/generate-async"
api_key = "YOUR_API_KEY"

payload = {
"prompt": "[Truck left, Pan right] A woman is drinking coffee.",
"model": "v2", # v1 / v2 / v3
"resolution": "720p", # 480p / 720p / 1080p (model-dependent)
}
headers = {
"api-key": api_key,
"Content-Type": "application/json",
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())

Response:

{
"success": true,
"data": {
"job_id": "vid_1777360165746_abc123",
"status": "queued",
"message": "Job submitted",
"estimated_time": "30s",
"video_type": "text-to-video"
}
}

2. Create an image-to-video job

import requests

url = "https://api.kvid.ai/ai/generation/image-to-video/generate-async"
api_key = "YOUR_API_KEY"

payload = {
"prompt": "The tiger briefly pulls back its tongue, blinks, tilts its head slightly.",
"image_url": "https://your-host.example/tiger.jpg",
"model": "v2",
"resolution": "720p",
}
headers = {
"api-key": api_key,
"Content-Type": "application/json",
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())

3. Check job status

import requests

api_key = "YOUR_API_KEY"
job_id = "vid_1777360165746_abc123"

url = f"https://api.kvid.ai/ai/generation/status?jobId={job_id}"
headers = {"api-key": api_key}

response = requests.get(url, headers=headers)
print(response.json())

Response (in-progress):

{
"success": true,
"data": {
"job_id": "vid_1777360165746_abc123",
"status": "processing",
"video_type": "text-to-video",
"prompt": "[Truck left, Pan right] A woman is drinking coffee.",
"created_at": "2026-04-21T10:00:00Z"
}
}

status is one of: queued, processing, completed, failed.

4. Fetch the completed result

import requests

api_key = "YOUR_API_KEY"
job_id = "vid_1777360165746_abc123"

url = f"https://api.kvid.ai/ai/generation/result?jobId={job_id}"
headers = {"api-key": api_key}

response = requests.get(url, headers=headers)
print(response.json())

Response:

{
"success": true,
"data": {
"job_id": "vid_1777360165746_abc123",
"status": "completed",
"result_url": "https://cdn.kvid.ai/videos/vid_1777360165746_abc123.mp4",
"prompt": "[Truck left, Pan right] A woman is drinking coffee.",
"width": 1280,
"height": 720,
"type": "video/mp4",
"used_credit": 54,
"created_at": "2026-04-21T10:00:00Z"
}
}

📋 Schema

Common request fields

FieldTypeRequiredDescription
promptstringyesText prompt guiding generation
modelstringnov1 / v2 (default) / v3
resolutionstringno480p / 720p / 1080p (model-dependent). Default: 720p
image_urlstringimage-to-videoURL of the input image (HTTPS)
seedintegernoRandom seed for reproducibility
num_inference_stepsintegernoSampling steps; higher = better quality, slower
enable_safety_checkerbooleannoDefaults to true
enable_prompt_expansionbooleannoLets the backend expand prompt if true

Model availability per resolution can change. Refer to Pricing → Video Generation for the currently supported combinations.

💰 Pricing

Credit costs vary by model and resolution (v1 / v2 / v3). See Pricing → Video Generation for the current rates.

🎬 Usage Examples

1. Hiker with Backpack Video

Hiker Backpack

Prompt: A video of a man hiking with a backpack. The bag must be the main subject. Walking slowly

2. Vacuum Cleaner Usage Video

Vacuum Cleaner

Prompt: Video of cleaning with a vacuum cleaner. slow movement. low angle

3. Food Promotional Video

Salmon Dish

Prompt: Remove the cooking effect and only add camera movement. highlight the food in Zoom format. promotional video for this food

4. Korean Traditional Pavilion Video

Jeonju Park

Prompt: A traditional Korean pavilion by a lotus pond, with two small dogs (a white poodle and a brown shiba inu) joyfully running along the wooden walkway.

5. Tiger Image-to-Video Conversion

Tiger

Prompt: The tiger briefly pulls back its tongue, blinks, and tilts its head slightly. [Low-angle close-up shot]

⚠️ Limitations & Notes

Technical Limitations

  • Duration: short clips (5–10 s typical, model-dependent)
  • Resolution: depends on selected model (see Pricing)
  • Camera Angles: camera angle manipulation prompts may not always work accurately

Optimization Tips

  • Specific Prompts: provide detailed, clear descriptions
  • Camera Angles: use directives like [Low-angle], [Over-the-shoulder shot] when needed
  • Appropriate Resolution: match resolution to your delivery channel

📞 Support & Contact

For questions or assistance:


Language: English (current page) | 한국어