# Fibo Edit 1.5 Image Editing API

> Trình chỉnh sửa hình ảnh đa tham chiếu tuân theo hướng dẫn văn bản, với tối đa 4 hình ảnh và mặt nạ tùy chọn

Chỉnh sửa ảnh từ `instruction` bằng ngôn ngữ tự nhiên, sử dụng từ một đến bốn ảnh tham chiếu trong `image_urls`, trong đó thứ tự rất quan trọng. Phù hợp cho các tác vụ như thử đồ ảo, thay nền và chuyển phong cách. `mask_url` giới hạn chỉnh sửa trong yêu cầu chỉ có một ảnh, còn `structured_instruction` có thể tái sử dụng kết quả trước đó. `aspect_ratio` chỉ áp dụng khi có từ hai ảnh trở lên.

- Model id: `bria/fibo-edit-1.5/edit`
- 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/edit`
- Quote: `POST https://api.doitong.com/v1/quote/bria/fibo-edit-1.5/edit`
- Docs page: https://doitong.com/vi/developers/models/bria/fibo-edit-1.5/edit

## 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/edit` 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_urls` | `images` | array of image URL \| null | no |  |  | Các đầu vào tham chiếu có thứ tự gửi quyết định cách diễn giải hướng dẫn. Cung cấp 1–4 hình ảnh dưới dạng tệp hoặc URL. |
| `instruction` |  | string \| null | no |  |  | Hướng dẫn mô tả việc chỉnh sửa hình ảnh. |
| `aspect_ratio` |  | enum (string) \| null | no |  | `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9` | Ghi đè tỷ lệ đầu ra cho yêu cầu có nhiều hình ảnh tham chiếu. Một tham chiếu duy nhất luôn tự xác định tỷ lệ; với nhiều tham chiếu, bỏ qua tham số này sẽ dùng tỷ lệ của tham chiếu đầu tiên. |
| `seed` |  | integer | no | `5555` |  | Seed kiểm soát tính ngẫu nhiên để tái lập kết quả. |
| `mask_url` | `mask` | string (image URL) \| null | no |  |  | Mặt nạ chỉnh sửa chỉ khả dụng với một hình ảnh tham chiếu; cả mặt nạ và kết quả được tạo đều dùng kích thước của tham chiếu đó. Cung cấp tệp hoặc URL có màu trắng đánh dấu vùng tạo lại và màu đen đánh dấu phần còn lại. |
| `structured_instruction` |  | object {short_description, objects, background_setting, lighting, aesthetics, photographic_characteristics, style_medium, text_render, context, artistic_style, edit_instruction} \| null | no |  |  | Lời nhắc có cấu trúc có thể tái sử dụng, bao gồm lời nhắc được trả về từ lần chỉnh sửa trước. Nếu không cung cấp hướng dẫn, lời nhắc này được sử dụng không thay đổi và VGL không tạo bản thay thế. |
| `structured_instruction.short_description` |  | string \| null | no |  |  | Mô tả ngắn về hình ảnh đầu ra dự kiến. |
| `structured_instruction.objects` |  | array of object {description, location, relationship, relative_size, shape_and_color, texture, appearance_details, number_of_objects, pose, expression, clothing, action, gender, skin_tone_and_texture, orientation} \| null | no | `[]` |  | Chỉ định nội dung hình ảnh được tạo dưới dạng danh sách, ghi lại thuộc tính của từng đối tượng và mối quan hệ của chúng với các đối tượng khác được mô tả. |
| `structured_instruction.objects[].description` |  | string \| null | no |  |  | Mô tả đối tượng đầu ra dự kiến. |
| `structured_instruction.objects[].location` |  | string \| null | no |  |  | Vị trí đối tượng trong hình ảnh. |
| `structured_instruction.objects[].relationship` |  | string | yes |  |  | Mối quan hệ của đối tượng với các đối tượng khác trong hình ảnh. |
| `structured_instruction.objects[].relative_size` |  | string \| null | no |  |  | Kích thước của đối tượng so với hình ảnh. |
| `structured_instruction.objects[].shape_and_color` |  | string \| null | no |  |  | Hình dạng và màu sắc của đối tượng. |
| `structured_instruction.objects[].texture` |  | string \| null | no |  |  | Kết cấu của đối tượng. |
| `structured_instruction.objects[].appearance_details` |  | string \| null | no |  |  | Chi tiết mô tả diện mạo của đối tượng. |
| `structured_instruction.objects[].number_of_objects` |  | integer \| null | no |  |  | Số lượng đối tượng trong hình ảnh. |
| `structured_instruction.objects[].pose` |  | string \| null | no |  |  | Tư thế của đối tượng được mô tả. |
| `structured_instruction.objects[].expression` |  | string \| null | no |  |  | Biểu cảm của đối tượng được mô tả. |
| `structured_instruction.objects[].clothing` |  | string \| null | no |  |  | Trang phục của đối tượng được mô tả. |
| `structured_instruction.objects[].action` |  | string \| null | no |  |  | Hành động của đối tượng được mô tả. |
| `structured_instruction.objects[].gender` |  | string \| null | no |  |  | Giới tính của đối tượng được mô tả. |
| `structured_instruction.objects[].skin_tone_and_texture` |  | string \| null | no |  |  | Kết cấu và tông màu da của đối tượng được mô tả. |
| `structured_instruction.objects[].orientation` |  | string \| null | no |  |  | Hướng của đối tượng được mô tả. |
| `structured_instruction.background_setting` |  | string \| null | no |  |  | Bối cảnh nền cho hình ảnh được tạo. |
| `structured_instruction.lighting` |  | object {conditions, direction, shadows} \| null | no |  |  | Ánh sáng cho hình ảnh được tạo. |
| `structured_instruction.lighting.conditions` |  | string \| null | no |  |  | Điều kiện ánh sáng cho hình ảnh được tạo. |
| `structured_instruction.lighting.direction` |  | string \| null | no |  |  | Hướng chiếu sáng cho hình ảnh được tạo. |
| `structured_instruction.lighting.shadows` |  | string \| null | no |  |  | Bóng đổ cần thể hiện trong hình ảnh được tạo. |
| `structured_instruction.aesthetics` |  | object {composition, color_scheme, mood_atmosphere, aesthetic_score, preference_score} \| null | no |  |  | Đặc tính thẩm mỹ cho hình ảnh được tạo. |
| `structured_instruction.aesthetics.composition` |  | string \| null | no |  |  | Bố cục cho hình ảnh được tạo. |
| `structured_instruction.aesthetics.color_scheme` |  | string \| null | no |  |  | Bảng màu cho hình ảnh được tạo. |
| `structured_instruction.aesthetics.mood_atmosphere` |  | string \| null | no |  |  | Tâm trạng và không khí cho hình ảnh được tạo. |
| `structured_instruction.aesthetics.aesthetic_score` |  | string \| null | no |  |  | Điểm thẩm mỹ của hình ảnh đang được tạo. |
| `structured_instruction.aesthetics.preference_score` |  | string \| null | no |  |  | Điểm ưu tiên của hình ảnh đang được tạo. |
| `structured_instruction.photographic_characteristics` |  | object {depth_of_field, focus, camera_angle, lens_focal_length} \| null | no |  |  | Đặc tính nhiếp ảnh cho hình ảnh được tạo. |
| `structured_instruction.photographic_characteristics.depth_of_field` |  | string \| null | no |  |  | Độ sâu trường ảnh cho hình ảnh được tạo. |
| `structured_instruction.photographic_characteristics.focus` |  | string \| null | no |  |  | Lấy nét cho hình ảnh được tạo. |
| `structured_instruction.photographic_characteristics.camera_angle` |  | string \| null | no |  |  | Góc máy ảnh cho hình ảnh được tạo. |
| `structured_instruction.photographic_characteristics.lens_focal_length` |  | string \| null | no |  |  | Thiết lập ống kính cho hình ảnh được tạo, biểu thị bằng tiêu cự. |
| `structured_instruction.style_medium` |  | string \| null | no |  |  | Chất liệu phong cách cho hình ảnh được tạo. |
| `structured_instruction.text_render` |  | array of any \| null | no | `[]` |  | Danh sách mục văn bản cần đưa vào hình ảnh. |
| `structured_instruction.context` |  | string \| null | no |  |  | Bối cảnh cho hình ảnh được tạo. |
| `structured_instruction.artistic_style` |  | string \| null | no |  |  | Phong cách nghệ thuật cho hình ảnh được tạo. |
| `structured_instruction.edit_instruction` |  | string \| null | no |  |  | Hướng dẫn mô tả cách chỉnh sửa hình ảnh. |

