media
Generates or retrieves media from an external service you describe in configuration, then places the result on the timeline.
When to use
Use media when you want to call a media service (text to speech, image or video generation, stock search) and have the result land on a timeline level. You describe the service once, in YAML, either by naming a built in preset or by writing the request yourself. Changing which service you use is a configuration change, not a code change.
In the editor
Add it from the Library, or with + add step and a search for media. Under Inputs, add source as a step or file input with the text the request needs. Choose a preset to start from, or provide a spec with the request details. Set any values the request needs (such as a voice id) under vars.
Services you call with your own account need your key. Add it in the workspace's Variables & Service API Keys. A run that needs a key you have not set is refused before it starts.
Required secrets
Depends on the service you configure. When the request reads a key by name, that key must be set in workspace or template secrets, and the run is refused before it starts if the key is missing.
Inputs
| ID | Source | Description |
|---|---|---|
source |
step or file | Text the request uses (for example the script to speak). |
transcript |
step (optional) | A transcript, used by source strategies that need it. |
footage_analysis |
step (optional) | Footage analysis, used to guide what and where to generate. |
segment_plan |
step (optional) | A segment plan (from a director-style step), used by the plan source strategy. |
Params
| Param | Type | Default | Description |
|---|---|---|---|
preset |
select: elevenlabs, imagen, veo, heygen, heygen-audio |
none | Name of a shipped service preset to start from (e.g. elevenlabs). Override any field with the spec param. |
spec |
text | none | Inline declarative service spec (transport, auth, request, response), written as YAML. Overrides the preset field by field. |
source |
select: single, gaps, plan |
"single" |
How generation requests are produced. single = one asset from the input text; gaps = one asset per uncovered span of the gap_level timeline; plan = one asset per matching segment_plan segment. |
place |
select: at_position, chain, gaps |
"at_position" |
How generated assets land on the timeline. at_position = at position 0; chain = end to end by duration; gaps = at each asset's target position, clamped to fit its target span. |
vars |
text | none | Extra key/value pairs merged into the request template data (e.g. VoiceID, Model, OutputFormat), written as YAML. |
judge_enable |
bool | false |
Ask the assistant to review each generated asset and drop ones that fail. Requires the app assistant. |
judge_prompt |
text | none | What makes a good result (e.g. must be a wide landscape, no text, no faces). Guides the quality judge. |
prompt_judge |
bool | false |
Before generating, ask the assistant to approve, rewrite, or reject the request prompt against your judge criteria. Saves paid calls on bad prompts. |
gap_level |
level | none | When source is gaps: the timeline level whose empty spans to fill. |
gap_audio |
bool | false |
When source is gaps: treat the source input as a narration audio track instead of text. Slice the matching span per gap and drive generation from it (e.g. HeyGen audio-sync avatar fill-gaps). |
plan_content_type |
string | none | When source is plan: only generate for segments of this content type (blank = any segment with a prompt). |
Available presets
| Preset | Service produces |
|---|---|
elevenlabs |
Text to speech |
imagen |
A still image, animated into a moving clip |
veo |
Video |
heygen |
An avatar speaking your text (text to speech) |
heygen-audio |
An avatar lip-synced to audio you supply |
Set preset to one of these to start from a ready-made spec; override any field with spec. See Bring your own media service for worked examples of each.
Output
EditDecisions placed on output.timeline.
Notes
- Start from a preset and override only what you need.
- Use
cache: true: generation is deterministic for the same request and inputs.