--- id: JosiahSiegel/claude-plugin-marketplace/fal-text-to-image version: "b9f4e495" license: MIT install: manual updated: 2026-06-18 --- # fal-text-to-image — fal-text-to-image provides access to multiple text-to-image generation models including FLUX variants, SDXL, and specialized options like Recraft for design assets. Configure parameters like guidance scale, inference steps, image size presets, and batch generation to control output quality and speed. Publisher: JosiahSiegel · Stars: 49 · Updated: 2026-06-18 Install (manual): `git clone https://github.com/JosiahSiegel/claude-plugin-marketplace` ## SKILL.md ## 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. ```typescript 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); ``` ```python 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. ```typescript 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 ```typescript 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. ```typescript 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 sensitivity - `raw`: Boolean, set to `true` to 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. ```typescript const result = await fal.subscribe("fal-ai/flux-lora", { input: { prompt: "A portrait in the style of ", 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 configurations - `path`: URL to LoRA weights (.safetensors) - `scale`: 0-1, strength of LoRA effect ### FLUX Realism **Endpoint:** `fal-ai/flux-realism` **Best For:** Photorealistic images ```typescript 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 ```typescript 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 ```typescript 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 ```typescript 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 ```typescript 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 ```typescript 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 ```typescript 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_image` - `digital_illustration` - `vector_illustration` - `icon` ### Ideogram **Endpoint:** `fal-ai/ideogram` **Best For:** Text in images, typography ```typescript 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 ```typescript 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 ```typescript 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 ```typescript 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:** ```typescript image_size: { width: 1920, height: 1080 } ``` ### Complete Parameter Reference ```typescript 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 ```typescript 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: true` to 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 ```typescript // 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 ```typescript // 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 ```typescript // 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 ``` [View on SkillFed](https://skillfed.io/JosiahSiegel/claude-plugin-marketplace/fal-text-to-image) · [View on GitHub](https://github.com/JosiahSiegel/claude-plugin-marketplace)