Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Storyboard Video Generator icon

Storyboard Video Generator

Turn images or a story into a Ken Burns slideshow video. Pan-and-zoom motion, optional audio, 9:16, 16:9 or 1:1 output. $0.015 per rendered second.

146 runs on Apify $0.015 per video second ($15 / 1,000)
Run this in the cloudRun on Apify →

AI Video & Content Studio

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust imageUrls, story, numScenes (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.015 per video second = $15 per 1,000

You are charged forWhenPrice
Video secondPer second of generated slideshow video.$0.015

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-06-11, and they are what you are actually charged.

Inputs

FieldWhat it doesType
imageUrlsPublic image URLs to animate, in order. (Leave empty to auto-generate from a story.)array
storyIf no image URLs are given, this story is split into scenes and images are generated (needs OpenAI key).string
numScenesHow many images to generate when using a story.integer
styleShared visual style for generated images.string
charactersRecurring-character description for consistency.string
imageQualitygpt-image-1 rendering quality for generated scenes. Higher = sharper but pricier on the OpenAI key: low ≈ $0.011/image, medium ≈ $0.04/image, high ≈ $0.167/image. Default 'medium' (≈ $0.20 for 5 scenes vs ≈ $0.84 on high).string
secondsPerImageHow long each image is shown (with motion).integer
fpsOutput frames per second.integer
aspectRatio9:16 vertical, 16:9 wide, or 1:1 square.string
audioUrlPublic URL to a voiceover or music track to lay over the video.string
openaiApiKeyYour OpenAI key, only needed to auto-generate images from a story. Kept private.string
baseUrlOpenAI-compatible base URL. Default https://api.openai.com/v1.string

What you get

A structured dataset — each result includes fields like:

imagesaspectRatiodurationSecondshasAudiovideoUrl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in AI Video & Content Studio

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

Story to Script Rewriter iconAI Video & Content Studio

Story to Script Rewriter

Turn a story, article or Reddit post into a short-form script. You get a hook, tight narration, a title and extra hooks. $0.02 per script.

Ready to run — no setup

Subtitle Translator iconAI Video & Content Studio

Subtitle Translator

Translate SRT and VTT subtitles into many languages in one run, or transcribe a video first. Timings stay exact. $0.05 per language, flat rate.

Ready to run — no setup

AI Thumbnail Generator iconAI Video & Content Studio

AI Thumbnail Generator

Generate video thumbnails with AI. A close-up face plus a bold hook headline. Sizes 9:16, 16:9 and 1:1. For YouTube, Shorts, Reels and ads.

Ready to run — no setup

Social Metadata Generator iconAI Video & Content Studio

Social Metadata Generator

Write titles, captions, hashtags, SEO tags and a pinned comment. For YouTube, TikTok, Reels, Shorts and X. $15.00 per 1,000 packs ($0.015 each).

Ready to run — no setup

Hook & Virality Scorer iconAI Video & Content Studio

Hook & Virality Scorer

Score any title, hook or script for viral potential. You get 0-100 with a grade, a breakdown and rewrite tips. No AI key. $3.00 per 1,000 hooks.

Ready to run — no setup

AI Viral Clip Cutter — Long Video to Shorts iconYouTube & Creator Tools

AI Viral Clip Cutter — Long Video to Shorts

Turn a long podcast or interview into ranked vertical clips. AI scores each moment and captions follow every word. $0.20 per clip row, samples included.

3 use cases

See all AI Video & Content Studio →

Storyboard Video Generator: images or a story into a Ken Burns slideshow MP4

Give it image URLs in the order you want them and you get back a finished MP4: each image held for a few seconds with a slow zoom and pan, the clips joined, and your audio track laid over the top if you have one. Vertical, wide or square. No editor, no timeline, no per-clip work.

If you only have a story, it can write the scenes and generate the images first, on your own OpenAI key. Worth knowing before you plan a long one: motion is rendered frame by frame, so the run's clock runs out well before the 900-second ceiling. Several minutes of video is the realistic figure, and when time runs short you get the clips that finished rather than nothing.

InputImage URLs, or a story plus your own OpenAI key
OutputOne MP4 in the run's key-value store, and one row describing it
Ceiling60 images and 900 seconds of video per run
Account neededNone, unless you use story mode, which needs your own OpenAI key
Price$0.015 per rendered second, flat on every plan

🎬 What Storyboard Video Generator does

In URL mode it downloads each image, checks it really is an image rather than an error page, renders a zoom-and-pan clip from it, joins the clips in your order and muxes the audio. The zoom direction alternates between clips so a long slideshow does not feel mechanical.

In story mode it splits your text into scenes, generates one image per scene with gpt-image-1 on your key, then animates them the same way. Your art style and character note go into every prompt, so the scenes look like they belong together.

Nothing crashes the run. A dead URL is skipped and listed under skipped, a scene that fails to generate is skipped, and a broken audio track leaves you the silent video rather than nothing.

Output sizes are 1080x1920 for 9:16, 1920x1080 for 16:9 and 1080x1080 for 1:1, H.264 MP4.

📥 What you give it

You need either image URLs or a story. Give neither and the run writes one free sample row telling you so.

{
  "imageUrls": ["https://example.com/scene1.jpg", "https://example.com/scene2.jpg"],
  "secondsPerImage": 4,
  "aspectRatio": "9:16",
  "fps": 30,
  "audioUrl": "https://example.com/ambient.mp3"
}
FieldDefaultWhat it is
imageUrlsnonePublic image URLs, in the order you want them on screen. The first 60 are used and the rest are listed under skipped. No key needed.
storynoneProse to split into scenes and illustrate. Only used when you gave no usable image URLs.
numScenesnone, the form starts at 5How many images to generate in story mode, 1 to 15.
stylenone, the form suggests oneA shared look for the generated images, for example moody watercolor, muted palette.
charactersnoneA description of a recurring character, so they stay recognisable between scenes.
imageQualitynone, the form starts at mediumlow, medium or high for generated images. This is spent on your OpenAI key, not here.
secondsPerImagenone, the form starts at 4How long each image is held, 1 to 15 seconds.
fpsnone, the form starts at 30Frame rate, held between 5 and 60. Render time grows with it.
aspectRationone, the form starts at 9:169:16 vertical, 16:9 wide or 1:1 square.
audioUrlnoneA public link to a voiceover or music track. Read the note below about length.
openaiApiKeynoneYour own OpenAI key, story mode only. Kept as a secret field.
baseUrlnoneAn OpenAI-compatible endpoint, if you use one instead of OpenAI itself.

Audio length changes the video length. The shorter of the two wins. A long track is cut off, but a track shorter than the slideshow trims the video to match, and you are billed for that shorter length.

📤 What you get back

The MP4 goes to the run's key-value store, and one row lands in the dataset describing it. A real row from a recent run, with the signed link trimmed:

{
  "ok": true,
  "charged": true,
  "images": 2,
  "aspectRatio": "9:16",
  "secondsPerImage": 2,
  "fps": 24,
  "durationSeconds": 4,
  "hasAudio": false,
  "videoKey": "storyboard-video-1789627427569.mp4",
  "videoUrl": "https://api.apify.com/v2/key-value-stores/Bdta3ZePheGXfWAnY/records/storyboard-video-...",
  "videoBytes": 1618276,
  "generatedAt": "2026-09-17T06:43:47.775Z"
}
FieldWhat it is
videoUrl, videoKeyWhere to fetch the file, and its name in the key-value store.
durationSecondsThe real length of the finished file, measured from it rather than calculated.
imagesHow many clips actually made it into the video.
secondsPerImage, fps, aspectRatioThe settings as used, after any clamping.
hasAudio, audioErrorWhether a track was laid over it, and why not if you asked for one.
skippedAnything left out, each with the reason. Dead URLs, files that were not images, and URLs past the sixtieth.
videoBytesThe file size.

🧾 Reading the output

RowHow to spot itCharged
The delivered videook: true with a videoUrlyes
The sample row_sample: true and charged: falseno
A diagnostic_diagnostic: true with an errorCodeno

The charged field marks which row is the real deliverable rather than a sample or a notice. It is written when the row is built, so read it as a label on the row, not as a receipt.

CodeWhat it means
NO_USABLE_IMAGESEvery URL was dead, timed out, or returned a web page instead of image bytes.
UPSTREAM_AUTHOpenAI rejected your key.
UPSTREAM_RATE_LIMITEDOpenAI rate limited or quota limited your key.
UPSTREAM_ERRORThe image or scene call failed some other way.
RENDER_FAILEDThe clips could not be turned into a video.
NO_TIME_LEFTThe run's clock ran out before a single clip finished. Lower the scene count, the seconds per image or the frame rate.
UNEXPECTEDAnything else. The row carries the detail.

The Console's overview table hides errorCode, note and skipped, so a sample or diagnostic row shows up there as an empty result with no link. Read the JSON to see why.

▶️ How to run it

1. Open Storyboard Video Generator and click Try for free. 2. Paste your image links into Image URLs, in order. Or write into Story and put your OpenAI key in the key field. 3. Pick an Aspect ratio and set Seconds per image. 4. Add an Audio URL if you have a voiceover or a music bed, then click Start. 5. Open the run's Storage tab and download the MP4, or follow videoUrl from the dataset row.

💰 How much does it cost?

$0.015 per second of rendered video. Flat on every Apify plan, no volume tiers.

You pay for the seconds in the file you actually receive. Five images at four seconds each is twenty seconds of video, so $0.30. A run that produces no file charges no video seconds, and the sample and diagnostic rows are not billed.

Story mode spends on your OpenAI key, separately. The per-image figures OpenAI publishes for gpt-image-1 are about $0.011 on low, $0.04 on medium and $0.167 on high, so a five-scene story is roughly $0.06, $0.20 or $0.84 of your own spend. Use low for drafts.

💡 What people use it for

  • Turning a set of product photos into a vertical clip for Reels, Shorts or TikTok.
  • Animatics: rough motion over storyboard frames before anyone shoots anything.
  • Slideshows from a photo shoot, with the client's music over the top.
  • Illustrated stories, where the text is the input and the images are made to match.
  • Faceless channel content built from stock images and a voiceover you already have.

🚧 What it does not do

  • Hard cuts only. No crossfades, wipes or transitions between clips.
  • No text and no captions are burned in.
  • No voice generation. Bring an audio track as a URL.
  • No per-scene motion control. The zoom direction alternates by itself.
  • 60 images and 900 seconds are the hard caps. Settings that would run longer get the time per

image trimmed to fit, and the log says so.

  • The run clock usually binds first, because motion is rendered frame by frame. You then get the

clips that finished, with the rest listed in skipped.

  • Images must be publicly reachable. They are downloaded directly, so a link needing a login

will not work.

  • Story mode needs your own OpenAI key. None is included here.

🧭 Which video tool do you need?

If you wantUse
Images or a story turned into a pan-and-zoom slideshowThis one
A full faceless short, script and voiceover includedAI Faceless Short Generator
A voiceover track to lay over this videoAI TTS Voiceover
Word by word captions burned into a finished videoAuto Caption Burner
A long video cut into ranked vertical clipsAI Viral Clip Cutter

❓ Questions people ask

Do I need an OpenAI key? Only for story mode. Give it image URLs and no key is used and no OpenAI call is made.

What happens if I run it with nothing filled in? You get one row marked _sample: true explaining what to fill in, and no video seconds are charged.

What if one of my image URLs is dead? It is skipped and listed under skipped, and the rest still render. If every URL fails you get a NO_USABLE_IMAGES row and pay no video seconds.

How long can the video be? The caps are 60 images and 900 seconds, but the run's clock is what you will hit first. Raise the run timeout if you want to push it.

Where do I find the file? In the run's key-value store, under videoKey. The row's videoUrl links straight to it.

Can I control the zoom on a particular image? No. The direction alternates automatically.

Can I use my own images? Yes, that is what Image URLs is for, and the video follows the order you list them in.

🆘 If something breaks

Open the Issues tab on the actor page. Send the run ID and the row's errorCode. If the video came out short, check skipped first: it usually names the images that did not make it.