Overview
The Storyboard Preview API generates a preview of your video project, allowing you to review the storyboard structure, scene breakdown, visual selections, and configuration before committing to the final render. This is an essential step in the video creation workflow that helps you validate your content and make adjustments without incurring full rendering costs.
The storyboard preview creates a project with scene thumbnails and metadata. To generate the final rendered video, use the Render from Preview API after reviewing and approving the preview.
Recommended Workflow: Create Preview → Review Scenes → Make Adjustments → Render Final Video
Render Workflow Options
Workflow API When to Use Create Preview This API Generate preview to review scenes before rendering Render from Preview Render from Preview Render preview as-is without modifications Render with Modifications Render Video Modify preview elements before rendering Render Saved Project Render Project Render existing project created in App or via API Direct Render Render Storyboard Video Skip preview, render directly from input
Preview vs. Final Render
Aspect Storyboard Preview Final Render Purpose Review and validate content Produce final video file Output Scene thumbnails, metadata, project structure Full HD video file Speed Fast Slower Cost Lower resource usage Full rendering resources Editable Yes, make changes before render Video is final Use Case Content approval, iteration Final delivery
Use Cases
Content Review Preview how your text will be split into scenes before rendering
Visual Validation Review AI-selected visuals and backgrounds for each scene
Scene Adjustment Identify scenes that need text or visual changes
Approval Workflow Share previews with stakeholders before final render
Cost Optimization Validate content before using rendering resources
Iterative Creation Quickly iterate on content and settings
Template Testing Test templates and brand settings before production
Batch Preparation Prepare multiple video projects for batch rendering
API Endpoint
POST https://api.pictory.ai/pictoryapis/v2/video/storyboard
API key for authentication Authorization: YOUR_API_KEY
Request Body Parameters
Name for your video project (alphanumeric, spaces, underscores, and hyphens only, max 150 characters)
Width of the generated video in pixels. Must be provided together with videoHeight.
Height of the generated video in pixels. Must be provided together with videoWidth.
Video aspect ratio. Options: 1:1, 16:9, 9:16
Language of the text content. Options: zh, nl, en, fr, de, it, ja, ko, pt, ru, es, hi
Whether to save the project in your Pictory account for later editing. Default: false
URL where the completed storyboard preview output will be sent via POST request when finished (max 500 characters)
Key-value object for template variables. Only applicable when templateId is provided.
ID of the brand to apply. Get from Get Video Brands API. Cannot be used with brandName.
Name of the brand to apply. Cannot be used with brandId.
Name of the smart layout to apply. Get available layouts from Get Smart Layouts API. Cannot be used with smartLayoutId.
ID of the smart layout to apply. Get from Get Smart Layouts API. Cannot be used with smartLayoutName.
ID of a saved text style for subtitles. Get from Get Text Styles API. Cannot be used with subtitleStyleName.
Name of a saved text style for subtitles. Cannot be used with subtitleStyleId.
Array of destination configurations for uploading the generated video (max 5). See destinations Array .
Array of scene objects containing the content to convert into video. Required unless using templateId. See scenes Array .
voiceOver Object
Voice-over configuration for AI narration.
{
"voiceOver" : {
"enabled" : true ,
"aiVoices" : [
{
"speaker" : "Brian" ,
"speed" : 100 ,
"amplificationLevel" : 0
}
]
}
}
Enable or disable voice-over.
aiVoices Array
Speech speed from 50 to 200. Default: 100
aiVoices[].amplificationLevel
Volume level from -1 to 1. Default: 0
aiVoices[].premiumVoiceSettings
premiumVoiceSettings Object
premiumVoiceSettings.modelId
ElevenLabs model. Options: eleven_multilingual_v2, eleven_flash_v2_5, eleven_turbo_v2_5, eleven_turbo_v2, eleven_flash_v2, eleven_multilingual_v1, eleven_monolingual_v1
premiumVoiceSettings.stability
Voice stability as percentage (e.g., “50%”)
premiumVoiceSettings.useSpeakerBoost
Enable speaker boost enhancement.
premiumVoiceSettings.similarityBoost
Similarity boost as percentage (e.g., “75%”)
premiumVoiceSettings.style
Voice style as percentage (e.g., “50%“)
externalVoice Object
URL to external voice audio file.
Auto-synchronize voice with video subtitles.
externalVoice.amplificationLevel
Audio amplification level from -1 to 1. Default: 0
backgroundMusic Object
Background music configuration for the video.
{
"backgroundMusic" : {
"enabled" : true ,
"autoMusic" : true ,
"volume" : 0.5
}
}
Enable or disable background music.
backgroundMusic.autoMusic
Auto-select background music. Cannot be used with musicUrl.
URL to custom background music file. Cannot be used with autoMusic.
Volume level from 0 to 1. Default: 0.5
Time clips to use from the music (max 10). Each clip has start and end numbers in seconds.
logo Object
Logo overlay configuration.
{
"logo" : {
"url" : "https://example.com/logo.png" ,
"position" : "top-right" ,
"width" : "15%"
}
}
Logo position. Options: top-left, top-right, top-center, center-left, center-center, center-right, bottom-left, bottom-center, bottom-right
Logo width as percentage (e.g., “15%“)
subtitleStyle Object
Inline subtitle style configuration. Can be used at video level or scene level.
{
"subtitleStyle" : {
"fontFamily" : "Montserrat" ,
"fontSize" : 48 ,
"color" : "rgba(255, 255, 255, 1)" ,
"position" : "bottom-center" ,
"alignment" : "center"
}
}
URL to custom font file (max 3000 characters). When provided, fontFamily is required.
Font size in pixels. Minimum: 1
Text color in RGBA format (e.g., “rgba(255, 255, 255, 1)”) or hex format (e.g., “#FFFFFF”)
subtitleStyle.backgroundColor
Background color in RGBA or hex format.
subtitleStyle.shadowColor
Shadow color.
subtitleStyle.shadowWidth
Shadow width as percentage (e.g., “10%”)
subtitleStyle.keywordColor
Color for highlighted keywords in RGBA or hex format.
Text position. Options: top-left, top-center, top-right, center-left, center-center, center-right, bottom-left, bottom-center, bottom-right
Text alignment. Options: left, center, right
subtitleStyle.decorations
Text decorations. Options: bold, underline, italics, linethrough
Text case. Options: uppercase, lowercase, capitalize, smallcapitalize
subtitleStyle.paragraphWidth
Paragraph width as percentage (e.g., “80%”)
animations Array
Animation name. Options: none, fade, drift, wipe, text reveal, elastic, typewriter, blur, bulletin
Animation type. Options: entry, exit
Animation speed. Options: slow, medium, fast, custom
animations[].customSpeedValue
Custom speed value (min 0.5). Required when speed is custom.
Animation direction. Options: up, down, left, right
animations[].writingStyle
Writing style for text animations. Options: character, word, line, paragraph
Supported Font Families
Anton, Archivo Narrow, Arial, Averia Libre, Barlow, Barlow Black, Bebas Neue, Calibri, Caprasimo, Capriola, Carter One, Caveat, Chakra Petch, Chewy, Comfortaa, Courier Prime, Dancing Script, Dangrek, Delius Unicase, DM Sans, Grandstander, Gruppo, Heartbeat, Helvetica, Helvetica Neue Medium, JM Modern, Josefin Sans, Julius Sans One, Laisha, Lato, Lato Extrabold, Lexend, LT Wave, Manrope, Merriweather, Montserrat, Moon dance, Mustard, Notosans, Opensans, Optik, Party Confetti, Patua One, Playfair Display, Plus Jakarta Sans, Poppins, Poppins Extrabold, Proxima Nova, Quicksand, Raleway, Raleway Black, Raleway Thin, Roboto, Rokkitt, Rowdies, Russo One, Satisfy, Sora, Source Sans Pro, Space Grotesk, Space mono, Special Elite, Strive, Titillium Web, Titillium Web Black, Ubuntu, Unbounded, Work Sans
destinations Array
Array of destination configurations for uploading the generated video (max 5).
Vimeo Destination
{
"destinations" : [
{
"type" : "vimeo" ,
"folder_uri" : "/users/12345/projects/67890" ,
"content_rating" : [ "safe" ],
"privacy" : {
"view" : "unlisted" ,
"embed" : "public" ,
"download" : false
}
}
]
}
destinations[].folder_uri
Vimeo folder URI.
destinations[].content_rating
Content rating. Options: violence, drugs, language, nudity, advertisement, safe, unrated
Vimeo Privacy Object
View access. Options: anybody, contacts, disable, nobody, password, unlisted, users
Embed access. Options: private, public, whitelist
Comment access. Options: anybody, contacts, nobody
Allow adding to albums/channels.
scenes Array
Each scene in the scenes array can contain various content sources and settings.
Each scene can only have ONE content source. Choose one of: story, storyCoPilot, blogUrl, pptUrl, audioUrl, or videoUrl.
Text content for creating video from text (max 3000 characters).
URL to blog/article content (max 3000 characters).
URL to PowerPoint presentation file (max 3000 characters).
URL to audio file for audio-to-video conversion (max 3000 characters). Requires audioLanguage.
URL to video file for video repurposing (max 3000 characters). Requires audioLanguage.
scenes[].createSceneOnNewLine
Create new scene on each new line. Default: false
scenes[].createSceneOnEndOfSentence
Create new scene at end of each sentence. Default: false
scenes[].maxSubtitleLines
Maximum subtitle lines to display at once. Only for text-to-video and article-to-video. Cannot be used with smart layouts.
scenes[].highlightKeywords
Highlight keywords in subtitles.
Hide subtitles for this scene.
Minimum duration for the scene in seconds.
scenes[].endPauseDuration
Pause duration at the end of the scene in seconds.
Transition effect. Options: none, wipeup, wipedown, wipeleft, wiperight, smoothleft, smoothright, radial, circlecrop, hblur, fade
Language of audio content. Required for audioUrl and videoUrl. Options: en-US, en-AU, en-GB, en-IN, en-IE, en-AB, en-WL, fr-CA, fr-FR, de-CH, de-DE, it-IT, es-ES, es-US, nl-NL, pt-BR, ja-JP, ko-KR, ru-RU, hi-IN, ta-IN
Use speaker notes from PowerPoint. Only valid with pptUrl.
Whether story text contains SSML markup. Only valid with story. Default: false
Separate caption text for the scene (max 3000 characters). Requires story.
Language of caption text. Only valid with caption. Options: zh, nl, en, fr, de, it, ja, ko, pt, ru, es, hi
ID of a saved text style for this scene’s subtitles. Cannot be used with subtitleStyleName.
scenes[].subtitleStyleName
Name of a saved text style for this scene’s subtitles. Cannot be used with subtitleStyleId.
Inline subtitle style for this scene. Overrides video-level subtitle style. See subtitleStyle Object .
scenes[].backgroundBrolls
scenes[].backgroundCorpus
Transcription of input video or audio. Required when repurposing audioUrl or videoUrl. See transcript Array .
scenes[].mediaRepurposeSettings
scenes[].templateOverride
Configuration for manipulating template scenes. Only available when templateId is provided. See templateOverride Object .
storyCoPilot Object
AI story generation configuration for creating video scripts automatically.
{
"storyCoPilot" : {
"prompt" : "How AI is transforming video creation" ,
"videoType" : "Explainer" ,
"duration" : 60 ,
"platform" : "YouTube" ,
"tone" : "informative"
}
}
Topic or description for AI to generate content (1-5000 characters).
Type of video to generate. Options: Explainer, Marketing, Internal Communication, Tutorial, Product. Default: Explainer
Target duration in seconds (1-600).
Target platform. Options: YouTube, TikTok, Instagram, Facebook, LinkedIn, Twitter
Tone of the generated content. Options: professional, casual, friendly, informative, persuasive, exciting, educational, humorous, serious, conversational
scenes[].voiceOver Object
Voice-over configuration specific to a scene. Overrides video-level voice-over settings.
{
"voiceOver" : {
"enabled" : true ,
"aiVoices" : [{ "speaker" : "Emma" , "speed" : 100 }]
}
}
Enable or disable voice-over for this scene.
Array of AI voice configurations (max 10). Same structure as aiVoices Array .
External voice configuration with voiceUrl, clips array, and amplificationLevel.
scenes[].backgroundMusic Object
Background music configuration specific to a scene.
Enable or disable background music for this scene.
background Object
Background media configuration for a scene.
{
"background" : {
"visualUrl" : "https://example.com/video.mp4" ,
"type" : "video" ,
"settings" : {
"mute" : true ,
"loop" : true
}
}
}
Background can only have ONE of: visualUrl, color, or aiVisual - not multiple.
URL to background video or image. Cannot be used with color or aiVisual.
Solid background color in RGBA format (e.g., “rgba(0, 0, 0, 1)”) or hex format. Cannot be used with visualUrl or aiVisual.
AI-generated visual configuration. Cannot be used with visualUrl or color. See aiVisual Object .
Media type. Options: video, image
Time clips to use from background video. Only valid when type is video and visualUrl is provided. Each clip has start and end numbers in seconds.
aiVisual Object
Text prompt for AI generation (max 250 characters).
AI model for image generation. Options: seedream3.0, flux-schnell, nanobanana, titan
Style for generated image. Options: photorealistic, artistic, cartoon, minimalist, vintage, futuristic
searchFilter Object
Search query text (max 3000 characters).
Keywords for search (max 10, each 2-100 characters).
Media libraries to search. Options: story_blocks, getty
background.settings Object
Mute audio from background media.
Loop the background media.
Apply zoom and pan effects. Cannot be used with kenBurnsEffect.
Apply Ken Burns effect (images only). Cannot be used with zoomAndPan.
Visual Filter Categories
Aerial: Aerial, Aerial/Coastal_and_Marine, Aerial/Infrastructure, Aerial/Natural_Landscapes, Aerial/Urban_LandscapesAnimals: Animals, Animals/Farm_Animals, Animals/Marine_Life, Animals/Pets, Animals/WildlifeBusiness: Business_and_Professions, Business_and_Professions/Business_Concepts, Business_and_Professions/Office_Work, Business_and_Professions/ProfessionsEffects: Effects, Effects/Chemical_Reactions, Effects/Explosions, Effects/Fire_and_Smoke, Effects/Glitches, Effects/Lighting_Effects, Effects/ParticlesFood: Food_and_Beverage, Food_and_Beverage/Beverages, Food_and_Beverage/Food_Preparation, Food_and_Beverage/MealsGraphics: Graphics, Graphics/Backgrounds, Graphics/Effects, Graphics/PatternsHistorical: Historical, Historical/Eras, Historical/Events, Historical/FiguresHolidays: Holidays_and_Celebrations, Holidays_and_Celebrations/Cultural_Celebrations, Holidays_and_Celebrations/Festivals, Holidays_and_Celebrations/Life_EventsLifestyle: Lifestyle, Lifestyle/Health_and_Fitness, Lifestyle/Hobbies, Lifestyle/Home_and_FamilyMedical: MedicalNature: Nature, Nature/Landscapes, Nature/Plants_and_Trees, Nature/Sunrises_and_Sunsets, Nature/Waterfalls, Nature/WeatherPeople: People, People/Activities, People/Groups, People/PortraitsPlaces: Places_and_Landmarks, Places_and_Landmarks/Rural_Areas, Places_and_Landmarks/Tourist_Attractions, Places_and_Landmarks/Urban_AreasSports: Sports_and_Recreation, Sports_and_Recreation/Individual_Sports, Sports_and_Recreation/Outdoor_Activities, Sports_and_Recreation/Team_SportsTechnology: Technology, Technology/Devices, Technology/Innovation
backgroundBrolls Array
Array of B-roll background configurations for creating dynamic scene transitions.
{
"backgroundBrolls" : [
{
"visualUrl" : "https://example.com/broll.mp4" ,
"type" : "video" ,
"brollClip" : { "start" : 0 , "end" : 5 },
"settings" : { "mute" : true }
}
]
}
Each B-roll item supports all background Object properties plus:
backgroundBrolls[].brollClip
Time clip configuration for B-roll. Contains start (number, required) and end (number, required) in seconds.
backgroundCorpus Array
Array of background images to use as a corpus for the scene (max 100 items).
{
"backgroundCorpus" : [
{ "visualUrl" : "https://example.com/image1.jpg" , "type" : "image" , "prefer" : true },
{ "visualUrl" : "https://example.com/image2.jpg" , "type" : "image" }
]
}
backgroundCorpus[].visualUrl
URL to background image.
backgroundCorpus[].prefer
Mark as preferred image for selection.
transcript Array
Transcription of input video or audio content.
{
"transcript" : [
{
"speakerId" : 1 ,
"words" : [
{ "word" : "Hello" , "start_time" : 0.0 , "end_time" : 0.5 , "is_pause" : false , "is_filler" : false }
]
}
]
}
Start time in seconds (min 0).
End time in seconds (must be >= start_time).
Whether this is a filler word.
Speaker identifier for this word.
Settings for repurposing audio or video content.
{
"mediaRepurposeSettings" : {
"highlightLength" : 60 ,
"removeFillerWords" : true ,
"removeSilences" : true ,
"silenceThresholdSeconds" : 2
}
}
mediaRepurposeSettings.highlightLength
Length of highlight in seconds (5-180).
mediaRepurposeSettings.removeFillerWords
Remove filler words from the content.
mediaRepurposeSettings.removeSilences
Remove silences from the content.
mediaRepurposeSettings.silenceThresholdSeconds
Silence threshold in seconds (0-10).
templateOverride Object
Configuration for manipulating template scenes. Only available when templateId is provided.
{
"templateOverride" : {
"sceneId" : "scene-123" ,
"subtitles" : [
{ "text" : "Updated subtitle text" , "minimumDuration" : 3 }
],
"layers" : [
[
{ "layerId" : "text-layer-1" , "type" : "text" , "text" : "Updated text content" }
]
]
}
}
ID of the existing scene to modify. Cannot be used with scenePosition.
templateOverride.scenePosition
Position of the existing scene to modify (1-based). Cannot be used with sceneId.
templateOverride.newScenePosition
New position for a newly inserted scene (1-based). Only for new scenes.
templateOverride.insertAfterSceneId
Insert new scene after this scene ID. Only for new scenes. Cannot be used with newScenePosition.
templateOverride.insertBeforeSceneId
Insert new scene before this scene ID. Only for new scenes. Cannot be used with newScenePosition or insertAfterSceneId.
templateOverride.replaceSceneId
Replace the scene with this ID. Only for new scenes. Cannot be used with newScenePosition.
templateOverride.replaceScenePosition
Replace the scene at this position (1-based). Only for new scenes. Cannot be used with newScenePosition or replaceSceneId.
templateOverride.baseSceneId
Base scene ID to copy settings from. Only for new scenes.
templateOverride.baseScenePosition
Base scene position to copy settings from (1-based). Only for new scenes. Cannot be used with baseSceneId.
templateOverride.deleteScene
Delete this scene. Only for existing scenes.
templateOverride.copyScene
Copy this scene. Only for existing scenes.
templateOverride.subtitles
Template Override Rules:
templateOverride is only available when templateId is provided
Use sceneId OR scenePosition to identify existing scenes, not both
Properties like newScenePosition, insertAfterSceneId, insertBeforeSceneId, replaceSceneId, baseSceneId are only for new scenes
Properties like deleteScene, copyScene, subtitles, layers are only for existing scenes
templateOverride.subtitles Array
{
"subtitles" : [
{
"text" : "Your subtitle text here" ,
"minimumDuration" : 3 ,
"styleId" : "style-123"
}
]
}
Subtitle text (1-40000 characters).
subtitles[].minimumDuration
Minimum duration in seconds.
Name of saved text style.
templateOverride.layers Array
Layers allow you to customize text, image, and video elements within template scenes.
{
"layers" : [
[
{ "layerId" : "headline" , "type" : "text" , "text" : "Updated headline" },
{ "layerId" : "logo" , "type" : "image" , "url" : "https://example.com/logo.png" }
]
]
}
ID of the layer to modify (max 100 characters).
Layer type. Options: text, image, video
Text content (max 40000 characters). For text type only.
Media URL (max 3000 characters). For image or video type only.
Text style ID. For text type only.
Text style name. For text type only.
Response
The API returns a job ID that you can use to track the preview generation progress. Once complete, you can retrieve the storyboard preview details including scene breakdowns, thumbnails, and project metadata.
What the Preview Contains
When the preview job completes, you’ll have access to:
Scene Breakdown - How your content was split into individual scenes
Visual Selections - AI-selected backgrounds and images for each scene
Timing Information - Estimated duration for each scene and total video length
Subtitle Text - Text content for each scene’s subtitles
Project Metadata - All configured settings (voice, music, branding, etc.)
Thumbnail Previews - Visual thumbnails representing each scene
200 - Success
400 - Bad Request
401 - Unauthorized
{
"success" : true ,
"data" : {
"jobId" : "74c0cc68-e1ed-42f3-a527-8bfc0b46bdb9"
}
}
After Preview Generation
Once the preview is generated, you can:
Review the storyboard - Use Get Job to retrieve preview details
Make adjustments - Use Update Project to modify scenes or settings
Render final video - Use Render from Preview to produce the final video file
Code Examples
Replace YOUR_API_KEY with your actual API key
Basic Text to Video Preview
cURL
JavaScript
Python
PHP
Go
curl --request POST \
--url https://api.pictory.ai/pictoryapis/v2/video/storyboard \
--header 'Authorization: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"videoName": "demo_text_to_video",
"voiceOver": {
"enabled": true,
"aiVoices": [{"speaker": "Brian", "speed": 100}]
},
"scenes": [
{
"story": "AI is transforming how we create content. It automates tasks and saves time.",
"createSceneOnEndOfSentence": true
}
]
}' | python -m json.tool
Preview with Smart Layout
const response = await fetch ( 'https://api.pictory.ai/pictoryapis/v2/video/storyboard' , {
method: 'POST' ,
headers: {
'Authorization' : 'YOUR_API_KEY' ,
'Content-Type' : 'application/json'
},
body: JSON . stringify ({
videoName: 'smart_layout_video' ,
smartLayoutName: 'modern minimalist' ,
voiceOver: {
enabled: true ,
aiVoices: [{ speaker: 'Emma' , speed: 100 }]
},
scenes: [{
story: 'Professional video creation has never been easier. Let AI handle the visuals.' ,
createSceneOnEndOfSentence: true
}]
})
});
Preview with AI Story Generation
const response = await fetch ( 'https://api.pictory.ai/pictoryapis/v2/video/storyboard' , {
method: 'POST' ,
headers: {
'Authorization' : 'YOUR_API_KEY' ,
'Content-Type' : 'application/json'
},
body: JSON . stringify ({
videoName: 'ai_generated_script' ,
voiceOver: {
enabled: true ,
aiVoices: [{ speaker: 'Matthew' , speed: 100 }]
},
scenes: [{
storyCoPilot: {
prompt: 'Benefits of remote work for modern businesses' ,
videoType: 'Explainer' ,
duration: 90 ,
platform: 'LinkedIn' ,
tone: 'professional'
},
createSceneOnEndOfSentence: true
}]
})
});
Preview with AI-Generated Visuals
const response = await fetch ( 'https://api.pictory.ai/pictoryapis/v2/video/storyboard' , {
method: 'POST' ,
headers: {
'Authorization' : 'YOUR_API_KEY' ,
'Content-Type' : 'application/json'
},
body: JSON . stringify ({
videoName: 'ai_visuals_video' ,
voiceOver: {
enabled: true ,
aiVoices: [{ speaker: 'Brian' , speed: 100 }]
},
scenes: [{
story: 'Experience the beauty of nature through AI-generated imagery.' ,
createSceneOnEndOfSentence: true ,
background: {
aiVisual: {
model: 'seedream3.0' ,
mediaStyle: 'photorealistic'
},
type: 'image' ,
settings: {
zoomAndPan: true
}
}
}]
})
});
Full Featured Preview Example
const response = await fetch ( 'https://api.pictory.ai/pictoryapis/v2/video/storyboard' , {
method: 'POST' ,
headers: {
'Authorization' : 'YOUR_API_KEY' ,
'Content-Type' : 'application/json'
},
body: JSON . stringify ({
videoName: 'full_featured_video' ,
aspectRatio: '16:9' ,
language: 'en' ,
saveProject: true ,
brandName: 'My Brand' ,
// Background music
backgroundMusic: {
enabled: true ,
autoMusic: true ,
volume: 0.3
},
// AI Voice-over
voiceOver: {
enabled: true ,
aiVoices: [{
speaker: 'Brian' ,
speed: 100 ,
amplificationLevel: 0
}]
},
// Logo
logo: {
url: 'https://example.com/logo.png' ,
position: 'top-right' ,
width: '12%'
},
// Subtitle styling
subtitleStyle: {
fontFamily: 'Montserrat' ,
fontSize: 48 ,
color: 'rgba(255, 255, 255, 1)' ,
position: 'bottom-center' ,
alignment: 'center'
},
// Scenes
scenes: [{
story: 'Welcome to our company. We create innovative solutions. Join us on this journey.' ,
createSceneOnEndOfSentence: true ,
highlightKeywords: true ,
sceneTransition: 'fade'
}]
})
});
Error Handling
400 - Missing Required Fields
{
"success" : false ,
"error" : {
"code" : "INVALID_REQUEST" ,
"message" : "videoName is required"
}
}
Solution: Ensure videoName and scenes are provided.
400 - Invalid Scene Configuration
{
"success" : false ,
"error" : {
"message" : "Scene must have exactly one of: story, storyCoPilot, blogUrl, pptUrl, audioUrl, or videoUrl"
}
}
Solution: Each scene can only have one content source.
400 - Smart Layout Conflict
{
"success" : false ,
"error" : {
"message" : "maxSubtitleLines is not allowed when smartLayoutId or smartLayoutName is provided"
}
}
Solution: Remove maxSubtitleLines when using smart layouts.
{
"message" : "Unauthorized"
}
Solution: Check your API key is valid and correctly formatted in the Authorization header.
429 - Rate Limit Exceeded
Solution: Implement exponential backoff and space out requests.
Next Steps
After creating your storyboard preview:
Supporting APIs