Files
2026-01-30 03:04:10 +00:00

11 KiB

Model Reference

Detailed configuration and usage for all supported models in fal.ai workflows.

Image Generation

Nano Banana Pro (DEFAULT)

{
  "app": "fal-ai/nano-banana-pro",
  "input": {
    "prompt": "$node-prompt.output",
    "aspect_ratio": "16:9",
    "num_images": 1
  }
}

Output: $node.images.0.url

Nano Banana Pro Edit (DEFAULT for editing)

{
  "app": "fal-ai/nano-banana-pro/edit",
  "input": {
    "prompt": "$node-prompt.output",
    "image_urls": ["$input.source_image"],
    "aspect_ratio": "16:9",
    "resolution": "4K"
  }
}

Output: $node.images.0.url

Other Image Models

Model App ID
FLUX.1 Dev fal-ai/flux/dev
FLUX.1 Schnell fal-ai/flux/schnell
FLUX.1 Pro fal-ai/flux-pro
Ideogram v3 fal-ai/ideogram/v3
Recraft v3 fal-ai/recraft-v3

Video Generation

Seedance 1.5 Pro (DEFAULT)

{
  "app": "fal-ai/bytedance/seedance/v1.5/pro/image-to-video",
  "input": {
    "prompt": "$node-video-prompt.output",
    "image_url": "$node-image.images.0.url",
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "duration": "5",
    "generate_audio": true
  }
}

Output: $node.video.url

Kling Video O1 (Image-to-Video with First/Last Frame)

{
  "app": "fal-ai/kling-video/o1/image-to-video",
  "input": {
    "prompt": "$node-prompt.output",
    "image_url": "$node-start-frame.images.0.url",
    "tail_image_url": "$node-end-frame.images.0.url",
    "duration": "5",
    "aspect_ratio": "16:9"
  }
}

Output: $node.video.url

Kling Video 2.6 Pro (Best I2V)

{
  "app": "fal-ai/kling-video/v2.6/pro/image-to-video",
  "input": {
    "prompt": "$node-prompt.output",
    "start_image_url": "$node-image.images.0.url",
    "duration": "5",
    "negative_prompt": "blur, distort, and low quality",
    "generate_audio": true
  }
}

Output: $node.video.url

Parameters:

  • prompt - Video description (can include speech for lip-sync)
  • start_image_url - Starting frame image URL
  • duration - Video length: "5" or "10" seconds
  • negative_prompt - What to avoid in generation
  • generate_audio - Enable audio generation from prompt

Best for: High quality image-to-video with optional audio generation and lip-sync support.

Other Video Models

Model App ID Notes
Veo 3.1 Fast fal-ai/veo3.1/fast/image-to-video High quality
Kling 2.6 Pro fal-ai/kling-video/v2.6/pro/image-to-video Best I2V

LLM Models

Text LLM (DEFAULT - No images)

{
  "app": "openrouter/router",
  "input": {
    "prompt": "$input.user_input",
    "system_prompt": "Your instructions here...",
    "model": "google/gemini-2.5-flash",
    "temperature": 0.7
  }
}

Output: $node.output

Vision LLM (When image analysis needed)

{
  "app": "openrouter/router/vision",
  "input": {
    "prompt": "$input.user_request",
    "system_prompt": "Analyze the image and...",
    "image_urls": ["$node-image.images.0.url"],
    "model": "google/gemini-3-pro-preview",
    "reasoning": true
  }
}

Output: $node.output

Available LLM Models:

  • google/gemini-2.5-flash - Fast, good quality
  • google/gemini-3-pro-preview - Best reasoning
  • anthropic/claude-sonnet-4.5 - Best for complex tasks

Audio/Music Generation

ElevenLabs Music

{
  "app": "fal-ai/elevenlabs/music",
  "input": {
    "prompt": "Mysterious soundtrack, jungle themes, tribal percussion",
    "respect_sections_durations": true,
    "output_format": "mp3_44100_128"
  }
}

Output: $node.audio_file.url

MMAudio (Video to Audio)

