reelsdk vs Shotstack

A Shotstack alternative that renders slideshows and captions for $0.02 a minute

Shotstack is a timeline editing API: you describe tracks and clips in JSON and pay $0.20 a minute pay as you go, or $0.05 to $0.16 a minute on plans from $39 to $499 a month. reelsdk renders slideshows and word-by-word captions for $0.02 per output minute with no subscription, a complete faceless short for $0.25, and raw ffmpeg 8.1 jobs for $0.01 per compute minute.

Price per rendered minute
  • reelsdk slideshows and captions$0.02
  • Shotstack Volume, $499 a month$0.05
  • Shotstack Scale, $199 a month$0.10
  • Shotstack Pro, $99 a month$0.13
  • Shotstack Starter, $39 a month$0.16
  • Shotstack pay as you go$0.20

Shotstack plan price divided by the minutes it includes, checked October 2026. reelsdk has no plans and no minimum.

Which one to pick

Pick reelsdk if

  • You render slideshows, captioned clips or faceless shorts and would rather pay $0.02 a minute than $0.05 to $0.20
  • You want one call per job (/v1/slideshow, /v1/captions, /v1/shorts) instead of laying out tracks and clips
  • You want signed webhooks, or a request that simply waits up to 300 s and hands back the mp4

Pick Shotstack if

  • You compose real edits: several tracks, overlays, text, transitions and merge-field templates
  • You need 4K output or a visual template editor for people who don't write code
  • You want a free, watermarked sandbox to build against

Price per minute

Shotstack and reelsdk, price per minute

We divided each Shotstack plan by the minutes it includes. Shotstack bills every rendered minute the same way whatever the edit; reelsdk prices by job type, so a slideshow or captioned clip is $0.02 per output minute, a finished faceless short is a flat $0.25 or $0.35, and raw ffmpeg is $0.01 per compute minute.

Shotstack and reelsdk, price per minute
PlanPriceMinutesPer minute
Shotstack pay as you go$10 one-off50, valid 12 months$0.20
Shotstack Starter$39 a month250$0.156
Shotstack Pro$99 a month750$0.132
Shotstack Scale$199 a month2,000$0.0995
Shotstack Volume$499 a month10,000$0.0499
reelsdk slideshows and captionsPer jobNo minimum$0.02 per output minute
reelsdk faceless shortPer jobUp to 60 s or 90 s$0.25 or $0.35 a short
reelsdk raw ffmpegPer jobNo minimum$0.01 per compute minute

Shotstack plan minutes roll over for 3 months and pay-as-you-go minutes last 12. reelsdk voiceovers on slideshows add $0.05 per 1,000 characters, and the first $1 is free. Prices from Shotstack pricing, checked October 2026.

Head to head

reelsdk and Shotstack, feature by feature

reelsdk and Shotstack compared
reelsdkShotstack
Pricing modelPay per job, no subscription, first $1 freeMonthly plans from $39 with included minutes, or $10 for 50 pay-as-you-go minutes
How you describe a videoOne call per job type: /v1/slideshow, /v1/captions, /v1/shorts or /v1/ffmpegOne Edit JSON: a timeline of tracks and clips, an output block and an optional callback
Word-by-word captionsBurned in with the bold, karaoke or minimal preset or your own style, plus srt, vtt and ass filesRich caption asset with word timing from alias:// transcription; karaoke, highlight, bounce, pop, slide and typewriter
Caption languagesAuto-detected or set with language, transcribed by Whisper large-v3-turbo99 languages
Faceless short from a topicPOST /v1/shorts: script, AI images in 8 styles, voice, music and captions in one jobNo single call; generate speech, images or video as assets with credits, then build the timeline
Raw ffmpegPOST /v1/ffmpeg with ffmpeg 8.1 arguments, $0.01 per compute minuteNot offered
Largest output2160 px per side, so 1080x1920 for 9:163840x2160 in any shape, 4K on Pro and up
Getting the resultThe create call waits up to 300 s and returns the finished job, or 202 with a poll URL201 with a render id; poll GET /render/{id} or wait for the callback
WebhooksSigned with HMAC-SHA256 in Reel-Signature, 3 attemptsUnsigned, retried up to 10 times with back-off
Input limits500 MB per file, 1 GB per job, media up to 15 minutes5 GB per source file, 10 GB source plus output
Throughput3 concurrent jobs and 500 jobs a day per key300 edit requests per 60 s in production, 150 in sandbox
File hostingDownload links for 7 daysPermanent CDN hosting by default, or push to S3, Google Drive, Vimeo and more
Getting a keySelf-serve sign-up, first $1 freeSelf-serve signup, watermarked sandbox renders

Be honest

Where Shotstack is the better choice

  • Real multi-track editing

    A Shotstack edit is a timeline: tracks of clips placed by start and length, with text, HTML and luma assets, overlays, transitions and motion effects like zoomIn. If your video is an edit rather than a slideshow, a captioned clip or a short, that model fits and ours doesn't; on reelsdk you would write the filtergraph yourself on /v1/ffmpeg.

  • 4K and templates for non-developers

    Pro ($99 a month) and up render at up to 3840x2160, and Shotstack Studio templates with merge fields let someone change text and media without touching JSON. reelsdk slideshows stop at 2160 px per side and there is no visual editor.

  • Hosting and delivery

    Every Shotstack render lands on its CDN by default and stays there, and an edit can also push the file to S3, Google Drive, Vimeo and other destinations. reelsdk links expire after 7 days, so you copy the mp4 to your own storage when the job finishes.

