能力概览
本指南面向需要集成度裁开放 API的客户。您可通过统一的 HTTP 接口完成商家入驻、尺码与商品准备、智能荐码、拍照量体、下单前适配检验与 AI 试穿等能力。 生成与建模细节由平台托管,客户只需按本文约定传参与处理响应。
| 能力 | 说明 | 典型接口 |
|---|---|---|
| 商家入驻 | 注册获取 API Key;查询入驻状态与清单 | /merchant/register、/merchant/me |
| 尺码与商品 | 上传尺码表、绑定商品,供荐码使用 | /merchant/size-charts、/merchant/products |
| 智能荐码 | 根据身高体重/围度与尺码表给出主推码与置信度 | /size/recommend |
| 下单前检验 | 校验用户所选尺码相对主推结果的风险等级 | /fit/pre-order-check |
| 量体与人体模型 | 会话化量体、生成并保存人体模型后荐码 | /fitting/session/* |
| AI 试穿 | 异步合成试穿效果图 | /fitting/tryon、/fitting/tryon/{task_id} |
本文描述客户可调用的开放接口。平台管理、运维批处理及内部引擎实现不属于客户接入范围。
前提条件
- 通过
POST /merchant/register完成商家注册,或由平台为您开通商家账号。 - 妥善保存响应中的
api_key(仅返回一次)。后续请求在 Header 中携带该 Key。 - 商家状态为
approved或verified后,方可调用业务接口(荐码、尺码表、量体、试穿等)。待审核(pending)仅可查询入驻信息。 - 调用接口时,将本文中的 Base URL 替换为平台下发的环境地址。
| 环境 | Base URL |
|---|---|
| 调试环境 | http://127.0.0.1:8200 |
| 生产环境 | 以平台正式下发为准 |
业务接口统一前缀:/api/v1。探活:GET /health(无业务前缀)。
通用约定
鉴权
| 字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
|---|---|---|---|---|---|
| X-Merchant-Api-Key | String | Header | 是* | 商家 API Key。注册接口除外。 | mk_xxxx |
| Content-Type | String | Header | 是 | JSON 接口固定为 application/json;上传图片类接口为 multipart/form-data。 | application/json |
| X-Request-Id | String | Header | 否 | 请求追踪 ID;未传时由服务端生成并回写。 | req_demo_001 |
终端用户身份
涉及 C 端用户的接口,须同时传递渠道身份(Query 或 Body,与接口约定一致):
| 字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
|---|---|---|---|---|---|
| channel | String | Body / Query | 是 | 渠道标识。常用:platform_wechat、isv_taobao、isv_jd、private_youzan、private_weimob。 | platform_wechat |
| channel_user_ref | String | Body / Query | 是 | 渠道侧用户唯一标识(如 openid)。禁止跨渠道混用。 | oXXXX |
统一错误体
{
"error": {
"code": "UNAUTHORIZED",
"message": "缺少 X-Merchant-Api-Key",
"details": {}
},
"request_id": "uuid-or-client-id"
}
商家入驻
注册商家
发送 POST 请求完成入驻,获取 merchant_id 与 api_key。
api_key 仅在本接口响应中返回一次,请立即安全保存。服务端仅保存哈希,无法再次下发明文。
入参描述
| 字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
|---|---|---|---|---|---|
| shop_name | String | Body | 是 | 店铺名称,1~120 字。 | 示例旗舰店 |
| channel | String | Body | 否 | 入驻渠道标签,默认 taobao。 | taobao |
| contact | String | Body | 否 | 联系方式(邮箱/手机等)。 | ops@example.com |
出参描述
| 字段 | 类型 | 描述 | 示例值 |
|---|---|---|---|
| merchant_id | String | 商家唯一 ID。 | t_xxxx |
| status | String | 入驻状态:pending / approved / verified / rejected。 | pending |
| api_key | String | 商家 API Key(仅本次返回)。 | mk_xxxx |
| onboarding | Object | 入驻清单完成情况摘要。 | — |
请求示例
curl --location '{Base URL}/api/v1/merchant/register' \
--header 'Content-Type: application/json' \
--data '{
"shop_name": "示例旗舰店",
"channel": "taobao",
"contact": "ops@example.com"
}'
响应示例
{
"merchant_id": "t_xxxx",
"shop_name": "示例旗舰店",
"channel": "taobao",
"status": "pending",
"api_key": "mk_xxxx",
"api_key_note": "请妥善保存,服务端仅存哈希"
}
查询当前商家 / 入驻清单
待审核状态亦可调用。清单项通常包括:尺码表、商品绑定、尺码映射推送等。清单齐备后可调用 POST /merchant/onboarding/submit 提交验收。
尺码表与商品
荐码依赖商家尺码表。请先上传尺码表,再将商品绑定到对应 size_chart_id。
上传 / 更新尺码表
入参描述
| 字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
|---|---|---|---|---|---|
| product_id | String | Body | 是 | 商品或表业务 ID。 | pants_001 |
| size_chart | Array | Body | 是 | 尺码行列表;围度字段为 [low, high],尺码须单调递增。 | 见示例 |
| chart_id | String | Body | 否 | 尺码表 ID,默认等于 product_id。 | chart_demo_pants |
| category | String | Body | 否 | 品类,默认 pants。 | pants |
| fit_intent | String | Body | 否 | 版型意图,默认 regular。 | regular |
请求示例
curl --location '{Base URL}/api/v1/merchant/size-charts' \
--header 'Content-Type: application/json' \
--header 'X-Merchant-Api-Key: mk_xxxx' \
--data '{
"product_id": "pants_001",
"chart_id": "chart_demo_pants",
"category": "pants",
"size_chart": [
{ "size": "M", "waist_girth": [70, 74], "hip_girth": [94, 98], "inside_leg_height": [73, 75] },
{ "size": "L", "waist_girth": [74, 78], "hip_girth": [98, 102], "inside_leg_height": [74, 76] }
]
}'
绑定商品
| 字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
|---|---|---|---|---|---|
| product_id | String | Body | 是 | 商品 ID。 | pants_001 |
| size_chart_id | String | Body | 是 | 须为本商家已存在的尺码表。 | chart_demo_pants |
| title | String | Body | 否 | 商品标题。 | 直筒西裤 |
| num_iid | String | Body | 否 | 外部平台商品数字 ID(如淘宝)。 | 123456 |
列表查询:GET /merchant/size-charts、GET /merchant/products。
智能荐码
根据用户体征与尺码表进行规则荐码,返回主推尺码、备选尺码与置信度分流建议。
product_id 与 size_chart_id 至少提供一个。建议同时传入腰围、臀围以提高置信度。
入参描述
| 字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
|---|---|---|---|---|---|
| stature | Number | Body | 是 | 身高(cm),建议 140~200。 | 165 |
| body_mass_kg | Number | Body | 否 | 体重(kg),建议 35~150。 | 52 |
| gender | String | Body | 否 | 性别,默认 female。 | female |
| waist_girth | Number | Body | 否 | 腰围(cm)。 | 72 |
| hip_girth | Number | Body | 否 | 臀围(cm)。 | 96 |
| product_id | String | Body | 条件 | 商品 ID(与 size_chart_id 二选一)。 | pants_001 |
| size_chart_id | String | Body | 条件 | 尺码表 ID(与 product_id 二选一)。 | chart_demo_pants |
| fit_preference | String | Body | 否 | 合身偏好。 | regular |
| category | String | Body | 否 | 品类;部分品类可能触发降级策略。 | pants |
出参描述
| 字段 | 类型 | 描述 | 示例值 |
|---|---|---|---|
| assessment_id | String | 本次评估 ID。 | asm_xxxx |
| primary | String | 主推尺码。 | M |
| alternative | String | 备选尺码,可能为空。 | L |
| confidence | Number | 综合置信度,0~1。 | 0.86 |
| confidence_level | String | high / medium / low。 | high |
| confidence_action | String | 建议的前端分流动作。 | — |
| confidence_message | String | 面向用户的展示文案。 | — |
| per_size | Array | 各尺码得分与差距明细。 | — |
请求示例
curl --location '{Base URL}/api/v1/size/recommend' \
--header 'Content-Type: application/json' \
--header 'X-Merchant-Api-Key: mk_xxxx' \
--data '{
"stature": 165,
"body_mass_kg": 52,
"gender": "female",
"waist_girth": 72,
"hip_girth": 96,
"product_id": "pants_001"
}'
体征估计(可选)
若需单独估计围度,可先调用:
入参含 stature(必填)、body_mass_kg、gender 及可选自填围度;出参返回估计腰臀胸肩等围度与置信度。
下单前检验
将用户所选尺码与荐码结果比对,返回通过 / 软警告 / 硬警告 / 阻断等级,供下单页决策。
入参描述
| 字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
|---|---|---|---|---|---|
| selected_size | String | Body | 是 | 用户选择的尺码。 | L |
| primary | String | Body | 是 | 荐码主推尺码。 | M |
| alternative | String | Body | 否 | 荐码备选尺码。 | L |
| confidence | Number | Body | 是 | 荐码置信度。 | 0.86 |
| score | Number | Body | 否 | 主推匹配分。 | 0.91 |
| allow_block | Boolean | Body | 否 | 是否允许返回 BLOCK,默认 false。 | false |
出参描述
| 字段 | 类型 | 描述 | 示例值 |
|---|---|---|---|
| result | String | PASS / WARN_SOFT / WARN_HARD / BLOCK。 | WARN_SOFT |
| risk | String | 风险级别。 | — |
| message | String | 面向用户的提示文案。 | — |
| require_ack | Boolean | 是否需要用户二次确认。 | true |
量体与人体模型
拍照量体采用会话化调用:先创建会话,再按步骤完成量体、生成模型、保存模型,最后基于会话荐码或做下单前检验。 适合嵌入 H5 / 小程序量体组件。
推荐调用顺序
POST /fitting/session— 创建会话POST .../suggest-gender(可选)— 正面照性别建议POST .../measure/start— 上传三视图并开始量体POST .../model/generate— 生成预览模型POST .../model/correct(可选)— 微调后重生成POST .../model/save— 固化人体模型,取得body_model_idPOST .../recommend/.../pre-order-check— 会话内荐码与检验
创建量体会话
入参描述
| 字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
|---|---|---|---|---|---|
| channel | String | Body | 是 | 渠道标识。 | platform_wechat |
| channel_user_ref | String | Body | 是 | 渠道用户标识。 | oXXXX |
| gender | String | Body | 否 | 初始性别。 | female |
| context | Object | Body | 否 | 业务上下文,如 product_id、size_chart_id、sku_id。 | {} |
出参描述
| 字段 | 类型 | 描述 | 示例值 |
|---|---|---|---|
| session_id | String | 会话 ID。 | fsess_xxxx |
| person_id | String | 平台人物 ID。 | psn_xxxx |
| body_model_id | String | 已有人体模型 ID;新会话通常为 null。 | null |
开始量体
Content-Type:multipart/form-data
| 字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
|---|---|---|---|---|---|
| images | File×3 | Form | 是 | 正 / 侧 / 背三视图,顺序与 poses 对齐。 | — |
| poses | String | Form | 是 | JSON 数组字符串。 | ["front","side","back"] |
| stature | Number | Form | 是 | 身高 cm。 | 165 |
| body_mass_kg | Number | Form | 是 | 体重 kg。 | 52 |
| gender | String | Form | 否 | 用户选择的性别,默认 female。 | female |
请使用全身、光照良好、单人照片。后续
model/generate → model/save 完成后,使用返回的 body_model_id 关联试穿与复用量体结果。
会话内荐码 / 检验
基于会话当前量体与上下文尺码表执行,字段语义与独立荐码 / 检验接口一致。
AI 试穿
AI 试穿为异步接口,调用分为两步:
- 创建任务:提交试穿请求,获取唯一
task_id。 - 查询结果:使用
task_id轮询任务状态,直至完成并获取效果图 URL。
步骤 1:创建任务
任务创建后立即返回
task_id。缺人像图且缺服装图(未传 URL、商品也无 flatlay)时返回 400 TRYON_IMAGE_MISSING。前台请轮询
GET /fitting/tryon/{task_id},不要用 POST /fitting/jobs/run 当试穿轮询(该接口是管理端批处理,会顺带扫授权/outbox)。
入参描述
| 字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
|---|---|---|---|---|---|
| product_id | String | Body | 建议 | 平台商品 ID,用于关联服饰图与业务记录。 | prod_demo_pants |
| sku_id | String | Body | 否 | SKU 标识。 | sku_001 |
| size | String | Body | 否 | 尺码快照。 | M |
| color | String | Body | 否 | 颜色快照。 | 黑 |
| channel | String | Body | 是 | 渠道标识。 | platform_wechat |
| channel_user_ref | String | Body | 是 | 渠道用户标识。 | oXXXX |
| person_image_url | String | Body | 条件 | 人像图公网 URL。显式传入优先;与服装图一起构成出图输入。 | https://…/person.jpg |
| garment_image_url | String | Body | 条件 | 服装图公网 URL。显式传入优先;缺省则用商品已维护的 OSS flatlay。 | https://…/flatlay.jpg |
出参描述
| 字段 | 类型 | 描述 | 示例值 |
|---|---|---|---|
| task_id | String | 异步任务唯一 ID。 | ttask_xxxx |
| status | String | pending / processing / completed / failed。 | pending |
| image_url | String | 效果图 URL;创建时通常为 null。 | null |
| estimated_seconds | Number | 参考耗时(秒),以轮询结果为准。 | 30 |
请求示例
curl --location '{Base URL}/api/v1/fitting/tryon' \
--header 'Content-Type: application/json' \
--header 'X-Merchant-Api-Key: mk_xxxx' \
--data '{
"product_id": "prod_demo_pants",
"person_image_url": "https://example.com/person.jpg",
"garment_image_url": "https://example.com/flatlay.jpg",
"channel": "platform_wechat",
"channel_user_ref": "oXXXX"
}'
响应示例
{
"task_id": "ttask_xxxx",
"status": "pending",
"image_url": null,
"message": "试穿任务已提交",
"estimated_seconds": 30
}
步骤 2:查询结果
建议每隔 2~3 秒调用 GET /fitting/tryon/{task_id},直至 completed 或 failed。后台对阿里仍为 processing 的任务只刷新 last_poll_at,失败才累加 retry_count(上限 8,另有 120 分钟时间窗)。
| status | 含义 | 处理建议 |
|---|---|---|
| pending / processing | 排队或生成中 | 继续轮询 |
| completed | 成功 | 使用 image_url 展示 |
| failed | 失败 | 展示 error_message,可检查图片后重试 |
curl --location '{Base URL}/api/v1/fitting/tryon/ttask_xxxx?channel=platform_wechat&channel_user_ref=oXXXX' \
--header 'X-Merchant-Api-Key: mk_xxxx'
输入图片要求
高质量输入是高质量输出的前提。人像与服饰图须为公网可访问的 HTTP/HTTPS URL。
人像图
- 文件大小 5KB~5MB;边长 150~4096px;JPG / JPEG / PNG / BMP / HEIC
- 全身正面、光照良好;画面中有且仅有一人;手部尽量完整
- 避免侧身、坐姿、半身、过暗或模糊照片
服饰图
- 尺寸与格式要求同上
- 建议平铺、单件、背景干净、少褶皱;主体占比宜大
- 可通过
POST /fitting/catalog/items/{product_id}/images维护商品图(如 main / flatlay)
历史记录:GET /fitting/tryon/records(需携带渠道身份)。
错误码
| HTTP | code | 说明 |
|---|---|---|
| 400 | INVALID_ARGUMENT | 参数非法或缺失 |
| 400 | TRYON_IMAGE_MISSING | 试穿缺人像图与服装图(未传 URL 且商品无 flatlay) |
| 401 | UNAUTHORIZED | 缺少或错误的商家 API Key |
| 403 | FORBIDDEN | 商家待审核或已驳回,业务接口不可用 |
| 404 | CHART_NOT_FOUND / TRYON_TASK_NOT_FOUND 等 | 资源不存在或不属于当前身份 |
| 503 | — | 对应能力暂不可用,请稍后重试或联系对接支持 |