宠物写真(猫狗换装)API 技术解析:接入流程、参数设计与异步轮询实践

简介: 本文介绍宠物写真(猫狗换装)接口的接入方法。该接口基于人工智能图像生成,接收宠物原图后套用指定风格输出拟人化写真,采用「创建任务 + 轮询查询」的异步调用模式。文章覆盖接口能力、请求与查询参数、多语言调用示例、返回结构、调用限制、能力边界、错误码排查与常见问题,适用于宠物内容创作、社交素材生成与批量视觉生产等场景。频率、配额与返回字段以控制台实时配置为准。

宠物写真(猫狗换装)API 接入技术教程

1. 技术简介

宠物写真(猫狗换装)是一项基于人工智能图像生成的接口能力。接口接收一张宠物原图,通过视觉特征提取、提示词构建与图生图渲染,输出保留宠物本体特征、并套用指定服饰风格的拟人化高清写真图片。接口采用「创建任务 + 轮询查询」的异步调用模式:先提交生成任务拿到任务标识,再周期性查询任务状态,任务完成后从返回结构中获取写真图片地址。该能力适用于宠物内容创作、社交分享素材生成、宠物周边与 IP 视觉生产等需要批量、可控产出宠物写真的技术场景。

2. 能力概览

能力 说明 适用情形
特征保持生成 识别宠物种类、毛色与神态,在换装同时尽量保留本体特征 需要「认得出是同一只宠物」的写真产出
多风格套用 内置古风汉服、凤冠霞帔、西式婚纱、西装礼服、新中式国潮、日系清新、复古港风、可爱童趣、暗黑高级、森系治愈等风格 单张原图衍生多种人格设定与视觉
宽高比适配 支持 1:1、3:4、4:3、16:9、9:16 多种比例 头像、朋友圈、海报等不同版式直接使用
异步任务 提交后不阻塞,轮询获取结果 批量提交、内容生产流水线对接

3. 适用场景

  • 宠物 IP 与周边视觉:为宠物形象统一生成特定风格的视觉素材,用于头像、表情包、周边设计。
  • 社交分享素材:将日常宠物照片转为特定主题写真,作为社媒内容素材。
  • 内容生产流水线:在需要周期性产出宠物主题图片的业务中,以原图批量提交、轮询回收的方式接入。
  • 技术验证与联调:在接入业务系统前,通过在线调试模块验证参数与返回结构。

图1:应用场景示意

上述场景仅描述技术用途与数据流向,不涉及业务收益或量化指标。

4. 接入流程

图2:风格与能力概览

接入分为三步:

  1. 准备原图:提供一张清晰、正脸/半身、无遮挡的宠物图片,可为公网可访问的 URL 或 Base64 编码字符串。
  2. 创建任务:以 POST 调用创建接口,在请求体中传入风格、宽高比与原图,接口返回任务标识 task_id
  3. 轮询查询:以 GET 调用查询接口并携带 task_id,周期性查询直到任务完成,从返回结构中取回写真图片地址。

图3:接入调用流程

创建任务请求参数

参数 类型 必填 说明
style_type string 写真风格,可选:古风汉服、凤冠霞帔、西式婚纱、西装礼服、新中式国潮、日系清新、复古港风、可爱童趣、暗黑高级、森系治愈
pet_image string 待处理宠物原图,支持 URL 或 Base64 编码,建议正脸/半身清晰无遮挡
aspect_ratio string 生图宽高比,可选 1:1、3:4、4:3、16:9、9:16,默认 1:1

查询任务请求参数

参数 类型 必填 说明
task_id string 创建任务返回的任务标识

5. 调用示例与返回结构

以下示例中的接入地址来自云市场商品页给出的网关地址,鉴权统一使用 APPCODE

创建任务(POST)

POST /skills_petportrait/create HTTP/1.1
Host: petphoto.market.alicloudapi.com
Authorization: APPCODE <appcode>
Content-Type: application/json

{
  "style_type": "古风汉服",
  "aspect_ratio": "1:1",
  "pet_image": "https://example.com/pet.jpg"
}

查询任务(GET)

GET /skills_petportrait/query?task_id=pp_20260903_a1b2c3d4 HTTP/1.1
Host: petphoto.market.alicloudapi.com
Authorization: APPCODE <appcode>

返回结构示例(JSON)

创建任务返回:

{
   
  "ret_code": 0,
  "task_id": "pp_20260903_a1b2c3d4",
  "msg": "任务创建成功"
}

查询任务返回(任务完成时):

