Quick Reference
| Model | Endpoint | Speed | Quality | Cost |
|-------|----------|-------|---------|------|
| FLUX.2 Pro | fal-ai/flux-2-pro | Medium | Highest | $$$ |
| FLUX.1 Dev | fal-ai/flux/dev | Medium | High | $$ |
| FLUX Schnell | fal-ai/flux/schnell | Fast | Good | $ |
| Fast SDXL | fal-ai/fast-sdxl | Fast | Good | $ |
| Image Size | Preset | Dimensions |
|------------|--------|------------|
| Square HD | square_hd | 1024x1024 |
| Landscape | landscape_16_9 | 1024x576 |
| Portrait | portrait_16_9 | 576x1024 |
| Custom | { width, height } | Any |
| Parameter | FLUX Default | SDXL Default |
|-----------|--------------|--------------|
| guidance_scale | 3.5 | 7.5 |
| num_inference_steps | 28 | 25 |
| num_images | 1 | 1 |
When to Use This Skill
Use for text-to-image generation:
- Generating images from text prompts
- Choosing between FLUX and SDXL models
- Configuring image sizes and quality parameters
- Using LoRA models for custom styles
- Batch generating multiple images
Related skills:
- For image editing: see
fal-image-to-image - For model comparison: see
fal-model-guide - For API integration: see
fal-api-reference
fal.ai Text-to-Image Models
Complete reference for all text-to-image generation models on fal.ai.
FLUX Models
FLUX.1 [dev]
Endpoint: fal-ai/flux/dev
Pricing: $0.025/megapixel
Best For: High-quality open-source generation
The 12B parameter FLUX.1 model offers excellent quality with open-source accessibility.
import { fal } from "@fal-ai/client";
const result = await fal.subscribe("fal-ai/flux/dev", {
input: {
prompt: "A serene Japanese garden with cherry blossoms, koi pond, wooden bridge, soft morning light",
image_size: "landscape_16_9",
num_inference_steps: 28,
guidance_scale: 3.5,
num_images: 1,
seed: 42,
enable_safety_checker: true,
output_format: "jpeg"
}
});
console.log(result.images[0].url);
import fal_client
result = fal_client.subscribe(
"fal-ai/flux/dev",
arguments={
"prompt": "A serene Japanese garden with cherry blossoms",
"image_size": "landscape_16_9",
"num_inference_steps": 28,
"guidance_scale": 3.5,
"num_images": 1,
"seed": 42,
"enable_safety_checker": True,
"output_format": "jpeg"
}
)
print(result["images"][0]["url"])
FLUX Schnell
Endpoint: fal-ai/flux/schnell
Pricing: Lower cost per image
Best For: Fast iteration, previews, 4-step generation
Optimized for speed with only 4 inference steps required.
const result = await fal.subscribe("fal-ai/flux/schnell", {
input: {
prompt: "A colorful abstract painting",
image_size: "square_hd",
num_inference_steps: 4, // Optimized for 4 steps
num_images: 1
}
});
FLUX Pro
Endpoint: fal-ai/flux-pro
Pricing: Premium
Best For: Production workloads
const result = await fal.subscribe("fal-ai/flux-pro", {
input: {
prompt: "Professional product photography of a luxury watch",
image_size: "square_hd",
num_inference_steps: 28,
guidance_scale: 3.5
}
});
FLUX.2 [pro]
Endpoint: fal-ai/flux-2-pro
Pricing: $0.03/megapixel
Best For: Highest quality, automatic prompt enhancement
The latest FLUX model with built-in prompt optimization.
const result = await fal.subscribe("fal-ai/flux-2-pro", {
input: {
prompt: "A majestic lion in the savanna at golden hour",
image_size: "landscape_16_9",
num_inference_steps: 28,
guidance_scale: 3.5,
// FLUX 2 Pro features
safety_tolerance: "2", // 1-6, higher = more permissive
raw: false // Set true to disable prompt enhancement
}
});
FLUX.2 Pro Specific Parameters:
safety_tolerance: 1-6, controls content filtering sensitivityraw: Boolean, set totrueto disable automatic prompt enhancement
FLUX LoRA
Endpoint: fal-ai/flux-lora
Best For: Custom trained styles and subjects
Apply custom LoRA models to FLUX generation.
const result = await fal.subscribe("fal-ai/flux-lora", {
input: {
prompt: "A portrait in the style of <lora_trigger>",
loras: [
{
path: "https://huggingface.co/user/lora-model/resolve/main/lora.safetensors",
scale: 0.8
}
],
image_size: "portrait_4_3",
num_inference_steps: 28,
guidance_scale: 3.5
}
});
LoRA Parameters:
loras: Array of LoRA configurationspath: URL to LoRA weights (.safetensors)scale: 0-1, strength of LoRA effect
FLUX Realism
Endpoint: fal-ai/flux-realism
Best For: Photorealistic images
const result = await fal.subscribe("fal-ai/flux-realism", {
input: {
prompt: "A photorealistic portrait of a young woman, natural lighting, 85mm lens",
image_size: "portrait_4_3",
num_inference_steps: 28
}
});
FLUX Fill (Outpainting)
Endpoint: fal-ai/flux-pro/v1/fill
Best For: Extending images beyond boundaries
const result = await fal.subscribe("fal-ai/flux-pro/v1/fill", {
input: {
prompt: "Continue the landscape with mountains",
image_url: "https://example.com/partial-image.jpg",
mask_url: "https://example.com/outpaint-mask.png"
}
});
Stable Diffusion Models
Fast SDXL
Endpoint: fal-ai/fast-sdxl
Best For: Speed and cost efficiency
const result = await fal.subscribe("fal-ai/fast-sdxl", {
input: {
prompt: "A fantasy castle on a cliff, dramatic lighting",
negative_prompt: "blurry, low quality, distorted",
image_size: "landscape_16_9",
num_inference_steps: 25,
guidance_scale: 7.5,
num_images: 1,
seed: 42
}
});
SDXL-Specific Parameters:
negative_prompt: What to avoid in generation- Higher
guidance_scale(7-12) works better for SDXL
Stable Diffusion 3 Medium
Endpoint: fal-ai/stable-diffusion-v3-medium
Best For: SD3 architecture, good text rendering
const result = await fal.subscribe("fal-ai/stable-diffusion-v3-medium", {
input: {
prompt: "A sign that says 'Hello World' in neon lights",
negative_prompt: "blurry, distorted text",
image_size: "square_hd",
num_inference_steps: 28,
guidance_scale: 7.0
}
});
SDXL Turbo
Endpoint: fal-ai/sdxl-turbo
Best For: Ultra-fast, single-step generation
const result = await fal.subscribe("fal-ai/sdxl-turbo", {
input: {
prompt: "A cute robot",
num_inference_steps: 1, // Single step!
guidance_scale: 0 // No guidance needed
}
});
SDXL Lightning
Endpoint: fal-ai/fast-lightning-sdxl
Best For: Fast 4-step SDXL
const result = await fal.subscribe("fal-ai/fast-lightning-sdxl", {
input: {
prompt: "A beautiful sunset",
num_inference_steps: 4,
guidance_scale: 1.5
}
});
Specialized Models
Recraft V3
Endpoint: fal-ai/recraft-v3
Best For: Design assets, illustrations, vector-style
const result = await fal.subscribe("fal-ai/recraft-v3", {
input: {
prompt: "A minimalist logo for a tech startup, clean lines",
image_size: "square_hd",
style: "digital_illustration" // or "realistic_image", "vector_illustration"
}
});
Recraft Styles:
realistic_imagedigital_illustrationvector_illustrationicon
Ideogram
Endpoint: fal-ai/ideogram
Best For: Text in images, typography
const result = await fal.subscribe("fal-ai/ideogram", {
input: {
prompt: "A vintage poster with the text 'JAZZ FESTIVAL' in art deco style",
aspect_ratio: "portrait_4_3"
}
});
Playground v2.5
Endpoint: fal-ai/playground-v25
Best For: Creative, artistic images
const result = await fal.subscribe("fal-ai/playground-v25", {
input: {
prompt: "A surreal dreamscape with floating islands",
image_size: "landscape_16_9",
guidance_scale: 3.0
}
});
AuraFlow
Endpoint: fal-ai/aura-flow
Best For: Open-source flow-based model
const result = await fal.subscribe("fal-ai/aura-flow", {
input: {
prompt: "A magical forest with bioluminescent plants",
num_inference_steps: 28,
guidance_scale: 3.5
}
});
Kolors
Endpoint: fal-ai/kolors
Best For: Artistic, colorful generations
const result = await fal.subscribe("fal-ai/kolors", {
input: {
prompt: "A vibrant street market in Morocco",
image_size: "landscape_4_3"
}
});
Common Parameters Reference
Image Size Options
| Preset | Dimensions | Aspect Ratio |
|--------|------------|--------------|
| square | 512x512 | 1:1 |
| square_hd | 1024x1024 | 1:1 |
| portrait_4_3 | 768x1024 | 3:4 |
| portrait_16_9 | 576x1024 | 9:16 |
| landscape_4_3 | 1024x768 | 4:3 |
| landscape_16_9 | 1024x576 | 16:9 |
Custom Dimensions:
image_size: { width: 1920, height: 1080 }
Complete Parameter Reference
interface TextToImageInput {
// Required
prompt: string;
// Image dimensions
image_size?:
| "square" | "square_hd"
| "portrait_4_3" | "portrait_16_9"
| "landscape_4_3" | "landscape_16_9"
| { width: number; height: number };
// Generation parameters
num_inference_steps?: number; // 1-50, default varies by model
guidance_scale?: number; // 1-20, default: 3.5 (FLUX) or 7.5 (SDXL)
num_images?: number; // 1-4, default: 1
seed?: number; // For reproducibility
// Output options
output_format?: "jpeg" | "png";
enable_safety_checker?: boolean;
// SDXL-specific
negative_prompt?: string;
// FLUX 2 Pro specific
safety_tolerance?: string; // "1" to "6"
raw?: boolean; // Disable prompt enhancement
// LoRA specific
loras?: Array<{
path: string;
scale: number;
}>;
}
Response Structure
interface TextToImageOutput {
images: Array<{
url: string;
width: number;
height: number;
content_type: string;
}>;
seed: number;
prompt: string;
has_nsfw_concepts?: boolean[];
timings?: {
inference: number;
};
}
Model Selection Guide
| Use Case | Recommended Model | Why |
|----------|-------------------|-----|
| Best quality | fal-ai/flux-2-pro | Latest model, prompt enhancement |
| Open source | fal-ai/flux/dev | 12B params, high quality |
| Fast iteration | fal-ai/flux/schnell | 4-step generation |
| Budget | fal-ai/fast-sdxl | Lower cost per image |
| Ultra-fast | fal-ai/sdxl-turbo | Single step |
| Custom styles | fal-ai/flux-lora | LoRA support |
| Text in images | fal-ai/ideogram | Typography focus |
| Design assets | fal-ai/recraft-v3 | Vector-style output |
| Photorealistic | fal-ai/flux-realism | Realism optimized |
Best Practices
Prompt Engineering
For FLUX models:
- Be descriptive and specific
- Include style, lighting, composition
- FLUX 2 Pro auto-enhances prompts (use
raw: trueto disable) - Guidance scale 3-4 works best
For SDXL models:
- Use negative prompts
- Higher guidance (7-12) for better prompt adherence
- Include quality keywords: "high quality, detailed, 8k"
Quality vs Speed Trade-offs
// Quality priority
const quality = await fal.subscribe("fal-ai/flux-2-pro", {
input: {
prompt: "...",
num_inference_steps: 28,
guidance_scale: 3.5
}
});
// Speed priority
const fast = await fal.subscribe("fal-ai/flux/schnell", {
input: {
prompt: "...",
num_inference_steps: 4
}
});
// Balance
const balanced = await fal.subscribe("fal-ai/flux/dev", {
input: {
prompt: "...",
num_inference_steps: 20,
guidance_scale: 3.5
}
});
Batch Generation
// Generate multiple variations
const result = await fal.subscribe("fal-ai/flux/dev", {
input: {
prompt: "A beautiful landscape",
num_images: 4,
seed: 42 // Same seed = similar outputs
}
});
// Access all images
result.images.forEach((img, i) => {
console.log(`Image ${i + 1}: ${img.url}`);
});
Reproducibility
// Use seed for reproducible results
const seed = 12345;
const result1 = await fal.subscribe("fal-ai/flux/dev", {
input: { prompt: "A cat", seed }
});
const result2 = await fal.subscribe("fal-ai/flux/dev", {
input: { prompt: "A cat", seed }
});
// result1 and result2 will be identical