# Fibo API

> Mô hình text-to-image điều khiển bằng lời nhắc thuần hoặc JSON có cấu trúc, với hình ảnh tham chiếu tùy chọn và đầu ra 1MP hoặc 4MP

Tạo hình ảnh từ `prompt` hoặc JSON `structured_prompt` và có thể nhận hình ảnh tham chiếu qua `image_url`. `resolution` là 1MP hoặc 4MP, `steps_num` từ 20 đến 50 và có chín tỷ lệ khung hình. Mô hình cũng hỗ trợ `negative_prompt` và `seed`, đồng thời trả về lời nhắc có cấu trúc đã sử dụng.

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

## 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/generate` 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 |
|---|---|---|---|---|---|---|
| `prompt` |  | string \| null | no |  |  | Lời nhắc dùng để tạo hình ảnh. |
| `structured_prompt` |  | object {short_description, objects, background_setting, lighting, aesthetics, photographic_characteristics, style_medium, text_render, context, artistic_style, trigger_word, sub_trigger_word, art_direction, action_description, actor_prefix} \| null | no |  |  | Lời nhắc có cấu trúc dùng để tạo hình ảnh. |
| `structured_prompt.short_description` |  | string \| null | no |  |  | Mô tả ngắn về hình ảnh đầu ra dự kiến. |
| `structured_prompt.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_prompt.objects[].description` |  | string \| null | no |  |  | Mô tả đối tượng đầu ra dự kiến. |
| `structured_prompt.objects[].location` |  | string \| null | no |  |  | Vị trí đối tượng trong hình ảnh. |
| `structured_prompt.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_prompt.objects[].relative_size` |  | string \| null | no |  |  | Kích thước của đối tượng so với hình ảnh. |
| `structured_prompt.objects[].shape_and_color` |  | string \| null | no |  |  | Hình dạng và màu sắc của đối tượng. |
| `structured_prompt.objects[].texture` |  | string \| null | no |  |  | Kết cấu của đối tượng. |
| `structured_prompt.objects[].appearance_details` |  | string \| null | no |  |  | Chi tiết mô tả diện mạo của đối tượng. |
| `structured_prompt.objects[].number_of_objects` |  | integer \| null | no |  |  | Số lượng đối tượng trong hình ảnh. |
| `structured_prompt.objects[].pose` |  | string \| null | no |  |  | Tư thế của đối tượng được mô tả. |
| `structured_prompt.objects[].expression` |  | string \| null | no |  |  | Biểu cảm của đối tượng được mô tả. |
| `structured_prompt.objects[].clothing` |  | string \| null | no |  |  | Trang phục của đối tượng được mô tả. |
| `structured_prompt.objects[].action` |  | string \| null | no |  |  | Hành động của đối tượng được mô tả. |
| `structured_prompt.objects[].gender` |  | string \| null | no |  |  | Giới tính của đối tượng được mô tả. |
| `structured_prompt.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_prompt.objects[].orientation` |  | string \| null | no |  |  | Hướng của đối tượng được mô tả. |
| `structured_prompt.background_setting` |  | string \| null | no |  |  | Bối cảnh nền cho hình ảnh được tạo. |
| `structured_prompt.lighting` |  | object {conditions, direction, shadows} \| null | no |  |  | Ánh sáng cho hình ảnh được tạo. |
| `structured_prompt.lighting.conditions` |  | string \| null | no |  |  | Điều kiện ánh sáng cho hình ảnh được tạo. |
| `structured_prompt.lighting.direction` |  | string \| null | no |  |  | Hướng chiếu sáng cho hình ảnh được tạo. |
| `structured_prompt.lighting.shadows` |  | string \| null | no |  |  | Bóng đổ cần thể hiện trong hình ảnh được tạo. |
| `structured_prompt.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_prompt.aesthetics.composition` |  | string \| null | no |  |  | Bố cục cho hình ảnh được tạo. |
| `structured_prompt.aesthetics.color_scheme` |  | string \| null | no |  |  | Bảng màu cho hình ảnh được tạo. |
| `structured_prompt.aesthetics.mood_atmosphere` |  | string \| null | no |  |  | Tâm trạng và không khí cho hình ảnh được tạo. |
| `structured_prompt.aesthetics.aesthetic_score` |  | string \| null | no |  |  | Điểm thẩm mỹ của hình ảnh đang được tạo. |
| `structured_prompt.aesthetics.preference_score` |  | string \| null | no |  |  | Điểm ưu tiên của hình ảnh đang được tạo. |
| `structured_prompt.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_prompt.photographic_characteristics.depth_of_field` |  | string \| null | no |  |  | Độ sâu trường ảnh cho hình ảnh được tạo. |
| `structured_prompt.photographic_characteristics.focus` |  | string \| null | no |  |  | Lấy nét cho hình ảnh được tạo. |
| `structured_prompt.photographic_characteristics.camera_angle` |  | string \| null | no |  |  | Góc máy ảnh cho hình ảnh được tạo. |
| `structured_prompt.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_prompt.style_medium` |  | string \| null | no |  |  | Chất liệu phong cách cho hình ảnh được tạo. |
| `structured_prompt.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_prompt.context` |  | string \| null | no |  |  | Bối cảnh cho hình ảnh được tạo. |
| `structured_prompt.artistic_style` |  | string \| null | no |  |  | Phong cách nghệ thuật cho hình ảnh được tạo. |
| `structured_prompt.trigger_word` |  | string \| null | no |  |  |  |
| `structured_prompt.sub_trigger_word` |  | string \| null | no |  |  |  |
| `structured_prompt.art_direction` |  | string \| null | no |  |  |  |
| `structured_prompt.action_description` |  | string \| null | no |  |  |  |
| `structured_prompt.actor_prefix` |  | string \| null | no |  |  |  |
| `image_url` | `image` | string (image URL) \| null | no |  |  | Hình ảnh tham chiếu được cung cấp dưới dạng tệp hoặc URL. |
| `seed` |  | integer | no | `5555` |  | Seed kiểm soát tính ngẫu nhiên để tái lập kết quả. |
| `steps_num` |  | integer | no | `50` | 20 – 50 | Tổng số bước suy luận. |
| `aspect_ratio` |  | enum (string) | no | `1:1` | `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9` | Tỷ lệ khung hình; các giá trị khả dụng là 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9. |
| `negative_prompt` |  | string | no | `` |  | Lời nhắc phủ định dùng khi tạo hình ảnh. |
| `resolution` |  | enum (string) | no | `1MP` | `1MP`, `4MP` | Độ phân giải của hình ảnh được tạo. |

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
{}
```

A fuller example:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

## 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/generate?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }'

# 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/generate?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }),
});
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 = {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/bria/fibo/generate", 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/generate",
      "input": {
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
      },
      "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/generate",
  "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": {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  },
  "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": [
      {}
    ],
    "structured_prompt": {}
  },
  "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} | Hình ảnh do mô hình tạo. |
| `images` | array of object | Các hình ảnh được tạo sinh. |
| `structured_prompt` | object | Lời nhắc hiện đang sử dụng. |

## Related models

- [Fibo · Structured Prompt](https://doitong.com/developers/models/bria/fibo/generate/structured_prompt.md) (`bria/fibo/generate/structured_prompt`): $0.01 / request
- [FLUX.1 \[dev\]](https://doitong.com/developers/models/flux/dev.md) (`flux/dev`): $0.025 / megapixel
- [FLUX.1 \[schnell\]](https://doitong.com/developers/models/flux/schnell.md) (`flux/schnell`): $0.003 / megapixel
- [FLUX.2 \[dev\]](https://doitong.com/developers/models/flux-2.md) (`flux-2`): $0.012 / megapixel
- [FLUX.2 \[pro\]](https://doitong.com/developers/models/flux-2-pro.md) (`flux-2-pro`): $0.015 / megapixel of output image
- [GPT Image 2.5 Text to Image](https://doitong.com/developers/models/openai/gpt-image-2.5/flare/text-to-image.md) (`openai/gpt-image-2.5/flare/text-to-image`): from $0.008 / image
- [Ideogram V4.5](https://doitong.com/developers/models/ideogram/v4.5.md) (`ideogram/v4.5`): from $0.03 / image
- [Nano Banana 2](https://doitong.com/developers/models/nano-banana-2.md) (`nano-banana-2`): from $0.06 / image

## Links

- HTML page: https://doitong.com/developers/models/bria/fibo/generate
- 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/generate
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/bria/fibo/generate
