Core
Create videos
Creating a video is one call. Pick a mode, send a prompt, get an id back. The render runs in the background — poll it or get a webhook when it's done.
/v1/videosStart a video render. Returns immediately with a video id — the render finishes in the background.
modestringrequired"auto" — Vivideo writes the script and builds a full avatar video."manual" — send your prompt straight to a model you pick.promptstringrequiredmodelstringoptionalveo31_fast).duration_secondsintegeroptionalresolutionstringoptional720p, 1080p).aspect_ratiostringoptional16:9, 9:16).avatar_idstringoptionalvoice_idstringoptionalbrand_kit_idstringoptionalbr_… id from brand kits.image_urlstringoptionalfolder_idstringoptionalAdvanced (manual, where the model supports it): negative_prompt, seed, generate_audio, style, movement_amplitude, cfg_scale, first_frame_url + last_frame_url, image_urls. See Models.
Idempotency-KeystringoptionalA video object with a new id and status: "processing" (paid) or status: "preview" (free accounts — see billing).
curl https://api.vivideo.ai/v1/videos \
-H "Authorization: Bearer $VIVIDEO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mode": "auto",
"prompt": "A 30-second product intro for our meal-planning app, upbeat",
"duration_seconds": 30,
"avatar_id": "Abigail_expressive_2024112501",
"voice_id": "1bd001e7e50f421d891986aad5158bc8",
"brand_kit_id": "br_1a2b3c4d",
"orientation": "landscape"
}'curl https://api.vivideo.ai/v1/videos \
-H "Authorization: Bearer $VIVIDEO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: my-first-video-001" \
-d '{
"mode": "manual",
"model": "veo31_fast",
"prompt": "A golden retriever surfing a wave at sunset, cinematic",
"duration_seconds": 8,
"resolution": "1080p",
"aspect_ratio": "16:9"
}'{
"id": "9c1a7e2b40f14b7f9d3f2a6c8e5d4b21",
"object": "video",
"mode": "manual",
"model": "veo31_fast",
"status": "processing",
"credits_charged": 16,
"poll_interval_seconds": 5
}image_url for image-to-video; first_frame_url + last_frame_url for a first/last-frame morph; image_urls for multi-image reference. You don't set it — it's inferred from the fields you send./v1/videos/{id}Check a video's status and get the finished file. Poll this until status is completed.
The video object. While rendering, status moves through these states:
| status | what it means |
|---|---|
queued | Accepted, waiting to render. |
processing | Rendering. Manual videos add a progress object. |
completed | Done — video_url is your MP4. |
failed | Render failed. Credits are refunded automatically; see error. |
preview | Free-account preview — see billing. |
curl https://api.vivideo.ai/v1/videos/VIDEO_ID \
-H "Authorization: Bearer $VIVIDEO_API_KEY"
# → { "id": "...", "status": "completed", "video_url": "https://...mp4" }{
"id": "9c1a7e2b...",
"object": "video",
"status": "completed",
"video_url": "https://vivideocdn.com/outputs/....mp4",
"caption_url": "https://.../....srt",
"duration_seconds": 8
}video.completed event the moment a render finishes./v1/videosList your videos, newest first.
statusstringoptionalcompleted).folder_idstringoptionallimitintegeroptionalA list of video objects with count and total.
/v1/foldersList your folders. Pass a folder_id when creating a video to file it there.
A list of folder objects (id, name, created_at).
Machine-readable: interactive reference · openapi.yaml · llms-api.txt. Base URL
https://api.vivideo.ai.