---
url: /orchestration/recipes/wan-image.md
---

> Documentation index: https://developer.civitai.com/llms.txt — every page on this site has a markdown version at its URL + `.md`.

# WAN image generation

WAN is an open video model family — and the same architecture generates images. The orchestrator exposes WAN's image-gen path via `engine: "wan"`, with the model version picked by the `version` field.

For video workloads, see [WAN video generation](https://developer.civitai.com/orchestration/recipes/wan.md) — shares the engine, different operations.

| `version` | Notes |
|-----------|-------|
| `v2.2` | **Default** — stable hosted path. Exposes `steps` (default 27) and `acceleration` tier. Supports LoRAs. |
| `v2.2-5b` | 5B-parameter variant of v2.2 — lighter, exposes a `shift` parameter in addition to the base knobs. Default `steps: 40`. |
| `v2.5` | Newer v2.5 release. Simpler knob set than v2.2. |
| `v2.7` | Latest release. Simpler knob set than v2.2. |

**Default choice**: `version: "v2.2"`, `provider: "fal"`. Step up to `v2.5` or `v2.7` when you want the newer output, drop to `v2.2-5b` for lower-cost generation with the `shift` control.

## Prerequisites

* No checkpoint URN — the ecosystem ships its own models per version

## v2.2 (default)

```http
POST https://orchestration.civitai.com/v2/consumer/workflows?wait=60
Authorization: Bearer <your-token>
Content-Type: application/json

{
  "steps": [{
    "$type": "imageGen",
    "input": {
      "engine": "wan",
      "version": "v2.2",
      "provider": "fal",
      "prompt": "A photorealistic portrait of a woman with flowers in her hair, golden hour lighting",
      "imageSize": "square_hd",
      "guidanceScale": 3.5,
      "steps": 27,
      "quantity": 1
    }
  }]
}
```

### Parameters

| Field | Default | Range | Notes |
|-------|---------|-------|-------|
| `version` | `v2.2` | `v2.2` / `v2.2-5b` / `v2.5` / `v2.7` | Required — picks the model variant. |
| `provider` | `fal` | `fal` | `fal` is currently the only provider for WAN image gen. |
| `prompt` | — ✅ | ≥ 1 char | Natural-language works best. |
| `negativePrompt` | *(none)* | string | Optional. |
| `imageSize` | `square_hd` | `square_hd`, `square`, `portrait_4_3`, `portrait_16_9`, `landscape_4_3`, `landscape_16_9` (fixed enum) | Enum, not width/height. |
| `guidanceScale` | `3.5` | `1`–`10` | |
| `steps` | `27` | `2`–`40` | Only on `v2.2`. |
| `quantity` | `1` | `1`–`10` | |
| `seed` | random | int32 | |
| `enablePromptExpansion` | `false` | boolean | Model-side prompt expansion. |
| `enableSafetyChecker` | `false` | boolean | |
| `loras[]` | `[]` | array of `{ air, strength }` | LoRA support via the `ImageGenInputLora` shape — `{ "air": "urn:air:…", "strength": 1.0 }`. |

### With acceleration (`v2.2` only)

`v2.2` exposes an `acceleration` tier that trades a small quality hit for substantial speedups. Three levels — use `fast` for a good balance, `faster` when throughput matters more than fidelity:

```json
{
  "steps": [{
    "$type": "imageGen",
    "input": {
      "engine": "wan",
      "version": "v2.2",
      "provider": "fal",
      "prompt": "A cozy cabin in the woods at sunset",
      "imageSize": "square_hd",
      "acceleration": "faster",
      "guidanceScale": 3.5,
      "steps": 27
    }
  }]
}
```

`acceleration` accepts `none` (default) / `fast` / `faster`.

## v2.2-5b (lightweight with shift control)

```json
{
  "steps": [{
    "$type": "imageGen",
    "input": {
      "engine": "wan",
      "version": "v2.2-5b",
      "provider": "fal",
      "prompt": "A serene mountain landscape with a crystal clear lake at dawn",
      "imageSize": "landscape_16_9",
      "guidanceScale": 3.5,
      "steps": 40,
      "shift": 2
    }
  }]
}
```

Additional knob over `v2.2`:

| Field | Default | Range | Notes |
|-------|---------|-------|-------|
| `shift` | `2` | `1`–`10` | Controls the WAN "shift" parameter — sampling shift factor. `2` is the tuned default; bumping higher produces smoother but sometimes softer output. |

Default `steps` is `40` (up from `27` on `v2.2`); max is `50`.

## v2.5 and v2.7 (newer releases, simpler knobs)

Both expose the base shared surface (`prompt`, `negativePrompt`, `imageSize`, `guidanceScale`, `quantity`, `seed`, `loras`, prompt-expansion / safety-checker toggles) without exposing `steps`, `acceleration`, or `shift`:

```json
{
  "steps": [{
    "$type": "imageGen",
    "input": {
      "engine": "wan",
      "version": "v2.5",
      "provider": "fal",
      "prompt": "A cinematic sci-fi cityscape at sunset, neon lighting",
      "imageSize": "landscape_16_9",
      "guidanceScale": 3.5
    }
  }]
}
```

```json
{
  "steps": [{
    "$type": "imageGen",
    "input": {
      "engine": "wan",
      "version": "v2.7",
      "provider": "fal",
      "prompt": "An epic fantasy dragon perched on a mountain peak at dawn",
      "imageSize": "landscape_16_9",
      "guidanceScale": 3.5
    }
  }]
}
```

Pick `v2.7` for the latest, `v2.5` if you've validated it against your workload and want to pin to it.

## Reading the result

Standard `imageGen` output: an `images[]` array, one entry per `quantity` ([shape and URL expiry](https://developer.civitai.com/orchestration/recipes.md#reading-results)).

## Runtime

Provider queue time is the dominant factor. Typical wall times for `quantity: 1`:

| Version | Wall time (no acceleration) | With `acceleration: fast` / `faster` |
|---------|----------------------------|--------------------------------------|
| `v2.2` | 15–40 s | 7–15 s |
| `v2.2-5b` | 10–25 s | (no acceleration) |
| `v2.5` | 15–40 s | (no acceleration) |
| `v2.7` | 15–40 s | (no acceleration) |

Submit `wait=0` + poll for large `quantity` or busy periods.

## Cost

Preview the exact charge with `whatif=true` ([Payments (Buzz)](https://developer.civitai.com/orchestration/guide/submitting-work.md#payments-buzz)).

Flat per-image pricing by `version`, with LoRA usage doubling the base on `v2.2`:

```
total = base × quantity
```

| Version | Base (per image) | Notes |
|---------|------------------|-------|
| `v2.2` | **150** (no LoRA) / **300** (with LoRA) | LoRA-enabled endpoint roughly 2× the price. |
| `v2.2-5b` | **~100** | Lighter variant, lower cost. |
| `v2.5` | **~32.5** | Cheapest of the WAN image tiers. |
| `v2.7` | **~39** standard / **~97.5** pro | |

Examples:

* `v2.2`, `quantity: 1`, no LoRA → **~150 Buzz**
* `v2.2`, `quantity: 2`, with `loras: [{…}]` → ~600 Buzz
* `v2.5`, `quantity: 4` → ~130 Buzz
* `v2.7`, `quantity: 1` → **~39 Buzz**

Dimensions (`imageSize` enum), `steps`, and `acceleration` don't change the Buzz price — they affect runtime but the provider charges flat per-image per version.

## Troubleshooting

Timeouts, moderation blocks and expired blob URLs: see [Common troubleshooting](https://developer.civitai.com/orchestration/recipes.md#common-troubleshooting).

| Symptom | Likely cause | Fix |
|---------|--------------|-----|
| `400` with "version must be one of" | Typo or using a WAN video version number | Use `v2.2`, `v2.2-5b`, `v2.5`, or `v2.7`. |
| `400` with "provider must be fal" | Other providers aren't exposed yet | Stick with `fal`. |
| `400` with "acceleration is not a valid property" | Only `v2.2` exposes `acceleration` | Remove the field on v2.5/v2.7/v2.2-5b. |
| `400` with "shift is not a valid property" | Only `v2.2-5b` exposes `shift` | Remove the field on other versions. |
| `400` with "imageSize must be one of" | Sent width/height like other ecosystems | WAN uses a fixed enum — pick `square_hd`, `landscape_16_9`, etc. Use a different engine (Flux 2, Qwen, etc.) if you need arbitrary dimensions. |
| LoRA has no effect | Wrong AIR URN, or incompatible ecosystem | WAN LoRAs must be tagged for the WAN ecosystem and compatible with the version you're running. |

## Related

* [`SubmitWorkflow`](https://developer.civitai.com/orchestration/reference/operations/SubmitWorkflow.md) · [`GetWorkflow`](https://developer.civitai.com/orchestration/reference/operations/GetWorkflow.md)
* [WAN video generation](https://developer.civitai.com/orchestration/recipes/wan.md) — WAN for videoGen (same engine, different operation)
* [Flux 2](https://developer.civitai.com/orchestration/recipes/flux2.md) / [Qwen](https://developer.civitai.com/orchestration/recipes/qwen.md) / [SDXL](https://developer.civitai.com/orchestration/recipes/sdxl.md) — open-weights / sdcpp alternatives with width/height control
* [Image upscaling](https://developer.civitai.com/orchestration/recipes/image-upscaler.md) — chain after `imageGen` for higher-res output
* Full parameter catalog: the `Wan22FalImageGenInput`, `Wan225bFalImageGenInput`, `Wan25FalImageGenInput`, `Wan27FalImageGenInput` schemas in the [API reference](https://developer.civitai.com/orchestration/reference.md)
* [`imageGen` OpenAPI spec](https://orchestration.civitai.com/v2/consumer/recipes/imageGen/openapi.yaml)
