无限画布无限画布
GPU API工具箱 API 文档Partner API版本归档v3 历史文档

图片 API

XCamShow 服务端调用图片脱衣、姿势切换、BFS 换头和 Klein 换头的 Bearer 接口

XCamShow Partner 图片 API(v2)

历史 v1 文档保留升级前原文。本次视频链路切换不改变以下图片模型和路径。

XCamShow 只从服务端使用 Bearer Key 调用,不使用浏览器 Cookie。当前开放图片脱衣、姿势切换、BFS 换头和 Klein 换头 4 个业务模型。

Base URL: https://ic.xshow.live/api/partner/v1
Authorization: Bearer <XCAMSHOW_API_KEY>

接口

方法路径说明
POST/images/edits创建图片编辑任务,必须带 Idempotency-Key
POST/images/{task_id}查询任务状态
GET/images/{task_id}/content下载完成图片
POST/images/{task_id}/cancel请求取消任务

四个图片模型

业务能力model图片输入额外字段
图片脱衣image-undress1 张目标图;第 2 张身份参考可选无
姿势切换image-pose1 张人物图lora 必填
Klein 换头head-swap2 张:目标底图、头部身份图无
BFS 换头head-swap-bfs2 张:目标底图、头部身份图无

四个模型统一通过 POST /images/edits 创建,任务生命周期统一使用 /images/{task_id}。Partner 调用方不直接访问内部 /v1/toolsbox-pose-edit/、其他 Scheduler 路径或 GPU 地址。

image-pose 会先生成姿势图,再用同一张输入图作为身份参考执行 Klein 精准换脸。该身份恢复阶段只由 Partner 服务端签名路由启用;画布的普通 Proxy 姿势编辑不会进入换脸或换头工作流。

姿势编辑独立入口(候选,尚未部署验证)

POST /api/partner/v1/toolsbox-pose-edit/ 复用与 /videos 相同的 Bearer Key 和 Partner 账号绑定,不要求浏览器 Cookie。请求仍需 Idempotency-Key,使用下述 multipart 字段;model 可以省略,提供时仅接受 image-pose。返回值、租户归属、计费和 /images/{task_id} 系列任务接口均与统一图片入口一致。该入口是 Web Partner 适配层,不直接开放内部 Scheduler。

创建请求使用 multipart;重复的 image 字段按出现顺序解释:

