YepAPI
AI Models

Kling O1

Kling O1. AI video generation with audio, 5 or 10 seconds, first/last-frame control.

POST/v1/media/queue
from $0.24/second

Overview

Kling O1 — video generation with audio and first/last-frame control. Async operation — submit a job, poll for completion.

PropertyValue
Model IDkwaivgi/kling-video-o1
ProviderKling
Resolutions720p
Aspect Ratios16:9, 9:16, 1:1
Duration5 or 10 seconds
Audio GenerationSupported
BillingDynamic (actual cost per job)
Pricingfrom $0.24/second

Usage

All media models use the async job queue. Submit a job, then poll for the result.

Step 1: Submit Job

Text-to-Video

const res = await fetch('https://api.yepapi.com/v1/media/queue', {
  method: 'POST',
  headers: {
    'x-api-key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'kwaivgi/kling-video-o1',
    prompt: 'A cinematic drone shot over a rugged coastline at golden hour',
    options: {
      aspectRatio: '16:9',
      duration: '5',
      generateAudio: true,
    },
  }),
});
const { data } = await res.json();
// data.jobId — use this to poll for results
curl -X POST https://api.yepapi.com/v1/media/queue \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "kwaivgi/kling-video-o1", "prompt": "A cinematic drone shot over a rugged coastline", "options": {"aspectRatio": "16:9", "duration": "5", "generateAudio": true}}'

Image-to-Video

Pass a reference image via imageData with an imageRole (first_frame or last_frame) to generate a video from a still image.

const res = await fetch('https://api.yepapi.com/v1/media/queue', {
  method: 'POST',
  headers: {
    'x-api-key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'kwaivgi/kling-video-o1',
    prompt: 'Animate this scene — clouds drifting, light changing',
    options: {
      aspectRatio: '16:9',
      duration: '5',
      generateAudio: true,
      imageRole: 'first_frame',
    },
    imageData: {
      mimeType: 'image/jpeg',
      base64: '...', // Base64-encoded image
    },
  }),
});

Step 2: Poll for Result

const status = await fetch(`https://api.yepapi.com/v1/media/status/${data.jobId}`, {
  headers: { 'x-api-key': 'YOUR_API_KEY' },
});
const { data: job } = await status.json();
// job.status — "pending" | "processing" | "completed" | "failed"
// job.result.video — { mimeType, base64 } when completed
curl https://api.yepapi.com/v1/media/status/JOB_ID \
  -H "x-api-key: YOUR_API_KEY"

Request Body

ParameterTypeRequiredDescriptionDefault
modelstringYeskwaivgi/kling-video-o1 or alias kling-o1
promptstringYesText description of the video to generate
options.aspectRatiostringNoOne of: 16:9, 9:16, 1:116:9
options.resolutionstringNo720p720p
options.durationstringNo5 or 10 (seconds)5
options.generateAudiobooleanNoGenerate an audio track for the videofalse
options.imageRolestringNoHow to use the input image: first_frame or last_framefirst_frame
imageData.mimeTypestringNoMIME type of input image (image/png, image/jpeg, image/webp)
imageData.base64stringNoBase64-encoded input image for image-to-video generation

Pricing

TierCost/sec
All resolutions$0.24

Example: 5-second video ≈ 5 x $0.24 = $1.20. Billing is dynamic — each job is billed from the actual cost of the finished video, so shorter or lower-resolution jobs cost less.

Info

Video jobs can take several minutes to complete. Results retained for 1 hour.

Under the Hood

Powered by Kling's Kling O1 via our AI provider. 100% margin on upstream costs.

On this page