Migration

Moving a render from Shotstack

A Shotstack slideshow is a timeline with one image clip per slide, a soundtrack and an output block, followed by a poll or a callback for the URL. On reelsdk it is one POST /v1/slideshow with the image URLs; the request waits for the render (up to 120 s here) and answers with the finished job, or with 202 and a poll_url if it takes longer.

Shotstack today

shotstack.sh
curl -X POST https://api.shotstack.io/edit/v1/render \
  -H "x-api-key: $SHOTSTACK_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "timeline": {
      "soundtrack": { "src": "https://example.com/music.mp3", "volume": 0.3 },
      "tracks": [{
        "clips": [
          {
            "asset": { "type": "image", "src": "https://example.com/1.jpg" },
            "start": 0, "length": 4, "effect": "zoomIn",
            "transition": { "in": "fade", "out": "fade" }
          },
          {
            "asset": { "type": "image", "src": "https://example.com/2.jpg" },
            "start": 4, "length": 4, "effect": "zoomIn",
            "transition": { "in": "fade", "out": "fade" }
          },
          {
            "asset": { "type": "image", "src": "https://example.com/3.jpg" },
            "start": 8, "length": 4, "effect": "zoomIn",
            "transition": { "in": "fade", "out": "fade" }
          }
        ]
      }]
    },
    "output": { "format": "mp4", "resolution": "1080", "aspectRatio": "9:16" },
    "callback": "https://your.app/hooks/shotstack"
  }'

# 201 { "response": { "id": "..." } }, then poll until status is "done"
curl https://api.shotstack.io/edit/v1/render/$RENDER_ID \
  -H "x-api-key: $SHOTSTACK_KEY"

The same render on reelsdk

reelsdk.sh
curl -X POST "https://api.reelsdk.com/v1/slideshow?wait=120" \
  -H "Authorization: Bearer $REELSDK_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "images": [
      "https://example.com/1.jpg",
      "https://example.com/2.jpg",
      "https://example.com/3.jpg"
    ],
    "size": "9:16",
    "seconds_per_image": 4,
    "motion": "kenburns",
    "transition": "fade",
    "music": { "url": "https://example.com/music.mp3", "volume": 0.3 },
    "webhook_url": "https://your.app/hooks/reelsdk"
  }'

# 200 { "job": { "status": "succeeded", "outputs": { "video": "https://..." } } }
# Still rendering after 120 s? You get 202 and a poll_url instead.

Field by field

Shotstack fields and their reelsdk equivalents
Shotstackreelsdk
clips[].asset.src (image)images[]: URLs, or { url, seconds } per slide
clips[].lengthseconds_per_image, or seconds on one image
clips[].effect: zoomInmotion: kenburns
clips[].transition: fadetransition: fade, one of 60, or random
timeline.soundtrackmusic: { url, volume }
output.resolution + aspectRatiosize: 9:16 (1080x1920) or WIDTHxHEIGHT
callbackwebhook_url, signed with Reel-Signature
GET /edit/v1/render/{id}GET /v1/jobs/{id}, or ?wait= on the create call
Rich caption assetcaptions: karaoke with a voiceover, or POST /v1/captions for an existing video

FAQ

reelsdk vs Shotstack, answered

How much cheaper is reelsdk than Shotstack per minute?

Shotstack charges $0.20 a minute pay as you go ($10 for 50 minutes) and $0.0499 to $0.156 a minute on plans from $39 to $499 a month. reelsdk charges $0.02 per output minute for slideshows and captions with no subscription, so a 30-second captioned clip costs one cent. A complete faceless short is $0.25 up to 60 seconds, and raw ffmpeg is $0.01 per compute minute.

Can Shotstack make a faceless short from a topic?

Not in one call. Shotstack can generate speech, images, video and music from prompts as timeline assets, paid in credits, but you write the script and lay out the tracks yourself. reelsdk POST /v1/shorts takes a topic or a script and returns a finished short in about 100 seconds: script, AI images in 8 visual styles, voiceover, word-by-word captions and music, in 6 languages, for $0.25 up to 60 seconds or $0.35 up to 90.

How do webhooks differ between Shotstack and reelsdk?

Shotstack posts an unsigned callback and retries up to 10 times with back-off, so you confirm a render by fetching its status. reelsdk signs every webhook with HMAC-SHA256 in the Reel-Signature header, keyed with your whsec_ secret and timestamped so you can reject anything older than 300 seconds, and makes 3 attempts. You can also skip webhooks: the create call waits up to 300 seconds for the finished job.

How long are rendered videos kept?

Shotstack hosts every render on its CDN by default and keeps it there; only the url in the render status response expires after 24 hours. reelsdk download links, including the srt, vtt and ass files from captions jobs, last 7 days, so copy anything you want to keep to your own storage.

Other comparisons

Ready to build?

Ship video from your app today

Your first $1 of renders is free, and one key covers every endpoint.

Moonlit lake with a lit cabin under the mountains