# AI 虛擬換裝

# 概述
AI 虛擬換裝是虛擬試衣間，讓使用者無需實際穿著即可試穿服裝。運用 AI 與照片編輯技術，這些應用將穿搭疊加到您的圖片上，讓你看見不同風格與合身度在您身形上的樣子。非常適合線上購物、風格靈感，或單純玩味時尚想法。用 AI 虛擬換裝服裝。上傳任何服飾參考，與您的照片交換穿搭，即刻完成虛擬衣櫃的轉換。


---

## 整合指南
* API Playground

您可以使用 API Playground 測試 AI 虛擬換裝功能。這讓您可以實驗自己的想法，並更深入了解試穿流程。

在此存取 API Playground：
[https://yce.makeupar.com/api-console/en/api-playground/ai-clothes/](https://yce.makeupar.com/api-console/en/api-playground/ai-clothes/)


---

* AI 虛擬換裝 API 使用指南

本指南說明如何使用 AI 虛擬換裝 API 上傳圖片、準備參考穿搭，以及建立虛擬試穿任務。


---

* 步驟 1. 使用 File API 上傳檔案

使用 **File API**（`/s2s/v2.0/file`）上傳目標使用者圖片。
**圖片需求：**
* 上傳高解析度的全身照片。
* 確保照片清楚呈現整個身體。
* 避免有多人干擾的物件背景。

**請求範例：**

```bash
curl --request POST \
  --url https://yce-api-01.makeupar.com/s2s/v2.0/file \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --data '{
    "files": [
 {
   "content_type": "image/jpg",
   "file_name": "full_body_photo_01_3dbd1b6683.jpg",
   "file_size": 547541
 }
    ]
  }'
```


---

* 步驟 2. 取得 File API 回應

回應包含：
* 用於建立 AI 任務的
`file_id`
。
* 用於上傳實際圖片檔案的
`requests.url`
。

**回應範例：**

```json
{
  "status": 200,
  "data": {
    "files": [
 {
   "content_type": "image/jpg",
   "file_name": "full_body_photo_01_3dbd1b6683.jpg",
   "file_id": "SaGaqpDgKwFrVBgMpQMA3HY0LeqdT9/13W5TOD8/u/FfjK3xgCQ+hRt9MJXBFaud",
   "requests": [
 {
  "method": "PUT",
  "url": "https://yce-us.s3-accelerate.amazonaws.com/demo/ttl30/...signature...",
  "headers": {
    "Content-Length": "547541",
    "Content-Type": "image/jpg"
  }
 }
   ]
 }
    ]
  }
}
```


---

* 步驟 3. 上傳圖片到提供的網址

使用 File API 回應中的 `requests.url` 上傳圖片：

```bash
curl --location --request PUT 'https://yce-us.s3-accelerate.amazonaws.com/demo/ttl30/...signature...' \
  --header 'Content-Type: image/jpg' \
  --header 'Content-Length: 547541' \
  --data-binary @'./full_body_photo_01_3dbd1b6683.jpg'
```


---

* 步驟 4. 準備參考穿搭
* 4.1 上傳參考穿搭圖片

您可以：
* 使用 File API（
`/s2s/v2.0/file`
）上傳穿搭圖片，或
* 提供有效的圖片網址。

**支援的穿搭圖片：**
* 服裝的產品圖片。
* 全身照片作為穿搭參考。

詳細規格請參考 **[檔案規格與錯誤](#section/overview/File-Specs-and-Errors)**。


---

* 步驟 5. 建立 AI 任務

使用 **AI 任務 API**（`/s2s/v2.0/task/cloth-v4`）建立虛擬試穿任務。
**參數：**
* 使用者圖片：
`src_file_id`
 或
`src_file_url`
。
* 穿搭圖片：
`ref_file_id`
、
`ref_file_url`
 或
`template_id`
。

**請求範例：**

```bash
curl --request POST \
  --url https://yce-api-01.makeupar.com/s2s/v2.0/task/cloth-v4 \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --data '{
    "src_file_url": "https://plugins-media.makeupar.com/strapi/assets/clothes_03_cccd5d4803.jpeg",
    "ref_file_url": "https://plugins-media.makeupar.com/strapi/assets/clothes_reference_full_body_01_5a000d999f.png",
    "garment_category": "full_body"
  }'
```
**回應範例：**

```json
{
  "status": 200,
  "data": {
    "task_id": "SaGaqpDgKwFrVBgMpQMA3HY0LeqdT9_13W5TOD8_u_GPi6NqQ3dhlmN-6ntFwhzT"
  }
}
```


---

* 步驟 6. 輪詢任務結果

使用任務 ID 查詢狀態：

```bash
curl --request GET \
  --url https://yce-api-01.makeupar.com/s2s/v2.0/task/cloth-v4/<YOUR_TASK_ID> \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json'
```


---

* 步驟 7. 取得結果

成功的回應會包含結果圖片的下載網址：

```json
{
  "status": 200,
  "data": {
    "error": null,
    "results": {
 "url": "https://yce-us.s3-accelerate.amazonaws.com/demo/ttl30/...signature..."
    },
    "task_status": "success"
  }
}
```
API Key 無效的錯誤回應：

```json
{
  "status": 401,
  "error": "Unauthorized",
  "error_code": "InvalidAccessToken"
}
```


---

應用案例：
![](https://plugins-media.makeupar.com/smb/blog/post/2025-05-08/b80f4ae1-c905-4ec0-b491-e42c15e65575.gif)
![](https://bcw-media.s3.ap-northeast-1.amazonaws.com/strapi/assets/01%20ai%20clothes%20changer.jpg)
![](https://plugins-media.makeupar.com/smb/blog/post/2023-12-01/45f451aa-4b4f-466d-9da7-4538573c92af.jpg)
拍攝建議：
![拍攝建議](https://bcw-media.s3.ap-northeast-1.amazonaws.com/strapi/assets/AI-Cloth-Guideline.png)
## 檔案規格與錯誤
* 支援的格式與尺寸

| 類型 | 支援的尺寸 | 支援的檔案大小 | 支援的格式 |
|  --- | --- | --- | --- |
| 目標使用者圖片 | 建議 1024×768，最小 512×384，最大邊 4096 px。 - 僅限單人。 - 為達到最佳結果，人物應佔畫面至少 80%。 - 圖片應僅包含上半身，從胸部往上。無需呈現腹部，但肩膀應可見。 - 臉部必須完全可見，無遮擋。 - 身體必須面向前方並採站姿（不可坐著或蹲著）。 | < 10MB | jpg/png |
| 服裝參考圖片 | 建議 1024×768，最小 512×384，最大邊 4096 px。 - 若使用真人服裝照片作為參考   - 必須僅包含一人。   - 可見的服裝區域必須完整覆蓋預期的試穿區域。      - 範例：全身試穿時，半身服裝圖片不可接受。      - 範例：下半身試穿時，部分褲子不可接受。   - 服裝不得被嚴重遮擋（例如被長髮或手臂覆蓋）。   - 臉部必須完全可見，無遮擋。   - 身體必須面向前方並採站姿（不可坐著或蹲著）。  - 若使用產品圖片作為參考   - 必須是單一服飾的正面產品照。   - 不要使用合成圖片（例如上下裝在同一張照片）。   - 下半身僅支援實際穿著的穿搭，不支援獨立的產品圖片。 | < 10MB | jpg/png |

* 錯誤代碼
* 錯誤代碼（前處理）

| 錯誤代碼 | 說明 |
|  --- | --- |
| exceed_max_filesize | SRC 或 REF 圖片過大。長邊不得超過 4096 像素。 |
| error_below_min_image_size | SRC 或 REF 圖片過小。長邊至少需 128 像素。 |
| error_pose | 無法從上傳的人物 SRC 圖片偵測姿勢。 |
| error_invalid_ref | REF 圖片無效，例如為空，或主體未完全可見。 |
| error_apply_region_mismatch | SRC 圖片的套用區域與 REF 圖片不符，因此無法套用任何編輯。 |
| error_invalid_src | 當來源圖片僅顯示下半身或僅顯示腳部時。 |

* 錯誤代碼（引擎）

| 錯誤代碼 | 說明 |
|  --- | --- |
| invalid_parameter | - 服飾類別無效。  - Style_id 不在 inference_style_list 中。  - src_keys、dst_keys 或 acts 無效。  - ref_keys 或 template_ref_image 無效。  - 必須提供其中恰好一項。 |
| error_download_image | 無法下載 SRC 或 REF 圖片。 |
| exceed_max_filesize | SRC 或 REF 圖片過大。檔案大小不得超過 10 MB。 |
| error_nsfw_content_detected | 在結果圖片中偵測到潛在的 NSFW 內容。 |
| error_editing_failed | 編輯過程失敗，因為結果圖片與來源圖片過於相似。 |
| unknown_internal_error | - 載入模型失敗。  - 排程演算法類型無效。  - 未載入引擎。  - 檔案不在上傳結果中。 |
| error_multi_person | 在「normal」或「strict」多人篩選設定下，系統在來源或參考圖片中偵測到多人。 |

* 環境與相依性

| 範例程式語言 / 工具 | 建議的執行環境版本 |
|  --- | --- |
| cURL | - bash >= 3.2   - curl >= 7.58（現代 TLS/HTTP 支援）   - jq >= 1.6（穩健的 JSON 解析） |
| Node.js（JavaScript） | Node >= 18（支援全域 fetch） |
| JavaScript | - Chrome / Edge >= 80   - Firefox >= 74   - Safari >= 13.1 |
| PHP | PHP >= 7.4（現代 TLS/相容性），ext-curl（建議）或 allow_url_fopen=On + ext-openssl、ext-json |
| Python | Python >= 3.10（支援 f-strings），requests >= 2.20.0 |
| Java | Java 11+（支援 HttpClient），Jackson Databind >= 2.12.0 |



---

## 點數消耗
| AI 功能 | 消耗的點數 |
|  --- | --- |
| AI 虛擬換裝 V2.0 | 2 |
| AI 虛擬換裝 V3.0 | 2 |



---

License: Privacy policy

## Servers

```
https://yce-api-01.makeupar.com
```

## Security

### BearerAuthenticationV2

使用標準的 'Bearer authentication'。請在標頭中放入您的 'API Key'：`Authorization:Bearer YOUR_API_KEY`。請注意 'Bearer' 與 'YOUR_API_KEY' 之間有一個空格。

Type: http
Scheme: bearer

## Download OpenAPI description

 - [AI 虛擬換裝](https://docs.perfectcorp.com/_bundle/@l10n/zh-TW/reference/ai_clothes.yaml)

## V4.0

 - [POST /s2s/v2.0/task/cloth-v4](https://docs.perfectcorp.com/zh-tw/reference/ai_clothes/v4.0/paths/~1s2s~1v2.0~1task~1cloth-v4/post.md): AI 任務是非同步的。當功能支援 webhook 時，請優先使用以 webhook 為基礎的完成處理。設定您的 webhook 端點、驗證 webhook 簽章，並在收到 `success` 或 `error` 通知後，使用收到的 `task_id` 查詢任務結果。設定與驗證細節請見 [webhook 整合指南](/develop/webhook)。 若您的整合不支援 webhook 或無法使用
 - [GET /s2s/v2.0/task/cloth-v4/{task_id}](https://docs.perfectcorp.com/zh-tw/reference/ai_clothes/v4.0/paths/~1s2s~1v2.0~1task~1cloth-v4~1%7Btask_id%7D/get.md)
## V3.0

 - [POST /s2s/v2.0/task/cloth-v3](https://docs.perfectcorp.com/zh-tw/reference/ai_clothes/v3.0/paths/~1s2s~1v2.0~1task~1cloth-v3/post.md): AI 任務是非同步的。當功能支援 webhook 時，請優先使用以 webhook 為基礎的完成處理。設定您的 webhook 端點、驗證 webhook 簽章，並在收到 `success` 或 `error` 通知後，使用收到的 `task_id` 查詢任務結果。設定與驗證細節請見 [webhook 整合指南](/develop/webhook)。 若您的整合不支援 webhook 或無法使用
 - [GET /s2s/v2.0/task/cloth-v3/{task_id}](https://docs.perfectcorp.com/zh-tw/reference/ai_clothes/v3.0/paths/~1s2s~1v2.0~1task~1cloth-v3~1%7Btask_id%7D/get.md)
## V2.0

 - [GET /s2s/v2.0/task/template/cloth](https://docs.perfectcorp.com/zh-tw/reference/ai_clothes/v2.0/paths/~1s2s~1v2.0~1task~1template~1cloth/get.md)
 - [POST /s2s/v2.0/task/cloth](https://docs.perfectcorp.com/zh-tw/reference/ai_clothes/v2.0/paths/~1s2s~1v2.0~1task~1cloth/post.md): 這個端點啟動服飾虛擬試穿流程。您可以使用範本 ID，或提供參考圖片（來源與參考檔案）。任務會以非同步方式處理，您可以使用這個回應回傳的 task_id 查詢其狀態。
 - [GET /s2s/v2.0/task/cloth/{task_id}](https://docs.perfectcorp.com/zh-tw/reference/ai_clothes/v2.0/paths/~1s2s~1v2.0~1task~1cloth~1%7Btask_id%7D/get.md)
