AI 虛擬美甲
AI 虛擬美甲 API 為對美甲感興趣的顧客提供了創新的線上體驗提升方式。它讓購物者虛擬呈現多種美甲風格,從人造與壓克力指甲、穿戴式指甲到凝膠設計。憑藉無限的顏色與質地選項,使用者可輕鬆在自然與人造指甲上探索不同外觀。此平台支援個人化的試戴,讓使用者輕鬆在風格間切換,並看見前後對比。這種無縫整合簡化了產品發現流程,並在購買前提供精準、互動的預覽,提升顧客信心。
本指南將引導您完成:
AI 虛擬美甲 API 的工作流程:
需要認證: Authorization: Bearer YOUR_API_KEY
工作流程步驟:
圖片上傳準備:
- 流程從準備手背圖片開始。
- 呼叫 File API
/s2s/v2.0/file取得上傳網址與相關的file_id。 - 使用提供的上傳網址,上傳含指甲的手背圖片。
美甲設計設定選項:
- 先選擇合適的指甲顏色。您也可以依自己的喜好選擇自訂形狀。
啟動 AI 任務並取得任務 ID:
- 透過 HTTP POST 請求,將上傳的圖片與所選特效設定傳送到
/s2s/v2.0/task/nail-vto。 - 在回應中取得唯一的任務 ID,用以識別這次互動。
- 透過 HTTP POST 請求,將上傳的圖片與所選特效設定傳送到
輪詢任務狀態(持續檢查):
- 使用取得的
task_id,透過 HTTP GET 請求(例如GET /s2s/v2.0/task/nail-vto/${task_id})定期輪詢任務狀態。 - 持續監控:
Task_status = "success"(流程完成)。Task_status = "error"(視情況解決或重試)。
- 狀態轉為成功後,相應更新工作流程。
- 使用取得的
這個結構化的工作流程確保與使用者輸入的高效整合、任務的自動化監控,以及無縫取得結果。
- API Playground
使用我們的官方 playground 進行互動式探索與測試:
- 認證
- 使用 Bearer Token 將您的 API key 納入請求標頭:
Authorization: Bearer YOUR_API_KEY
您可以在 https://yce.makeupar.com/api-console/en/api-keys/ 找到您的 API Key。
上傳圖片
您可以直接上傳檔案到伺服器,或在 VTO 任務內容中提供有效的圖片網址。
上傳端點
POST /s2s/v2.0/file
或者,若您已有公開的圖片網址,可跳過此步驟。
準備特效範本
有四種不同的設定模式可用於此目的:
- 自訂顏色,並與您目前的指甲外觀對齊
- 使用預設設計與特定形狀,創造您的願景
- 加入穿戴式指甲,並與您既有的原始指甲圖片連結
- 提供符合的穿戴式指甲產品圖片連結
特效範本 JSON Schema
{ "version": "1.0", "effect_type": "nail_polish", // valid values: ['nail_polish', 'press_on_nails'] "effects": [], "ref_file_ids": [] }特效格式
- 指甲油 - 顏色
{ "sub_type": "color", "finger": "index", // valid values: ['thumb', 'index', 'middle', 'ring', 'pinky'] "color": "#ff0000", "texture": "cream", // valid values: ['matte', 'cream', 'metallic', 'jelly', 'sheer', 'pearl', 'textured', 'shimmer_coarse', 'shimmer_fine'] "transparency": 0, // 0-100,適用於金屬以外的質感 "reflection": 0, // 0-100 "contrast": 0, // 0-100 "roughness": 0, // 0-100 "shimmer_opacity": 0, // 0-100,適用於珍珠質感 "shimmer_size": 0, // 0-100,適用於 shimmer_coarse 與 shimmer_fine 質感 "textured_size": 0, // 0-100,適用於 textured 質感 }- 指甲油 - 設計
{ "sub_type": "design", "finger": "index", // valid values: ['thumb', 'index', 'middle', 'ring', 'pinky'] "ref_file_url": "", // 選填;ref_file_id 或 ref_file_url 必須填寫其一,但只能選擇一項。 "ref_file_index": 0, // 除非選擇上傳,此欄位為選填。對應根節點下 ref_file_ids 的索引 "texture": "cream", // valid values: ['matte', 'cream', 'metallic', 'jelly', 'sheer', 'pearl', 'textured', 'shimmer_coarse', 'shimmer_fine'] "transparency": 0, // 0-100,僅適用於金屬以外的質感 "reflection": 0, // 0-100 "contrast": 0, // 0-100 "roughness": 0, // 0-100 "shimmer_opacity": 0, // 0-100,適用於珍珠質感 "shimmer_size": 0, // 0-100,適用於 shimmer_coarse 與 shimmer_fine 質感 "textured_size": 0, // 0-100,適用於 textured 質感 }- 穿戴式指甲 - 顏色
- 最新的形狀值可在以下網址找到:https://plugins-media.makeupar.com/wcm-saas/shapes/nails.json
{ "sub_type": "color", "finger": "index", // valid values: ['thumb', 'index', 'middle', 'ring', 'pinky'] "shape": "square_oval", // 請查閱 nails.json。有效值:['square_oval','square_square','square_squoval','squoval_oval','squoval_square','squoval_squoval','oval_oval','oval_square','oval_squoval','almond_oval','almond_square','almond_squoval','stiletto_oval','stiletto_square','stiletto_squoval], "length": 1.0, // 0.8-2.15,適用於 original 以外的形狀 "color": "#ff0000", "texture": "cream", // 其他形狀的有效值:['matte', 'cream', 'metallic'] "reflection": 0, // 0-100 "contrast": 0, // 0-100 "roughness": 0 // 0-100 }- 穿戴式指甲 - 設計
{ "sub_type": "design", "finger": "index", // valid values: ['thumb', 'index', 'middle', 'ring', 'pinky'] "ref_file_url": "", // 選填;ref_file_id 或 ref_file_url 必須填寫其一,但只能選擇一項。 "ref_file_index": 0, // 除非選擇上傳,此欄位為選填。對應根節點下 ref_file_ids 的索引 "texture": "cream", // valid values: ['matte', 'cream', 'metallic'] "reflection": 0, // 0-100 "contrast": 0, // 0-100 "roughness": 0, // 0-100 }
特效範本設計邏輯
- 偵測特效類型(
press_on_nails與nail_polish)。 - 遍歷
effects中的每個條目:
若
sub_type === "color"→ 直接對應欄位,以預設值填入缺失的質地相關鍵。 若sub_type === "design"→- 若使用者提供了
ref_file_url,保留它並省略ref_file_index。 - 若使用者提供了索引(
ref_file_index),確保ref_file_ids存在且索引有效;然後設定"ref_file_id": ref_file_ids[index](選填——某些後端期望原始索引,而非 id)。
- 正規化數值範圍 – 將任何超出範圍的值限制在 0‑100 或長度限制內。
- 加入缺失的選填鍵並設預設值,讓 schema 驗證通過。
- 將最終物件序列化為 JSON(精簡格式,或為除錯使用美化格式)。
- 偵測特效類型(
內容範例(可直接發送)
{ "version": "1.0", "src_file_url": "https://plugins-media.makeupar.com/strapi/assets/nail_user_photo_01_27d4260646.jpg", "effect_type": "press_on_nails", "ref_file_ids": [ "Ks3kh+1nPpVNm8iJb5374CWtBzkT4B44NPJwXbBKqVxfjK3xgCQ+hRt9MJXBFaud", "+Z7PSjuzigvsc3S/Yli1A4WN7c3J6NJHFqK2iUlqD2BfjK3xgCQ+hRt9MJXBFaud" ], "effects": [ { "sub_type": "design", "finger": "thumb", "texture": "cream", "reflection": 100, "contrast": 50, "roughness": 0, "ref_file_index": 0 }, { "sub_type": "design", "finger": "index", "texture": "cream", "reflection": 100, "contrast": 50, "roughness": 0, "ref_file_index": 1 }, { "sub_type": "design", "finger": "middle", "texture": "cream", "reflection": 100, "contrast": 50, "roughness": 0, "ref_file_url": "https://plugins-media.makeupar.com/strapi/assets/press_on_nail_06_3_9ce2ddc47a.png" }, { "sub_type": "design", "finger": "pinky", "texture": "cream", "reflection": 100, "contrast": 50, "roughness": 0, "ref_file_url": "https://plugins-media.makeupar.com/strapi/assets/press_on_nail_06_5_f6e46dd56f.png" }, { "sub_type": "design", "finger": "ring", "texture": "cream", "reflection": 100, "contrast": 50, "roughness": 0, "ref_file_url": "https://plugins-media.makeupar.com/strapi/assets/press_on_nail_06_4_2103ca8cac.png" } ] }
建立美甲 VTO 任務並輪詢結果
當您取得圖片與完整的特效內容後,即可建立任務。API 以非同步方式處理請求。您必須輪詢任務狀態,直到達到
success或error。建立任務端點
POST /s2s/v2.0/task/nail-vto輪詢端點
GET /s2s/v2.0/task/nail-vto/{task_id}
- AI 虛擬美甲規範
支援的指甲視角 單張指甲圖片,正面視角清晰且無遮擋。
| 項目 | 支援的尺寸 | 支援的檔案大小 | 支援的格式 |
|---|---|---|---|
| 美甲設計圖片 - 指甲油 | * 271 px ≤ 寬度 ≤ 542 px * 522 px ≤ 高度 ≤ 1044 px * 至少 72ppi 圖片會從中心套用,虛擬試色效果會依使用者指甲長度而變化。 | ≤ 1MB | png |
| 美甲設計圖片 - 穿戴式指甲 | * 271 px ≤ 寬度 ≤ 542 px * 522 px ≤ 高度 ≤ 1044 px * 0.5 ≤ 圖片長寬比 (H/W) ≤ 3.5 * 至少 72ppi 圖片的內容、形狀與長度設定都用於生成虛擬試色效果。 由於會偵測使用者指甲寬度以確保正確的圖片縮放,建議為每根指甲建立具有正確長寬比的個別圖片。 請下載穿戴式指甲設計圖片範例,並參考圖片指引以取得更多細節。下載:Nail_Design_Image_Guidelines.pdf | ≤ 1MB | png(具透明背景) |
穿戴式指甲設計圖片範例:
![]()
支援的手部視角
| 項目 | 支援的尺寸 | 支援的檔案大小 | 支援的格式 |
|---|---|---|---|
| 使用者照片 | * 長邊 ≤ 2048 * 短邊 ≥ 256 | ≤ 10MB | jpg/jpeg/png |
- 輸入圖片僅支援一隻手
- 手掌面積最好至少為輸入圖片面積的一半
- 輸入圖片的長寬比最好為 1:1、3:4、4:3
- 手指的指甲不應被遮擋
- 指甲上最好沒有指甲貼片與指甲油
![]()
- 錯誤代碼
| 錯誤代碼 | 說明 |
|---|---|
| error_nail_too_small | 指甲區域過小。 |
| error_no_nail | 來源圖片中未偵測到指甲。 |
- 環境與相依性
| 範例程式語言 / 工具 | 建議的執行環境版本 |
|---|---|
| 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 |
