# 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/ar/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 | بذرة التوليد العشوائي، تُضمّن دائمًا في الاستجابة سواء تم توفيرها هنا أو اختيارها عشوائيًا عند حذفها. ويمكن لقيمة مأخوذة من استجابة سابقة إعادة إنتاج نتيجتها. |
| `negative_prompt` |  | string \| null | no |  |  | فحص توافق للطلبات المكتوبة لمسار SDXL expansion API: يؤدي توفير هذا المدخل غير المدعوم إلى رفض صريح حتى لا تُفقد قيمته بصمت. استخدم 'prompt' بدلًا منه. |
| `retain_original_quality` |  | boolean | no | `true` |  | فعّل هذا للاحتفاظ بالبكسلات الأصلية المحمية بالقناع بالدقة الكاملة من دون إعادة أخذ عينات. يولد النموذج عند نحو ميغابكسل واحد، ثم يكبّر اللوحات الأكبر. يؤدي تعطيله إلى جعل النتيجة ناعمة بشكل موحد، ما قد يخفي خط التماس على خلفية مزخرفة. |
| `preserve_alpha` |  | boolean | no | `true` |  | يحافظ على شفافية المدخل عبر تمديد قناة alpha الأصلية بتكرار الحواف حسب الحاجة لتوسيع القصاصة. وبما أن التوليد يعمل في RGB، لا ينتج النموذج alpha. عطّل هذا الخيار للحصول على مخرج 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 | البذرة المطبقة أثناء التوليد، ما يتيح إعادة إنتاج النتيجة. |
| `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
