The Grand Atlantic - Cruise Dining Card
The cruise cut of Daily Special Card, and the first sibling that carries a whole menu rather than one item: a 24-second vertical (9:16) card for a ship's main dining room, publishing three dishes of the day, two bar specials, seatings, deck and dress code. A ship already publishes this as its daily programme, so the feed exists - one hull runs 7 menus a voyage and roughly 45 voyages a year, about 315 cards from a single dining room before a fleet multiplies it by every hull. Seven scenes on an alternating sea-ink and cream rhythm: an opener that establishes vessel, deck and voyage day over the aft deck and wake, the full three-dish list with name, description and price set as a printed menu, the signature dish as a photo band cut by a brass rule with its type on a clean plate below, a matted second dish above a third set as a footer line, both bar specials as a two-up window grid, seatings at display scale over the dining room, and a typographic close that ends on the ship's name rather than on food. The register is the ship's own stationery - engraved and centred, Bodoni Moda with Archivo labels, every ground carrying a fine 45-degree engine-turned guilloche crosshatch at 4.5% ink on cream and 6% brass on sea-ink, and a brass frame inset 52px that doubles on the opener and closer to separate bookends from the body. Photo treatment is the part that makes it work at sea: only four of the six image slots are daily (dish_photo_1, dish_photo_2, drink_photo_1, drink_photo_2 - what the galley and bar actually shoot each night), while ship_photo and venue_photo are evergreen stills the vessel shoots once, so every card is anchored to the water without anyone photographing the ocean nightly. The hero uses a photo band over an ink plate rather than a full-bleed scrim, because contrast never depends on a veil - that is the treatment for a bright subject like a white plate, and it lets the crop be chosen for the food instead of compromised to leave room for a headline. Thirty dynamic fields: ship_name, venue_name, deck_label, voyage_line, date_label; dish_1/2/3 name, desc and price; drink_1/2 name, desc and price; dish_1_price_line, seating_times, dress_code, closing_line; and the six photos. Ten of those drive more than one scene, so a single replacement updates the card coherently. The fare model is a template-level decision expressed through the price fields rather than a switch: pass "Included" on every price for an all-inclusive line, or empty strings to hide money entirely for a fare-inclusive luxury brand. Length ceilings are set by Bodoni at display scale: venue_name is built for two lines and takes about 9 characters each at 148-158px, dish names about 21 characters before the list rows wrap to a second line (scenes 02 and 04 are built for that wrap), drink names about 13 at 64px in the two-up grid. Smallest type in the deck is 27px and all bottom-anchored content clears 196px, keeping it above the Stories reply bar and the Reels action rail.
- Aspect ratio
- 9:16 · Vertical
- Duration
- ~24s
- 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 30 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.
Ship Photo
urlship_photohttps://images.unsplash.com/photo-1688269910724-97e4f876a3b3?fm=jpg&q=80&w=1400&auto=format&fit=crop
Ship Name
textship_nameMS Meridian
~63 characters max · 1 line
Deck Label
textdeck_labelDeck 4 · Midship
~68 characters max · 1 line
Venue Name
textvenue_nameThe Grand Atlantic
~26 characters max · 2 lines
Voyage Line
textvoyage_lineDay 4 · At Sea
~58 characters max · 1 line
Date Label
textdate_labelWednesday 5 August
~70 characters max · 1 line
Dish 1 Name
textdish_1_nameSeared Sea Scallops
~26 characters max · 1 line
Dish 1 Price
textdish_1_price+$18
~16 characters max · 1 line
Dish 1 Desc
textdish_1_descSaffron butter, charred leek, lemon
~49 characters max · 1 line
Dish 2 Name
textdish_2_nameMiso-Glazed Black Cod
~49 characters max · 2 lines
Dish 2 Price
textdish_2_priceIncluded
~19 characters max · 1 line
Dish 2 Desc
textdish_2_descCharred bok choy, ginger dashi
~49 characters max · 1 line
Dish 3 Name
textdish_3_nameOsso Buco alla Milanese
~49 characters max · 2 lines
Dish 3 Price
textdish_3_priceIncluded
~19 characters max · 1 line
Dish 3 Desc
textdish_3_descVeal shank, gremolata, saffron risotto
~49 characters max · 1 line
Dish Photo 1
urldish_photo_1https://images.unsplash.com/photo-1669109230976-743c9ac94d27?fm=jpg&q=80&w=1600&auto=format&fit=crop
Dish 1 Price Line
textdish_1_price_lineSurcharge +$18
~59 characters max · 1 line
Dish Photo 2
urldish_photo_2https://images.unsplash.com/photo-1726452842860-e7e8066f3341?fm=jpg&q=80&w=1400&auto=format&fit=crop
Drink Photo 1
urldrink_photo_1https://images.unsplash.com/photo-1762880343802-7f32c3123f08?fm=jpg&q=80&w=1000&auto=format&fit=crop
Drink 1 Name
textdrink_1_nameMeridian Sour
~15 characters max · 1 line
Drink 1 Desc
textdrink_1_descRye, blood orange, egg white, angostura
~58 characters max · 2 lines
Drink 1 Price
textdrink_1_price$14
~26 characters max · 1 line
Drink Photo 2
urldrink_photo_2https://images.unsplash.com/photo-1750665645097-765c958d2332?fm=jpg&q=80&w=1000&auto=format&fit=crop
Drink 2 Name
textdrink_2_nameDeck 4 Spritz
~15 characters max · 1 line
Drink 2 Desc
textdrink_2_descAperol, prosecco, grapefruit oil
~58 characters max · 2 lines
Drink 2 Price
textdrink_2_price$12
~26 characters max · 1 line
Venue Photo
urlvenue_photohttps://images.unsplash.com/photo-1752610877644-c83e616d9fd3?fm=jpg&q=80&w=1400&auto=format&fit=crop
Seating Times
textseating_times6:00 8:30
~20 characters max · 2 lines
Dress Code
textdress_codeFormal night · jackets suggested
~34 characters max · 1 line
Closing Line
textclosing_lineDeck 4 · Midship · 6:00 & 8:30
~69 characters max · 1 line
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": "restaurant-grand-atlantic",
"replacements": {
"ship_photo": "https://images.unsplash.com/photo-1688269910724-97e4f876a3b3?fm=jpg&q=80&w=1400&auto=format&fit=crop",
"ship_name": "MS Meridian",
"deck_label": "Deck 4 · Midship",
"venue_name": "The Grand\nAtlantic",
"voyage_line": "Day 4 · At Sea",
"date_label": "Wednesday 5 August"
}
}'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": "restaurant-grand-atlantic",
"replacements": {
"ship_photo": "https://images.unsplash.com/photo-1688269910724-97e4f876a3b3?fm=jpg&q=80&w=1400&auto=format&fit=crop",
"ship_name": "MS Meridian",
"deck_label": "Deck 4 · Midship",
"venue_name": "The Grand\nAtlantic",
"voyage_line": "Day 4 · At Sea",
"date_label": "Wednesday 5 August"
}
}'The body above shows 6 of 30 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/restaurant-grand-atlantic/variables. See the previewing guide, the rendering guide, or the OpenAPI spec.
Frequently asked questions
How do I customize the The Grand Atlantic - Cruise Dining Card template?
Open the template in the Renderly editor and replace its 30 customizable fields (such as Ship Photo) 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, 30 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.