> For the complete documentation index, see [llms.txt](https://docs.avis.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.avis.net/vi/tai-lieu-api/endpoints/model-list.md).

# Danh sách mô hình

## Liệt kê mô hình AI

`GET /api/v1/ai/models`

Trả về danh sách các mô hình AI đang hoạt động và dành cho người dùng. Dùng endpoint này để tìm giá trị `model` hợp lệ cho request tạo nội dung.

### Tham số query

| Trường             | Kiểu   | Bắt buộc | Giá trị cho phép                                       | Mô tả                                                                                                                         |
| ------------------ | ------ | -------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- |
| `inputModalities`  | string | Không    | `text`, `image`, `file`, `video`, `audio`              | Lọc các mô hình hỗ trợ loại dữ liệu đầu vào được yêu cầu. Backend áp dụng phép so khớp `$all` cho loại dữ liệu được cung cấp. |
| `outputModalities` | string | Không    | `text`, `image`, `file`, `video`, `audio`, `embedding` | Lọc các mô hình hỗ trợ loại dữ liệu đầu ra được yêu cầu. Dùng `embedding` cho các mô hình vector văn bản.                     |

### Các trường response

Mỗi phần tử là một đối tượng mô hình AI.

| Trường                                  | Kiểu      | Bắt buộc | Mô tả                                                                                                                                  |
| --------------------------------------- | --------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `modelId`                               | string    | Có       | Mã định danh mô hình ổn định dành cho người dùng. Truyền giá trị này vào `model` trong request tạo nội dung.                           |
| `name`                                  | string    | Không    | Tên mô hình dễ đọc, nếu có.                                                                                                            |
| `providerIds`                           | string\[] | Có       | ID của các nhà cung cấp hiện đang có mô hình này.                                                                                      |
| `inputModalities`                       | string\[] | Không    | Các loại dữ liệu đầu vào được hỗ trợ.                                                                                                  |
| `outputModalities`                      | string\[] | Không    | Các loại dữ liệu đầu ra được hỗ trợ.                                                                                                   |
| `isActive`                              | boolean   | Có       | Mô hình hiện có thể được dùng cho định tuyến tạo nội dung tự động hay không. Endpoint danh sách chỉ trả về các mô hình đang hoạt động. |
| `revision`                              | number    | Có       | Số phiên bản sửa đổi của mô hình.                                                                                                      |
| `capabilities`                          | object    | Không    | Khả năng thực tế của nhà cung cấp mặc định (có độ ưu tiên cao nhất). Nếu không có nghĩa là không bị ràng buộc.                         |
| `capabilities.text.supportedParameters` | string\[] | Không    | Với mô hình văn bản: các tham số tạo nội dung được chấp nhận, ví dụ `["maxTokens","temperature","topP","tools","thinking"]`.           |
| `capabilities.params`                   | object    | Không    | Giới hạn/ràng buộc của từng tham số, theo tên trường trong request.                                                                    |
| `capabilities.inputs`                   | object    | Không    | Các đầu vào dạng content-part được chấp nhận (vai trò, loại media, giới hạn).                                                          |
| `capabilities.strictParams`             | boolean   | Không    | Khi là true, các tham số có kiểm soát mà không được hỗ trợ sẽ bị từ chối.                                                              |
| `createdAt`                             | string    | Không    | Dấu thời gian ISO do Mongo timestamps thêm vào, nếu có trong đầu ra đã được serialize.                                                 |
| `updatedAt`                             | string    | Không    | Dấu thời gian ISO do Mongo timestamps thêm vào, nếu có trong đầu ra đã được serialize.                                                 |

### Cấu trúc giá trị của `capabilities.params`

Với mô hình hình ảnh và video, `capabilities.params` (nằm trong `capabilities.image.params` hoặc `capabilities.video.params`) là nguồn thông tin chính thức về các giá trị mà từng mô hình chấp nhận cho những trường như `duration`, `resolution` hoặc `ratio`. Các giá trị thay đổi theo mô hình: chẳng hạn, `duration` có thể nằm trong khoảng `2-15s` với `wan-2-6`, nhưng chỉ nhận đúng `6s` hoặc `10s` với `hailuo-2-3`. Gửi giá trị ngoài phạm vi của mô hình được chọn sẽ trả về `400`. Hãy tra cứu thông tin cho từng mô hình thay vì cố định giới hạn của một mô hình trong ứng dụng.

Mỗi mục trong `params` có một `type` quyết định các trường bổ sung:

| `type`  | Trường bổ sung                                        | Ý nghĩa                                                                                                                                                                                            |
| ------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `enum`  | `values: string[] \| number[]`, `default?`            | Giá trị phải là một trong các `values` — dạng số cho một tập rời rạc cố định (ví dụ `duration` của các mô hình PixVerse cũ, chỉ chấp nhận chính xác `5`/`8`/`10`, không chấp nhận giá trị ở giữa). |
| `range` | `min`, `max`, `default?`, `unit?`, `steps?: number[]` | Giá trị phải là một số nằm giữa `min` và `max`. Khi có `steps`, chỉ các giá trị chính xác đó mới hợp lệ — không phải là một khoảng liên tục.                                                       |
| `int`   | `min`, `max`, `default?`                              | Giá trị phải là một số nguyên nằm giữa `min` và `max`.                                                                                                                                             |
| `bool`  | `default?`                                            | Giá trị phải là `true` hoặc `false`.                                                                                                                                                               |

Ví dụ, `duration` trên `wan-2-6` (mọi giá trị từ 2-15 đều hợp lệ):

```json
"duration": { "type": "range", "min": 2, "max": 15, "default": 5, "unit": "s" }
```

Ví dụ, `duration` trên `hailuo-2-3` (chỉ `6` hoặc `10` là hợp lệ, không chấp nhận giá trị ở giữa):

```json
"duration": { "type": "range", "min": 6, "max": 10, "steps": [6, 10], "unit": "s" }
```

Ví dụ, `duration` trên các mô hình PixVerse cũ (`pixverse-v5-6`, `pixverse-v3-5`, v.v. — chỉ chính xác `5`, `8` hoặc `10` là hợp lệ; đây là một tập cố định thực sự, không phải một khoảng liên tục, vì vậy dùng `type: "enum"` với `values` dạng số thay vì `range` + `steps`):

```json
"duration": { "type": "enum", "values": [5, 8, 10], "default": 5, "unit": "s" }
```

Trước khi gửi request tạo video hoặc hình ảnh, hãy tra cứu khả năng của mô hình đích và đọc `capabilities.video.params.duration` (hoặc `.resolution`, `.ratio`, v.v.). Sau đó, kiểm tra dữ liệu người dùng nhập ngay ở phía client. Không nên mặc định giới hạn thời lượng, độ phân giải hay tỷ lệ của một mô hình cũng áp dụng cho mô hình khác.

### Lấy thông tin một mô hình

`GET /api/v1/ai/models/:modelId`

Đây là cách trực tiếp để kiểm tra khả năng của một mô hình. Truyền chính xác `modelId` (lấy từ endpoint danh sách hoặc response tạo nội dung trước đó) làm tham số đường dẫn để nhận thông tin mô hình, bao gồm toàn bộ đối tượng `capabilities`. Nhờ đó, bạn không cần tải cả danh mục chỉ để tra cứu tham số của một mô hình.

| Trường           | Kiểu   | Bắt buộc | Mô tả                                                                             |
| ---------------- | ------ | -------- | --------------------------------------------------------------------------------- |
| `modelId` (path) | string | Có       | Mô hình cần tra cứu. Trả về `404` nếu mô hình không tồn tại hoặc không hoạt động. |

Cấu trúc response giống đối tượng mô hình đơn lẻ được mô tả trong phần Các trường response ở trên.

```bash
curl "$BASE_URL/api/v1/ai/models/wan-2-6"
```

Đọc `capabilities.video.params.duration` từ response để lấy chính xác thời lượng cho phép của mô hình đó — đây là bước kiểm tra cần chạy mỗi khi người dùng chuyển đổi mô hình trên giao diện của bạn.

### Ví dụ

Liệt kê các mô hình văn bản:

```bash
curl "$BASE_URL/api/v1/ai/models?inputModalities=text&outputModalities=text"
```

Liệt kê các mô hình tạo hình ảnh:

```bash
curl "$BASE_URL/api/v1/ai/models?inputModalities=text&outputModalities=image"
```

Liệt kê các mô hình tạo video:

```bash
curl "$BASE_URL/api/v1/ai/models?inputModalities=text&outputModalities=video"
```

Liệt kê các mô hình tạo âm thanh:

```bash
curl "$BASE_URL/api/v1/ai/models?inputModalities=text&outputModalities=audio"
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.avis.net/vi/tai-lieu-api/endpoints/model-list.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
