# Bria Expand (FIBO-Edit-1.5) API

> ابزار اوت‌پینتینگ برای گسترش تصویر به نسبت ابعاد جدید یا بوم سفارشی کمتر از 25 مگاپیکسل

تصویر را فراتر از مرزهایش گسترش می‌دهد. یکی از نه مقدار `aspect_ratio` را انتخاب کنید، یا `canvas_size` را به‌صورت [width, height] با مساحت کمتر از 25 مگاپیکسل، به‌همراه `original_image_size` و `original_image_location` تعیین کنید. `prompt` اختیاری ناحیهٔ جدید را توصیف می‌کند. `retain_original_quality` و `preserve_alpha` به‌صورت پیش‌فرض فعال‌اند و `return_model_output` برای تشخیص خطاهاست.

- Model id: `bria/fibo-edit-1.5/expand`
- Made by: Bria AI
- Category: Image Editing
- Output: image
- Price: $0.04 / image (cheapest run $0.04 (40 API credits))
- Run: `POST https://api.doitong.com/v1/run/bria/fibo-edit-1.5/expand`
- Quote: `POST https://api.doitong.com/v1/quote/bria/fibo-edit-1.5/expand`
- Docs page: https://doitong.com/fa/developers/models/bria/fibo-edit-1.5/expand

## Pricing

Price: **$0.04 / image**. Billed per generated image.

The full example input below costs $0.04 = 40 API credits (1 image × 40 API credits).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.com/v1/quote/bria/fibo-edit-1.5/expand` with the same JSON body returns the exact price for that input; the quote is exactly what a run charges. Invalid input is never charged and failed or canceled requests are refunded automatically.

## Input parameters

Send either the canonical name or the native field name (not both). Canonical names are the same across models.

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `image_url` | `image` | string (image URL) | yes |  |  | تصویر مورد استفاده برای گسترش، ارائه‌شده به‌صورت فایل یا URL. |
| `canvas_size` |  | array of integer \| null | no |  | 2 – 2 items | ابعاد تصویر گسترش‌یافته همراه با 'original_image_location'. برای بوم نهایی [width, height] را مشخص کنید و مساحت آن را کمتر از 25 مگاپیکسل نگه دارید. |
| `aspect_ratio` |  | enum (string) \| null | no |  | `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9` | تنظیم نسبت تصویر نهایی که تصویر اصلی را در مرکز قرار می‌دهد و بوم پیرامون را گسترش می‌دهد. تعیین آن بر هر دو مورد 'original_image_size' و 'original_image_location' اولویت دارد. |
| `original_image_size` |  | array of integer \| null | no |  | 2 – 2 items | [width, height] هدف برای تصویر اصلی در بوم. ارائه 'aspect_ratio' این تنظیم را نادیده می‌گیرد؛ در غیر این صورت، تصویر پیش از جای‌گذاری به این ابعاد تغییر اندازه می‌دهد. |
| `original_image_location` |  | array of integer \| null | no |  | 2 – 2 items | مختصات جای‌گذاری [x, y] برای گوشه بالا-چپ تصویر اصلی؛ هنگام ارائه 'aspect_ratio' نادیده گرفته می‌شود. جای‌گذاری خارج از مرزهای بوم مجاز است و تصویر اصلی را برش می‌دهد. |
| `prompt` |  | string \| null | no |  |  | توضیح اختیاری محتوای ناحیه افزوده‌شده. تنظیم ساده بوم معمولاً به توضیح نیاز ندارد: حذف آن از مدل می‌خواهد فقط تصویر موجود را گسترش دهد. |
| `seed` |  | integer \| null | no |  | 0 – 2,147,483,647 | Seed تولید تصادفی که صرف‌نظر از ارائه در اینجا یا انتخاب تصادفی هنگام حذف، همیشه در پاسخ گنجانده می‌شود. مقداری که از پاسخ قبلی گرفته شود می‌تواند نتیجه آن را بازسازی کند. |
| `negative_prompt` |  | string \| null | no |  |  | بررسی سازگاری برای درخواست‌های نوشته‌شده برای مسیر API گسترش SDXL: ارائه این ورودی پشتیبانی‌نشده رد صریح را فعال می‌کند تا مقدار آن بی‌سروصدا از بین نرود. به‌جای آن از 'prompt' استفاده کنید. |
| `retain_original_quality` |  | boolean | no | `true` |  | این گزینه را فعال کنید تا پیکسل‌های اصلی محافظت‌شده با ماسک، بدون نمونه‌برداری مجدد و با وضوح کامل حفظ شوند. مدل تقریباً در یک مگاپیکسل تولید می‌کند و سپس برای بوم‌های بزرگ‌تر بزرگ‌نمایی می‌کند. غیرفعال‌کردن آن نتیجه‌ای یکنواخت و نرم ایجاد می‌کند که ممکن است درز را در پس‌زمینه بافت‌دار پنهان کند. |
| `preserve_alpha` |  | boolean | no | `true` |  | با گسترش کانال آلفای اصلی از طریق تکرار لبه، شفافیت ورودی را در صورت نیاز برای گسترش برش حفظ می‌کند. چون تولید در RGB انجام می‌شود، مدل آلفا تولید نمی‌کند. برای دریافت خروجی RGB تخت‌شده، آن را غیرفعال کنید. |
| `return_model_output` |  | boolean | no | `false` |  | یک فریم تشخیصی اضافی برگردانید تا خطاهای مدل از خطاهای ترکیب متمایز شوند، بدون تغییر تصویر نهایی. این فریم نتیجه مدل را پیش از درج مجدد تصویر اصلی و ترکیب درزها نشان می‌دهد؛ هر نقص مرزی که در این فریم دیده شود خطای تولید است، نه خطای پس‌پردازش. |

File parameters (`image`) take a public `https://` URL, a `data:` URI up to 10 MB, or the `file_url` of an upload from `POST /files`.

