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 URLduration- Video length:"5"or"10"secondsnegative_prompt- What to avoid in generationgenerate_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 qualitygoogle/gemini-3-pro-preview- Best reasoninganthropic/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 speechvoice- 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 speechvoice_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)
Hunyuan3D v3 (Recommended)
{
"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 URLface_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)