# Bria Gen Fill

> Run Bria Gen Fill by bria online or via API. $0.03/image, no setup.

**URL:** https://inference.sh/apps/bria/gen-fill
**Last updated:** 2026-11-11

---

Generative fill — replace masked regions with AI-generated content guided by a text prompt

- app: `bria/gen-fill`
- maker: [bria](https://inference.sh/apps/bria.md)
- category: [image](https://inference.sh/apps/category/image.md)
- tasks: [image editing](https://inference.sh/apps/tag/image-editing.md)
- price: $0.03/image
- runs via: api, javascript and python sdk, belt cli, mcp

## gen-fill API Guide

### About
generative fill — replace masked regions with ai-generated content guided by a text prompt

### Get an API Key
Create one in [settings → api keys](https://app.inference.sh/settings/keys). The examples read it from `INFERENCE_API_KEY`.

```bash
export INFERENCE_API_KEY="inf_your_key"
```

### 1. Calling the API

#### Install the Client

```bash
pip install inferencesh
```

#### Run and Get Result
Submit a request and wait for the final result.

```python
import os
from inferencesh import inference

client = inference(api_key=os.environ["INFERENCE_API_KEY"])

## version @3gze2sbs pinned
result = client.run({
        "app": "bria/gen-fill@3gze2sbs",
        "input": {
            "image": "https://example.com/file.png",
            "mask": "https://example.com/file.png",
            "prompt": "prompt"
        }
    })

print(result["output"])
```

#### Stream Live Updates
Get real-time progress updates as the task runs.

```python
import os
from inferencesh import inference

client = inference(api_key=os.environ["INFERENCE_API_KEY"])

## version @3gze2sbs pinned
## stream=True yields updates as they arrive
for update in client.run({
        "app": "bria/gen-fill@3gze2sbs",
        "input": {
            "image": "https://example.com/file.png",
            "mask": "https://example.com/file.png",
            "prompt": "prompt"
        }
    }, stream=True):
    if update.get("progress"):
        print(f"progress: {update['progress']}%")
    if update.get("output"):
        print(f"output: {update['output']}")
```

#### Run in the Background
Start the task and get its id back right away, then check on it with `GET /tasks/{id}`. It is done when `status` is 10 (completed), 11 (failed) or 12 (cancelled).

```python
import os
from inferencesh import inference, TaskStatus

client = inference(api_key=os.environ["INFERENCE_API_KEY"])

## returns as soon as the task is created
task = client.run({
        "app": "bria/gen-fill@3gze2sbs",
        "input": {
            "image": "https://example.com/file.png",
            "mask": "https://example.com/file.png",
            "prompt": "prompt"
        }
    }, wait=False)

## later: read its current state
state = client.tasks.get(task["id"]).data
if state["status"] == TaskStatus.COMPLETED:
    print(state["output"])
```

### 2. Files

#### Automatic Upload

```python
## local file paths are automatically uploaded
result = client.run({
    "app": "bria/gen-fill@3gze2sbs",
    "input": {
        "image": "/path/to/local/image.png",  # detected & uploaded
        "audio": "https://example.com/audio.mp3",  # url passed through
    }
})
```

#### Manual Upload

```python
## upload and get a hosted URL
file = client.files.upload("/path/to/file.png")
print(file.uri)  # https://cloud.inference.sh/...
```

### 3. Schema

#### Input
- **image** (string) *required*: Source image (JPEG, PNG, WEBP)
- **mask** (string) *required*: Binary mask defining fill region (white=fill, black=keep)
- **prompt** (string) *required*: Text description of content to generate in the masked area
- **negative_prompt** (string): Text specifying unwanted elements
- **seed** (integer): Seed for reproducible results (0-2147483647)
- **prompt_content_moderation** (boolean): Return 422 if prompt fails moderation. Default: true

#### Output
- **image** (string): Image with masked region filled by generated content

## other image apps

- [Seedream 5.5](https://inference.sh/apps/bytedance/seedream-5-5.md): $0.020 per 1K/1.5K image, $0.035 per 2K image, plus $0.008 per reference image
- [MiniMax H3 Image](https://inference.sh/apps/minimax/h3-image.md): $2.30/M text in, $1.50/M image in, $3.80/M image out (token-based)
- [GPT Image 2.6 Flare](https://inference.sh/apps/openai/gpt-image-2-6-flare.md): $30.00/M output, $5.00/M text input, $8.00/M image input, $0.10/M SVG input, $0.50/M SVG output
- [GPT Image 2.6 Sunburst](https://inference.sh/apps/openai/gpt-image-2-6-sunburst.md): $30.00/M out, $5.00/M text in, $8.00/M img in; SVG $0.10/$0.50/M in/out
- [Gemini Nano Banana 2.1](https://inference.sh/apps/google/gemini-nano-banana-2-1.md): $1.50/M input, $0.0336–$0.1134/image (1K–4K), +$0.014/query Google Search

## faq

### how much does Bria Gen Fill cost?

$0.03/image. you pay per run from your inference shell credits. no subscription is required.

### how do I run Bria Gen Fill via api?

call bria/gen-fill with the javascript or python sdk, the rest api, or `belt app run bria/gen-fill` from a terminal. the api reference on this page lists every input.

### who makes Bria Gen Fill?

Bria Gen Fill is made by bria and runs on inference shell. every bria app is listed at https://inference.sh/apps/bria.

### can my agent use Bria Gen Fill?

yes. agents call it as a tool through the inference shell mcp server (https://api.inference.sh/mcp), the belt cli or the sdk, and pay per run like you do.

### what are the alternatives to Bria Gen Fill?

other image apps on inference shell include Seedream 5.5, MiniMax H3 Image, GPT Image 2.6 Flare, GPT Image 2.6 Sunburst. they run through the same api, so switching is a one-line change.
