inputs field of POST /runs is how you provide the specific data a flow needs at run time. Every flow has placeholder prompts and optional media slots; inputs fills them in.
Shape
step_order) — the zero-based position of the node in the flow’s topological sort. Find these via GET /flows/:id → required_inputs.
inputs.prompts
Per-step prompt overrides. The most common use — 95% of integrations only need this.
Applies to steps whose executor reads a prompt:
text_input,text_editorai_transform,script_generation,mixed_media,parse_scenes,continuity_enhanceimage_generation,text_to_video,image_to_video,animationmulti_angle,ai_music,voiceover
Example
inputs.media
Supplies URLs for media_input and audio_overlay nodes. Overrides baked-in fixedMediaUrl values.
string (url)
required
Publicly accessible URL. Hyperclip’s workers fetch it directly — no authentication headers are sent.
'image' | 'video' | 'audio'
required
Declares the media kind. The artifact is routed to the correct downstream field (
imageUrl, videoUrl, audioUrl).Example
Supported hosts
Any URL Hyperclip’s workers canGET with a 200 response:
- Public CDNs (Cloudflare R2, S3 with public ACL, imgix, Cloudinary, etc.)
- User-uploaded URLs on your own backend
- Pre-signed S3 URLs (valid for the duration of the run — at least 10 minutes)
- Direct public object-storage URLs
Expected formats
inputs.model_overrides
Advanced — partial node_data patches applied to specific steps. Use this to override model settings without editing the flow itself.
object
A key-value object that merges into the step’s
node_data at run time. Common keys listed below.Common overrides
_model_options — engine-specific settings
_model_options — engine-specific settings
Passed through to the underlying engine. Shape depends on the model:For Kling 3.0:
tier, duration, seed. For Veo 3: tier, duration. See AI models._voiceover_default_voice — ElevenLabs voice ID
_voiceover_default_voice — ElevenLabs voice ID
_clip_count — clipping node pick count
_clip_count — clipping node pick count
Number of clips to extract from a long video.
_selected_angles — multi_angle angles list
_selected_angles — multi_angle angles list
_caption_style_id / _caption_style_overrides — caption appearance
_caption_style_id / _caption_style_overrides — caption appearance
Two ways to style captions on the Option B — pass
auto_captions node. Pass either or both — overrides win field-by-field.Option A — paste a style ID from the Caption Designer. The ID is a self-contained cs_… blob that carries the full style payload:_caption_style_overrides, a partial CaptionStyle object. See the Auto Captions reference for every field._background_audio_volume / _ai_music_volume
_background_audio_volume / _ai_music_volume
Numbers between 0 and 1. Per-track mix levels, applied at the final composition.
Finding step_order
Fetch the flow to see its step order:required_inputs for the quick list, or walk flow_schema.nodes in array order — that’s the step order used for inputs.
Prompt resolution priority
Within a single step, the executor picks a prompt in this order:1
Textbox override (inline value)
If the node has
textboxOverrides.text-in.value set in the flow schema, that wins. Used for hardcoded text in template flows.2
Caller-supplied prompt
inputs.prompts[step_order]. This is the normal API override path.3
Upstream artifact prompt
The prompt produced by the previous node (e.g. a
script_generation output flows into image_generation).4
Empty
The step is skipped with its upstream artifact passed through unchanged.
Validation
POST /runs validates inputs.prompts and inputs.media against the flow’s schema before the run is queued — bad input fails fast with a 400 instead of charging credits and failing downstream. Specifically:
- Step indices must exist in the flow (
invalid_input_step). - Prompts only go to
text_input/text_editorsteps (input_type_mismatch). - Media only goes to
media_inputsteps (input_type_mismatch). - Each media entry must have a
url(non-empty string) and atypeofimage,video, oraudio(invalid_input_value). - The media
typemust be one of the node’s accepted types — readrequired_inputs[].accepted_media_typesfromGET /flows/:id(media_type_not_accepted).
model_overrides is loose
model_overrides is patched into existing node_data, not replaced. Unknown keys are ignored by the executor; invalid _model_options surface as status: "failed" with a generic error at run time.
There’s no schema validation on
model_overrides today — bad values surface as run-time errors. A future version may validate against each model’s option catalog.