# AI 面料虚拟试穿

# 概览
逼真效果，换一身造型！用图片模式试遍各种独特的面料风格——无论是丝滑质感的高雅，还是大胆花色的鲜亮，AI 面料接口都能把材质演活。开发者可以打造出沉浸式的体验，让用户以前所未有的方式看到、感受到面料。而且，新面料还会持续上新！


---

## 接入指南
* AI 面料接口使用指引

本指引说明如何上传图片、取得预设面料样式，以及用 AI 面料接口创建虚拟试穿任务。


---

* 第 1 步：用 File 接口上传文件

用 **File 接口**（`/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 接口响应

响应中包含：
* 用于创建 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 步：把图片上传到提供的 URL

用 File 接口响应中的 `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 步：取得预设面料模板

用 **模板接口**（`/s2s/v2.0/task/template/fabric`）取得预设面料模板列表：

```bash
curl --request GET \
    --url 'https://yce-api-01.makeupar.com/s2s/v2.0/task/template/fabric?page_size=20&starting_token=73a3c9e69b89' \
    --header 'Authorization: Bearer YOUR_API_KEY'
```


---

* 第 5 步：创建 AI 任务

用 **AI 任务接口**（`/s2s/v2.0/task/fabric`）创建虚拟试穿任务。
**参数：**
* 用户图片：
`src_file_id`
 或
`src_file_url`
。
* 面料样式：
`template_id`
。

**请求示例：**

```bash
curl --request POST \
    --url https://yce-api-01.makeupar.com/s2s/v2.0/task/fabric \
    --header 'Authorization: Bearer YOUR_API_KEY' \
    --header 'content-type: application/json' \
    --data '{
    "template_id":"good_template_001",
    "src_file_url":"https://example.com/selfie.jpg"
    }'
```
**响应示例：**

```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/fabric/<YOUR_TASK_ID> \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json'
```


---

* 第 7 步：取回结果

成功的响应会给出结果图片的下载 URL：

```json
{
  "status": 200,
  "data": {
    "error": null,
    "results": {
      "url": "https://yce-us.s3-accelerate.amazonaws.com/demo/ttl30/...signature..."
    },
    "task_status": "success"
  }
}
```
API 密钥无效的报错响应：

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


---

应用场景：
![](https://bcw-media.s3.ap-northeast-1.amazonaws.com/strapi/assets/AI%20Fabric.png)
![](https://plugins-media.makeupar.com/smb/blog/post/2024-05-07/b103976d-1b0e-4bed-aab4-9307308b84d7.jpg)
![](https://bcw-media.s3.ap-northeast-1.amazonaws.com/strapi/assets/03%20ai%20clothes%20changer.jpg)
拍摄建议：
![拍摄建议](https://bcw-media.s3.ap-northeast-1.amazonaws.com/strapi/assets/AI-Cloth-Guideline.png)


---

## 文件规格与错误码
* 支持的格式与尺寸

| AI 功能 | 支持尺寸 | 支持文件大小 | 支持格式 |
|  --- | --- | --- | --- |
| AI 面料 | 长边 <= 4096，仅支持单人。腹部、脸部、肩部都须可见，脸部不得被遮挡。身体应保持站立直立、正对镜头，不要坐着、蹲着等非常规姿态。 | < 10MB | jpg/jpeg |

* 错误码

| 错误码 | 说明 |
|  --- | --- |
| error_apply_region_not_detected | 服装区域太小，或在输入图中未被检测到 |

* 运行环境与依赖

| 示例代码语言 / 工具 | 建议运行时版本 |
|  --- | --- |
| cURL | - bash >= 3.2   - curl >= 7.58 (modern TLS/HTTP support)   - jq >= 1.6 (robust JSON parsing) |
| Node.js (JavaScript) | Node >= 18 (for global fetch) |
| JavaScript | - Chrome / Edge >= 80   - Firefox >= 74   - Safari >= 13.1 |
| PHP | PHP >= 7.4 (for modern TLS/compat), ext-curl (recommended) or allow_url_fopen=On + ext-openssl, ext-json |
| Python | Python >= 3.10 (for f-strings), requests >= 2.20.0 |
| Java | Java 11+ (for HttpClient), Jackson Databind >= 2.12.0 |



---

## 点数消耗
| AI 功能 | 消耗点数 |
|  --- | --- |
| AI 面料虚拟试穿 V1.0 | 2 |



---

License: Privacy policy

## Servers

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

## Security

### BearerAuthenticationV2

使用标准的 Bearer 鉴权。把您的 API 密钥放进请求头： `Authorization:Bearer YOUR_API_KEY`。请注意 'Bearer' 与 'YOUR_API_KEY' 之间有一个空格。

Type: http
Scheme: bearer

## Download OpenAPI description

 - [AI 面料虚拟试穿](https://docs.perfectcorp.com/_bundle/@l10n/zh-CN/reference/ai_fabric.yaml)

## V1.0

 - [GET /s2s/v2.0/task/template/fabric](https://docs.perfectcorp.com/zh-cn/reference/ai_fabric/v1.0/paths/~1s2s~1v2.0~1task~1template~1fabric/get.md)
 - [POST /s2s/v2.0/task/fabric](https://docs.perfectcorp.com/zh-cn/reference/ai_fabric/v1.0/paths/~1s2s~1v2.0~1task~1fabric/post.md): 查询任务状态的方法，请参见轮询指南。
 - [GET /s2s/v2.0/task/fabric/{task_id}](https://docs.perfectcorp.com/zh-cn/reference/ai_fabric/v1.0/paths/~1s2s~1v2.0~1task~1fabric~1%7Btask_id%7D/get.md)
