YepAPI
AI Models

PixVerse V6

PixVerse V6 API. Text-to-video and image-to-video, 1-15 seconds, 360p to 1080p, with optional audio. The lowest per-second video price at low resolution.

Pricing, live playground and model overview: PixVerse V6 API on YepAPI

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

Overview

PixVerse V6 — text-to-video and image-to-video from 1 to 15 seconds at 360p–1080p, with optional audio and the lowest per-second price at low resolution. Async operation — submit a job, poll for completion.

PropertyValue
Model IDpixverse/pixverse-v6
Aliaspixverse, pixverse-v6
ProviderPixVerse
Inputstext-to-video, image-to-video
Resolutions360p, 540p, 720p, 1080p
Aspect Ratios16:9, 4:3, 1:1, 3:4, 9:16
Duration1–15 seconds
Audio GenerationSupported (on by default)
BillingPer job — priced when queued, charged only on success
Pricingfrom $0.043/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

options.params passes this model's own parameters (see Model parameters).

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: 'pixverse/pixverse-v6',
    prompt: 'A cinematic drone shot over a rugged coastline at golden hour',
    options: {
      aspectRatio: '16:9',
      resolution: '720p',
      duration: '5',
      generateAudio: true,
      params: {
        seed: 42,
        negative_prompt: 'blurry, watermark',
      },
    },
  }),
});
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": "pixverse/pixverse-v6", "prompt": "A cinematic drone shot over a rugged coastline", "options": {"aspectRatio": "16:9", "resolution": "720p", "duration": "5", "generateAudio": true, "params": {"seed": 42, "negative_prompt": "blurry, watermark"}}}'

Image-to-Video

Pass a reference image via imageData. By default it is the first frame; set options.imageRole to last_frame to make it the final frame instead.

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: 'pixverse/pixverse-v6',
    prompt: 'Animate this scene — clouds drifting, light changing',
    options: {
      resolution: '720p',
      duration: '5',
      generateAudio: true,
      imageRole: 'first_frame',
    },
    imageData: {
      mimeType: 'image/jpeg',
      base64: '...', // Base64-encoded image
    },
  }),
});
curl -X POST https://api.yepapi.com/v1/media/queue \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "pixverse/pixverse-v6", "prompt": "Animate this scene — clouds drifting, light changing", "options": {"resolution": "720p", "duration": "5", "generateAudio": true, "imageRole": "first_frame"}, "imageData": {"mimeType": "image/jpeg", "base64": "..."}}'

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
modelstringYespixverse/pixverse-v6 or aliases pixverse, pixverse-v6—
promptstringYesText description of the video to generate—
options.aspectRatiostringNoOne of: 16:9, 4:3, 1:1, 3:4, 9:16 (text-to-video only)16:9
options.resolutionstringNo360p, 540p, 720p, 1080p720p
options.durationstring or numberNo1 to 15 (seconds)5
options.generateAudiobooleanNoGenerate an audio track for the videotrue
options.imageRolestringNoHow to use the input image: first_frame or last_framefirst_frame
options.paramsobjectNoModel-specific parameters under their own names: negative_prompt, seed. Unknown names return 400—
imageData.mimeTypestringNoMIME type of input image (image/png, image/jpeg, image/webp)—
imageData.base64stringNoBase64-encoded input image for image-to-video generation—

Options are validated when you submit: an unsupported duration, resolution or value returns 400 naming the allowed values.

Model parameters

Pass these inside options.params.

ParameterTypeAllowedDescriptionDefault
negative_promptstring—What to keep out of the result—
seedinteger0–2147483647Random seed for reproducible results—

Features

  • Text-to-video and image-to-video
  • 360p, 540p, 720p or 1080p
  • Any length from 1 to 15 seconds
  • Optional audio (on by default)
  • First or last frame from imageData

Pricing

Tier≈ Cost/sec5-second video
360p — without audio$0.043$0.22
360p — with audio$0.06$0.30
540p — without audio$0.06$0.30
540p — with audio$0.077$0.39
720p — without audio$0.077$0.39
720p — with audio$0.102$0.51
1080p — without audio$0.153$0.77
1080p — with audio$0.196$0.98

Prices shown are for a 5-second clip at the default settings; longer clips cost proportionally more. Audio is on by default — set generateAudio: false for the lower rate. Each job is priced when it's queued — the exact quote for your duration, resolution and options — and charged only if it succeeds. Failed or moderated jobs are free.

Info

Video jobs can take several minutes to complete. When capacity is busy, jobs wait in the queue (status stays pending or processing) — no action needed. Results retained for 1 hour.

Under the Hood

Powered by PixVerse's PixVerse V6 via our AI provider.

On this page