action_analyze_audio
ChatGPTMeasure an audio or video layer's file: tempo and beat grid with residuals, the first downbeat (with confidence), per-beat band energy, sound/silence segments and loudness. Read-only and free; up to 300 s per call. Only reads an audio file from the authenticated user's library or the bundled catalog; it does not change the project or consume credits.
action_capture_website
ChatGPTLoad a public website in a real browser, screenshot it as an image layer (saved to the asset library), and extract its live brand profile: page colors, fonts, title/description, hero copy, and logo candidate URLs. Saves the capture in the authenticated user's asset library and optionally adds it to the project.
action_dub_audio
ChatGPTDub audio to another language via ElevenLabs AI voice cloning. Creates a dubbed audio layer and mutes the original. Consumes plan AI credits, adds dubbed audio, and mutes the source layer in the saved project.
action_find_assets
ChatGPTSearch the user's whole asset library (uploads, generated and imported media) by file name and media type. Returns names, kinds, durations and exact URLs, and says which files are already in this project. Read-only and free. Only searches the authenticated user's asset library by file name; it does not change the project or consume credits.
action_find_background_music
ChatGPTPick a bundled, zero-cost synthetic background music bed and add it as a loopable audio layer with sensible volume, fade, and ducking defaults. Adds a bundled zero-credit music layer to the saved public-preview project.
action_find_brand_assets
ChatGPTLook up a company brand by domain (Brandfetch): import its official logo (usually transparent) to the asset library as an image layer, and return the brand colors, fonts, and description for on-brand compositions. Imports a matching brand asset and adds it to the saved public-preview project.
action_find_stock_image
ChatGPTSearch real stock photography/illustrations (Lummi), import the best match to the asset library, and add it as an image layer with attribution. Imports a matching image and adds it to the saved public-preview project.
action_generate_background_music
ChatGPTGenerate licensed instrumental background music, save it to the asset library, and add it as a music audio layer with sensible volume, fade, loop, and ducking defaults. Consumes plan AI credits and adds generated music to the saved public-preview project.
action_generate_captions
ChatGPTTranscribe audio/video to synced word-level captions using Whisper AI. Creates a captions layer. Consumes plan AI credits and adds captions to the saved public-preview project.
action_generate_image
ChatGPTGenerate an image from a text prompt using AI. The result is saved to the asset library and added as an image layer. Consumes plan AI credits and adds the generated image to the saved public-preview project.
action_generate_speech
ChatGPTSynthesize text into speech via ElevenLabs TTS. Replaces the source audio layer content. Consumes plan AI credits and replaces the selected audio layer content in the saved project.
action_generate_video
ChatGPTGenerate a video from a text prompt using Seedance 2.0 AI, optionally conditioned on pinned start/end frames OR reference images/videos/audio (character, product, motion, style). Creates a video layer. Consumes plan AI credits and adds the generated video to the saved public-preview project.
action_synthesize_score
ChatGPTSynthesize hits, booms, whooshes, risers and UI ticks at exact project times into one sound-effects layer (WAV, sample-accurate, so a hit at a cut is heard on that frame). Free and instant; it never ducks the music. Saves a synthesized sound-effects file in the authenticated user's asset library and adds an audio layer or overwrites the audio source, timing and settings of an existing audio layer with the same name in the saved public-preview project; it consumes no credits.
action_template_add_captions
ChatGPTOne-shot "Auto Captions Generator" template. Upload a video and get accurate auto-generated captions in seconds. Runs the full template headlessly: generates the required media server-side and lands the composed, editable layers in the project. Consumes plan AI credits and updates project settings and layers in the saved public-preview project.
action_template_translate_video
ChatGPTOne-shot "Video Translator" template. Dub your video into another language using AI voice cloning. Runs the full template headlessly: generates the required media server-side and lands the composed, editable layers in the project. Consumes plan AI credits and updates project settings and layers in the saved public-preview project.
action_template_ugc_ad_generator
ChatGPTOne-shot "UGC Ad Generator" template. Your media in, creator-style ad out: reference photos, videos and audio (or pinned start/end frames), lip-synced spoken hooks, comparable takes, and everything lands as editable layers. Runs the full template headlessly: generates the required media server-side and lands the composed, editable layers in the project. Consumes plan AI credits and updates project settings and layers in the saved public-preview project.
action_template_video_short
ChatGPTOne-shot "Long Video to Short" template. Turn a long video into a focused highlight story, with editable scenes, a suggested hook and vertical framing. Runs the full template headlessly: generates the required media server-side and lands the composed, editable layers in the project. Consumes plan AI credits and updates project settings and layers in the saved public-preview project.
action_transcribe_audio
ChatGPTTranscribe an audio or video layer to JSON: its text and every word with its start and end (seconds of the layer's own timeline). Changes nothing in the project; for a captions layer use the Generate Captions action instead. Consumes plan AI credits and only returns the transcript as JSON; it does not change the project.
action_url_to_ugc
ChatGPTResearch a product URL, compare mobile and desktop captures, and produce a complete evidence-grounded UGC brief with angle, hook, visual beats, script, and start/end-frame prompts. Analysis only: it proposes the creative parameters for template-ugc-ad-generator but never generates the video and never fixes the generation settings — quality and resolution stay the model’s call. Saves website research captures in the authenticated user's asset library but does not generate a video.
configure_project
ChatGPTSet project name, dimensions, duration, or background. Overwrites the supplied settings on the saved public-preview project.
confirm_media_upload
ChatGPTConfirm a completed presigned upload. SaaS only. Registers the upload in the authenticated user's asset library; an invalid oversized upload is permanently removed.
create_project
ChatGPTCreate a new animation project. In local mode, initialises the open project folder. Tip: call get_design_guide before composing scenes. Creates a saved project in the authenticated user's workspace with a publicly accessible preview URL.
edit_layer_source
ChatGPTPatch a layer's source text in place (field "html", "css", or "scripts[N].code") by replacing a literal oldString with newString. The way to change an existing HTML/GSAP scene: the layer keeps its id and the scene remounts. oldString must appear exactly once unless replaceAll is true. Overwrites matching source text; scripts run during preview, inspection, and rendering and may access external services.
editor_panel
ChatGPTUsed by the DevMotion app UI to show the editor beside the conversation: returns the project and a single-use, two-minute grant that signs the embedded editor in to that one project for its owner. To show the user a project, call open_editor instead. Only opens a project owned by the authenticated user, with a single-use editor sign-in that expires in two minutes and reaches only that project; it changes nothing by itself and spends no credits.
generate_scenes
ChatGPTPreview or run the generation of scene drafts and out-of-date scenes, referenced scenes first. Without planId it is a free preview: what will be generated, replaced or reused, any invalid or circular reference, and the total credits and time including dependencies; with the planId of that preview it runs exactly that plan, keeps each previous output until its replacement succeeds, and a retry after a failure runs only what is left. If the project changed since the preview, nothing runs and the new plan comes back. A run continues in the background and the project is saved after every finished step: call generate_scenes again without planId to see progress and the outcome, then check the result with inspect_frames. Without planId it only previews and changes nothing. With planId it consumes plan AI credits, adds generated media to the saved public-preview project and replaces the previous output of each regenerated scene once its new output exists.
get_design_guide
ChatGPTDevMotion design guide: motion design playbook, scene archetypes, the full animation preset catalog, asset rules, and the Scene Library index of ready-made blocks. Read this BEFORE composing scenes — it is what separates a polished video from a flat one.
get_project
ChatGPTRetrieve project state: layers, animations, dimensions, duration. Only returns a project owned by the authenticated user.
get_render
ChatGPTGet the status of a render started with render_project. When status is "completed", output_url points to the finished MP4; when "failed", error_message explains why. This tool does not create a new export or consume another export slot. It can retrieve an existing render owned by the authenticated user even if their subscription later changes. SaaS only. Only returns a render job owned by the authenticated user.
get_subtitles
ChatGPTReturn the subtitle file (SRT or WebVTT) of a captions layer: its words grouped as the layer shows them, timed on the project timeline so it lines up with the rendered video. Pass captionsLayerId when the project has more than one captions layer. Only reads a project owned by the authenticated user; it does not change the project or consume credits.
group_layers
ChatGPTGroup multiple layers into a folder. Creates a group and reparents the selected layers in the saved public-preview project.
import_media
ChatGPTImport media from a public URL. SaaS only. Downloads the public URL and saves a copy in the authenticated user's asset library.
inspect_frames
ChatGPTLOOK at a project: renders it at the times you pass and returns them as images. A mutation returning success says only that data was written — it says NOTHING about how the frame looks. Use this to VERIFY instead of assuming: after building a scene, after any size/position/layout change, and before telling the user the work is done. Check sizing (text legible, nothing overflowing), positioning (nothing clipped or stacked by accident), layout (alignment and margins hold, the frame is not blank) and timing (what should be visible at that moment actually is). Pass 1-4 project times in seconds — prefer ONE call with several times over several calls, since the frames after the first are nearly free. Frames come from the same renderer as the exported video. Executes scripts already stored in HTML layers while rendering; those scripts may access external services.
instantiate_block
ChatGPTInsert one Scene Library block as an editable html layer. Pass its ID or short ref, and set its typed controls with values in the same call (read them with list_scene_blocks ids). Omit enterTime to append after the last scene; pass it to overlay an element or effect. Adds catalog scene source to the saved public-preview project; its scripts run during preview, inspection, and rendering.
list_projects
ChatGPTList one page of projects in your session, newest first. Use nextPage to continue. Call this to discover an existing projectId before editing a project's layers instead of guessing IDs. Only lists projects owned by the authenticated user.
list_scene_blocks
ChatGPTSearch the Scene Library of ready-made, editable HTML+GSAP blocks by keywords (ranked) and scope/role/medium/style, or fetch exact ids with their typed controls. Returns metadata and IDs for instantiate_block, without source code.
list_tts_voices
ChatGPTList available text-to-speech voices (name, voiceId, traits). Call before action_generate_speech to pick a voiceId. SaaS only. Only lists voice metadata and does not synthesize speech.
open_editor
ChatGPTShow the user a DevMotion project in the DevMotion editor, where they can play it and edit it by hand: apps with UI show a card that opens the editor, others get the editor link. Call it once after create_project, or when the user asks to see or edit a project: the editor follows every later change live, so do not call it again after each edit. Without projectId it opens the project this conversation last changed, else the most recently edited one. Returns the project's name, size and editor link. Only opens a project owned by the authenticated user; it does not change it.
remove_layer
ChatGPTDelete a layer by ID or name. Permanently removes the selected layer from the saved public-preview project.
render_project
ChatGPTStart an async video render of an existing project. Returns a render ID immediately; the MP4 is produced in the background. Poll get_render with the returned ID to retrieve the output URL when the status becomes "completed". Optionally override width/height/fps for this render only (the saved project is not modified), or pass callback_url (paid plans) to be POSTed a webhook when the render finishes. SaaS only. Consumes monthly export quota, creates a hosted MP4, and may POST the result to the supplied callback URL.
reorder_layer
ChatGPTChange visual stacking order without recreating a layer. Move before/after a sibling or to the front/back of its current group. Changes layer stacking order in the saved public-preview project.
set_block_variables
ChatGPTPatch typed controls on an installed HTML catalog scene. Pass only changed values; other controls and source code stay untouched. Changes an installed scene and re-executes its stored script during preview, inspection, and rendering.
ungroup_layers
ChatGPTDissolve a group; children become top-level. Removes the selected group container from the saved project while retaining its children.
upload_media
ChatGPTGet a presigned S3 URL for direct media upload. SaaS only. Only creates a time-limited upload URL; it does not upload media or register an asset.
upsert_layer
ChatGPTCreate a layer (omit layerId) or patch-edit an existing one (pass layerId; layer.type must match). Sizes/positions in % of project width. Provide only the fields to set/change. Creates a layer or overwrites supplied fields on an existing layer in the public-preview project.
upsert_scene
ChatGPTCreate or edit a SCENE, the named slice of the timeline that holds one shot's layers, idempotent by key so a retry edits instead of duplicating; a new scene lands after the last one (5s by default), and moving it moves its children. With generation it also prepares the scene's generated footage or still as a draft (prompt, named references, @scene mentions) without generating anything: free, editable in the Manual editor, and editing it again updates the same step. Creates or edits a scene container, may overwrite existing scene fields, timing and generation draft inputs and may reparent layers in the saved public-preview project; it never generates media or consumes credits.
write_layer_source
ChatGPTWrite a layer's source (html / css / scripts) as plain text. The ONLY way to populate them — they are absent from upsert_layer on purpose. Create the layer with upsert_layer first, then write its source here, then refine with edit_layer_source. Overwrites stored source; scripts run during preview, inspection, and rendering and may access external services.