Help & docs / Developers

Reverie Movies MCP server

Reverie's Model Context Protocol server lets an AI assistant plan, render and assemble films with a user's Reverie account. This page documents the protocol and all 54 tools. To use it yourself rather than build on it, see Connect an assistant or open it in ChatGPT.

Connecting

https://api.reveriemovies.com/mcp
  • Transport: Streamable HTTP (JSON-RPC over POST).
  • Sign-in: OAuth 2.1 with PKCE and dynamic client registration. Discovery is at /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server on api.reveriemovies.com; the scope is agent. Redirect URIs must be https (or localhost). The user signs in to Reverie and approves access; tokens are sent as Authorization: Bearer ….
  • Claude Code plugin: the reverie-claude marketplace bundles this server with a filmmaking skill (workflows, continuity and shot craft).
  • Accounts: every call acts as the signed-in user, on their projects and credits. Signing in creates an account with free starter credits.
  • Annotations: every tool has a title and readOnlyHint / destructiveHint. “Destructive” tools replace what a shot or character had (its image, end frame, video or cast) or delete something.

Spending: quote, then confirm

Planning and editing are free. Every tool that spends credits works in two calls, and the server enforces it:

  1. Call it without confirm. Nothing is spent; it returns a quote with credits_required, what and a quote_id.
  2. Show the user what it is and what it costs, and wait for their yes.
  3. Call it again with the same arguments plus confirm: true and the quote_id.

A quote is for one user, one tool, one target (a shot, character or project) and the settings that change what gets made (quality, model, resolution, audio, continuation, use_as, the lip-sync track, the transition style). A setting left out counts as its default. Quotes last an hour, work once, and must still cover the price. Anything else is refused with quote_required. Credits are bought on reveriemovies.com, never through the tools.

Errors

A tool that can't do what was asked returns an error object instead of a result. Its next_action says what to do about it:

{ "error": {
    "code": "quote_required",
    "message": "Spending credits needs a quote the user has approved: …",
    "next_action": "Call again without confirm to get a quote, …"
} }

Common codes: validation_failed, not_found, quote_required, insufficient_credits, continuation_shot.

Compatibility

The server address never changes, and tools are only ever added to. A tool is never renamed or removed, a parameter never changes type or becomes required, and an option is never withdrawn. New parameters are optional and default to the old behaviour. Results can gain fields but don't lose them.

Workflows

What the server tells an assistant when it connects (the instructions in its initialize response):

Reverie Movies turns ideas into finished AI films: short films, music videos and other cinematic videos. Before planning or rendering a film, read get_filmmaking_guide (free): the full workflows and the lessons from films made here. Spending: planning and editing are free. Renders, images, enhancements, extensions, voices, music, new transitions and export each return a quote first: tell the user what it is and what it costs, and call again with confirm=true and the quote_id only after they say yes. Pick the workflow from what the user has: 1. An idea: ideate_concepts (show the A/B/C cards) → refine_plan / advance_plan_stage → create_project_from_plan (free) → generate_character_image for the main characters → generate_clip_image for each scene's opening shot → render_clip each shot → export_movie. 2. A script: ideate_concepts with source_material and fidelity "faithful" (keeps its scenes, names and dialogue); then as in 1. 3. A song: create_project; start_upload + add_file (use_as audio_track); plan shots to its length with create_scene/create_clip; render; trim; lip_sync_clip each singing shot last; export_movie. 4. An existing film: list_projects → get_project, then edit, render what's missing, or export. Dialogue: settle the lines before any video. Voice them first with generate_voice_over and listen with the user. Then render talking scenes on kling-4.0 with each speaker's voice set (set_character_voice): one take of up to 30s per exchange, lines quoted in the prompt. Shape and sound: projects are 16:9 unless create_project gets aspect_ratio 9:16. Shots are silent unless render_clip gets with_audio true; ask. Check each rendered shot with view_shot_frames before building on it. Two shots in a row that start from the same still jump at the cut: make the second a continuation. Continuity: - create_clip with clip_type continuation starts on the previous shot's last frame. render_chain renders a run of them. - extend_clip makes a shot longer; set_end_frame (or generate_clip_image use_as end_frame) makes it end on a chosen picture; set_transition softens a cut. - Someone entering partway through a continuation needs an end frame showing them, or the model invents them. - Veo models add strangers to wide group shots and blend very different start and end framings into a double exposure: offer Kling, or split the shot. Keeping a character identical: a clean front-on portrait (attach_image a real photo if there is one); a still for each shot made with the shot's characters; kling-4.0, which uses the still and the portraits together (on other models, naming characters replaces the still); end frames on continuations; the same description in every prompt. The quote's notes say what will happen. Music: generate_music scores the film. Run it the film's length, time its sections to the shots ("[0:00-0:15] solo piano…"), describe the sound rather than naming artists. Quotes last an hour and work once. If a suitable image is already in the conversation, offer attach_image (free) first. Poll get_render_job_status for jobs. Credits are bought on reveriemovies.com.

Tools

Planning (free)

Returns Reverie's filmmaking guide: which tools to call in what order for an idea, a script, a song or dialogue; keeping shots continuous and characters identical; lessons from films made here (what wasted credits and how to avoid it); choosing models; and how spending works. Read it once before planning or rendering a film. Free.