字段必填说明
model是上表 4 个公开模型之一
image是JPG/PNG/WEBP/BMP,每张最大 30MB,part 必须携带真实 image/* MIME
prompt是图片编辑提示词;head-swap 保留该兼容字段,实际使用服务端固定换头提示词
lora仅姿势切换krea2/sex/*.safetensors 相对路径,例如 krea2/sex/cowgirl.safetensors
seed否0 到 2^63-1 的整数;不传时服务端随机生成

Klein 精准换头

head-swap 使用 Klein 换头后接 SeedVR2 放大,与 head-swap-bfs 是两个独立模型;此入口不启用 Pro 的 Krea2 融合阶段。不要交换两张图片的顺序。head-swap-pro 尚未开放给 Partner。

# Klein 换头:图片 1 是目标底图,图片 2 是头部身份图
curl -X POST "$BASE_URL/images/edits" \
  -H "Authorization: Bearer $XCAMSHOW_API_KEY" \
  -H "Idempotency-Key: $XCAMSHOW_ORDER_ID" \
  -F "model=head-swap" \
  -F "image=@target.png;type=image/png" \
  -F "image=@head.png;type=image/png" \
  -F "prompt=保持目标图身体、服装、姿势和背景,自然替换完整头部" \
  -F "seed=12345"

head-swap-bfs 内置 auto

接口名、公开模型名和参数不变:继续调用 POST /images/edits,传 model=head-swap-bfs 和两张 image。 自动判断在服务端完成,无需新增 auto 字段。

仅分析第 2 张 image:头部身份参考图,第 1 张仍为目标底图,图片顺序保持不变。身份参考图额外限制为 2500 万像素,先按 EXIF 修正方向,再等比例缩小进行检测。

头部身份参考图实际执行链路
人脸框面积占整图超过 50%Krea2 BFS 换头
人脸框面积占整图不超过 50%FLUX.2 Klein 换头 → SeedVR2
没有可靠人脸或有多张可靠人脸422,提示更换清晰的单人参考图

服务端使用人脸专用 YOLOv8 权重与姿态检测。当前 head-reference-v2 规则:可靠人脸置信度至少 0.5;人脸框面积占整图不超过 50%(含 50%)走 Klein,超过 50% 走 BFS。姿态检测结果仅用于诊断,不再作为 Klein 路由的硬条件。检测阈值是服务端配置,不新增调用参数,也不等同于生成效果保证。

自动选择在计费和任务提交前完成,实际执行模型与计费模型一致。首次路由结果持久化,同一 Idempotency-Key 的重试保持原链路;更改图片、提示词或 seed 后复用原键返回 409 idempotency_conflict。升级前已创建的任务继续沿用原计费模型。分析服务不可用时返回 503 reference_analyzer_unavailable,不静默提交到其他模型。

head-swap 仍保留为显式指定 Klein 的入口;head-swap-pro 不参与此次 auto。查询、下载、取消和原有鉴权方式不变。

# 自动换头:图片 1 是目标底图,图片 2 是头部身份参考图
curl -X POST "$BASE_URL/images/edits" \
  -H "Authorization: Bearer $XCAMSHOW_API_KEY" \
  -H "Idempotency-Key: $XCAMSHOW_ORDER_ID" \
  -F "model=head-swap-bfs" \
  -F "image=@target.png;type=image/png" \
  -F "image=@head.png;type=image/png" \
  -F "prompt=保持目标图身体、服装、姿势、镜头和背景,自然替换头部身份"
# 图片脱衣:第 1 张是目标图,第 2 张身份参考可选
curl -X POST "$BASE_URL/images/edits" \
  -H "Authorization: Bearer $XCAMSHOW_API_KEY" \
  -H "Idempotency-Key: $XCAMSHOW_ORDER_ID" \
  -F "model=image-undress" \
  -F "image=@target.png;type=image/png" \
  -F "prompt=保持人物身份、姿势、构图和背景,执行服装编辑"
# 姿势切换
curl -X POST "$BASE_URL/images/edits" \
  -H "Authorization: Bearer $XCAMSHOW_API_KEY" \
  -H "Idempotency-Key: $XCAMSHOW_ORDER_ID" \
  -F "model=image-pose" \
  -F "image=@source.png;type=image/png" \
  -F "prompt=change the pose while preserving identity and background" \
  -F "lora=krea2/sex/cowgirl.safetensors" \
  -F "seed=12345"

服务端固定映射

Partner 模型内部模型/工作流Partner 是否可见内部名称
image-undressMuse v3.5 图片脱衣否
image-poseKrea2 Turbo v2.5 + Toolsbox Pose LoRA → Klein 精准换脸否
head-swap-bfs按第 2 张参考图自动选择 Krea2 BFS 或 Klein 换头公开模型名保持不变
head-swapFLUX.2 Klein 换头 → SeedVR2仅公开模型名

Klein 与 BFS 换头均严格按 multipart 中两张 image 的出现顺序解释;脱衣允许 1–2 张图;姿势切换只允许 1 张图并要求合法 LoRA。任一图片均不得超过 30MB,整个 multipart 不得超过 64MB。

创建和查询响应直接返回任务对象,常见状态为 pending、completed 和 failed。完成后下载:

curl -X POST -H "Authorization: Bearer $XCAMSHOW_API_KEY" "$BASE_URL/images/$TASK_ID"
curl -L -H "Authorization: Bearer $XCAMSHOW_API_KEY" "$BASE_URL/images/$TASK_ID/content" -o result.png

Idempotency-Key 应使用 XCamShow 订单号;同一次创建的网络重试必须复用原值,新任务必须使用新值。Key 不得放入 URL、日志、浏览器或代码仓库。XCamShow 不接触内部 Scheduler 地址、工作流节点 ID、GPU 节点或内部服务 Token。

On this page