Skip to main content
The 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

Keys are step indices (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_editor
  • ai_transform, script_generation, mixed_media, parse_scenes, continuity_enhance
  • image_generation, text_to_video, image_to_video, animation
  • multi_angle, ai_music, voiceover
The override beats everything: inline textbox values, upstream artifact prompts, flow defaults.

Example

When a flow has a single text_input at step 0, the whole integration is usually just { "prompts": { "0": "..." } }.

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 can GET 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
Private URLs must be pre-signed before being passed in. Hyperclip does not authenticate with third-party systems. A 401 or 403 fetching the URL fails the step with an upstream error.

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

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.
Number of clips to extract from a long video.
Two ways to style captions on the 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:
Option B — pass _caption_style_overrides, a partial CaptionStyle object. See the Auto Captions reference for every field.
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:
Look at required_inputs for the quick list, or walk flow_schema.nodes in array order — that’s the step order used for inputs.
The required_inputs array returned by GET /flows/:id is the authoritative source. It already filters to just the steps that expect caller-supplied input, so you can drive a form directly off it.

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_editor steps (input_type_mismatch).
  • Media only goes to media_input steps (input_type_mismatch).
  • Each media entry must have a url (non-empty string) and a type of image, video, or audio (invalid_input_value).
  • The media type must be one of the node’s accepted types — read required_inputs[].accepted_media_types from GET /flows/:id (media_type_not_accepted).
See error codes for the full catalog.

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.

Full example