No parameters.

Starts a film from an idea: a short film, music video, commercial, animated story or any other cinematic video. Use it when the user wants to make something but has no finished production plan. Generates three contrasting movie concepts from whatever taste signals are available — genre, mood, favourite films, a target runtime, or nothing at all — and creates a movie-plan draft at the concept stage holding them. Returns concept cards labelled A/B/C for easy reference. If the user has source material (a screenplay, story, or detailed notes), pass it as source_material with fidelity "faithful" — then one concept is derived directly from the source and later stages preserve its scenes, names, and dialogue. Never ask the user for a finished idea: call this early and let them react.

ParameterTypeNotes
preferencesobject
ParameterTypeNotes
genrestring
moodstring
reference_worksarray of string
audiencestring
formatone of: short, commercial, music_video, feature_outline
target_runtime_secondsinteger
free_textstring
source_materialobject
ParameterTypeNotes
textrequiredstring
fidelityrequiredone of: faithful, loose
draft_idstring

refine_plan

replaces or deletes

Applies a conversational instruction to a movie-plan draft at its current stage: pick a concept ("go with B"), merge ideas, or edit anything ("make the ending hopeful", "cut it to 60 seconds"). Returns the updated plan and a summary of what changed. This edits in place — it never advances the stage; use advance_plan_stage for that.

ParameterTypeNotes
draft_idrequiredstring
instructionrequiredstring

Develops a movie-plan draft to its next stage: a chosen concept becomes a story bible (synopsis, characters, visual style); a bible becomes a storyboard (scenes with per-clip video prompts). At the concept stage pass choose_concept ("A"/"B"/"C") unless one was already chosen via refine_plan. One successful call reaches the bible stage, which is enough for create_project_from_plan; a second call reaches storyboard, at which point calling create_project_from_plan again adds scenes and clips to the same project.

ParameterTypeNotes
draft_idrequiredstring
choose_conceptone of: A, B, C

Returns a movie-plan draft in full (stage plus all filled sections). Use it to answer questions about the plan's current content.

ParameterTypeNotes
draft_idrequiredstring

Lists the user's movie-plan drafts newest-first with id, title, stage, and whether they've been built into a project — use it to resume an earlier idea instead of starting over.

ParameterTypeNotes
limitinteger

Converts a movie-plan draft into a real Reverie project: characters (available from the bible stage onward), plus scenes and clips with their generation prompts once the storyboard exists. Free — no video is rendered yet. Returns the project id and created structure so render_clip and generate_character_image/generate_clip_image can reference characters/clips directly. Calling this again on an already-built draft extends the same project (adds scenes/clips once the storyboard develops) rather than creating a new one; each draft revision only extends once — refine_plan first to build a variant.

ParameterTypeNotes
draft_idrequiredstring
project_titlestring

Projects, scenes and shots

list_projects

read-only

Lists the user's movie projects, newest first, with id, title, scene/clip counts, render progress (how many clips have finished videos), and last activity. Call this first when the user refers to existing work ("my space movie") to find the right project id.

ParameterTypeNotes
limitinteger

get_project

read-only

Returns one movie project in full: scenes in narrative order, each scene's clips in order (id, title, prompt, duration, whether an image and a rendered video exist), characters (with slugs and whether reference images exist), and in-flight render/export jobs. This is the tool to understand current state before modifying, rendering, or exporting anything.

ParameterTypeNotes
project_idrequiredstring

Start a new, empty film — for when the user already has their material (a song for a music video, a screenplay, a storyboard or a shot list) and wants to go straight to production without the ideation flow. Free. Then build it with create_scene, create_clip and create_character, and bring in their files with start_upload + add_file.

ParameterTypeNotes
titlerequiredstring
loglinestring
themeone of: cinematic, documentary, commercial, artistic, minimalist, vintage
styleone of: photorealistic, animated, illustrated, mixed-media
moodone of: energetic, calm, dramatic, uplifting, mysterious, professional
aspect_ratioone of: 16:9, 9:1616:9 landscape (the default) or 9:16 vertical for TikTok, Reels and Shorts. Set it now: shots are made in this shape.
resolutionone of: 720p, 1080p

Change the film's title, logline, or overall look: theme (cinematic, documentary, commercial, artistic, minimalist, vintage), style (photorealistic, animated, illustrated, mixed-media), mood (energetic, calm, dramatic, uplifting, mysterious, professional), aspect_ratio (16:9 or 9:16), resolution (720p or 1080p). Free. A shot whose shape was set in the editor keeps it; render quotes say each shot's shape. The look applies to what's generated from now on — it doesn't change images or videos that already exist; say so if that matters.

ParameterTypeNotes
titlestring
loglinestring
themestring
stylestring
moodstring
aspect_ratiostring
resolutionstring
project_idrequiredstringThe project, from list_projects or create_project.

Add a scene to the storyboard. It lands at the end; use reorder_scenes to place it elsewhere. Free, and creates no shots — follow with create_clip for each shot in it.

