home / skills / vm0-ai / vm0-skills / fal.ai

fal.ai skill

/fal.ai

This skill lets you generate images from text prompts using fal.ai, producing visuals for posts, headers, and illustrations quickly.

npx playbooks add skill vm0-ai/vm0-skills --skill fal.ai

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
4.7 KB
---
name: fal.ai
description: fal.ai AI image generation. Use this skill when you need to use fal, fal.ai, or generate images from text prompts using AI text-to-image models.
vm0_secrets:
  - FAL_KEY
---

# fal.ai Image Generator

Use the fal.ai API to **generate images from text prompts**.

> Official docs: `https://fal.ai/docs`

---

## When to Use

Use this skill when you need to:

- **Generate images from text descriptions**
- **Create illustrations or visual content**
- **Generate blog headers, thumbnails, or social media images**

---

## Prerequisites

1. Sign up at [fal.ai](https://fal.ai/)
2. Get your API key from the dashboard

```bash
export FAL_KEY="your-api-key"
```

---


> **Important:** When using `$VAR` in a command that pipes to another command, wrap the command containing `$VAR` in `bash -c '...'`. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.
> ```bash
> bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"'
> ```

## How to Use

### 1. Generate Image (nano-banana-pro - fast)

Write to `/tmp/fal_request.json`:

```json
{
  "prompt": "A futuristic city at sunset, cyberpunk style"
}
```

Then run:

```bash
bash -c 'curl -s -X POST "https://fal.run/fal-ai/nano-banana-pro" --header "Authorization: Key ${FAL_KEY}" --header "Content-Type: application/json" -d @/tmp/fal_request.json' | jq -r '.images[0].url'
```

### 2. Generate Image (flux/schnell - fast)

Write to `/tmp/fal_request.json`:

```json
{
  "prompt": "A cute cat eating a cookie"
}
```

Then run:

```bash
bash -c 'curl -s -X POST "https://fal.run/fal-ai/flux/schnell" --header "Authorization: Key ${FAL_KEY}" --header "Content-Type: application/json" -d @/tmp/fal_request.json' | jq -r '.images[0].url'
```

### 3. Generate Image (recraft-v3 - high quality)

Write to `/tmp/fal_request.json`:

```json
{
  "prompt": "Abstract art, vibrant colors"
}
```

Then run:

```bash
bash -c 'curl -s -X POST "https://fal.run/fal-ai/recraft-v3" --header "Authorization: Key ${FAL_KEY}" --header "Content-Type: application/json" -d @/tmp/fal_request.json' | jq -r '.images[0].url'
```

### 4. Generate with Custom Size

Write to `/tmp/fal_request.json`:

```json
{
  "prompt": "Mountain landscape",
  "image_size": "landscape_16_9"
}
```

Then run:

```bash
bash -c 'curl -s -X POST "https://fal.run/fal-ai/nano-banana-pro" --header "Authorization: Key ${FAL_KEY}" --header "Content-Type: application/json" -d @/tmp/fal_request.json' | jq -r '.images[0].url'
```

### 5. Download Generated Image

Write to `/tmp/fal_request.json`:

```json
{
  "prompt": "A minimalist workspace"
}
```

Then run:

```bash
bash -c 'curl -s -X POST "https://fal.run/fal-ai/nano-banana-pro" --header "Authorization: Key ${FAL_KEY}" --header "Content-Type: application/json" -d @/tmp/fal_request.json' | jq -r '.images[0].url' | xargs curl -sL -o /tmp/image.png
```

### 6. Pipe Prompt from Echo (JSON escaped)

```bash
echo "A dragon breathing fire, epic fantasy art" | jq -Rs '{prompt: .}' > /tmp/fal_request.json
bash -c 'curl -s -X POST "https://fal.run/fal-ai/nano-banana-pro" --header "Authorization: Key ${FAL_KEY}" --header "Content-Type: application/json" -d @/tmp/fal_request.json' | jq -r '.images[0].url'
```

### 7. Pipe Prompt from File (JSON escaped)

```bash
cat /tmp/prompt.txt | jq -Rs '{prompt: .}' > /tmp/fal_request.json
bash -c 'curl -s -X POST "https://fal.run/fal-ai/nano-banana-pro" --header "Authorization: Key ${FAL_KEY}" --header "Content-Type: application/json" -d @/tmp/fal_request.json' | jq -r '.images[0].url'
```

### 8. Pipe with Additional Parameters

```bash
echo "Neon city at night" | jq -Rs '{prompt: ., image_size: "landscape_16_9"}' > /tmp/fal_request.json
bash -c 'curl -s -X POST "https://fal.run/fal-ai/nano-banana-pro" --header "Authorization: Key ${FAL_KEY}" --header "Content-Type: application/json" -d @/tmp/fal_request.json' | jq -r '.images[0].url'
```

---

## Available Models

| Model | Description |
|-------|-------------|
| `nano-banana-pro` | Fast, good quality (recommended) |
| `flux/schnell` | Fast generation |
| `flux-pro` | High quality |
| `recraft-v3` | High quality vector/illustration |

See more at: https://fal.ai/models

---

## Image Sizes

| Size | Aspect Ratio |
|------|--------------|
| `square` | 1:1 |
| `square_hd` | 1:1 (high res) |
| `portrait_4_3` | 4:3 |
| `portrait_16_9` | 16:9 |
| `landscape_4_3` | 3:4 |
| `landscape_16_9` | 9:16 |

---

## Prompt Guidelines

For best results:

1. **Be specific** - Describe the subject clearly
2. **Add style hints** - "modern", "minimalist", "photorealistic", "digital art", "cinematic"
3. **Specify colors/mood** - "blue and purple gradient", "warm tones", "dark and moody"
4. **Keep it concise** - Clear and focused descriptions work better

Overview

This skill integrates with fal.ai to generate images from text prompts using fal's text-to-image models. It provides shell-ready examples for sending prompts, selecting models, choosing image sizes, and downloading results. Use it to quickly produce illustrations, thumbnails, or visual assets from concise prompts.

How this skill works

The skill sends JSON payloads containing a prompt (and optional parameters like image_size) to fal.ai model endpoints via authenticated HTTP POST requests. Responses include image URLs that you can extract with jq and download with curl. Multiple model endpoints are shown for fast or high-quality generation and different aspect ratios.

When to use it

  • You need to generate an image from a text description
  • You want quick command-line image generation workflows
  • Creating blog headers, thumbnails, or social media visuals
  • Generating concept art, illustrations, or vector-style images
  • Automating image creation in scripts or CI pipelines

Best practices

  • Set your FAL_KEY as an environment variable and keep it secure
  • Wrap curl commands in bash -c when piping to avoid environment variable loss in some shells
  • Be specific in prompts: include subject, style, colors, and mood
  • Choose model by quality/speed tradeoff (nano-banana-pro for speed, recraft-v3 for high-quality illustration)
  • Specify image_size for the desired aspect ratio and resolution

Example use cases

  • Generate a photorealistic product mockup for a landing page using nano-banana-pro
  • Create a stylized social media thumbnail with landscape_16_9 size and a cinematic prompt
  • Render a high-quality vector illustration with recraft-v3 for print or marketing
  • Batch-generate header images by piping prompts from files and downloading results into a folder
  • Automate daily concept art generation in a script by rotating models and sizes

FAQ

How do I set and use my API key?

Export your key as FAL_KEY (export FAL_KEY="your-api-key") and include Authorization: Key ${FAL_KEY} in curl headers.

Which model should I pick for speed vs quality?

Use nano-banana-pro or flux/schnell for fast results; use flux-pro or recraft-v3 for higher-quality or vector-style outputs.