> ## Documentation Index
> Fetch the complete documentation index at: https://docs.runflow.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Pick a model

> Decision tree from task to Runflow model.

## What you'll do

Match a task to the right Runflow model in under a minute.

## Decision tree

| Task                               | Reach for                                                                                                                                              | Why                                                     |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------- |
| Replace a product photo background | [`runflow/background-replace`](/models/runflow/background-replace)                                                                                     | Preserves the foreground subject, matches new lighting. |
| Remove a background only           | [`bria/background/remove`](/models/bria/background/remove)                                                                                             | Cheap and fast.                                         |
| Remove a person, sign, or logo     | [`runflow/object-removal`](/models/runflow/object-removal)                                                                                             | Inpaint with no prompt needed.                          |
| Change eye color                   | [`runflow/eye-color`](/models/runflow/eye-color)                                                                                                       | Targeted edit, identity-preserving.                     |
| Edit any image with a prompt       | [`google/nano-banana-2/edit`](/models/google/nano-banana-2/edit) or [`black-forest-labs/flux-pro/kontext`](/models/black-forest-labs/flux-pro/kontext) | Best general-purpose edit.                              |
| Generate an image from text        | [`google/nano-banana-pro`](/models/google/nano-banana-pro)                                                                                             | High-quality general-purpose text-to-image.             |
| Generate a video from text         | [`google/veo3.1`](/models/google/veo3.1) or [`bytedance/seedance/2.0/text-to-video`](/models/bytedance/seedance/2.0/text-to-video)                     | veo3.1 for cinematic, seedance for speed.               |
| Animate a still image              | [`google/veo3.1/image-to-video`](/models/google/veo3.1/image-to-video)                                                                                 | Image-to-video conditioning.                            |
| Add character to a video           | [`heygen/v3/video-agent`](/models/heygen/v3/video-agent)                                                                                               | Avatar-driven.                                          |
| Generate speech                    | [`elevenlabs/tts/eleven-v3`](/models/elevenlabs/tts/eleven-v3)                                                                                         | High-fidelity TTS.                                      |
| Upscale a photo                    | [`topaz/upscale/image`](/models/topaz/upscale/image)                                                                                                   | Up to 4x with detail recovery.                          |

Browse the full catalog in [/models](/models).

## Three things to check before you pick

1. **Pricing unit.** `$/request` (flat) vs `$/megapixel` vs `$/second` (video). Map to your average asset size.
2. **Result delivery.** Runs are asynchronous by default. Use [callbacks](/concepts/callbacks) or polling unless the model page documents `sync_mode` and you intentionally want inline output.
3. **Inputs.** Most edit models accept either a public URL or an upload. Read the model page for required input keys.

## Try one

Pick a model from the table, open its page, and copy the curl block. The samples come straight from the per-model `llms.txt` and most use the literal string `Bearer RUNFLOW_API_KEY` rather than an env-var. Substitute your actual token before running, or change the header to `Bearer $RUNFLOW_API_KEY` (curl) / `Bearer ${process.env.RUNFLOW_API_KEY}` (Node) / `f"Bearer {os.environ['RUNFLOW_API_KEY']}"` (Python).

## Related

<CardGroup cols={2}>
  <Card title="Models" icon="grid" href="/models">Full filterable catalog.</Card>
  <Card title="Quickstart" icon="rocket" href="/quickstart">5-minute walkthrough.</Card>
</CardGroup>