{
  "app": "fal-ai/mmaudio",
  "input": {
    "video_url": "$node-video.video.url",
    "prompt": "Ambient nature sounds"
  }
}

Stable Audio

{
  "app": "fal-ai/stable-audio",
  "input": {
    "prompt": "Cinematic orchestral music"
  }
}

Other Music Models

Model App ID
MiniMax Music v2 fal-ai/minimax-music/v2

Text-to-Speech

ElevenLabs TTS v3

{
  "app": "fal-ai/elevenlabs/tts/eleven-v3",
  "input": {
    "text": "$node-llm.output",
    "voice": "Aria",
    "stability": 0.5,
    "similarity_boost": 0.75,
    "speed": 1
  }
}

Output: $node.audio.url

Parameters:

  • text - Text to convert to speech
  • voice - Voice name (e.g., "Aria", "Roger", "Sarah")
  • stability - Voice stability (0-1)
  • similarity_boost - Voice clarity (0-1)
  • speed - Speech speed multiplier

MiniMax Speech 2.6 HD (Best Quality)

{
  "app": "fal-ai/minimax/speech-2.6-hd",
  "input": {
    "prompt": "$node-llm.output",
    "voice_setting": {
      "voice_id": "Wise_Woman",
      "speed": 1,
      "vol": 1,
      "pitch": 0
    },
    "output_format": "mp3"
  }
}

Output: $node.audio.url

Parameters:

  • prompt - Text to convert to speech
  • voice_setting.voice_id - Voice ID (e.g., "Wise_Woman", "Young_Man")
  • voice_setting.speed - Speech speed (0.5-2)
  • voice_setting.vol - Volume (0-1)
  • voice_setting.pitch - Pitch adjustment (-12 to 12)
  • output_format - Output format: "mp3", "wav", "hex"

MiniMax Voice Clone

Clone a voice from audio sample, then use the cloned voice ID in MiniMax Speech.

{
  "app": "fal-ai/minimax/voice-clone",
  "input": {
    "audio_url": "$input.voice_sample",
    "text": "Preview text for the cloned voice",
    "model": "speech-02-hd"
  }
}

Output: $node.audio.url, $node.voice_id

Use cloned voice in Speech 2.6 HD:

{
  "app": "fal-ai/minimax/speech-2.6-hd",
  "input": {
    "prompt": "$node-llm.output",
    "voice_setting": {
      "voice_id": "$node-voice-clone.voice_id"
    }
  }
}

Other TTS Models

Model App ID Notes
MiniMax Speech 2.6 Turbo fal-ai/minimax/speech-2.6-turbo Fast
Chatterbox fal-ai/chatterbox/multilingual Multi-language

Text Utilities (CRITICAL for combining values)

⚠️ These are the ONLY ways to combine text values - string interpolation is NOT supported!

Text Concat (2 texts)

Concatenates exactly TWO text values. text1 can be static text!

{
  "app": "fal-ai/text-concat",
  "input": {
    "text1": "Brand expert response:",
    "text2": "$node-llm.output"
  }
}

Output: $node.results

Use Cases:

  • Add a label/prefix to a variable: "text1": "Scene 1:", "text2": "$node.output"
  • Combine static instruction with dynamic content

Merge Text (Multiple texts)

Merges an ARRAY of text values with a separator.

{
  "app": "fal-ai/workflow-utilities/merge-text",
  "input": {
    "texts": [
      "$node-a.results",
      "$node-b.results",
      "$node-c.results"
    ],
    "separator": "------"
  }
}

Output: $node.text

Use Cases:

  • Combine 3+ LLM outputs before passing to next node
  • Merge multiple expert responses into single context

Pattern: Label + Merge

Common pattern for combining multiple labeled outputs:

// Step 1: Add labels with text-concat
"label-brand": {
  "app": "fal-ai/text-concat",
  "input": {
    "text1": "Brand expert:",
    "text2": "$brand-llm.output"
  }
},
"label-visual": {
  "app": "fal-ai/text-concat",
  "input": {
    "text1": "Visual director:",
    "text2": "$visual-llm.output"
  }
},

