AI book trailer maker: turn a blurb and cover into video
An AI book trailer turns your blurb and cover into a short video: narration, mood shots that end on the cover, music, and the title on screen.

An AI book trailer maker turns what you already have, the book's blurb and its cover, into a short promo video: a narrated hook, a few mood shots that suggest the story, a music bed, and the title on screen. With Sume you build one from documented steps: text to speech for the narration, image-to-video shots that can end on your cover, a generated music track, one Timeline 1.0 render that lays the shots and music under the voice, and a caption job for the title cards.
Facts come from Sume's Video generation, Timeline 1.0, Music Router, and Video captions docs and the Sume API reference, read on 2026-09-27; anything called current behavior is read from Sume's code. The narration, B-roll, and music pipeline is covered in Faceless video API; this post covers what a trailer adds.
What goes into an AI book trailer?
Use only text and art you have the rights to, such as your own blurb and cover. The generated shots are interpretations of your story, not your book's illustrations. Each piece maps to one call:
| Piece | What to send | Sume call |
|---|---|---|
| Narration | A short hook written from the blurb, as transcript | POST /v1/tts-1.0/generate |
| Mood shots | One prompt per shot, describing motion, camera angle, and light | POST /v1/videos |
| Cover shot | A mood still as first_frame and your cover as last_frame | POST /v1/videos |
| Music | A music brief; optionally the cover as image_url | POST /v1/music-router/generate |
| Assembly | Shots in order over the narration, music underneath | POST /v1/timeline-1.0/render |
| Title cards | Title, tagline, and release line as timed cues | POST /v1/video-captions |
How do I end the trailer on the book cover?
Send the cover in frame_images as the last_frame and describe the move into it. Current code refuses a last_frame without a first_frame, so also send a starting still you have rights to. Both images must be at public HTTPS URLs, and only models whose supported_frame_images on GET /v1/videos/models list last_frame accept it. Everything between the two frames is generated, so check the cover's lettering in the finished clip, and put the exact title on screen as a text card. Image-to-video: first and last frame lists the models.
curl -X POST https://api.sume.com/v1/videos \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: trailer-cover-shot-001" \
-d '{
"model": "seedance-2.5",
"prompt": "Slow push-in through a foggy harbor at night, lantern light, settling on the book cover",
"frame_images": [
{ "type": "image_url", "image_url": { "url": "https://example.com/harbor.jpg" }, "frame_type": "first_frame" },
{ "type": "image_url", "image_url": { "url": "https://example.com/cover.jpg" }, "frame_type": "last_frame" }
],
"aspect_ratio": "9:16",
"duration": 6
}'How do I make the narration and the music?
Narration and assembly work as in Faceless video API: TTS 1.0 voices the hook, with language set for a book that isn't in English, and one Timeline 1.0 render lays the shots over the narration, with the music as a soundtrack that duck_db dips under the voice. Timeline takes only your workspace's media.sume.com files, so read each shot's URL from GET /v1/jobs/{id}/result.
For the music, send the Music Router a brief with the mood, a tempo, two to four instruments, the length (“A 30-second track”), and “no spoken word”, since it plays under narration. Your cover can go in image_url as visual conditioning. There is no duration field, so check the length of the track you get.
How do I put the title and release date on screen?
Send the finished render's video_url to POST /v1/video-captions with cues: each cue has text, start, and end in seconds, and cues skip speech-to-text, so the words appear exactly as typed. cues, words, segments, and script_text are mutually exclusive, so one job carries either title cards or narration captions. Today a caption job refuses a source longer than 60 seconds, so keep a trailer you caption on Sume to 60 seconds.
curl -X POST https://api.sume.com/v1/video-captions \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: trailer-title-cards-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/trailer.mp4",
"cues": [
{ "text": "Some doors stay shut for a reason.", "start": 2, "end": 6 },
{ "text": "The Harbor Keeper", "start": 24, "end": 28 },
{ "text": "Out this October", "start": 28, "end": 30 }
]
}'What does an AI book trailer cost?
Each step is its own job, billed on its own, plus a 5.5% agent fee by default. Narration is $0.0475 per 1,000 characters, music is $0.125 per audio generation, and the render is listed at $0.10 per output minute. Shots are reserved on submit at the provider's list price × 1.25; each model's pricing_skus on GET /v1/videos/models has its rate. A caption job reserves a fixed amount for videos up to 60 seconds; confirm it in GET /v1/catalog. Rates are on API pricing.
Sources
Related posts
More in Use cases
- AI coloring page generator: from a prompt or a photo
Ask for black outlines on white with no shading, in a portrait size for your paper. Send a photo as a reference to turn it into a coloring page.
- AI fashion video generator API: editorial films, lookbooks
Make AI fashion editorial videos with the Sume API: run sume-fashion-editorial per look, queue a lookbook in bulk, or animate a cover still yourself.
- AI images for Facebook ads: sizes for Feed, Stories, Reels
Meta recommends 4:5 at 1440×1800 for Feed image ads and 9:16 at 1440×2560 for Stories and Reels. Make each size from one brief and one product photo.
- AI Instagram carousel post generator: same size, same style
Generate every carousel slide at one aspect ratio, 4:5 or 1:1, and reuse an approved slide as a style reference. Instagram's rules and an API recipe.
Written by Sume