{
   
  "ret_code": 0,
  "task_status": "done",
  "flow_result": {
   
    "output": {
   
      "image_url": "https://example.com/result/portrait_pp_20260903_a1b2c3d4.png"
    }
  }
}

字段取值以云市场商品页接口文档与控制台实时配置为准;不同资源包下返回字段可能存在差异。

图4:返回结构字段示意

Python 示例

import requests

APPCODE = "<appcode>"
HOST = "https://petphoto.market.alicloudapi.com"

# 1. 创建任务
create = requests.post(
    f"{HOST}/skills_petportrait/create",
    headers={
   "Authorization": f"APPCODE {APPCODE}", "Content-Type": "application/json"},
    json={
   
        "style_type": "古风汉服",
        "aspect_ratio": "1:1",
        "pet_image": "https://example.com/pet.jpg",
    },
    timeout=30,
)
task_id = create.json().get("task_id")

# 2. 轮询查询
import time
for _ in range(30):
    q = requests.get(
        f"{HOST}/skills_petportrait/query",
        headers={
   "Authorization": f"APPCODE {APPCODE}"},
        params={
   "task_id": task_id},
        timeout=30,
    ).json()
    if q.get("task_status") == "done":
        print(q["flow_result"]["output"]["image_url"])
        break
    time.sleep(3)

Java 示例

import java.net.http.*;
import java.net.URI;
import java.time.Duration;

public class PetPortrait {
   
    static final String APPCODE = "<appcode>";
    static final String HOST = "https://petphoto.market.alicloudapi.com";

    public static void main(String[] args) throws Exception {
   
        HttpClient client = HttpClient.newHttpClient();
        // 创建任务
        String body = "{\"style_type\":\"古风汉服\",\"aspect_ratio\":\"1:1\",\"pet_image\":\"https://example.com/pet.jpg\"}";
        HttpRequest create = HttpRequest.newBuilder()
                .uri(URI.create(HOST + "/skills_petportrait/create"))
                .header("Authorization", "APPCODE " + APPCODE)
                .header("Content-Type", "application/json")
                .POST(HttpRequest.BodyPublishers.ofString(body))
                .build();
        HttpResponse<String> r1 = client.send(create, HttpResponse.BodyHandlers.ofString());
        String taskId = extractTaskId(r1.body());
        // 轮询查询(省略循环细节)
    }

    static String extractTaskId(String json) {
    return ""; }
}

PHP 示例

<?php
$appcode = "<appcode>";
$host = "https://petphoto.market.alicloudapi.com";

// 创建任务
$ch = curl_init("$host/skills_petportrait/create");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ["Authorization: APPCODE $appcode", "Content-Type: application/json"],
    CURLOPT_POSTFIELDS => json_encode([
        "style_type" => "古风汉服",
        "aspect_ratio" => "1:1",
        "pet_image" => "https://example.com/pet.jpg",
    ]),
    CURLOPT_RETURNTRANSFER => true,
]);
$create = json_decode(curl_exec($ch), true);
$taskId = $create["task_id"];

// 轮询查询
do {
   
    sleep(3);
    $q = curl_init("$host/skills_petportrait/query?task_id=" . urlencode($taskId));
    curl_setopt_array($q, [CURLOPT_HTTPHEADER => ["Authorization: APPCODE $appcode"], CURLOPT_RETURNTRANSFER => true]);
    $resp = json_decode(curl_exec($q), true);
} while (($resp["task_status"] ?? "") !== "done");
echo $resp["flow_result"]["output"]["image_url"];

Node.js 示例

const APPCODE = "<appcode>";
const HOST = "https://petphoto.market.alicloudapi.com";

// 创建任务
const createRes = await fetch(`${
     HOST}/skills_petportrait/create`, {
   
  method: "POST",
  headers: {
    Authorization: `APPCODE ${
     APPCODE}`, "Content-Type": "application/json" },
  body: JSON.stringify({
   
    style_type: "古风汉服",
    aspect_ratio: "1:1",
    pet_image: "https://example.com/pet.jpg",
  }),
});
const {
    task_id } = await createRes.json();

// 轮询查询
let url;
for (let i = 0; i < 30; i++) {
   
  const q = await fetch(`${
     HOST}/skills_petportrait/query?task_id=${
     task_id}`, {
   
    headers: {
    Authorization: `APPCODE ${
     APPCODE}` },
  }).then((r) => r.json());
  if (q.task_status === "done") {
    url = q.flow_result.output.image_url; break; }
  await new Promise((r) => setTimeout(r, 3000));
}
console.log(url);

6. 在线调试实录

图5:在线调试走查