// Step 2: Merge labeled outputs
"merged-context": {
  "depends": ["label-brand", "label-visual"],
  "app": "fal-ai/workflow-utilities/merge-text",
  "input": {
    "texts": ["$label-brand.results", "$label-visual.results"],
    "separator": "\n\n---\n\n"
  }
},

// Step 3: Use merged context
"final-llm": {
  "depends": ["merged-context"],
  "input": {
    "prompt": "$merged-context.text"
  }
}

FFmpeg Utilities (CRITICAL)

Extract Frame from Video

{
  "app": "fal-ai/ffmpeg-api/extract-frame",
  "input": {
    "video_url": "$node-video.video.url",
    "frame_type": "first"
  }
}

Output: $node.frame.url

frame_type options: "first" or "last"

Use Cases:

  • Get last frame for video extension
  • Get first frame for transitions
  • Extract frame for first/last frame video generation

Merge Multiple Videos

{
  "app": "fal-ai/ffmpeg-api/merge-videos",
  "input": {
    "video_urls": [
      "$node-video-1.video.url",
      "$node-video-2.video.url",
      "$node-video-3.video.url"
    ]
  }
}

Output: $node.video.url

Merge Audio and Video

{
  "app": "fal-ai/ffmpeg-api/merge-audio-video",
  "input": {
    "video_url": "$node-video.video.url",
    "audio_url": "$node-music.audio_file.url"
  }
}

Output: $node.video.url


Image Utilities

Crop Image

Crops a portion of an image using percentage-based coordinates.

{
  "app": "fal-ai/workflow-utilities/crop-image",
  "input": {
    "image_url": "$node-image.images.0.url",
    "x_percent": 0,
    "y_percent": 0,
    "width_percent": 33.333333,
    "height_percent": 33.333333
  }
}

Output: $node.image.url

Parameters:

  • x_percent: Starting X position (0-100)
  • y_percent: Starting Y position (0-100)
  • width_percent: Width of crop area (0-100)
  • height_percent: Height of crop area (0-100)

Use Cases:

  • Split image into grid tiles (3x3, 2x2, etc.)
  • Extract specific region from generated image
  • Create multiple crops for parallel processing

Example: 3x3 Grid Split

// Top-left tile
"crop-1": { "input": { "x_percent": 0, "y_percent": 0, "width_percent": 33.33, "height_percent": 33.33 } }
// Top-center tile
"crop-2": { "input": { "x_percent": 33.33, "y_percent": 0, "width_percent": 33.33, "height_percent": 33.33 } }
// Top-right tile
"crop-3": { "input": { "x_percent": 66.67, "y_percent": 0, "width_percent": 33.33, "height_percent": 33.33 } }
// ... and so on for all 9 tiles

Image Processing

Upscale Image

{
  "app": "fal-ai/seedvr/upscale/image",
  "input": {
    "image_url": "$node-image.images.0.url"
  }
}

Output: $node.image.url

Remove Background

{
  "app": "fal-ai/bria/background/remove",
  "input": {
    "image_url": "$node-image.images.0.url"
  }
}

Output: $node.image.url


3D Generation (Image to 3D)

{
  "app": "fal-ai/hunyuan3d-v3/image-to-3d",
  "input": {
    "input_image_url": "$node-image.images.0.url",
    "face_count": 500000,
    "generate_type": "Normal",
    "polygon_type": "triangle"
  }
}

Output: $node.model_mesh.url

Parameters:

  • input_image_url - Source image URL
  • face_count - Mesh detail level (default: 500000)
  • generate_type - Generation mode: "Normal", "Fast"
  • polygon_type - Mesh type: "triangle", "quad"

Rodin v2 (Multi-view)

{
  "app": "fal-ai/hyper3d/rodin/v2",
  "input": {
    "input_image_urls": [
      "$node-front.images.0.url",
      "$node-left.images.0.url",
      "$node-right.images.0.url",
      "$node-back.images.0.url"
    ],
    "quality_mesh_option": "500K Triangle",
    "material": "All"
  }
}

Output: $node.model_mesh.url

Best for: Multi-view 3D generation (provide multiple angles for better results)