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. |
force_regenerate | No | Default false. When true, overwrites existing motion videos for the requested scenes. |
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: regenerates motion videos for the requested scenes. Set force_regenerate: true to overwrite existing motion videos; when false (default), scenes that already have a motion video are skipped.
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.
Scene-Level Status Tracking
The GET /openapi/v1/project/{projectUuid}/scene-aigc-info endpoint returns per-scene AIGC status, so you can see exactly where each scene is in the pipeline.
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).
Poll this endpoint (or listen for webhooks) to decide when to move to the next step.
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- Set
force_regenerate: trueto overwrite existing motion videos for the requested scenes. - If you want to regenerate the source frame as well, call
scene/generate-imagefirst.
- Set
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 |