在云市场商品页的 API 调试模块中,可按以下步骤完成一次联调:

  1. 选择操作「创建任务」,请求方式显示为 POST,调用地址为 /skills_petportrait/create
  2. 在请求体(Body)中填写 style_typeaspect_ratiopet_image 三个字段,其中 pet_image 填入一张公网可访问的宠物图片地址。
  3. 发起请求,接口返回 task_id
  4. 切换操作「查询结果」,请求方式显示为 GET,在查询参数中填入上一步的 task_id
  5. 发起查询,待 task_status 变为 done 后,从 flow_result.output.image_url 取回写真图片地址。

该走查用于确认参数格式与返回结构,与业务系统接入逻辑一致。调试中建议使用清晰、正脸、无遮挡的原图,以减少因原图不可解析导致的失败。

7. 接口调用限制与规范

  • 请求频率:建议单账户请求频率参考控制台实时配置;高频提交可能触发限流,返回 403。
  • 配额:每日可调用次数随账户资源包而定,以控制台实时配置为准;配额用尽后调用会被拒绝。
  • 批量规则:单次请求生成一张写真。需要批量产出时,建议串行或受限并发提交,并在每次创建后等待轮询完成,避免短时间内大量并发导致限流。
  • 原图要求:清晰、正脸/半身、无遮挡;支持 URL 与 Base64 两种传入方式。
  • 合规要求:传入的宠物图像须用于已获授权的用途,不得处理未授权的人像或隐私内容;上传图像按服务商声明处理,不应依赖其长期留存。

上述频率与配额为参考性描述,精确数值以控制台实时配置为准。

8. 能力边界与免责声明

支持

  • 面向猫狗宠物的原图换装写真生成。
  • 十余种内置风格的套用与多宽高比输出。
  • 异步任务模式,便于批量与流水线接入。

不支持

  • 直接以人像或非猫狗宠物作为换装主体。
  • 保证生成结果与某张指定参考图在构图、姿态上完全一致。
  • 实时流式返回;本接口采用异步轮询,需等待任务完成。

免责声明
生成结果由算法产出,仅供参考,不对生成内容的版权归属、与本体相似度及任何业务决策承担责任。接入方应确保传入图像与生成用途符合相关规范。

9. 错误码与排查指南

状态码 / ret_code 含义 排查办法
401 APPCODE 缺失或无效 检查 Authorization 请求头格式与 APPCODE 取值
400 参数错误 核对 style_typepet_imageaspect_ratio 的取值与格式
403 限流或配额不足 降低请求频率,确认账户资源余量
404 任务不存在 核对 task_id 是否正确、是否已超过留存期限
500 服务内部错误 稍后重试;持续出现以控制台说明为准
图片为空 / 解析超时 原图无法解析 更换清晰、正脸、无遮挡的原图后重试

图6:参数与错误码速查

10. 常见问题 FAQ

Q1:接口支持哪些宠物?
当前面向猫狗宠物。其他物种的换装效果不在支持范围内。

Q2:原图有什么要求?
建议提供清晰、正脸或半身、无遮挡的照片,支持公网 URL 与 Base64 编码两种传入方式。

Q3:怎么拿到生成的写真?
先调用创建接口拿到 task_id,再调用查询接口轮询,待 task_statusdone 时从 flow_result.output.image_url 取回图片地址。

Q4:宽高比怎么选?
按使用版式选择:头像用 1:1,朋友圈用 3:4,海报用 16:9,横版内容用 4:3 或 9:16。

Q5:一次能出几张?
单次请求生成一张写真。批量场景请循环提交并控制频率,避免限流。

Q6:返回的图片地址有效期?
以返回 URL 的有效期为准,建议及时下载保存到自有存储。

11. 内容小结

宠物写真(猫狗换装)接口以「创建任务 + 轮询查询」的异步模式工作:创建接口提交风格、宽高比与原图并返回 task_id,查询接口携带 task_id 轮询至完成并取回写真图片地址。接入时注意原图质量、请求频率与配额,并以控制台实时配置核对频率、配额与返回字段。生成结果由算法产出,仅供参考,接入方应自行确保图像授权与用途合规。

