Learn how to create videos with AI-generated visuals using the Visla OpenAPI. For stock-footage-based video creation, see Video Creation Process.
Unlike traditional creation (which matches your script to stock footage), the AIGC pipeline generates original visuals for each scene from scratch — a storyboard image first, then an animated motion video clip. This gives you fully custom, on-brand content that doesn't exist in any footage library.
How the AIGC Pipeline Works
The AIGC pipeline splits your video into scenes and produces visuals in two stages:
- Storyboard image generation — For each scene, the AI generates a still image based on your script, chosen visual style, object and environment descriptions, and optional reference images.
- Motion video generation — Each storyboard image is animated into a short motion video clip.
Both stages run asynchronously. Track per-scene progress via the scene status API or receive webhooks on completion.
💡 Tip — You can let the pipeline run end-to-end automatically, or take manual control: generate storyboards first, review them scene-by-scene, regenerate any frames you don't like, and then trigger motion video generation only when ready.
Choose a Visual Style
Before creating an AIGC project, browse the available visual styles. The style you choose controls the look and feel of every generated storyboard image.
- List all AIGC styles — see
GET /openapi/v1/project/list-aigc-style
Create an AIGC Video Project
Start the pipeline by creating a project. Provide your script, pick a visual style, and decide whether motion videos should be generated automatically.
- Create an AIGC video project —
POST /openapi/v1/project/generate-aigc-video— returns a project UUID. - Create an AIGC video and auto-export to clip —
POST /openapi/v1/project/generate-aigc-video-to-clip— returns both a project and a clip; the clip is populated and exported automatically when the pipeline finishes.
Two control modes
The aigc_config object controls how far the pipeline runs without you:
| Mode | auto_generate_motion_video | What happens |
|---|---|---|
| Automatic | true | After storyboards finish, motion videos are generated for all scenes automatically. You only need to wait for the final webhook. |
| Manual | false (default) | The pipeline stops after storyboard images. You review each scene, optionally regenerate frames, then call the motion video endpoint yourself when ready. |
Use Manual mode when you want full control over each storyboard frame before committing to motion video generation (which is the more time- and credit-intensive step).
Key Workflow Steps
Automatic mode
| Step | Endpoint | Purpose | Wait Time |
|---|---|---|---|
| 1 | POST /openapi/v1/project/generate-aigc-video | Create project, start storyboard + motion pipeline | Async |
| 2 | (webhook) project_generation | Storyboards and motion videos complete | 3–10 min |
| 3 | POST /openapi/v1/project/{projectUuid}/export-video | Export the finished video as a clip | Async via webhook |
If you used generate-aigc-video-to-clip, step 3 is handled for you — the clip is created and exported automatically, and you receive both project_generation and project_export webhooks.
Manual mode
| Step | Endpoint | Purpose | Wait Time |
|---|---|---|---|
| 1 | POST /openapi/v1/project/generate-aigc-video | Create project, start storyboard generation | Async |
| 2 | (webhook) project_generation | Storyboard images complete | 1–5 min |
| 3 | GET /openapi/v1/project/{projectUuid}/scene-aigc-info | Review per-scene storyboard status & images | Instant |
| 4 | POST /openapi/v1/project/{projectUuid}/scene/generate-motion-video | Generate motion videos for all (or selected) scenes | Async |
| 5 | (webhook) project_generation | Motion videos complete | 2–10 min |
| 6 | POST /openapi/v1/project/{projectUuid}/export-video | Export the finished video as a clip | Async via webhook |
Scene-Level Operations
The AIGC pipeline exposes two scene-level endpoints that let you generate or regenerate storyboard images and motion videos independently. Both endpoints are credit pre-checked before any generation starts.
Generate storyboard images
POST /openapi/v1/project/{projectUuid}/scene/generate-image
Generate or regenerate storyboard images for one or more scenes (up to 20 per request). You may override the prompt, aspect ratio, and provide reference images per scene.
{
"scenes": [
{
"scene_id": "1531339307812433920",
"prompt": "Cinematic, documentary-inspired close-up of a sea turtle...",
"aspect_ratio": "landscape",
"ref_images": [
{ "entity_uuid": "1531339304335355904", "image_url": "https://..." }
]
}
],
"force_override_video": false
}| Parameter | Required | Description |
|---|---|---|
scenes | Yes | List of scene configs (scene_id required; other fields optional). Max 20. |
force_override_video | No | Default false. When true, allows image (re)generation on scenes that already have a motion video. |
Behavior: always (re)generates images for the requested scenes — existing storyboard images are overwritten. Scenes that already have a motion video are rejected unless force_override_video=true.
Generate motion videos
POST /openapi/v1/project/{projectUuid}/scene/generate-motion-video
Generate or regenerate motion videos for one or more scenes (up to 20 per request). Each scene reuses its storyboard image as the source frame.
{
"scenes": [
{
"scene_id": "1531339307812433920",
"prompt": "Gentle camera push-in...",
"aspect_ratio": "landscape",
"motion_video_mode": "first_frame_to_video",
"ref_images": [ ... ]
}
],
"completion_webhook": "https://example.com/callback"
}| Parameter | Required | Description |
|---|---|---|
scenes | Yes | List of scene configs (scene_id required; other fields optional). Max 20. See fields below. |
completion_webhook | No | URL to receive a project_generation webhook when motion videos finish. |
Scene optional fields:
| Field | Description |
|---|---|
prompt | Motion video generation prompt. Falls back to the storyboard description when omitted. |
aspect_ratio | Aspect ratio: landscape / portrait / square. Defaults to the project video format. |
motion_video_mode | Generation mode, one of: prompt_to_video / first_frame_to_video / first_and_last_frame_to_video / ingredients_to_video. Must match the number of ref_images. |
enable_audio | Whether to generate audio. Boolean. |
gen_model | Generation model. Currently only veo_3.1 is supported. Uses the default when omitted. |
ref_images | Reference images, up to 3. |
Behavior: (re)generates motion videos for all requested scenes — existing motion videos are overwritten by default. There is no skip logic; every scene in scenes is processed.
Credit Pre-Check
Both scene-level generation endpoints perform a credit pre-check before any generation starts. If the workspace credit balance is insufficient, the request is rejected immediately with an error — no partial generation occurs.
| Endpoint | Estimate basis | Error when insufficient |
|---|---|---|
scene/generate-image | Fixed rate per scene (20 credits × scene count) | INSUFFICIENT_CREDIT_FOR_FEATURE (6052) |
scene/generate-motion-video | price_catalog(video_generation) × total duration (seconds), with a floor of 100 credits | INSUFFICIENT_CREDIT_FOR_MOTION_VIDEO_ESTIMATE (6054) |
Notes:
- The motion-video estimate uses the same catalog and floor as the create-video pre-check.
- The estimate is a pre-check only; the actual credit consumption happens in the async job. If the pre-check passes, the job will proceed.
- A request with zero processable scenes (all scenes failed validation) skips the credit check and returns immediately.
Status Tracking
Which API to poll
- Get Project Info — tracks project generation status. If you are not regenerating scenes, this is all you need.
- Scene AIGC Info (
GET /openapi/v1/project/{projectUuid}/scene-aigc-info) — per-scene status, for when you regenerate scenes.
Project generation status
Poll the Get Project Info API and track two fields:
| Field | Values | Meaning |
|---|---|---|
task_status | none / processing / completed / failed | Whether storyboard image generation is done. |
motion_status | none / not_required / pending / processing / completed / failed / skipped | Whether motion video generation is done. |
How they relate:
- If
auto_generate_motion_videoisfalse, the task ends whentask_statusreachescompleted(motion_statusstaysskipped/not_required). - If
auto_generate_motion_videoistrue,motion_statusonly starts aftertask_statusiscompleted— so you need to track both, in that order.
Per-scene status
Each scene reports two items — storyboard and motion video — each with its own status:
| Status | Meaning |
|---|---|
processing | Generation in progress — wait |
completed | Succeeded; the asset URL is available |
failed | Generation failed — you can regenerate |
The response also includes:
transcript— the scene voiceover transcript as a structured JSON object (items / sentences /originalVoiceover).assetLink/thumbnailLink— S3 presigned URLs for each asset (valid for ~25 hours).prompt/genModel(currently fixed toveo_3.1) /aspectRatio/enableAudio— generation parameters.refImages[]— reference images used for the generation (presigned URLs).
Handling Failures
Both storyboard and motion video generation can occasionally fail for individual scenes. Visla provides dedicated scene-level endpoints to retry without re-running the whole pipeline.
Regenerate a storyboard image
If a scene's storyboard image failed (or you want a new frame), call the unified image endpoint:
POST /openapi/v1/project/{projectUuid}/scene/generate-image- Provide a custom
promptand/orref_imagesto steer the result. - Existing images for the requested scenes are overwritten.
- Provide a custom
Regenerate a motion video
If a scene's motion video failed (or you want to re-animate an existing frame), call the unified motion video endpoint:
POST /openapi/v1/project/{projectUuid}/scene/generate-motion-video- All requested scenes are (re)generated; existing motion videos are overwritten.
- If you want to regenerate the source frame as well, call
scene/generate-imagefirst.
Both retry endpoints re-run the credit pre-check before generating.
Webhook Notifications
AIGC generation is asynchronous. Register a completion_webhook URL when you create the project (or call a generate endpoint) to be notified when each stage finishes.
| Event | Trigger |
|---|---|
project_generation | Storyboard images complete (manual mode), or storyboard + motion video complete (automatic mode) |
project_export | The exported clip is ready for download |
Quick Reference
| What | Endpoint |
|---|---|
| List visual styles | GET /openapi/v1/project/list-aigc-style |
| Create AIGC project | POST /openapi/v1/project/generate-aigc-video |
| Create + auto-export | POST /openapi/v1/project/generate-aigc-video-to-clip |
| Scene AIGC status | GET /openapi/v1/project/{projectUuid}/scene-aigc-info |
| Generate storyboard images | POST /openapi/v1/project/{projectUuid}/scene/generate-image |
| Generate motion videos | POST /openapi/v1/project/{projectUuid}/scene/generate-motion-video |
| Export project to clip | POST /openapi/v1/project/{projectUuid}/export-video |