Slideshow API, $0.02 a minute
Turn photos into a narrated video with one API call
Send 1 to 100 image URLs and get back an MP4 with Ken Burns motion, transitions, an AI voiceover, music and word-by-word captions. It costs $0.02 per minute of video, plus $0.05 per 1,000 characters when one of our 40 voices reads your script. A 30-second 1080x1920 slideshow renders in 40 to 45 seconds.
- 1 to 100 photos
- 40 English voices
- 58 transitions
0:00.0 / 0:10.0
Quick start
Photos and a script in, MP4 out
List your images, write what the voice should say and pick a caption style. Photos share the length of the voiceover unless you time them yourself.
curl "https://api.reelsdk.com/v1/slideshow" \
-H "Authorization: Bearer $REELSDK_KEY" \
--json '{
"images": [
"https://your.app/seville/river.jpg",
"https://your.app/seville/plaza.jpg",
"https://your.app/seville/oranges.jpg",
"https://your.app/seville/flamenco.jpg",
"https://your.app/seville/tapas.jpg"
],
"size": "16:9",
"voiceover": {
"text": "Three days in Seville. Plaza de España at noon, orange trees under the Giralda, flamenco after dark, and tapas until midnight.",
"voice": "luna"
},
"captions": "karaoke"
}'{
"job": {
"id": "job_dhodzdoc9is0j8ht9lgm",
"op": "slideshow",
"status": "succeeded",
"stage": null,
"created_at": "2026-10-26T09:21:04.318Z",
"finished_at": "2026-10-26T09:21:31.402Z",
"outputs": {
"video": "https://api.reelsdk.com/f/out/job_dhodzdoc9is0j8ht9lgm/video.mp4",
"transcript": "https://api.reelsdk.com/f/out/job_dhodzdoc9is0j8ht9lgm/transcript.json",
"srt": "https://api.reelsdk.com/f/out/job_dhodzdoc9is0j8ht9lgm/captions.srt",
"vtt": "https://api.reelsdk.com/f/out/job_dhodzdoc9is0j8ht9lgm/captions.vtt",
"ass": "https://api.reelsdk.com/f/out/job_dhodzdoc9is0j8ht9lgm/captions.ass"
},
"result": null,
"duration_s": 10.03,
"error": null,
"usage": {
"output_seconds": 10.03,
"audio_seconds": 9.52,
"tts_characters": 126,
"images": 0
},
"poll_url": "https://api.reelsdk.com/v1/jobs/job_dhodzdoc9is0j8ht9lgm"
}
}Jobs that outlast the wait answer 202 with a poll_url. Add webhook_url and we POST the finished job to you instead.
Sizes
Any shape your app needs
Vertical for Reels and TikTok, widescreen for YouTube, square or 4:5 for the feed. Pick a ratio or pass your own width and height.
- 9:161080x1920 (default)
- 16:91920x1080
- 1:11080x1080
- 4:51080x1350
- 3:41080x1440
- 4:31440x1080
- Custom size
- Any even width and height from 240 to 2160 px, at 24 to 60 fps.
cover- Crops each photo to fill the frame. This is the default.
contain- Shows the whole photo over a blurred, darkened copy of itself.
Transitions
58 transitions, or let us pick
Every xfade transition ffmpeg ships, from 0.1 to 2 seconds long. Without a choice you get a half-second fade.
- fadedefault
- fadeblack
- slideleft
- slideright
- slideup
- slidedown
- smoothleft
- smoothright
- smoothup
- smoothdown
- coverleft
- coverright
- fadewhite
- fadegrays
- fadefast
- fadeslow
- dissolve
- distance
- pixelize
- radial
- wipeleft
- wiperight
- wipeup
- wipedown
- wipetl
- wipetr
- wipebl
- wipebr
- circlecrop
- rectcrop
- circleclose
- circleopen
- horzclose
- horzopen
- vertclose
- vertopen
- diagbl
- diagbr
- diagtl
- diagtr
- hlslice
- hrslice
- vuslice
- vdslice
- hblur
- squeezeh
- squeezev
- zoomin
- hlwind
- hrwind
- vuwind
- vdwind
- coverup
- coverdown
- revealleft
- revealright
- revealup
- revealdown
Pass random and every cut gets one of the 12 highlighted transitions, never the same one twice in a row. Or pass none for hard cuts.
"transition": { "type": "random", "seconds": 0.6 }What you control
The parts of a video editor your app actually needs
Ken Burns motion
Slow zooms and pans are on by default and change direction from photo to photo. Set
motiontononefor still slides.Voiceover from text or audio
Send up to 10,000 characters and pick one of 40 English Deepgram Aura-2 voices, or pass the URL of a recording you already have.
Music that ducks under the voice
Add a music URL and we loop it to length, fade it out, dip it under the voiceover and level the final mix to -14 LUFS.
Captions in the same render
Burn word-by-word captions of the voiceover with
bold,karaoke,minimalor your own style, and get the transcript, SRT and VTT back too.Timing that fits the story
Give any photo its own
seconds(0.5 to 60), setseconds_per_imagefor all of them, or let the photos share the length of the voiceover.Draft, standard or high
Pick
qualityto trade render time for detail. Every MP4 is H.264 and starts playing before it finishes downloading.
Specs
Slideshow API specs
| Endpoint | POST /v1/slideshow |
|---|---|
| Photos | 1 to 100 image URLs, JPG, PNG, WebP, AVIF or GIF, up to 100 megapixels and 500 MB each, 1 GB per job |
| Size | 9:16 (1080x1920, default), 16:9, 1:1, 4:5, 3:4, 4:3, or any even width and height from 240 to 2160 px |
| Frame rate | 24 to 60 fps, 30 by default |
| Length | Up to 15 minutes; 0.5 to 60 seconds per photo, 3 by default without a voiceover |
| Fit | cover (crop to fill, default) or contain (whole photo over a blurred copy) |
| Transitions | fade (0.5 s, default), 57 other xfade transitions, random or none, 0.1 to 2 s long |
| Voiceover | Audio URL, or up to 10,000 characters read by one of 40 English voices |
| Music | Any audio URL, looped with a 1 s fade-out and ducked under the voice, volume 0.2 by default |
| Captions | bold, karaoke, minimal or a style object; needs a voiceover |
| Video out | H.264 MP4, AAC 192 kbit/s, loudness -14 LUFS, fast start for streaming |
| Files returned | video.mp4, plus transcript.json, captions.srt, captions.vtt and captions.ass when captioned |
| Render time | 40 to 45 seconds for a 30-second 1080x1920 slideshow with 6 photos, voiceover, music and captions |
| Price | $0.02 per output minute, plus $0.05 per 1,000 voiceover characters |
Pricing
$0.02 a minute, voice by the character
You pay for the length of the video you get back. Motion, transitions, music and captions cost nothing extra.
$0.02per output minute
A voiceover from your text adds $0.05 per 1,000 characters, about 50 seconds of narration.
Prepaid credit with no subscription, and your first $1 of renders is free.
| Provider and plan | Per minute | 100 minutes |
|---|---|---|
| reelsdkPay as you go, slideshows and captions | $0.02/min | $2.00 |
| ShotstackPay as you go, $10 for 50 minutes | $0.20/min | $20.00 |
| ShotstackStarter, $39 a month for 250 minutes | $0.16/min | $16.00 |
| JSON2VideoProfessional, $49.95 a month for 200 minutes | $0.25/min | $25.00 |
| CreatomateEssential, $54 a month, 1080p at 25 fps | $0.84/min | $84.00 |
Use cases
What builders make with it
- 01
Listing videos for real estate
Turn property photos into a vertical or widescreen walkthrough, narrated from the listing description.
- 02
Trip and event recaps
Let users pick their photos and a song and hand back a finished recap, with no timeline editor to build.
- 03
Product videos from catalog shots
Combine product images with a short script and karaoke captions into an MP4 that plays right in the browser.
- 04
Memories and photo dumps
Generate weekly or yearly recap reels inside a Supabase, Lovable or bolt app with one background call.
FAQ
Slideshow API questions
How much does the slideshow API cost?
$0.02 per minute of finished video. If we generate the voiceover from your text, add $0.05 per 1,000 characters, which is about 50 seconds of narration. There's no subscription or minimum, you work from prepaid credit, and your first $1 of renders is free.
How fast does a slideshow render?
A 30-second 1080x1920 slideshow with 6 photos, an AI voiceover, music and captions takes 40 to 45 seconds end to end. The machine that renders it is ready in about 2 seconds, and draft quality renders faster still.
How do I get the finished video back?
The create call waits up to 60 seconds and returns the finished job, or up to 300 seconds with ?wait=. Longer jobs answer 202 with a poll_url, or you pass a webhook_url and we POST the result, signed with HMAC-SHA256, with 3 delivery attempts. Files stay downloadable for 7 days.
Which voices and languages can narrate?
Text voiceovers use Deepgram Aura-2 with 40 English voices, luna by default. For other languages, record or generate the audio elsewhere and pass its URL as the voiceover; captions are transcribed from whatever audio you send.
What are the limits?
1 to 100 photos per slideshow, each up to 100 megapixels and 500 MB, with 1 GB of input per job and up to 15 minutes of video. Each key runs 3 jobs at once and up to 500 jobs a day.
Can I call it from Lovable, bolt, Supabase or n8n?
Yes. It's one HTTPS request with a JSON body, so it works from a Supabase Edge Function, a Cloudflare Worker, a Vercel function, a Lovable or bolt app, or an n8n HTTP Request node, with nothing to install.
Ready to build?
Render your first slideshow free
Sign up and create an API key in a minute. Your first $1 of renders is on us, then it's $0.02 a minute.
