Files
adolf/docs/providers/fal.md
alvis bedb527145
Some checks failed
ClawSweeper Dispatch / dispatch (push) Has been cancelled
CodeQL / Security High (actions) (push) Has been cancelled
CodeQL / Security High (channel-runtime-boundary) (push) Has been cancelled
CodeQL / Security High (core-auth-secrets) (push) Has been cancelled
CodeQL / Security High (mcp-process-tool-boundary) (push) Has been cancelled
CodeQL / Security High (network-ssrf-boundary) (push) Has been cancelled
CodeQL / Security High (plugin-trust-boundary) (push) Has been cancelled
CodeQL / Security High (process-exec-boundary) (push) Has been cancelled
Docs Sync Publish Repo / sync-publish-repo (push) Has been cancelled
Docs / docs (push) Has been cancelled
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Has been cancelled
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / runner-admission (push) Has been cancelled
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
CI / pnpm-store-warmup (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / native-i18n (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / ${{ matrix.checkName }} (push) Has been cancelled
CI / checks-node-compat-node22 (push) Has been cancelled
CI / check-bundled-channel-config-metadata (push) Has been cancelled
CI / check-dependencies (push) Has been cancelled
CI / check-guards (push) Has been cancelled
CI / check-lint (push) Has been cancelled
CI / check-prod-types (push) Has been cancelled
CI / check-shrinkwrap (push) Has been cancelled
CI / check-test-types (push) Has been cancelled
CI / check-additional-boundaries-a (push) Has been cancelled
CI / check-additional-boundaries-bcd (push) Has been cancelled
CI / check-additional-extension-bundled (push) Has been cancelled
CI / check-additional-extension-channels (push) Has been cancelled
CI / check-additional-extension-package-boundary (push) Has been cancelled
CI / check-additional-runtime-topology-architecture (push) Has been cancelled
CI / check-session-accessor-boundary (push) Has been cancelled
CI / check-session-transcript-reader-boundary (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
CI / ios-build (push) Has been cancelled
CI / ci-timings-summary (push) Has been cancelled
Native App Locale Refresh / Refresh native fa (push) Has been cancelled
Native App Locale Refresh / Refresh native fr (push) Has been cancelled
Native App Locale Refresh / Refresh native hi (push) Has been cancelled
Native App Locale Refresh / Refresh native id (push) Has been cancelled
Native App Locale Refresh / Refresh native it (push) Has been cancelled
Native App Locale Refresh / Refresh native ja-JP (push) Has been cancelled
Control UI Locale Refresh / plan (push) Has been cancelled
Control UI Locale Refresh / Refresh ${{ matrix.locale }} (push) Has been cancelled
Control UI Locale Refresh / Commit control UI locale refresh (push) Has been cancelled
Live Media Runner Image / Build live media runner image (push) Has been cancelled
Native App Locale Refresh / Refresh native ar (push) Has been cancelled
Native App Locale Refresh / Refresh native de (push) Has been cancelled
Native App Locale Refresh / Refresh native es (push) Has been cancelled
Native App Locale Refresh / Refresh native ko (push) Has been cancelled
Native App Locale Refresh / Refresh native nl (push) Has been cancelled
Native App Locale Refresh / Refresh native pl (push) Has been cancelled
Native App Locale Refresh / Refresh native pt-BR (push) Has been cancelled
Native App Locale Refresh / Refresh native ru (push) Has been cancelled
Native App Locale Refresh / Refresh native sv (push) Has been cancelled
Native App Locale Refresh / Refresh native th (push) Has been cancelled
Native App Locale Refresh / Refresh native tr (push) Has been cancelled
Native App Locale Refresh / Refresh native uk (push) Has been cancelled
Native App Locale Refresh / Refresh native vi (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-CN (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-TW (push) Has been cancelled
Native App Locale Refresh / Commit native locale refresh (push) Has been cancelled
Plugin Init Scaffold Validation / Validate provider scaffold (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Has been cancelled
Plugin NPM Release / Validate release publish approval (push) Has been cancelled
Plugin NPM Release / preview_plugin_pack (push) Has been cancelled
Plugin NPM Release / publish_plugins_npm (push) Has been cancelled
Sandbox Common Smoke / sandbox-common-smoke (push) Has been cancelled
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled
Vendor OpenClaw source as Adolf fork baseline
Adolf is a fork/vendored clone of github.com/openclaw/openclaw (v2026.6.11),
free to diverge. Tree copied sans upstream .git; upstream remote added for
future syncs. Node pinned to 24 (.nvmrc); engines already require >=22.19.
Preserves docs/ARCHITECTURE.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeqyaxJF2nbRXJtae2kNB2
2026-07-05 09:36:54 +00:00

10 KiB

summary, title, read_when
summary title read_when
fal image, video, and music generation setup in OpenClaw Fal
You want to use fal image generation in OpenClaw
You need the FAL_KEY auth flow
You want fal defaults for image_generate, video_generate, or music_generate

OpenClaw ships a bundled fal provider for hosted image, video, and music generation.

Property Value
Provider fal
Auth FAL_KEY (canonical; FAL_API_KEY also works as a fallback)
API fal model endpoints (https://fal.run; video jobs use https://queue.fal.run)
Base URL Override with models.providers.fal.baseUrl

Getting started

```bash openclaw onboard --auth-choice fal-api-key ```
Non-interactive setups can pass `--fal-api-key <key>` or export `FAL_KEY`.
Onboarding also sets `fal/fal-ai/flux/dev` as the default image model when
none is configured.
```json5 { agents: { defaults: { imageGenerationModel: { primary: "fal/fal-ai/flux/dev", }, }, }, } ```

Image generation

The bundled fal image-generation provider defaults to fal/fal-ai/flux/dev.

Capability Value
Max images 4 per request; Krea 2: 1 per request
Size overrides 1024x1024, 1024x1536, 1536x1024, 1024x1792, 1792x1024
Aspect ratio Supported everywhere except Flux image-to-image
Resolution 1K, 2K, 4K (per-model limits below)
Output format png (default) or jpeg; Krea 2 rejects outputFormat overrides

Edit requests (reference images via the shared image / images parameters) route to a per-model edit endpoint with per-model reference limits:

Model family Model ref after fal/ Edit endpoint Max reference images
Flux and other fal models fal-ai/flux/dev (default) /image-to-image 1
GPT Image openai/gpt-image-* /edit 10
Grok Imagine xai/grok-imagine-image /edit 3
Nano Banana (legacy) fal-ai/nano-banana /edit 3
Nano Banana 2 fal-ai/nano-banana-* /edit 14
Nano Banana 2 Lite google/nano-banana-2-lite /edit 14
Krea 2 krea/v2/{medium,large}/text-to-image none (style refs) 10 style references
Flux image-to-image requests do **not** support `aspectRatio` overrides. GPT Image and Nano Banana 2 edit requests use fal's `/edit` endpoint and accept aspect-ratio hints. Nano Banana 2 also accepts extra-native wide/tall ratios such as `4:1`, `1:4`, `8:1`, and `1:8`; Krea 2 validates its own smaller aspect-ratio subset. Grok Imagine has its own ratio list (including `2:1`, `20:9`, `19.5:9`, and their inverses) and only accepts `1K`/`2K` resolutions; legacy Nano Banana and Nano Banana 2 Lite reject `resolution` overrides.

Krea 2 models use fal's native Krea payload schema. OpenClaw sends aspect_ratio, creativity, and image_style_references instead of the generic image_size / edit-endpoint payload used by Flux. The model refs are:

  • fal/krea/v2/medium/text-to-image
  • fal/krea/v2/large/text-to-image

Use Medium for faster expressive illustration, anime, painting, and artistic styles. Use Large for slower photoreal, raw texture, film grain, and detailed looks. Krea defaults to fal.creativity: "medium"; supported values are raw, low, medium, and high.

Krea 2 exposes aspect ratio, not image_size, in fal's request schema. Prefer aspectRatio; OpenClaw maps size to the closest supported Krea aspect ratio and rejects resolution for Krea rather than dropping it.

Use outputFormat: "png" when you want PNG output from fal models that expose output_format. fal does not declare an explicit transparent-background control in OpenClaw, so background: "transparent" is reported as an ignored override for fal models. Krea 2 endpoints do not expose an output_format request field through fal, so OpenClaw rejects outputFormat overrides for Krea requests.

To use Krea 2 Medium:

{
  agents: {
    defaults: {
      imageGenerationModel: {
        primary: "fal/krea/v2/medium/text-to-image",
      },
    },
  },
}

Video generation

The bundled fal video-generation provider defaults to fal/fal-ai/minimax/video-01-live.

Capability Value
Modes Text-to-video, single-image reference, Seedance reference-to-video
Runtime Queue-backed submit/status/result flow for long-running jobs
Timeout 20 minutes per job by default; status polled every 5 seconds
**MiniMax (default):**
- `fal/fal-ai/minimax/video-01-live`

**HeyGen video-agent:**

- `fal/fal-ai/heygen/v2/video-agent`

**Kling and Wan:**

- `fal/fal-ai/kling-video/v2.1/master/text-to-video`
- `fal/fal-ai/wan/v2.2-a14b/text-to-video`
- `fal/fal-ai/wan/v2.2-a14b/image-to-video`

**Seedance 2.0:**

- `fal/bytedance/seedance-2.0/fast/text-to-video`
- `fal/bytedance/seedance-2.0/fast/image-to-video`
- `fal/bytedance/seedance-2.0/fast/reference-to-video`
- `fal/bytedance/seedance-2.0/text-to-video`
- `fal/bytedance/seedance-2.0/image-to-video`
- `fal/bytedance/seedance-2.0/reference-to-video`

MiniMax Live and HeyGen requests send only the prompt plus an optional
single reference image; other overrides are not forwarded. Seedance models
accept `aspectRatio`, `size`, `resolution`, durations of 4-15 seconds, and
an audio toggle.
```json5 { agents: { defaults: { videoGenerationModel: { primary: "fal/bytedance/seedance-2.0/fast/text-to-video", }, }, }, } ``` ```json5 { agents: { defaults: { videoGenerationModel: { primary: "fal/bytedance/seedance-2.0/fast/reference-to-video", }, }, }, } ```
Reference-to-video accepts up to 9 images, 3 videos, and 3 audio references
through the shared `video_generate` `images`, `videos`, and `audioRefs`
parameters, with at most 12 total reference files. Audio references require
at least one image or video reference in the same request.
```json5 { agents: { defaults: { videoGenerationModel: { primary: "fal/fal-ai/heygen/v2/video-agent", }, }, }, } ```

Music generation

The bundled fal plugin also registers a music-generation provider for the shared music_generate tool.

Capability Value
Default model fal/fal-ai/minimax-music/v2.6
Models fal-ai/minimax-music/v2.6 (mp3), fal-ai/ace-step/prompt-to-audio (wav), fal-ai/stable-audio-25/text-to-audio (wav)
Max duration 240 seconds
Runtime Synchronous request plus generated audio download

Use fal as the default music provider:

{
  agents: {
    defaults: {
      musicGenerationModel: {
        primary: "fal/fal-ai/minimax-music/v2.6",
      },
    },
  },
}

fal-ai/minimax-music/v2.6 supports explicit lyrics and instrumental mode, but not both in the same request. ACE-Step and Stable Audio are prompt-to-audio endpoints; choose them with the model override when you want those model families. ACE-Step rejects explicit lyrics; Stable Audio rejects both lyrics and instrumental mode.

The tables and accordions above cover the model families the bundled fal provider special-cases. Other fal image endpoint ids can still be selected as the image model; they are treated like Flux (generic `image_size` payload, one reference image via `/image-to-image`). Shared image tool parameters and provider selection. Shared video tool parameters and provider selection. Shared music tool parameters and provider selection. Agent defaults including image, video, and music model selection.