fal.ai Image Generation & Editing Skill
Professional AI-powered image workflows using fal.ai's state-of-the-art models including FLUX, Recraft V3, Imagen4, and more.
Three Modes of Operation
1. Text-to-Image (fal-text-to-image)
Generate images from scratch using text prompts
2. Image Remix (fal-image-remix)
Transform existing images while preserving composition
3. Image Edit (fal-image-edit)
Targeted inpainting and masked editing
When to Use This Skill
Trigger when user:
Requests image generation from text descriptions
Wants to transform/remix existing images with AI
Needs to edit specific regions of images (inpainting)
Wants to create images with specific styles (vector, realistic, typography)
Needs high-resolution professional images (up to 2K)
Wants to use a reference image for style transfer
Mentions specific models like FLUX, Recraft, or Imagen
Asks for logo, poster, or brand-style image generation
Needs object removal or targeted modifications
Quick Start
Text-to-Image: Generate from Scratch
# Basic generation
uv run python fal-text-to-image "A cyberpunk city at sunset with neon lights"
# With specific model
uv run python fal-text-to-image -m flux-pro/v1.1-ultra "Professional headshot"
# With style reference
uv run python fal-text-to-image -i reference.jpg "Mountain landscape" -m flux-2/lora/edit
Image Remix: Transform Existing Images
# Transform style while preserving composition
uv run python fal-image-remix input.jpg "Transform into oil painting"
# With strength control (0.0=original, 1.0=full transformation)
uv run python fal-image-remix photo.jpg "Anime style character" --strength 0.6
# Premium quality remix
uv run python fal-image-remix -m flux-1.1-pro image.jpg "Professional portrait"
Image Edit: Targeted Modifications
# Edit with mask image (white=edit area, black=preserve)
uv run python fal-image-edit input.jpg mask.png "Replace with flowers"
# Auto-generate mask from text
uv run python fal-image-edit input.jpg --mask-prompt "sky" "Make it sunset"
# Remove objects
uv run python fal-image-edit photo.jpg mask.png "Remove object" --strength 1.0
# General editing (no mask)
uv run python fal-image-edit photo.jpg "Enhance lighting and colors"
Model Selection Guide
The script intelligently selects the best model based on task context:
flux-pro/v1.1-ultra (Default for High-Res)
Best for: Professional photography, high-resolution outputs (up to 2K)
Strengths: Photo realism, professional quality
Use when: User needs publication-ready images
Endpoint:
fal-ai/flux-pro/v1.1-ultra
recraft/v3/text-to-image (SOTA Quality)
Best for: Typography, vector art, brand-style images, long text
Strengths: Industry-leading benchmark scores, precise text rendering
Use when: Creating logos, posters, or text-heavy designs
Endpoint:
fal-ai/recraft/v3/text-to-image
flux-2 (Best Balance)
Best for: General-purpose image generation
Strengths: Enhanced realism, crisp text, native editing
Use when: Standard image generation needs
Endpoint:
fal-ai/flux-2
flux-2/lora (Custom Styles)
Best for: Domain-specific styles, fine-tuned variations
Strengths: Custom style adaptation
Use when: User wants specific artistic styles
Endpoint:
fal-ai/flux-2/lora
flux-2/lora/edit (Style Transfer)
Best for: Image-to-image editing with style references
Strengths: Specialized style transfer
Use when: User provides reference image with
-iflagEndpoint:
fal-ai/flux-2/lora/edit
imagen4/preview (Google Quality)
Best for: High-quality general images
Strengths: Google's highest quality model
Use when: User specifically requests Imagen or Google models
Endpoint:
fal-ai/imagen4/preview
stable-diffusion-v35-large (Typography & Style)
Best for: Complex prompts, typography, style control
Strengths: Advanced prompt understanding, resource efficiency
Use when: Complex multi-element compositions
Endpoint:
fal-ai/stable-diffusion-v35-large
ideogram/v2 (Typography Specialist)
Best for: Posters, logos, text-heavy designs
Strengths: Exceptional typography, realistic outputs
Use when: Text accuracy is critical
Endpoint:
fal-ai/ideogram/v2
bria/text-to-image/3.2 (Commercial Safe)
Best for: Commercial projects requiring licensed training data
Strengths: Safe for commercial use, excellent text rendering
Use when: Legal/licensing concerns matter
Endpoint:
fal-ai/bria/text-to-image/3.2
Command-Line Interface
uv run python fal-text-to-image [OPTIONS] PROMPT
Arguments:
PROMPT Text description of the image to generate
Options:
-m, --model TEXT Model to use (see model list above)
-i, --image TEXT Path or URL to reference image for style transfer
-o, --output TEXT Output filename (default: generated_image.png)
-s, --size TEXT Image size (e.g., "1024x1024", "landscape_16_9")
--seed INTEGER Random seed for reproducibility
--steps INTEGER Number of inference steps (model-dependent)
--guidance FLOAT Guidance scale (higher = more prompt adherence)
--help Show this message and exit
Authentication Setup
Before first use, set your fal.ai API key:
export FAL_KEY="your-api-key-here"
Or create a .env file in the skill directory:
FAL_KEY=your-api-key-here
Get your API key from: https://fal.ai/dashboard/keys
Advanced Examples
High-Resolution Professional Photo
uv run python fal-text-to-image \
-m flux-pro/v1.1-ultra \
"Professional headshot of a business executive in modern office" \
-s 2048x2048
Logo/Typography Design
uv run python fal-text-to-image \
-m recraft/v3/text-to-image \
"Modern tech startup logo with text 'AI Labs' in minimalist style"
Style Transfer from Reference
uv run python fal-text-to-image \
-m flux-2/lora/edit \
-i artistic_style.jpg \
"Portrait of a woman in a garden"
Reproducible Generation
uv run python fal-text-to-image \
-m flux-2 \
--seed 42 \
"Futuristic cityscape with flying cars"
Model Selection Logic
The script automatically selects the best model when -m is not specified:
If
-iprovided: Usesflux-2/lora/editfor style transferIf prompt contains typography keywords (logo, text, poster, sign): Uses
recraft/v3/text-to-imageIf prompt suggests high-res needs (professional, portrait, headshot): Uses
flux-pro/v1.1-ultraIf prompt mentions vector/brand: Uses
recraft/v3/text-to-imageDefault: Uses
flux-2for general purpose
Output Format
Generated images are saved with metadata:
Filename includes timestamp and model name
EXIF data stores prompt, model, and parameters
Console displays generation time and cost estimate
Troubleshooting
| Problem | Solution |
|---|---|
FAL_KEY not set |
Export FAL_KEY environment variable or create .env file |
Model not found |
Check model name against supported list |
Image reference fails |
Ensure image path/URL is accessible |
Generation timeout |
Some models take longer; wait or try faster model |
Rate limit error |
Check fal.ai dashboard for usage limits |
Cost Optimization
Free tier: FLUX.2 offers 100 free requests (expires Dec 25, 2025)
Pay per use: FLUX Pro charges per megapixel
Budget option: Use
flux-2orstable-diffusion-v35-largefor general usePremium: Use
flux-pro/v1.1-ultraonly when high-res is required
Image Remix: Model Selection Guide
Available models for image-to-image remixing:
flux-2/dev (Default, Free)
Best for: General remixing, style transfer, fast iteration
Strengths: Balanced quality/speed, 100 free requests
Use when: Standard remixing needs
Endpoint:
fal-ai/flux/dev/image-to-image
flux-pro (Premium Quality)
Best for: Professional remixing, high-quality outputs
Strengths: Superior quality, realistic transformations
Use when: Professional or publication-ready remixes
Endpoint:
fal-ai/flux-pro
flux-1.1-pro (Ultra Premium)
Best for: Highest quality remixing with maximum detail
Strengths: Ultra-high quality, exceptional detail preservation
Use when: Premium projects requiring best possible output
Endpoint:
fal-ai/flux-pro/v1.1
recraft/v3 (Vector/Illustration)
Best for: Vector style, brand imagery, illustration remixing
Strengths: Clean vector outputs, brand-style transformations
Use when: Converting to illustration or vector style
Endpoint:
fal-ai/recraft/v3/text-to-image
stable-diffusion-v35 (Artistic)
Best for: Artistic styles, painting effects, creative remixing
Strengths: Strong artistic style application
Use when: Artistic or stylized transformations
Endpoint:
fal-ai/stable-diffusion-v35-large
Image Remix: Command-Line Interface
uv run python fal-image-remix [OPTIONS] INPUT_IMAGE PROMPT
Arguments:
INPUT_IMAGE Path or URL to source image
PROMPT How to transform the image
Options:
-m, --model TEXT Model to use (auto-selected if not specified)
-o, --output TEXT Output filename (default: remixed_TIMESTAMP.png)
-s, --strength FLOAT Transformation strength 0.0-1.0 (default: 0.75)
0.0 = preserve original, 1.0 = full transformation
--guidance FLOAT Guidance scale (default: 7.5)
--seed INTEGER Random seed for reproducibility
--steps INTEGER Number of inference steps
--help Show help
Remix Strength Guide
The --strength parameter controls transformation intensity:
| Strength | Effect | Use Case |
|---|---|---|
| 0.3-0.5 | Subtle changes | Minor color adjustments, lighting tweaks |
| 0.5-0.7 | Moderate changes | Style hints while preserving details |
| 0.7-0.85 | Strong changes | Clear style transfer, significant transformation |
| 0.85-1.0 | Maximum changes | Complete style overhaul, dramatic transformation |
Remix Examples
# Subtle artistic style (low strength)
uv run python fal-image-remix photo.jpg "Oil painting style" --strength 0.4
# Balanced transformation (default)
uv run python fal-image-remix input.jpg "Cyberpunk neon aesthetic"
# Strong transformation (high strength)
uv run python fal-image-remix portrait.jpg "Anime character" --strength 0.9
# Vector conversion
uv run python fal-image-remix -m recraft/v3 logo.png "Clean vector illustration"
# Premium quality remix
uv run python fal-image-remix -m flux-1.1-pro photo.jpg "Professional studio portrait"
Image Edit: Model Selection Guide
Available models for targeted editing and inpainting:
flux-2/redux (General Editing)
Best for: General image editing without masks
Strengths: Fast, balanced, good for overall adjustments
Use when: No specific region targeting needed
Endpoint:
fal-ai/flux-2/redux
flux-2/fill (Inpainting, Default)
Best for: Masked region editing, object removal, filling
Strengths: Seamless inpainting, natural blending
Use when: Editing specific masked regions
Endpoint:
fal-ai/flux-2/fill
flux-pro-v11/fill (Premium Inpainting)
Best for: Professional inpainting with highest quality
Strengths: Superior quality, professional results
Use when: Premium quality inpainting required
Endpoint:
fal-ai/flux-pro-v11/fill
stable-diffusion-v35/inpainting (Artistic Inpainting)
Best for: Artistic edits, creative inpainting
Strengths: Strong artistic control, detailed generation
Use when: Artistic or stylized edits
Endpoint:
fal-ai/stable-diffusion-v35-large/inpainting
ideogram/v2/edit (Realistic Editing)
Best for: Realistic modifications, precise edits
Strengths: High realism, precise control
Use when: Realistic edits required
Endpoint:
fal-ai/ideogram/v2/edit
recraft/v3/svg (Vector Editing)
Best for: Vector style edits, clean illustrations
Strengths: Clean vector outputs, illustration style
Use when: Vector or illustration edits
Endpoint:
fal-ai/recraft/v3/svg
Image Edit: Command-Line Interface
uv run python fal-image-edit [OPTIONS] INPUT_IMAGE [MASK_IMAGE] PROMPT
Arguments:
INPUT_IMAGE Path or URL to source image
MASK_IMAGE Path or URL to mask (white=edit, black=preserve) [optional]
PROMPT How to edit the masked region
Options:
-m, --model TEXT Model to use (auto-selected if not specified)
-o, --output TEXT Output filename (default: edited_TIMESTAMP.png)
--mask-prompt TEXT Generate mask from text (no mask image needed)
-s, --strength FLOAT Edit strength 0.0-1.0 (default: 0.95)
--guidance FLOAT Guidance scale (default: 7.5)
--seed INTEGER Random seed for reproducibility
--steps INTEGER Number of inference steps
--help Show help
Edit Strength Guide
The --strength parameter controls edit intensity:
| Strength | Effect | Use Case |
|---|---|---|
| 0.5-0.7 | Subtle edits | Minor touch-ups, color adjustments |
| 0.7-0.9 | Moderate edits | Clear modifications while blending naturally |
| 0.9-1.0 | Strong edits | Complete replacement, object removal |
Creating Mask Images
Mask images define edit regions:
White (255): Areas to edit/modify
Black (0): Areas to preserve unchanged
Gray: Partial blending (proportional to brightness)
Create masks using:
Image editors (GIMP, Photoshop, Krita)
Paint tools (select and fill with white/black)
Text-based prompts (
--mask-promptflag)
Edit Examples
# Edit with mask image
uv run python fal-image-edit photo.jpg mask.png "Replace with beautiful garden"
# Auto-generate mask from text
uv run python fal-image-edit landscape.jpg --mask-prompt "sky" "Make it sunset with clouds"
# Remove objects
uv run python fal-image-edit photo.jpg object_mask.png "Remove completely" --strength 1.0
# Seamless object insertion
uv run python fal-image-edit room.jpg region_mask.png "Add modern sofa" --strength 0.85
# General editing (no mask)
uv run python fal-image-edit -m flux-2/redux photo.jpg "Enhance lighting and saturation"
# Premium quality inpainting
uv run python fal-image-edit -m flux-pro-v11/fill image.jpg mask.png "Professional portrait background"
# Artistic modification
uv run python fal-image-edit -m stable-diffusion-v35/inpainting photo.jpg mask.png "Van Gogh style"
File Structure
fal-text-to-image/
├── SKILL.md # This file
├── README.md # Quick reference
├── pyproject.toml # Dependencies (uv)
├── fal-text-to-image # Text-to-image generation script
├── fal-image-remix # Image-to-image remixing script
├── fal-image-edit # Image editing/inpainting script
├── references/
│ └── model-comparison.md # Detailed model benchmarks
└── outputs/ # Generated images (created on first run)
Dependencies
Managed via uv:
fal-client: Official fal.ai Python SDKpython-dotenv: Environment variable managementpillow: Image handling and EXIF metadataclick: CLI interface
Best Practices
General
Model Selection: Let scripts auto-select unless you have specific needs
Prompt Engineering: Be specific and descriptive for better outputs
Cost Awareness: Monitor usage on fal.ai dashboard
Reproducibility: Use
--seedfor consistent results during iteration
Text-to-Image
Reference Images: Use high-quality references for best style transfer results
Size Selection: Match aspect ratio to intended use (square, landscape, portrait)
Model Choice: Use recraft/v3 for typography, flux-pro for professional photography
Image Remix
Strength Tuning: Start with default (0.75), adjust based on desired transformation
Source Quality: Higher quality source images produce better remixes
Iteration: Use --seed to iterate on same generation with different prompts
Balance: Lower strength preserves more detail, higher creates more dramatic changes
Image Edit
Mask Quality: Clean, well-defined masks produce better results
Mask Creation: Use image editors for precise control, --mask-prompt for quick tests
Blending: Use gray tones in masks for smooth transitions
Edit Strength: Use 0.95+ for object removal, 0.7-0.9 for modifications
Test First: Try --mask-prompt before creating detailed masks
Multiple Edits: Edit in stages rather than all at once for complex modifications
Resources
fal.ai Documentation: https://docs.fal.ai/
Model Playground: https://fal.ai/explore/search
API Keys: https://fal.ai/dashboard/keys
Pricing: https://fal.ai/pricing
Workflow Examples
Complete Image Creation Pipeline
# 1. Generate base image
uv run python fal-text-to-image -m flux-2 "Modern office space, minimalist" -o base.png
# 2. Remix to different style
uv run python fal-image-remix base.png "Cyberpunk aesthetic with neon" -o styled.png
# 3. Edit specific region
uv run python fal-image-edit styled.png --mask-prompt "desk" "Add holographic display"
Iterative Refinement
# Generate with seed for reproducibility
uv run python fal-text-to-image "Mountain landscape" --seed 42 -o v1.png
# Remix with same seed, different style
uv run python fal-image-remix v1.png "Oil painting style" --seed 42 -o v2.png
# Fine-tune with editing
uv run python fal-image-edit v2.png --mask-prompt "sky" "Golden hour lighting" --seed 42
Object Removal and Replacement
# 1. Remove unwanted object
uv run python fal-image-edit photo.jpg object_mask.png "Remove" --strength 1.0 -o removed.png
# 2. Fill with new content
uv run python fal-image-edit removed.png region_mask.png "Beautiful flowers" --strength 0.9
Troubleshooting
| Problem | Solution | Tool |
|---|---|---|
FAL_KEY not set |
Export FAL_KEY or create .env file | All |
Model not found |
Check model name in documentation | All |
Image upload fails |
Check file exists and is readable | Remix, Edit |
Mask not working |
Verify mask is grayscale PNG (white=edit) | Edit |
Transformation too strong |
Reduce --strength value | Remix, Edit |
Transformation too weak |
Increase --strength value | Remix, Edit |
Mask-prompt not precise |
Create manual mask in image editor | Edit |
Generation timeout |
Try faster model or wait longer | All |
Rate limit error |
Check fal.ai dashboard usage limits | All |
Limitations
General
Requires active fal.ai API key
Subject to fal.ai rate limits and quotas
Internet connection required
Some models have usage costs (check pricing)
Text-to-Image
Image reference features limited to specific models
Typography quality varies by model
Image Remix
Source image quality affects output quality
Extreme strength values may introduce artifacts
Some styles work better with specific models
Image Edit
Mask quality critical for seamless results
Auto-generated masks (--mask-prompt) less precise than manual masks
Complex edits may require multiple passes
Some models don't support all editing features