Create video or image
March 24, 2025 (April 20, 2026)
Table of contents
This endpoint supports both text-to-video (t2v) and image-to-video (i2v) modes.
Supported models (see Model Capabilities for per-model constraints):
- Native PixVerse:
v6(default),v5.6,v5.5,v5,v5-fast,pixverse-c1 - Third-party:
seedance-2.0,seedance-2.0-fast,kling-o3,kling-v3,grok-imagine,veo-3.1-lite,veo-3.1-standard,veo-3.1-fast,sora-2,sora-2-pro
For dedicated image generation, see POST images/create.
To upload prompt image use POST files.
https://api.useapi.net/v2/pixverse/videos/create
Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
API tokenis required, see Setup useapi.net for details.
Request Body
{
"email": "Optional PixVerse API account email",
"model": "v6",
"prompt": "Required text prompt",
"first_frame_path": "upload/eb20c63d-2a1a-5be6-a562-d3578a2831e3.png",
"duration": 5,
"quality": "720p",
"aspect_ratio": "16:9",
"audio": true,
"seed": 654321,
"replyUrl": "Place your call back URL here",
"replyRef": "Place your reference id here",
"maxJobs": 3
}
Note: When using template_id for effects, the model is determined by the template itself. Do not specify model parameter with templates.
-
emailis optional, if not specified API will randomly select account from available accounts. -
modelis optional. Default:v6. Supported values β native PixVerse:v6,v5.6,v5.5,v5,v5-fast,pixverse-c1. Third-party:seedance-2.0,seedance-2.0-fast,kling-o3,kling-v3,grok-imagine,veo-3.1-lite,veo-3.1-standard,veo-3.1-fast,sora-2,sora-2-pro. See Model Capabilities for per-model quality, duration, and aspect-ratio constraints. -
promptis optional, describe your video.
Maximum length 5,000 characters. -
first_frame_pathis optional, provide the path of uploaded image via POST files. -
last_frame_pathis optional, provide the path of the uploaded image via POST files. Some effects require two images (e.g., βForever Usβ). Check the template fieldeffect_typefor the number of required images, and if it is set to2you will need to provide alast_frame_pathimage. -
template_idis optional, provide template_id of desired effect, see GET videos/effects. -
durationis optional. Video duration in seconds β accepted values depend on the model. See Model Capabilities. Default:5. -
qualityis optional. Video quality β accepted values depend on the model. See Model Capabilities. Forkling-o3andkling-v3,quality: 720proutes to the Standard upstream tier andquality: 1080proutes to the Pro tier. -
aspect_ratiois optional, required for t2v (no image), not accepted for i2v (derived from input image). See Model Capabilities for per-model supported values. -
auto_soundis optional. Set totrueto generate videos with sound orfalseto explicitly remove the default effect sound.
Supported values: not specified (default),false,true. -
sound_effect_promptis optional, describe the sound eg βthe sound of waves hitting the shoreβ. -
lip_sync_tts_promptis optional, enter character lines.
Maximum length 140 characters. -
lip_sync_tts_speaker_idis optional, specify desired lipsync voice see GET videos/voices. audiois optional. Behavior depends on the model:- Toggle (
true/falseaccepted) βv5.5,v5.6,v6,pixverse-c1,seedance-2.0,seedance-2.0-fast,kling-o3,kling-v3. Enables integrated audio generation. - Always on (must not set
false) βveo-3.1-standard,veo-3.1-fast. Audio is generated automatically and cannot be disabled. - Not supported (reject if supplied) β
grok-imagine,veo-3.1-lite,sora-2,sora-2-pro. Supported values:false(default),true.
- Toggle (
-
multi_shotis optional. v6 only. Set totrueto enable multi-shot storytelling β the AI generates videos with multiple camera angles and scene cuts rather than a single continuous shot. Supported values:false(default),true. -
preview_modeis optional. Only supported for native PixVerse models (v5,v5.5,v5.6,v5-fast,v6,pixverse-c1) β third-party models reject this flag. Set totrueto generate a fast preview at lower quality at 20% off credits. Use POST videos/upscale to upscale the preview to full quality. Supported values:false(default),true. -
seedis optional. Only supported for native PixVerse models (v5,v5.5,v5.6,v5-fast,v6,pixverse-c1) β third-party models reject this flag. Valid range 1β¦2147483647. -
off_peak_modeis optional. Set totrueto generate videos during low-demand periods at a reduced credit cost. Only supported for native PixVerse models (v5,v5.5,v5.6,v5-fast,v6,pixverse-c1) β third-party models reject this flag. Discount varies by subscription plan: Pro 30% off, Premium 50% off, Ultra unlimited free. Results are usually delivered within 24 hours. Off-Peak generations are not tracked by the scheduler, donβt count toward concurrent-job limits, and thereplyUrlwebhook is not called β use GET videos to retrieve results.
Supported values:false(default),true. -
replyUrlis optional, place here your callback URL. This is the preferred and most optimal way to receive results quickly β the API polls every 10 seconds and will call the providedreplyUrlonce the PixVerse video is completed or failed. We recommend using sites like webhook.site to test callback URL functionality. Maximum length 1024 characters. -
replyRefis optional, place here your reference id which will be stored and returned along with this PixVerse video response / result.
Maximum length 1024 characters. maxJobsis optional, if not specified value from selected accounts/email will be used. It should not exceed the number of concurrent generations supported by your account subscription plan.
Valid range: 1β¦8
Responses
-
Use the returned
video_idorimage_idto retrieve video status and results using GET videos. Locate the video in the response array and check if the fieldvideo_status_finalistrueorvideo_status_nameisCOMPLETED. The fieldurlwill contain the generated video link.If you specify the optional parameter
replyUrl, the API will call the providedreplyUrlwith video progress updates until the video is complete or fails.{ "video_id": "user:<userid>-pixverse:<email>-video:<number>" } -
{ "error": "<Error message>" } -
{ "error": "Unauthorized" } -
Insufficient credits. All Credits have been used up. Please upgrade your membership or purchase credits.
{ "error": "All Credits have been used up. Please upgrade your membership or purchase credits." } -
Moderated message.
{ "error": "Your prompt has triggered our AI moderator, please re-enter your prompt" } -
Wait in a loop for at least 10..30 seconds and retry again.
There are two possible cases for API response 429:
- API query is full and can not accept new videos/create requests. Size of query defined by
maxJobsoptional parameter.{ "error": "Account <email> is busy executing <maxJobs> tasks." "All configured accounts are running at maximum capacity." } - The API received an HTTP response status 429 from PixVerse. Please refer to your subscription plan for the maximum allowed tasks in the queue.
{ "error": "Reached the limit for concurrent generations." }
- API query is full and can not accept new videos/create requests. Size of query defined by
-
596 Pending mod message
Your PixVerse.ai account has a pending error. Most likely, you changed your account password or your PixVerse.ai account was placed on hold. Once the issue is resolved, update your account to clear the error by executing POST accounts/email before making any new API calls.
{ "error": "Your PixVerse account has pending error." "Please address this issue at https://useapi.net/docs/api-pixverse-v2/post-pixverse-accounts-email before making any new API calls." }
Model
{ // TypeScript, all fields are optional
video_id: string
image_id: string // When image template_id is used (template_type: 2)
error: string
}
Examples
-
curl -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer β¦" \ -X POST "https://api.useapi.net/v2/pixverse/videos/create" \ -d '{"prompt": "β¦"}' -
const prompt = "text prompt"; const apiUrl = `https://api.useapi.net/v2/pixverse/videos/create`; const token = "API token"; const data = { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' } }; data.body = JSON.stringify({ prompt }); const response = await fetch(apiUrl, data); const result = await response.json(); console.log("response", {response, result}); -
import requests prompt = "text prompt" apiUrl = f"https://api.useapi.net/v2/pixverse/videos/create" token = "API token" headers = { "Content-Type": "application/json", "Authorization" : f"Bearer {token}" } body = { "prompt": f"{prompt}" } response = requests.post(apiUrl, headers=headers, json=body) print(response, response.json())