ParameterTypeNotes
titlerequiredstring
descriptionstring
purposestringThe scene's narrative job — e.g. setup, turn, climax, resolution.
project_idrequiredstringThe project, from list_projects or create_project.

Change a scene's title, description, narrative purpose, plot or action. Free and reversible — apply it and say what changed.

ParameterTypeNotes
scene_idrequiredstring
titlestring
descriptionstring
purposestring
plotstring
actionstring
project_idrequiredstringThe project, from list_projects or create_project.

delete_scene

replaces or deletes

Permanently remove a scene. Destructive and not undoable — confirm with the user in words first, and tell them what happens to the shots inside it.

ParameterTypeNotes
scene_idrequiredstring
project_idrequiredstringThe project, from list_projects or create_project.

Set the narrative order of scenes. Pass every scene id, first to last.

ParameterTypeNotes
scene_idsrequiredarray of string
project_idrequiredstringThe project, from list_projects or create_project.

Add a shot to the project. Pass scene_id to place it at the end of that scene; omit it for a loose clip. Free — it creates the shot and its prompt, it does not render anything. A continuation is linked to the shot before it and starts on its last frame; the result says which shot and whether that frame is ready yet (it is once that shot has a video).

ParameterTypeNotes
scene_idstring
titlestring
promptrequiredstringWhat happens in the shot — the video generation prompt.
duration_secondsnumber
charactersarray of stringWho appears in the shot, by slug or name from get_project. Replaces the shot's list; [] means nobody. Renders use these for character consistency.
clip_typeone of: continuation, hard_cut, intercutcontinuation (default) carries straight on from the shot before: it starts on that shot's last frame, so don't generate a still for it. hard_cut starts fresh on its own image — a new angle, place or moment. intercut bridges two existing shots: it starts on the last frame of after_clip_id and ends on the first frame of the shot after it. The first shot of a scene is always its opening shot.
after_clip_idstringPlace the new shot straight after this one (in its scene). Required for an intercut; otherwise it goes at the end of scene_id.
project_idrequiredstringThe project, from list_projects or create_project.

Change one shot: its title, its prompt (what happens), its image_prompt (how the still looks), its duration, which scene it belongs to, where it sits on the timeline (trims and pin), or whether its own sound plays (audio_muted). Free and immediately reversible — apply it and tell the user what changed rather than asking permission first. Pass scene_id: null to pull a clip out of its scene. Editing the prompt does NOT re-render an existing video; offer render_clip separately if they want to see it. To shorten a rendered shot, trim it; don't change duration_seconds, which is the length to render. Trimming or pinning moves the shots after it, so any lip-sync on them will be out (get_project's lip_sync_out_by_seconds): trim before lip-syncing.

ParameterTypeNotes
clip_idrequiredstring
titlestring
descriptionstring
promptstring
image_promptstring
duration_secondsnumber
scene_idstringA scene id to move the clip into, or null to unassign it.
audio_mutedbooleantrue leaves the shot's own sound (its render's dialogue or effects) out of the film; false puts it back. Shots play their own sound by default.
charactersarray of stringWho appears in the shot, by slug or name from get_project. Replaces the shot's list; [] means nobody. Renders use these for character consistency.
clip_typeone of: continuation, hard_cut, intercutcontinuation: start on the last frame of the shot before. hard_cut: start fresh on the shot's own image (then generate_clip_image can make one). intercut: bridge the shots either side — start on the last frame before, end on the first frame after.
trim_end_secondsnumberSeconds cut off the end of the shot, as the editor's trim does; 0 removes the trim. The shots after it move up by the change, unless pinned.
trim_start_secondsnumberSeconds cut off the start of the shot; 0 removes the trim. The shot keeps its slot and shows from later in it, leaving a gap before it that shows black; to shorten a cut, usually trim the end of the shot before instead.
pinned_at_secondsnumberPin the shot's start to a fixed time in the film (seconds). Shots after a pinned one follow it.
unpinbooleantrue unpins the shot, so it follows the shot before again.
project_idrequiredstringThe project, from list_projects or create_project.

delete_clip

replaces or deletes

Permanently remove a shot and any video rendered for it. Destructive and not undoable — always confirm with the user in words before calling, every time, even if they asked for it a moment ago.

ParameterTypeNotes
clip_idrequiredstring
project_idrequiredstringThe project, from list_projects or create_project.

Reorder shots. The clips you pass are rearranged among the positions they already occupy, in the order given; every clip you don't pass stays exactly where it is. So swapping two shots is a two-id call, and passing every clip sets the whole running order.

ParameterTypeNotes
clip_idsrequiredarray of string
project_idrequiredstringThe project, from list_projects or create_project.

Add a character to the cast. Free; generate_character_image gives them a face afterwards, or a real photo of them can be their portrait (best for a real person, costume or mascot that must never change). To keep them identical across shots: pass their slug in render_clip's characters on a model that takes references (kling-4.0, veo-3.1-generate-001), give continuations an end frame showing them, keep them large in frame, and look at each finished shot before building on it.

ParameterTypeNotes
namerequiredstring
rolestringprotagonist, antagonist, supporting, or minor.
descriptionstring
appearancestringPhysical description — this is what portraits and shots are generated from, so make it concrete and visual.
project_idrequiredstringThe project, from list_projects or create_project.