相关文章
|
21天前
|
JSON API 数据安全/隐私保护
免费外汇汇率查询接口推荐:官方稳定方案与开源可用清单
本文实测推荐4个免费外汇汇率接口:Frankfurter(ECB数据,免Key、支持1999年起历史)、fawazahmed0(200+币种含加密货币、无速率限制)、open.er-api(160+币种、一行URL获取)、万维易源(官方自营,含K线/转换等多接入点,需appKey)。均经真实连通验证,适配跨境电商、旅行记账与金融学习场景。
322 1
免费外汇汇率查询接口推荐:官方稳定方案与开源可用清单
|
1月前
|
JSON 自然语言处理 小程序
快递单号查询接口 免费快递查询API接口教程
本教程详解全球快递物流查询API实操:支持1500+快递公司,提供单号查询、轨迹跟踪、时效预测、批量订阅等功能,具备自动识别、多语言示例、秒级响应、灵活计费(含免费试用)及私有化部署能力,适用于电商、ERP、小程序等多场景,5步即可快速接入。
743 2
快递单号查询接口 免费快递查询API接口教程
|
20天前
|
JSON 自然语言处理 API
药品信息查询 API 接口,快速获取药品基础数据
本文系基于阿里云云市场商品页(cmapi00043217)公开数据整理的技术文档,客观介绍全品类药品信息查询API:覆盖近10万种中西药/OTC/处方药,支持多维度检索与30+结构化字段返回,毫秒级响应、100% SLA,提供免费试用及多语言接入示例。
406 0
药品信息查询 API 接口,快速获取药品基础数据
|
1月前
|
JSON 供应链 小程序
商品条形码api-国内条码信息查询-食品条码查询接口
条码查询API是面向全行业的标准化接口服务,支持13/14位国标条码(如69开头),秒级返回商品名称、品牌、规格、厂家、图片等结构化数据,覆盖食品、日化、药品等2000万+条目,提供免费试用、多语言示例、在线调试及私有化部署,广泛适用于电商建档、零售收银、医药合规与ERP集成等场景。
525 0
商品条形码api-国内条码信息查询-食品条码查询接口
|
6月前
|
弹性计算 人工智能 安全
2026年阿里云服务器开年焕新活动解读:2核4G9.9/月起,u2i实例年付3折,9代云服务器年付6.4折
2026年阿里云开年焕新,推出限时特惠活动,包括轻量应用服务器和通用算力型u2i实例等多种选择,低至9.9元起。活动涵盖百万开发者的共同选择、初创企业的高性价比方案及企业用户的专业配置,满足不同场景需求。此外,还有精选云产品组合购、AI助理搭建、以及强大的主机与数据安全防护服务。每日限量秒杀活动提供更高配置的轻量应用服务器,用户可领取优惠券享受额外减免,上云之路更省心、安心。
991 3
|
20天前
|
JSON 自然语言处理 物联网
免费经纬度天气查询接口推荐:含全球覆盖与国内方案
本文整理了2026年仍可用的免费经纬度天气查询接口,涵盖万维易源、Open-Meteo、OpenWeatherMap等6个方案。支持全球覆盖、无需Key或免费注册,适用于出行、IoT、海外应用等场景,并附参数对比与实战代码。
273 0
|
20天前
|
JSON 自然语言处理 物联网
免费经纬度天气查询接口推荐:含全球覆盖与国内方案
本文整理了2026年仍可用的免费全球经纬度天气API清单,涵盖万维易源、Open-Meteo、OpenWeatherMap等6个接口,对比其覆盖范围、Key需求、返回格式与限制,并提供选型建议与实战代码。所有结论均经实测验证。
379 0
|
21天前
|
XML JSON 人工智能
免费 IP 查询接口推荐:含国内精准到县区方案
本文实测2026-08-11仍可用的IP归属地查询接口。推荐4个真实可用方案:万维易源(国内精准至县区+MCP支持)、ip-api(零密钥/海外友好)、ipinfo(1000次/天)、ipwho.is(字段最全)。附调用示例、精度对比与场景选型建议。
482 0
|
1月前
|
存储 人工智能 JSON
保姆级实操|Qwen 本地部署搭配 ComfyUI 制作 AI 漫剧,零基础就能落地,零成本无限生成,角色不崩脸
这是一套2026年全网领先的本地化AI漫剧工业化流水线:离线免费、零成本、8G显存即可运行;采用Qwen+ComfyUI双引擎,实现剧本生成→分镜→绘图→动态成片全自动闭环,彻底解决角色崩坏、隐私泄露、算力付费等痛点,适配小说推文、短剧量产与AI副业。(239字)
|
2月前
|
数据采集 存储 人工智能
【洛神公开课】第5期:AI网络白皮书-01数据采集篇
AI训练常卡在“数据没到位”——PB级语料散落多源,搬运慢则每小时损失数十万元。本文详解阿里云AI数据采集网络:从高速专线、多云互联到OSS/CPFS分层存储,再到eRDMA直通GPU,构建稳定、高效、低成本的数据输送起跑线。(239字)
268 1