Generate AI images using fal.ai models like FLUX, Stable Diffusion, and more.
Generate AI images using fal.ai models like FLUX, Stable Diffusion, and more.
/plugin marketplace add JosiahSiegel/claude-code-marketplace/plugin install fal-ai-master@claude-plugin-marketplaceGenerate AI images using fal.ai models like FLUX, Stable Diffusion, and more.
Guides you through generating images with fal.ai, selecting the optimal model and parameters for your use case.
Gather Requirements
Select Model
Configure Parameters
Generate Code
| Need | Recommended Model | Why |
|---|---|---|
| Best quality | fal-ai/flux-2-pro | Latest FLUX, highest fidelity |
| Fast iteration | fal-ai/flux/schnell | 4-step generation |
| Open source | fal-ai/flux/dev | 12B parameter model |
| Budget friendly | fal-ai/fast-sdxl | Lower cost per image |
| Custom styles | fal-ai/flux-lora | Fine-tuned models |
| Design work | fal-ai/recraft-v3 | Vector-style outputs |
| Preset | Dimensions | Use Case |
|---|---|---|
square | 512x512 | Thumbnails, icons |
square_hd | 1024x1024 | Social media |
portrait_4_3 | 768x1024 | Portraits |
portrait_16_9 | 576x1024 | Mobile wallpapers |
landscape_4_3 | 1024x768 | Presentations |
landscape_16_9 | 1024x576 | Widescreen |
import { fal } from "@fal-ai/client";
fal.config({ credentials: process.env.FAL_KEY });
async function generateImage(prompt: string) {
const result = await fal.subscribe("fal-ai/flux/dev", {
input: {
prompt,
image_size: "landscape_16_9",
num_inference_steps: 28,
guidance_scale: 3.5,
num_images: 1,
enable_safety_checker: true,
output_format: "jpeg"
},
logs: true,
onQueueUpdate: (update) => {
if (update.status === "IN_PROGRESS") {
console.log("Generating...", update.logs);
}
}
});
return result.images[0].url;
}
import fal_client
def generate_image(prompt: str) -> str:
result = fal_client.subscribe(
"fal-ai/flux/dev",
arguments={
"prompt": prompt,
"image_size": "landscape_16_9",
"num_inference_steps": 28,
"guidance_scale": 3.5,
"num_images": 1,
"enable_safety_checker": True,
"output_format": "jpeg"
},
with_logs=True,
on_queue_update=lambda update: print(f"Status: {update}")
)
return result["images"][0]["url"]
Image-to-Image:
const result = await fal.subscribe("fal-ai/flux/dev/image-to-image", {
input: {
image_url: "https://example.com/input.jpg",
prompt: "Transform into oil painting style",
strength: 0.75
}
});
Inpainting:
const result = await fal.subscribe("fal-ai/flux/dev/inpainting", {
input: {
image_url: "https://example.com/photo.jpg",
mask_url: "https://example.com/mask.png",
prompt: "A golden retriever"
}
});
ControlNet:
const result = await fal.subscribe("fal-ai/flux/dev/controlnet", {
input: {
prompt: "Modern architecture",
control_image_url: "https://example.com/edges.png",
controlnet_conditioning_scale: 0.8
}
});
import { fal, ValidationError, ApiError } from "@fal-ai/client";
try {
const result = await fal.subscribe("fal-ai/flux/dev", {
input: { prompt: "Your prompt" }
});
} catch (error) {
if (error instanceof ValidationError) {
console.error("Invalid parameters:", error.body);
} else if (error instanceof ApiError) {
if (error.status === 429) {
console.error("Rate limited, retry later");
} else {
console.error("API error:", error.message);
}
}
}