Change a character's name, role, description, appearance or personality. Free and reversible. Changing appearance does not regenerate an existing portrait — offer generate_character_image if they want to see the change.

ParameterTypeNotes
character_idrequiredstring
namestring
rolestring
descriptionstring
appearancestring
personalitystring
project_idrequiredstringThe project, from list_projects or create_project.

set_character_voice

replaces or deletes

Give a character their speaking voice for Kling 4.0 renders: from then on, when they're named in a kling-4.0 shot they speak its dialogue in this voice, the same in every shot. audio_track_id is a project audio track (from get_project, add_file or generate_voice_over) of 5 to 30 seconds with just that one person speaking clearly — several of their lines joined works well. Free; takes a few seconds. Setting it again replaces the voice; the old one comes back only by setting it again from its original track, so check before replacing a voice the user already has.

ParameterTypeNotes
characterrequiredstringThe character's slug or name, from get_project.
audio_track_idrequiredstring
project_idrequiredstringThe project, from list_projects or create_project.

make_character_views

replaces or deletescosts credits · quoted first

Make reference views of a character from their portrait: three_quarter (head and shoulders, turned), profile (side on) and full_body (head to toe). They join the character's gallery; the portrait stays. Renders that take several images of a character (Kling 4.0) can then see them from more than the front, so faces hold when people turn or leave and come back. Needs a portrait first. views picks some (default all three); a view made again replaces the old one. Costs credits per view: call it once and you'll get a quote to show the user; only after a clear yes call again with confirm=true. Look at the views when they're ready and redo any that don't match the portrait. A confirm must carry the quote's quote_id (the server refuses one without it).

ParameterTypeNotes
characterrequiredstringThe character's slug or name, from get_project.
viewsarray of one of: three_quarter, profile, full_body
confirmbooleantrue only after the user has approved the quote
project_idrequiredstringThe project, from list_projects or create_project.
quote_idstringThe quote_id of the quote the user approved; required with confirm=true

delete_character

replaces or deletes

Permanently remove a character from the cast. Destructive and not undoable — confirm with the user in words first, and mention which scenes and shots they appear in.

ParameterTypeNotes
character_idrequiredstring
project_idrequiredstringThe project, from list_projects or create_project.

set_scene_cast

replaces or deletes

Set who appears in a scene — the continuity record shots and renders draw on. Replaces the scene's cast with exactly the characters given (by slug or name); [] clears it. Free.

ParameterTypeNotes
scene_idrequiredstring
charactersrequiredarray of string
project_idrequiredstringThe project, from list_projects or create_project.

Images and video

generate_character_image

replaces or deletescosts credits · quoted first

Generates a portrait for one character — a still image so the user can see the character before the storyboard is even written. Characters exist as soon as create_project_from_plan is called at the bible stage. Reverie makes the image and, when it finishes, sets it as the character's portrait and reference for renders. If a suitable image is already in the conversation (one you made, or the user's), offer attach_image instead — it's free. Same cost as generate_clip_image, and quoted and confirmed the same way. Returns a job; poll get_render_job_status for the finished image.

ParameterTypeNotes
character_idrequiredstring
promptrequiredstring
confirmbooleantrue only after the user has approved the quote
quote_idstringThe quote_id of the quote the user approved; required with confirm=true

generate_clip_image

replaces or deletescosts credits · quoted first

