AIGC Video Creation Process

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:

  1. 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.
  2. 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.

Two control modes

The aigc_config object controls how far the pipeline runs without you:

Modeauto_generate_motion_videoWhat happens
AutomatictrueAfter storyboards finish, motion videos are generated for all scenes automatically. You only need to wait for the final webhook.
Manualfalse (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

StepEndpointPurposeWait Time
1POST /openapi/v1/project/generate-aigc-videoCreate project, start storyboard + motion pipelineAsync
2(webhook) project_generationStoryboards and motion videos complete3–10 min
3POST /openapi/v1/project/{projectUuid}/export-videoExport the finished video as a clipAsync 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

StepEndpointPurposeWait Time
1POST /openapi/v1/project/generate-aigc-videoCreate project, start storyboard generationAsync
2(webhook) project_generationStoryboard images complete1–5 min
3GET /openapi/v1/project/{projectUuid}/scene-aigc-infoReview per-scene storyboard status & imagesInstant
4POST /openapi/v1/project/{projectUuid}/scene/generate-motion-videoGenerate motion videos for all (or selected) scenesAsync
5(webhook) project_generationMotion videos complete2–10 min
6POST /openapi/v1/project/{projectUuid}/export-videoExport the finished video as a clipAsync 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
}
ParameterRequiredDescription
scenesYesList of scene configs (scene_id required; other fields optional). Max 20.
force_override_videoNoDefault 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"
}
ParameterRequiredDescription
scenesYesList of scene configs (scene_id required; other fields optional). Max 20. See fields below.
force_regenerateNoDefault false. When true, overwrites existing motion videos for the requested scenes.
completion_webhookNoURL to receive a project_generation webhook when motion videos finish.

Scene optional fields:

FieldDescription
promptMotion video generation prompt. Falls back to the storyboard description when omitted.
aspect_ratioAspect ratio: landscape / portrait / square. Defaults to the project video format.
motion_video_modeGeneration 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_audioWhether to generate audio. Boolean.
gen_modelGeneration model. Currently only veo_3.1 is supported. Uses the default when omitted.
ref_imagesReference 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.

EndpointEstimate basisError when insufficient
scene/generate-imageFixed rate per scene (20 credits × scene count)INSUFFICIENT_CREDIT_FOR_FEATURE (6052)
scene/generate-motion-videoprice_catalog(video_generation) × total duration (seconds), with a floor of 100 creditsINSUFFICIENT_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:

StatusMeaning
processingGeneration in progress — wait
completedSucceeded; the asset URL is available
failedGeneration 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 to veo_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 prompt and/or ref_images to steer the result.
    • Existing images for the requested scenes are overwritten.

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: true to overwrite existing motion videos for the requested scenes.
    • If you want to regenerate the source frame as well, call scene/generate-image first.

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.

EventTrigger
project_generationStoryboard images complete (manual mode), or storyboard + motion video complete (automatic mode)
project_exportThe exported clip is ready for download

Quick Reference

WhatEndpoint
List visual stylesGET /openapi/v1/project/list-aigc-style
Create AIGC projectPOST /openapi/v1/project/generate-aigc-video
Create + auto-exportPOST /openapi/v1/project/generate-aigc-video-to-clip
Scene AIGC statusGET /openapi/v1/project/{projectUuid}/scene-aigc-info
Generate storyboard imagesPOST /openapi/v1/project/{projectUuid}/scene/generate-image
Generate motion videosPOST /openapi/v1/project/{projectUuid}/scene/generate-motion-video
Export project to clipPOST /openapi/v1/project/{projectUuid}/export-video