File parameters (`images`, `mask`) 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
{}
```

A fuller example:

```json
{}
```

## 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/edit?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

# 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/edit?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({}),
});
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 = {}

# 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/edit", 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/edit",
      "input": {},
      "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/edit",
  "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": {},
  "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
    },
    "images": [
      {
        "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
      }
    ],
    "structured_instruction": {}
  },
  "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} | Kết quả đã chỉnh sửa, có tỷ lệ theo aspect_ratio nếu được chỉ định, hoặc theo hình ảnh nguồn. |
| `images` | array of object {url, content_type, file_name, file_size, width, height} | Phản hồi tương thích ngược cho client dùng route Fibo Edit API cũ: danh sách chỉ có cùng hình ảnh đó. |
| `structured_instruction` | object | Diễn giải mở rộng của bản mô tả ngắn, được trả về dưới dạng hướng dẫn có cấu trúc đã thực thi. Nội dung này kết hợp cả hướng dẫn tích hợp sẵn và nội dung được cung cấp qua `instruction`. |

## Related models

- [Bria Expand (FIBO-Edit-1.5)](https://doitong.com/developers/models/bria/fibo-edit-1.5/expand.md) (`bria/fibo-edit-1.5/expand`): $0.04 / image
- [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
- [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/edit
- 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/edit
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/bria/fibo-edit-1.5/edit