## Example input

Required parameters only:

```json
{
  "image": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

A fuller example:

```json
{
  "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

## Run it

Set `DOITONG_API_KEY` to a key from https://doitong.com/developers/dashboard#keys. `?wait=20` returns the finished request in the same call when it is ready within 20 seconds; otherwise poll `GET /requests/{id}` (it also accepts `?wait=`), or pass `webhook_url`.

### curl

```bash
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/bria/fibo-edit-1.5/expand?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.com/v1";
const headers = {
  "Authorization": "Bearer " + process.env.DOITONG_API_KEY,
  "Content-Type": "application/json",
};

// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/bria/fibo-edit-1.5/expand?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);

// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
  res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
  request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
```

### Python

```python
import os
import requests

API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/bria/fibo-edit-1.5/expand", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
    raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])

# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
    request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
    raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
```

### MCP

The MCP server at `https://api.doitong.com/v1/mcp` exposes the tools `search_models`, `get_model`, `quote`, `run`, `get_request`, `cancel_request`, `list_requests`, `create_upload` and `get_account`. A `run` call for this model:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run",
    "arguments": {
      "model_id": "bria/fibo-edit-1.5/expand",
      "input": {
        "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
      },
      "wait_seconds": 20
    }
  }
}
```

## Response

Every call returns a request object. `status` is one of `queued`, `running`, `succeeded`, `failed`, `canceled`. `outputs` lists the generated files with URLs on our storage (kept forever, or 7 days with `?storage=temporary`; `storage` says which); `output` is the model's own result object with the same URLs.

```json
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "bria/fibo-edit-1.5/expand",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 40,
    "usd": "0.04",
    "charged": 40,
    "refunded": 0
  },
  "input": {
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  },
  "output": {
    "image": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200,
      "width": 1024,
      "height": 768
    },
    "seed": 42,
    "structured_instruction": {},
    "model_output": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200,
      "width": 1024,
      "height": 768
    }
  },
  "outputs": [
    {
      "type": "image",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_size": 1843200,
      "width": 1024,
      "height": 768,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `image` | object {url, content_type, file_name, file_size, width, height} | تصویر حاصل از گسترش. |
| `seed` | integer | Seed اعمال‌شده هنگام تولید که امکان بازتولید نتیجه را فراهم می‌کند. |
| `structured_instruction` | object | پرامپت ساختاریافته استفاده‌شده برای شرطی‌سازی مدل. |
| `model_output` | object {url, content_type, file_name, file_size, width, height} \| null | فریم ترکیب‌نشده که فقط هنگام فعال‌بودن 'return_model_output' گنجانده می‌شود. این فریم ابعاد بوم درخواستی را دارد و خروجی مدل را بدون محتوای چسبانده یا ترکیب‌شده شامل می‌شود. |

## Related models

- [Bria Product Holding (FIBO-Edit-1.5)](https://doitong.com/developers/models/bria/fibo-edit-1.5/product-holding.md) (`bria/fibo-edit-1.5/product-holding`): $0.04 / image
- [Bria Virtual Try-On (FIBO-Edit-1.5)](https://doitong.com/developers/models/bria/fibo-edit-1.5/virtual-try-on.md) (`bria/fibo-edit-1.5/virtual-try-on`): $0.04 / image
- [Fibo Edit 1.5 Image Editing](https://doitong.com/developers/models/bria/fibo-edit-1.5/edit.md) (`bria/fibo-edit-1.5/edit`): $0.04 / image
- [FLUX.1 Kontext \[pro\]](https://doitong.com/developers/models/flux-pro/kontext.md) (`flux-pro/kontext`): $0.04 / image
- [GPT Image 2.5 Edit](https://doitong.com/developers/models/openai/gpt-image-2.5/flare/edit.md) (`openai/gpt-image-2.5/flare/edit`): from $0.12 / image
- [Nano Banana 2 Edit](https://doitong.com/developers/models/nano-banana-2/edit.md) (`nano-banana-2/edit`): from $0.06 / image
- [Nano Banana Pro Edit](https://doitong.com/developers/models/nano-banana-pro/edit.md) (`nano-banana-pro/edit`): from $0.15 / image
- [Qwen Image 3 Edit](https://doitong.com/developers/models/alibaba/qwen-image-3/edit.md) (`alibaba/qwen-image-3/edit`): from $0.04 / image

## Links

- HTML page: https://doitong.com/developers/models/bria/fibo-edit-1.5/expand
- All models and guides for AI agents: https://doitong.com/developers/llms.txt
- OpenAPI 3.1 with this model's typed request body: https://doitong.com/developers/openapi.json?model=bria/fibo-edit-1.5/expand
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/bria/fibo-edit-1.5/expand
