Bedtime Story
A narrated sleep story for the two-in-the-morning end of the feed — the deliberate inverse of a creepypasta cut, built so the viewer stops watching rather than keeps scrolling. 9:16 vertical, 1080x1920, 80 seconds across six unhurried scenes at 30fps, joined by 60-frame cross-dissolves with not a single hard cut, and closing on a full-frame fade to lights-out indigo with a silent final second. Rhythm comes from two depths of night indigo instead of a light ground, moon cream only ever sets type and never at full opacity, and the only progress signal is a cream dot travelling one sixth of a hairline rail per scene and dimming as it goes, so nobody has to read a counter. Ten dynamic fields swap per render: eight text (channel_name, story_title which appears six times from one string, story_intro, story_part_1, story_part_2, story_part_3, story_last_line, closing_line) and two images (cover_image for the opening band and closing full bleed, ambient_image for the wash behind the three reading frames). The caller splits its story into three passages plus a last line at sentence boundaries, so one template turns out a fresh film every night from one block of narrated text.
- Aspect ratio
- 9:16 · Vertical
- Duration
- ~80s
- Category
- Social Media
Try it with your own copy
Edit a field and the frame re-renders in your browser. No account, no credits - previews are free because they cost a browser paint, not a render.
What you can customize
This template exposes 10 dynamic fields you can swap per video - edit them in the editor or pass them to the API to batch-render variations at scale. The monospace name is the exact key to send in replacements.
Cover Image
urlcover_imagehttps://images.unsplash.com/photo-1581886573745-4487c55d95f8?fm=jpg&q=82&w=1080&h=1920&fit=crop&crop=entropy
Ambient Image
urlambient_imagehttps://images.unsplash.com/photo-1429305336325-b84ace7eba3b?fm=jpg&q=82&w=1080&h=1920&fit=crop&crop=entropy
Channel Name
textchannel_nameQuiet Hours
~76 characters max · 2 lines
Story Title
textstory_titleThe Lamplighter's Last Round
~111 characters max · 2 lines
Story Intro
textstory_introA slow story about a man who lights the lamps of a small harbour town, and the night he forgets to go home.
~179 characters max · 4 lines
Story Part 1
textstory_part_1There was a town by the water where the lamps were still lit by hand, one at a time, by an old man named Aurel who was never in a hurry.
~197 characters max · 7 lines
Story Part 2
textstory_part_2He carried a brass pole and a small flame, and the harbour came on behind him the way a slow thought remembers itself.
~169 characters max · 6 lines
Story Part 3
textstory_part_3When the last lamp was lit he sat on the harbour wall, and the water moved so gently that he forgot, for a while, that he was awake.
~169 characters max · 6 lines
Story Last Line
textstory_last_lineThe lamps kept watch. Aurel slept, and so did the town.
~88 characters max · 4 lines
Closing Line
textclosing_lineSleep well. There is nothing left to do tonight.
~103 characters max · 3 lines
Render it from the API
Copy either call below. Both already carry this template's ID and its real variable keys - swap the values for your own.
1. Preview it — free
Same body as a render. Costs no credits, creates no job. Returns a public URL that plays the video in a browser, plus a list of problems with your payload — a mistyped key is otherwise ignored in silence.
curl -X POST https://renderly.video/api/v1/previews \
-H "Authorization: Bearer $RENDERLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "bedtime-story",
"replacements": {
"cover_image": "https://images.unsplash.com/photo-1581886573745-4487c55d95f8?fm=jpg&q=82&w=1080&h=1920&fit=crop&crop=entropy",
"ambient_image": "https://images.unsplash.com/photo-1429305336325-b84ace7eba3b?fm=jpg&q=82&w=1080&h=1920&fit=crop&crop=entropy",
"channel_name": "Quiet Hours",
"story_title": "The Lamplighter'\''s Last Round",
"story_intro": "A slow story about a man who lights the lamps of a small harbour town, and the night he forgets to go home.",
"story_part_1": "There was a town by the water where the lamps were still lit by hand, one at a time, by an old man named Aurel who was never in a hurry."
}
}'2. Render it
Change one word in the URL. Keep templateId — it is what links your call to this template, so later improvements reach you automatically.
curl -X POST https://renderly.video/api/v1/renders \
-H "Authorization: Bearer $RENDERLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "bedtime-story",
"replacements": {
"cover_image": "https://images.unsplash.com/photo-1581886573745-4487c55d95f8?fm=jpg&q=82&w=1080&h=1920&fit=crop&crop=entropy",
"ambient_image": "https://images.unsplash.com/photo-1429305336325-b84ace7eba3b?fm=jpg&q=82&w=1080&h=1920&fit=crop&crop=entropy",
"channel_name": "Quiet Hours",
"story_title": "The Lamplighter'\''s Last Round",
"story_intro": "A slow story about a man who lights the lamps of a small harbour town, and the night he forgets to go home.",
"story_part_1": "There was a town by the water where the lamps were still lit by hand, one at a time, by an old man named Aurel who was never in a hurry."
}
}'The body above shows 6 of 10 variables. Send any subset — every key you leave out renders its authored default. Read the full contract, with character limits, from GET /api/v1/templates/bedtime-story/variables. See the previewing guide, the rendering guide, or the OpenAPI spec.
Frequently asked questions
How do I customize the Bedtime Story template?
Open the template in the Renderly editor and replace its 10 customizable fields (such as Cover Image) with your own text, images, or video. Every change previews instantly before you render.
How much does it cost to render this template?
Rendering is credit-based - 1 credit equals 1 minute of 1080p video, billed by the second. You only pay when you export, and credits never expire on the pay-as-you-go plan.
Can I generate this video at scale via the API?
Yes. POST this template's ID and a replacements object to /api/v1/renders - one call per row of data, 10 fields swappable per video. Send the same body to /api/v1/previews first to check it for free. No-code integrations like Zapier work the same way.
More Social Media templates

Crypto Price Alert
A dark, fast vertical alert card for one crypto asset and one price move, fired when a threshold is crossed: the asset, the percentage move in crypto gold, the timeframe, the price now against where it started, and a call to action. 15 seconds, 9:16 (1080x1920). Dynamic fields: asset_symbol, asset_name, move_pct (sign included), timeframe, price_now, price_from, alert_time, source_name and cta_line. Reads the same for a 3% move or a 40% drop, up or down.

Reddit Story Reader
A screen-native story-reader short for faceless channels: a forum post card with the title and source, then three body pages in grey panels with a page counter and progress bar, and an end card that sets up the next part. 53 seconds, 9:16 (1080x1920). Dynamic fields: post_title, source_label, page_1, page_2, page_3 (up to about 380 characters each), part_label, outro_line and channel_handle. Longer stories render as several parts.

Motivational Quote Reel
The moving sibling of the Daily Quote card: one quote over slow, graded footage with an optional AI-narrated read. 23 seconds, 9:16 at 1080x1920, five scenes - a title card, the quote, the attribution, a near-black quote card built to be screenshotted, and a follow outro - in near-black, warm white and a single warm-amber accent, set in Cormorant Garamond with JetBrains Mono furniture. Dynamic fields: series_label, date_label, the_line, attribution, handle (text), background_clip (video) and narration (sound, filled per render with a text-to-speech value). It uses the same field names as the Daily Social Card - Quote, so one row a day renders both the square card and the vertical reel.