Skip to main content
A flow is a workflow you’ve built in the visual editor — a graph of nodes that describes how to produce a video. The API exposes your saved flows for listing and reference, and also accepts inline flow schemas for callers who want full control without persisting state.

GET /flows

List flows the authenticated user owns (plus any public flows they’ve saved).
string
required
Requires flows:read scope (included in default key scopes).

Response

array

GET /flows/:id

Fetch a single flow’s full FlowSchema plus a summary of the inputs it expects from API callers.
string (uuid)
required

Response

string
required
string
required
string | null
object
required
The canonical FlowSchema. Nodes + edges, exactly as saved from the editor. See inline FlowSchema below for the shape.
array
Derived list of which steps expect a prompt or media input. Use this to drive your integration’s UI so users know what they need to supply.

Inline FlowSchema

Instead of saving a flow first, you can supply a complete FlowSchema JSON in the flow_schema body field of POST /runs. The worker topologically sorts nodes, validates every edge, and executes the graph — same pipeline as a saved flow.

When to use inline schemas

Programmatic flow generation

Your own app builds flows on the fly from templates, user settings, or AI.

Stateless integrations

You’d rather not manage flow state inside Hyperclip.

Per-user customization

Each end user gets a slightly different graph. Avoid mushrooming saved flows.

Ephemeral experiments

A/B test graph variations without cluttering the editor.
Saved flows (flow_id) remain the right choice when you want the flow discoverable in the Hyperclip UI, or when multiple integrations share the same graph.

FlowSchema shape

Minimal inline example

The approve_export node is auto-added at run time — you don’t need to include it in the schema. The final composition is assembled from whatever layers (clipTrims, captionWords, audioTracks, audioOverlay) the graph produces.

Inline schema caveats

Inline schemas don’t appear in GET /flows and aren’t linked to a saved flow. If you rely on the Hyperclip UI for discoverability or collaboration, save the flow first and use flow_id instead.
  • Max schema size: currently no explicit cap, but keep it under ~500 KB for reliable transport.
  • Validation happens server-side: the worker runs the same Zod validation as the editor. Malformed schemas fail with 400 invalid_flow_schema.
  • No versioning: every inline schema must set "version": 1. Future versions will add a migration path.

See also

Input reference

How to supply prompts, media, and per-step overrides at run time.

Node support matrix

Every node type supported by the API (all 26 — full parity with the editor).