Video workflows
Choose a workflow and follow your video from creation through rendering.
On this page
Choose output_mode: "video" to generate and render automatically. Choose "draft" to stop when the timeline is ready, review it in Kinema, and request a render later.
A draft stops at ready. A finished-video request continues to rendering. A job may also finish as failed or cancelled. Check the returned status instead of relying on a fixed delay.
YTA and avatar videos
Both use POST /videos. Set production_mode to standard or pro, choose sources, and enable music, graphics, and captions as needed. Add an avatar object for a presenter, using standard or premium. Voice model choices are standard and expressive. Supported presenter screen time is 25% or 45%; avatar generation is charged on actual generated presenter minutes.
{
"avatar": {
"id": "AVATAR_ID_FROM_AVATARS",
"model": "premium",
"coverage": 25
},
"voice": {
"id": "VOICE_ID_FROM_VOICES"
},
"sources": {
"stock_video": true,
"web_video": false,
"ai_video": true,
"stock_images": true,
"web_images": false,
"ai_images": true
},
"music": false
}Read GET /catalog for supported capabilities. Use GET /voices, GET /avatars, and GET /brand-profiles for resources available to your workspace. Do not guess voice, avatar, or theme IDs. The API reference lists request defaults and optional voice settings.
Render, resume, cancel
POST /videos/{id}/render renders a ready draft. Use /resume for an eligible failed generation. Use /cancel to request cancellation; charges already incurred may remain. These operations require an idempotency key, and the API rejects actions that do not fit the video’s current state.
Download and pagination
When a video is completed, call GET /videos/{id}/download. Treat returned download links as temporary secrets and request a fresh link if one expires. List responses use data and next_cursor; pass it unchanged as the cursor query parameter to fetch the next page. For example: GET /videos?limit=20&cursor=NEXT_CURSOR.