fal-workflow

fal.ai Workflow Generator

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "fal-workflow" with this command: npx skills add fal-ai-community/skills/fal-ai-community-skills-fal-workflow

fal.ai Workflow Generator

Generate 100% working, production-ready fal.ai workflow JSON files. Workflows chain multiple AI models together for complex generation pipelines.

References:

  • Model Reference - Detailed model configurations

  • Common Patterns - Reusable workflow patterns

  • Code Examples - Code snippets and partial examples

Troubleshooting Reference:

  • Complete Workflows - Working JSON examples for debugging (use ONLY when user reports errors)

Core Architecture

Valid Node Types

⚠️ ONLY TWO VALID NODE TYPES EXIST:

Type Purpose

"run"

Execute a model/app

"display"

Output results to user

❌ INVALID: type: "input"

  • This does NOT exist! Input is defined ONLY in schema.input .

Minimal Working Example

{ "name": "my-workflow", "title": "My Workflow", "contents": { "name": "workflow", "nodes": { "output": { "type": "display", "id": "output", "depends": ["node-image"], "input": {}, "fields": { "image": "$node-image.images.0.url" } }, "node-image": { "type": "run", "id": "node-image", "depends": ["input"], "app": "fal-ai/flux/dev", "input": { "prompt": "$input.prompt" } } }, "output": { "image": "$node-image.images.0.url" }, "schema": { "input": { "prompt": { "name": "prompt", "label": "Prompt", "type": "string", "required": true, "modelId": "node-image" } }, "output": { "image": { "name": "image", "label": "Generated Image", "type": "string" } } }, "version": "1", "metadata": { "input": { "position": { "x": 0, "y": 0 } }, "description": "Simple text to image workflow" } }, "is_public": true, "user_id": "", "user_nickname": "", "created_at": "" }

Reference Syntax

Reference Use Case Example

$input.field

Input value $input.prompt

$node.output

LLM text output $node-llm.output

$node.images.0.url

First image URL $node-img.images.0.url

$node.image.url

Single image URL $node-upscale.image.url

$node.video.url

Video URL $node-vid.video.url

$node.audio_file.url

Audio URL $node-music.audio_file.url

$node.frame.url

Extracted frame $node-extract.frame.url

CRITICAL: No String Interpolation

⚠️ NEVER mix text with variables! Variable MUST be the ENTIRE value.

// ❌ WRONG - WILL BREAK "prompt": "Create image of $input.subject in $input.style"

// ✅ CORRECT - Variable is the ENTIRE value "prompt": "$input.prompt" "prompt": "$node-llm.output"

To combine values: Use fal-ai/text-concat or fal-ai/workflow-utilities/merge-text . See Model Reference.

Critical Rules

C1: Dependencies Must Match References

// ❌ WRONG "node-b": { "depends": [], "input": { "data": "$node-a.output" } }

// ✅ CORRECT "node-b": { "depends": ["node-a"], "input": { "data": "$node-a.output" } }

C2: ID Must Match Object Key

// ❌ WRONG "my-node": { "id": "different-id" }

// ✅ CORRECT "my-node": { "id": "my-node" }

C3: Use Correct LLM Type

  • openrouter/router → Text only, no image_urls

  • openrouter/router/vision → ONLY when analyzing images

C4: Schema modelId Required

"schema": { "input": { "field": { "modelId": "first-consuming-node" } } }

C5: Output Depends on All Referenced Nodes

"output": { "depends": ["node-a", "node-b", "node-c"], "fields": { "a": "$node-a.video", "b": "$node-b.images.0.url" } }

Quick Reference Card

Output References

Model Type Output Reference

LLM $node.output

Text Concat $node.results

Merge Text $node.text

Image Gen (array) $node.images.0.url

Image Process (single) $node.image.url

Video $node.video.url

Music $node.audio_file.url

Frame Extract $node.frame.url

Use search-models.sh or search_models MCP tool to discover current models. See references/MODELS.md for workflow code templates.

Input Schema

"schema": { "input": { "text_field": { "name": "text_field", "label": "Display Label", "type": "string", "description": "Help text", "required": true, "modelId": "consuming-node" }, "image_urls": { "name": "image_urls", "type": { "kind": "list", "elementType": "string" }, "required": true, "modelId": "node-id" } } }

Pre-Output Checklist

Before outputting any workflow, verify:

  • ⚠️ All nodes have type: "run" or type: "display" ONLY (NO type: "input" !)

  • ⚠️ No string interpolation - variable MUST be ENTIRE value

  • Every $node.xxx has matching depends entry

  • Every node id matches object key

  • Input schema has modelId for each field

  • Output depends on ALL referenced nodes

  • Correct LLM type (router vs router/vision)

Usage

Using Script

bash /mnt/skills/user/fal-workflow/scripts/create-workflow.sh
--name "my-workflow"
--title "My Workflow Title"
--nodes '[...]'
--outputs '{...}'

Using MCP Tool

mcp__fal-ai__create-workflow({ smartMode: true, intent: "Generate a story with LLM, create an illustration, then animate it" })

Troubleshooting

Invalid Node Type Error (MOST COMMON)

Error: unexpected value; permitted: 'run', 'display', field required

Cause: You created a node with type: "input" which does NOT exist. Solution: Remove ANY node with type: "input" . Define input fields ONLY in schema.input .

Dependency Error

Error: Node references $node-x but doesn't depend on it

Solution: Add the referenced node to the depends array.

ID Mismatch Error

Error: Node key "my-node" doesn't match id "different-id"

Solution: Ensure the object key matches the id field exactly.

LLM Vision Error

Error: image_urls provided but using text-only router

Solution: Switch to openrouter/router/vision when analyzing images.

Finding Model Schemas

Every model's input/output schema:

https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=[endpoint_id]

Example:

https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=fal-ai/nano-banana-pro

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

fal-image-edit

No summary provided by upstream source.

Repository SourceNeeds Review
General

fal-generate

No summary provided by upstream source.

Repository SourceNeeds Review
General

fal-audio

No summary provided by upstream source.

Repository SourceNeeds Review
General

fal-upscale

No summary provided by upstream source.

Repository SourceNeeds Review