Generates a look for one clip — a still image, typically the opening shot of a scene — so the user can see the visual direction before committing to a video render. Cheap and fast (a few seconds, a handful of credits) compared to render_clip. When it finishes it becomes the clip's image (its opening frame for render_clip) — or, with use_as end_frame, the image the clip's video ends on (any clip, continuations included). If a suitable image is already in the conversation (one you made, or the user's), offer attach_image instead — it's free. Returns a job; poll get_render_job_status for the finished image. If the clip is the opening shot of its scene, applying the image also sets that scene's setting image and seeds future clips added to the scene. Costs credits: call without confirm for a quote, show it to the user, and only after they approve call again with confirm=true and the quote_id.

ParameterTypeNotes
clip_idrequiredstring
promptrequiredstring
use_asone of: look, end_framelook (default): the shot's start image. end_frame: the image its video should end on (any shot, continuations included), so set_end_frame isn't needed.
confirmbooleantrue only after the user has approved the quote
quote_idstringThe quote_id of the quote the user approved; required with confirm=true

attach_image

replaces or deletes

Free. Puts an image the user already has on a character (as their portrait, used as reference in renders) or a shot (as its image, which render_clip starts from) — one you made earlier in this conversation, one the user attached, or a public https link. Before quoting generate_character_image or generate_clip_image, check whether a suitable image is already in the conversation; if so, offer this instead, since it costs nothing. Pass exactly one of character_id or clip_id. Doesn't apply to a continuation shot, which starts on the previous shot's last frame.

ParameterTypeNotes
character_idstring
clip_idstring
imageobjectAn image file from this conversation.
ParameterTypeNotes
download_urlrequiredstring
file_idrequiredstring
mime_typestring
file_namestring
image_urlstringA public https link to the image, when it isn't a file in this conversation.

Every image a shot (clip_id) or a character portrait (character_id) has had, oldest first, with the current one marked. Use it when the user wants an earlier look back — 'the previous one was better', 'go back to the first portrait'. Pass exactly one of clip_id or character_id.

ParameterTypeNotes
clip_idstring
character_idstring
project_idrequiredstringThe project, from list_projects or create_project.

Switch a shot or a character portrait back to one of its earlier takes from list_image_takes. Free and instant — always prefer this over generating again when the user wants a look they've already had. Pass exactly one of clip_id or character_id, plus the take_id.

ParameterTypeNotes
clip_idstring
character_idstring
take_idrequiredstring
project_idrequiredstringThe project, from list_projects or create_project.

set_end_frame

replaces or deletes

Choose the image a shot's video should finish on — the clip editor's "last frame". From another shot's frame (from_clip_id, frame first|last: e.g. end on the first frame of a later shot so they meet), from one of this shot's image takes (take_id, from list_image_takes), or clear: true. To make a new image for it, use generate_clip_image with use_as end_frame. Free; takes effect on the next render.

ParameterTypeNotes
clip_idrequiredstring
from_clip_idstring
frameone of: first, lastWhich frame of from_clip_id — required with it.
take_idstring
clearboolean
project_idrequiredstringThe project, from list_projects or create_project.

render_clip

costs credits · quoted first

Generates the AI video for one shot of a project: text-to-video, or image-to-video from the shot's still or the previous shot's last frame, with characters kept consistent from their portraits. State intent, not mechanics: a quality tier ("preview" fast/cheap, "standard" default, "premium" best fidelity), optional with_audio, optional continue_from to seamlessly continue motion from another clip's last rendered frame (works across scenes), and optional character slugs whose reference images should guide the shot. Reverie picks the model and satisfies all technical constraints. Costs credits — call without confirm first to get a quote, show it to the user, and only after they approve call again with confirm=true and the quote's quote_id (the server refuses a confirm without one).

ParameterTypeNotes
clip_idrequiredstring
qualityone of: preview, standard, premium
with_audiobooleanGenerate sound (ambience, effects, speech). Off by default, so leave it out and the shot is silent; true costs 50% more.
continue_fromobject
ParameterTypeNotes
clip_idrequiredstring
charactersarray of stringOptional character slugs whose portraits guide the render, on models that take references (the model list says which; kling-3.0-pro and Veo 3.1 Lite don't). On every model but kling-4.0 the render starts from a new picture made from the portraits instead of the shot's still; the still stays on the shot, so leave characters out to render from it. Not sent for a continuation or intercut, which starts from the linked shot's last frame, except on kling-4.0; to hold a character there, give the shot an end frame showing them. The quote's notes say when references won't be used.
prompt_overridestring
modelone of: veo-3.1-fast-generate-001, veo-3.1-generate-001, veo-3.1-lite-generate-001, kling-3.0-standard, kling-3.0-pro, kling-4.0, seedance-2.0-fast, seedance-2.0-pro, seedance-2.5, minimax-h3, minimax-h3-max, gemini-omni-1.1-flash, wan-3.0Advanced override: leave it out unless the user asks for a particular model; the quality tier already picks one. veo-3.1-fast-generate-001 (Google Veo 3.1 Fast — the editor's default; quick, with sound; 4/6/8s; takes character references); veo-3.1-generate-001 (Google Veo 3.1 — highest quality, with sound; 4/6/8s; takes character references); veo-3.1-lite-generate-001 (Google Veo 3.1 Lite — cheapest Veo, with sound; no reference images; 4/6/8s; no character references); kling-3.0-standard (Kling 3.0 Standard — good value, any length 3–15s; any length 3–15s; no character references); kling-3.0-pro (Kling 3.0 Pro — sharper motion, any length 3–15s; any length 3–15s; no character references); kling-4.0 (Kling 4.0 — whole scenes up to 30s with sound always on; characters named for the shot speak their dialogue in their own voices (set_character_voice), so quote the lines in the prompt; any length 3–30s; takes character references); seedance-2.0-fast (Seedance 2.0 Fast — quicker than Pro, 5 or 10s; won't start from photorealistic people (fal's real-person check), so use Veo or Kling for those; 5/10s; takes character references); seedance-2.0-pro (Seedance 2.0 Pro — 5 or 10s; won't start from photorealistic people (fal's real-person check), so use Veo or Kling for those; 5/10s; takes character references); seedance-2.5 (Seedance 2.5 — long shots, any length 4–30s; won't start from photorealistic people (fal's real-person check), so use Veo or Kling for those; any length 4–30s; takes character references); minimax-h3 (MiniMax H3 — cheap drafts at 480p/768p, or up to 4k; 5–15s; may add ambient sound, can't be chosen; any length 5–15s; no character references); minimax-h3-max (MiniMax H3 Max — follows prompts more closely; 1–15s; adds ambient sound, can't be chosen; any length 1–15s; no character references); gemini-omni-1.1-flash (Google Gemini Omni Flash — sound always on, 3–10s, up to 4k; any length 3–10s; takes character references); wan-3.0 (Wan 3.0 — good value, any length 2–30s, sound optional; any length 2–30s; takes character references). Duration is rounded to the nearest length the model renders.
resolutionone of: 480p, 720p, 1080p
confirmbooleantrue only after the user has approved the quote
quote_idstringThe quote_id of the quote the user approved; required with confirm=true

render_chain

costs credits · quoted first

Renders a run of continuation shots in order, for a continuous move across several shots: each shot starts from the last frame of the one before when its turn comes. Pass clip_ids in order; each after the first must be the continuation of the one before it, and the first must be ready to render now. Quotes the whole run as one total. After the user approves, Reverie renders the first shot, waits for it to finish, starts the next, and so on, stopping at the first failure (later shots stay unrendered; only finished shots are charged). Check each shot with view_shot_frames as it lands. Costs credits: call without confirm for the quote, show it to the user, and only after they approve call again with confirm=true and the quote_id.

ParameterTypeNotes
clip_idsrequiredarray of stringThe shots, in order: 2 to 20.
qualityone of: preview, standard, premium
modelone of: veo-3.1-fast-generate-001, veo-3.1-generate-001, veo-3.1-lite-generate-001, kling-3.0-standard, kling-3.0-pro, kling-4.0, seedance-2.0-fast, seedance-2.0-pro, seedance-2.5, minimax-h3, minimax-h3-max, gemini-omni-1.1-flash, wan-3.0Advanced override for every shot in the run; leave it out unless the user asks for a particular model.
resolutionone of: 480p, 720p, 1080p
with_audiobooleanGenerate sound (ambience, effects, speech). Off by default, so leave it out and the shot is silent; true costs 50% more.
confirmbooleantrue only after the user has approved the quote
quote_idstringThe quote_id of the quote the user approved; required with confirm=true

extend_clip

replaces or deletescosts credits · quoted first

Make a rendered shot 7 seconds longer, as the timeline's Extend does: Veo continues the shot's own video with what you describe, and the longer video replaces it (the current one stays a video take). Costs credits — call without confirm for a quote, show it, and only call with confirm: true after a clear yes. A confirm must carry the quote's quote_id (the server refuses one without it).

ParameterTypeNotes
clip_idrequiredstring
promptrequiredstringWhat happens in the extra seconds.
qualityone of: fast, bestfast (default) or best — Veo 3.1 Fast or Veo 3.1.
confirmbooleantrue only after the user has approved the quote
project_idrequiredstringThe project, from list_projects or create_project.
quote_idstringThe quote_id of the quote the user approved; required with confirm=true

Every video a shot has had — its renders and enhancements, oldest first, with which is playing. Use before use_video_take, e.g. when the user wants to undo an enhancement or go back to an earlier render.

ParameterTypeNotes
clip_idrequiredstring
project_idrequiredstringThe project, from list_projects or create_project.

use_video_take

replaces or deletescosts credits · quoted first

Make one of a shot's earlier videos (from list_video_takes) the one that plays — always prefer this over rendering again. Free and instant, unless a cross-dissolve or motion bridge touches the shot: those are remade from the new video at 1 credit each, so then it returns a quote first — show it and call again with confirm: true after a yes. A confirm must carry the quote's quote_id (the server refuses one without it).

ParameterTypeNotes
clip_idrequiredstring
take_idrequiredstring
confirmbooleantrue only after the user has approved the quote
project_idrequiredstringThe project, from list_projects or create_project.
quote_idstringThe quote_id of the quote the user approved; required with confirm=true

remove_clip_video

replaces or deletes

Remove a shot's video, as the clip card's delete-video does: the shot goes back to unrendered (its transitions go too). The video itself is kept as a take, so use_video_take can bring it back. Confirm in words first.

ParameterTypeNotes
clip_idrequiredstring
project_idrequiredstringThe project, from list_projects or create_project.

restyle_clip

replaces or deletescosts credits · quoted first

Give a rendered shot a new look over the whole shot, keeping its motion and framing. prompt describes the look; character (optional, a slug or name) uses their portrait as the visual reference. Costs credits: call without confirm for the quote, tell the user, and only after a clear yes call again with confirm=true and the quote's quote_id. Takes a few minutes; the result replaces the shot's video automatically (its transitions reset) and you'll be told — the previous version stays available via list_video_takes.

ParameterTypeNotes
project_idrequiredstringThe project, from list_projects or create_project.
clip_idrequiredstring
confirmbooleantrue only after the user has approved the quote
quote_idstringThe quote_id of the quote the user approved; required with confirm=true
promptrequiredstringThe new look, e.g. "hand-drawn anime", "1970s film stock".
characterstring

edit_clip

replaces or deletescosts credits · quoted first

Change one specific thing in a rendered shot and keep the rest. prompt is the instruction, e.g. "make the jacket red", "remove the lamp", "make it night". Shots of up to 10 seconds; cheaper than restyle_clip. Costs credits: call without confirm for the quote, tell the user, and only after a clear yes call again with confirm=true and the quote's quote_id. Takes a few minutes; the result replaces the shot's video automatically (its transitions reset) and you'll be told — the previous version stays available via list_video_takes.

ParameterTypeNotes
project_idrequiredstringThe project, from list_projects or create_project.
clip_idrequiredstring
confirmbooleantrue only after the user has approved the quote
quote_idstringThe quote_id of the quote the user approved; required with confirm=true
promptrequiredstringWhat to change.

set_transition

costs credits · quoted first

Set how a shot is entered from the shot before it: 'hard_cut' (a straight cut), 'cross_dissolve' (a blend between the two) or 'motion_bridge' (generated in-between frames that carry the motion across). A hard cut, or switching to a transition this shot already has (transitions_ready in get_project), is free and instant. Making a new cross-dissolve or motion bridge costs 1 credit, needs both shots rendered, takes a minute or so, and is applied automatically when it's ready — you'll be told. Like everything that spends, it's quoted first: call without confirm, and only after the user says yes call again with confirm: true. duration_ms (cross-dissolve only, 200–2000, default 500) and regenerate:true make a fresh one. A confirm must carry the quote's quote_id (the server refuses one without it).

ParameterTypeNotes
clip_idrequiredstring
stylerequiredone of: hard_cut, cross_dissolve, motion_bridge
duration_msinteger
regenerateboolean
confirmbooleantrue only after the user has approved the quote
project_idrequiredstringThe project, from list_projects or create_project.
quote_idstringThe quote_id of the quote the user approved; required with confirm=true

Audio and files

Get a link to upload one of the user's files — a song, a vocal stem, dialogue, a photo, a video — into a project. Free. Returns an upload_url to PUT the file's bytes to (with the headers given, within the hour) and an upload_id; then call add_file to say where it goes. Images up to 10 MB; audio and video up to 300 MB.

ParameterTypeNotes
project_idrequiredstringThe project, from list_projects or create_project.
file_namerequiredstringThe file's name, with its extension.
content_typestringIts MIME type, if known.

add_file

replaces or deletes

Put a file uploaded with start_upload where the user means it to go — the same places the editor's uploads go. use_as: audio_track (a song or sound, added as a track at the start of the film — then update_audio_track to place, trim or fade it, and lip_sync_clip to sync a shot to it), character_portrait (an image as a character's portrait, which renders use as reference; character_id), shot_image (an image as a shot's start image; clip_id; not for continuations), end_frame (an image the shot's video finishes on; clip_id), scene_setting (an image as a scene's setting; scene_id), shot_video (a video as the shot's video; clip_id — the earlier one stays a take) or likeness_reference (a photo of a real person the character is; character_id). Generated people are otherwise always stylised and unidentifiable; a likeness_reference makes that character's portraits and shots photorealistic, as themselves — so pass consent=true only when the user has said the photo is of them, or of someone who has agreed to appear, and never on your own judgement. Free.

ParameterTypeNotes
project_idrequiredstringThe project, from list_projects or create_project.
upload_idrequiredstring
use_asrequiredone of: audio_track, character_portrait, shot_image, end_frame, scene_setting, shot_video, likeness_reference
consentbooleanlikeness_reference only: true when the user has said the photo is of them, or of someone who agreed to appear.
file_namestringA name to show for it, e.g. the song's title.
clip_idstring
character_idstring
scene_idstring

Change how an audio track plays: start_time_seconds (where it starts on the film's timeline; negative starts it before the film, so it plays from partway in), volume (0–1), muted, fade_in_seconds, fade_out_seconds, trim_start_seconds / trim_end_seconds (cut from the start or end of the file). Free. Pass only what changes. Track ids are in get_project's audio_tracks. Add a track with start_upload and add_file (use_as audio_track).

ParameterTypeNotes
track_idrequiredstring
start_time_secondsnumber
volumenumber
mutedboolean
fade_in_secondsnumber
fade_out_secondsnumber
trim_start_secondsnumber
trim_end_secondsnumber
project_idrequiredstringThe project, from list_projects or create_project.

delete_audio_track

replaces or deletes

Remove an audio track from the film. Confirm in words first.

ParameterTypeNotes
track_idrequiredstring
project_idrequiredstringThe project, from list_projects or create_project.

Set the order of the audio tracks (their stacking in the audio panel). Pass every track id, in the new order.

ParameterTypeNotes
track_idsrequiredarray of string
project_idrequiredstringThe project, from list_projects or create_project.

generate_voice_over

costs credits · quoted first

Speak a line in a chosen voice (ElevenLabs) and add it to the project as an audio track — for narration or a character's dialogue, and ready for lip sync (lip_sync_clip with the new track's id). text is the words to speak, up to 2000 characters; it can carry expressive tags like [whispers], [laughs], [sighs] or [pause]. voice is one of the preset voices. speed runs 0.7 to 1.2 (1 is normal). start_time_seconds places it on the timeline (default 0) — to start it with a shot, use that shot's start time from get_project. Costs 1 credit per 200 characters: call it once and you'll get a quote to show the user; only after a clear yes call again with confirm=true. A confirm must carry the quote's quote_id (the server refuses one without it).

ParameterTypeNotes
textrequiredstring
voicerequiredone of: Maya, Arjun, Serene, Bernard, Billy, Mark, Clint, Mabel, Chad, Leslie, Eleanor, Elias, Elliot, Grungle, Brodie, Sandra, Kirk, Kylie, Lara, Lisa, Malachi, Marlene, Martin, Miriam, Monster, Paula, Pip, Rusty, Ragnar, Xylar, Maggie, Jack, Katie, Noah, James, Rina, Ella, Mariah, Frank, Claudia, Niki, Vincent, Kendrick, Myrna, Tom, Wanda, Benjamin, Kiana, Rachel
speednumber
start_time_secondsnumber
namestringThe track's name; one is made from the voice and line if left out.
confirmbooleantrue only after the user has approved the quote
project_idrequiredstringThe project, from list_projects or create_project.
quote_idstringThe quote_id of the quote the user approved; required with confirm=true

generate_music

costs credits · quoted first

Compose original music (Google Lyria) from a brief and add it to the project as an audio track — a score for the film, or a song. prompt is the brief: genre, instruments, mood, tempo and how it builds; time its sections to the film's moments, e.g. "[0:00-0:15] solo felt piano, curious. [0:15-0:35] pizzicato strings join…" — get_project gives each shot's start time. Describe the sound; never name an artist or quote lyrics you didn't write (it refuses those). duration_seconds is its length, 5 to 180 — usually the film's runtime; a longer piece is cut to length with a fade. instrumental defaults to true; false lets it sing (lyrics can go in the brief). start_time_seconds places it on the timeline (default 0). Costs 5 credits for up to 30 seconds, 10 for longer: call it once and you'll get a quote to show the user; only after a clear yes call again with confirm=true. Takes about half a minute. A confirm must carry the quote's quote_id (the server refuses one without it).

ParameterTypeNotes
promptrequiredstring
duration_secondsrequirednumber
instrumentalboolean
start_time_secondsnumber
namestringThe track's name; one is made from the brief if left out.
confirmbooleantrue only after the user has approved the quote
project_idrequiredstringThe project, from list_projects or create_project.
quote_idstringThe quote_id of the quote the user approved; required with confirm=true

lip_sync_clip

replaces or deletescosts credits · quoted first

Re-sync the mouths in a rendered shot to an audio track (audio_track_id, from get_project or add_file). By default only the part of the track that plays during this shot; whole_track: true uses all of it. A vocals-only track works best. quality: standard (default) or best — sync.so's sync-3, closer on faces at about 3x the price; use it for dialogue close-ups. Lip sync is most convincing on a close-up whose shot was rendered with the mouth closed. Costs credits: call without confirm for the quote, tell the user, and only after a clear yes call again with confirm=true and the quote's quote_id. Takes a few minutes; the result replaces the shot's video automatically (its transitions reset) and you'll be told — the previous version stays available via list_video_takes.

ParameterTypeNotes
project_idrequiredstringThe project, from list_projects or create_project.
clip_idrequiredstring
confirmbooleantrue only after the user has approved the quote
quote_idstringThe quote_id of the quote the user approved; required with confirm=true
audio_track_idrequiredstring
whole_trackboolean
qualityone of: standard, best

add_sound_effects

replaces or deletescosts credits · quoted first

Generate sound for a rendered shot from prompt and bake it into the shot's video. Costs credits: call without confirm for the quote, tell the user, and only after a clear yes call again with confirm=true and the quote's quote_id. Takes a few minutes; the result replaces the shot's video automatically (its transitions reset) and you'll be told — the previous version stays available via list_video_takes.

ParameterTypeNotes
project_idrequiredstringThe project, from list_projects or create_project.
clip_idrequiredstring
confirmbooleantrue only after the user has approved the quote
quote_idstringThe quote_id of the quote the user approved; required with confirm=true
promptrequiredstringThe sounds, e.g. "rain on a tin roof, distant thunder".

Jobs, checking shots, credits and export

Checks one or more render/export jobs. Returns status (queued/running/done/failed), progress percent, the video URL when completed, and a structured error when failed. Batch your polling: pass all outstanding job ids in one call and wait poll_after_seconds between calls.

ParameterTypeNotes
job_idsrequiredarray of string

Shows you a rendered shot: one image of 2 to 8 frames taken evenly through its video, first to last, with the time of each. Use it to check a shot before building on it: that the characters and objects look right, nothing unexpected has appeared, and a continuation picks up where the shot before ended. Free.

ParameterTypeNotes
clip_idrequiredstring
countintegerHow many frames, 2 to 8 (default 4). More than 4 are laid out in two rows.

cancel_job

replaces or deletes

Cancels a queued or running render job. Use it when the user changes their mind after confirming.

ParameterTypeNotes
job_idrequiredstring

Returns the user's current credit balance and current pricing (credits per 8 seconds of video by quality tier). Use it before quoting large renders so you don't propose something the user can't afford.

No parameters.

export_movie

costs credits · quoted first

Assembles a project's rendered clips (in narrative order, with transitions and audio) into the final downloadable movie file — this is the step that produces the movie; rendering alone leaves individual clips. Costs 1 credit, charged when the film is ready: quote first like any spend. Fails if clips are still un-rendered — check get_project first. Returns a job; poll get_render_job_status for the finished movie's URL.

ParameterTypeNotes
project_idrequiredstring
confirmbooleantrue only after the user has approved the quote
quote_idstringThe quote_id of the quote the user approved; required with confirm=true