AI Video & Image Generation API

18 models — Veo 3, Sora 2, Runway, Kling v3, Seedance, Hailuo, Grok & more. One API key.

Veo 3 Sora 2 Runway Gen-4 Kling 2.6 / v3 Seedance 1.5 Hailuo Grok Video NanoBanana

Models & Pricing

ModelTypePrice (USD)Price (INR)Details
Loading...

Duration Pricing — Per-Second Models

Per-second models charge based on video duration. Resolution (480p/720p/1080p) does not affect cost — only duration matters.

ModelRate5s6s8s10s15s
Loading...

Quick Start

1

Get your API key

Contact admin to get your kie-xxxx API key and add balance.

2

Make requests

Use Authorization: Bearer YOUR_KEY header with any endpoint below.

3

Poll for results

Video generation is async — submit a job, then poll the status endpoint until done.

Endpoints

Video Generation

POST/api/v1/veo/generateVeo 3 / Veo 3 Fast
POST/api/v1/runway/generateRunway Gen-4
POST/api/v1/jobs/createTaskSeedance / Kling / Hailuo / Grok / NanoBanana

Status Polling (free)

GET/api/v1/veo/record-info?taskId=IDVeo status
GET/api/v1/runway/record-detail?taskId=IDRunway status
GET/api/v1/jobs/recordInfo?taskId=IDJobs status

Extended Models (Sora 2, Kling v3, etc.)

POST/api/v1/videofy/generateSora 2 / Kling v3 / Grok v2 / Seedance v2 / Veo 3 Lite
GET/api/v1/videofy/status?requestId=IDExtended model status poll

File Upload

POST/upload/file-base64-uploadUpload image (base64)
POST/upload/file-stream-uploadUpload image (multipart)

API Reference — All Models

Veo 3 / Veo 3 Fast

curl -X POST https://vgen.abhibots.com/api/v1/veo/generate \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A golden retriever running on a beach",
    "model": "veo3",
    "duration": 8,
    "aspectRatio": "16:9",
    "resolution": "720p"
  }'
# model: "veo3" or "veo3_fast"
# duration: 8 (default)  |  resolution: "720p"
# Billing: flat per request — $0.28 (veo3) / $0.14 (fast)

Runway Gen-4

curl -X POST https://vgen.abhibots.com/api/v1/runway/generate \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Cinematic drone shot over mountains at sunrise",
    "quality": "720p",
    "duration": "5"
  }'
# quality: "720p" or "1080p" (required)
# duration: "5", "8", "10"
# Billing: flat per request — $0.15

Seedance 1.5 Pro

curl -X POST https://vgen.abhibots.com/api/v1/jobs/createTask \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bytedance/seedance-1.5-pro",
    "input": {
      "prompt": "A cat playing piano, smooth motion",
      "duration": "5",
      "aspect_ratio": "16:9"
    }
  }'
# duration: "5", "10" (string)
# Billing: $0.025/s — 5s = $0.125, 10s = $0.25

Hailuo Text-to-Video

curl -X POST https://vgen.abhibots.com/api/v1/jobs/createTask \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "hailuo/02-text-to-video-standard",
    "input": {
      "prompt": "Timelapse of a sunset over the ocean",
      "duration": "6",
      "aspect_ratio": "16:9"
    }
  }'
# Also: "hailuo/2-3-image-to-video-standard" (I2V — needs image_url)
# duration: "6" (string, required)
# Billing: $0.025/s — 6s = $0.15

Grok Video

curl -X POST https://vgen.abhibots.com/api/v1/jobs/createTask \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-imagine-video-1-5-preview",
    "input": {
      "prompt": "A futuristic city at night, neon lights",
      "duration": "6"
    }
  }'
# duration: "6", "10", "15" — resolution doesn't affect cost
# Billing: $0.007/s — 6s = $0.042, 10s = $0.07, 15s = $0.105

Kling 2.6 Text-to-Video

curl -X POST https://vgen.abhibots.com/api/v1/jobs/createTask \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling-2.6/text-to-video",
    "input": {
      "prompt": "Calm ocean waves on a sandy beach",
      "sound": false,
      "duration": "5",
      "aspect_ratio": "16:9"
    }
  }'
# sound: true/false (required) — enable audio generation
# Also: "kling-2.6/image-to-video" (I2V — needs image_url + sound)
# Billing: $0.03/s — 5s = $0.15, 10s = $0.30

NanoBanana — Image Generation

curl -X POST https://vgen.abhibots.com/api/v1/jobs/createTask \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/nano-banana",
    "input": {
      "prompt": "A futuristic city at sunset, digital art"
    }
  }'
# Also: "google/nano-banana-edit" (needs image_urls: ["https://..."])
# Output: 1344x768 PNG  |  Billing: flat $0.025/request

Sora 2 / Kling v3 / Grok v2 (Extended Models)

curl -X POST https://vgen.abhibots.com/api/v1/videofy/generate \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "vf-sora2",
    "prompt": "A spaceship landing on an alien planet, cinematic",
    "duration": 8
  }'
# Models: vf-grok, vf-veo3, vf-sora2, vf-sora2-pro, vf-seedance, vf-kling-std, vf-kling-pro
# Billing: per second — rate × duration (e.g. vf-grok $0.007/s × 6s = $0.042)

Extended Models — Poll Status

curl "https://vgen.abhibots.com/api/v1/videofy/status?requestId=JOB_ID" \
  -H "Authorization: Bearer YOUR_KEY"
# Response: status="completed" → videoUrl has the result

Poll Result (kie.ai models — free)

# Veo 3
curl https://vgen.abhibots.com/api/v1/veo/record-info?taskId=TASK_ID \
  -H "Authorization: Bearer YOUR_KEY"

# Runway
curl https://vgen.abhibots.com/api/v1/runway/record-detail?taskId=TASK_ID \
  -H "Authorization: Bearer YOUR_KEY"

# All others (Seedance, Hailuo, Grok, Kling, NanoBanana)
curl https://vgen.abhibots.com/api/v1/jobs/recordInfo?taskId=TASK_ID \
  -H "Authorization: Bearer YOUR_KEY"

# Response: successFlag=1 → done, check resultUrls / resultImageUrl

Python Example

import requests, time

BASE = "https://vgen.abhibots.com"
KEY = "YOUR_KEY"
H = {"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"}

# Generate (Grok 10s example)
resp = requests.post(f"{BASE}/api/v1/jobs/createTask", headers=H, json={
    "model": "grok-imagine-video-1-5-preview",
    "input": {"prompt": "A rocket launching into space", "duration": "10"}
}).json()
task_id = resp["data"]["taskId"]

# Poll until done
while True:
    status = requests.get(f"{BASE}/api/v1/jobs/recordInfo",
        headers=H, params={"taskId": task_id}).json()
    if status.get("data", {}).get("successFlag") == 1:
        print("Video:", status["data"]["response"]["resultUrls"][0])
        break
    time.sleep(5)

Auth & Billing

HeaderValue
AuthorizationBearer kie-your-api-key
Content-Typeapplication/json

Balance is deducted per request. Per-second models multiply rate × duration. If the upstream API returns an error (4xx/5xx), your balance is automatically refunded. Polling endpoints are always free.