# 智能PPT生成(新版)

有奖调研 (opens new window)诚邀您参与我们星火智能PPT生成服务有奖调研,参与问卷即有机会获取超大服务包

# 接口调用流程图

常见问题:
1、新版和旧版相比有什么变化? 新版提供了200+主题模板,并且联网搜索、ai配图等功能
2、新版的模板全部免费吗? 新版的200+主题模板全部免费使用,不再额外扣量;更多新颖实用的模板正在陆续上架
3、新版和旧版的接口可以混用吗? 新版的接口地址与旧版不同,虽然两者的调用流程相似,但新版接口和旧版接口不能混用
4、如何查看旧版接口文档地址? 联系上方技术支持,获取旧版接口文档,注意:旧版接口已不再维护

# 接口调用示例

部分开发语言Demo如下,其他开发语言请参照文档进行开发,欢迎大家到讯飞开放平台社区 (opens new window)交流集成经验。

智能PPT生成(新版)Demo Java语言 (opens new window)
智能PPT生成(新版)Demo Python语言 (opens new window)

# 接口与鉴权

# 接口域名

zwapi.xfyun.cn

# 获取签名

在HTTP请求头 header 中设置参数:appId, timestamp, signature

String appId = "应用ID";
String secret = "应用的秘钥";
long timestamp = System.currentTimeMillis()/1000;
String signature = ApiAuthAlgorithm.getSignature(appId, secret, timestamp);

request.setHeader("appId",appId);
request.setHeader("timestamp",str(timestamp));
request.setHeader("signature",signature);
字段名 类型 描述 必须 默认值
appId String 应用ID Y
timestamp String 时间戳,单位: s,与服务端时间相差五分钟之内 Y
signature String 签名 Y

# DEMO

ApiAuthAlgorithm.class 鉴权类

public class ApiAuthAlgorithm {

    private static final char[] MD5_TABLE = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

    /**
     * 获取签名
     *
     * @param appId    签名的key
     * @param secret 签名秘钥
     * @return 返回签名
     */
    public String getSignature(String appId, String secret, long ts) {
        try {
            String auth = md5(appId + ts);
            return hmacSHA1Encrypt(auth, secret);
        } catch (SignatureException e) {
            return null;
        }
    }

    /**
     * sha1加密
     *
     * @param encryptText 加密文本
     * @param encryptKey  加密键
     * @return 加密
     */
    private String hmacSHA1Encrypt(String encryptText, String encryptKey) throws SignatureException {
        byte[] rawHmac;
        try {
            byte[] data = encryptKey.getBytes(StandardCharsets.UTF_8);
            SecretKeySpec secretKey = new SecretKeySpec(data, "HmacSHA1");
            Mac mac = Mac.getInstance("HmacSHA1");
            mac.init(secretKey);
            byte[] text = encryptText.getBytes(StandardCharsets.UTF_8);
            rawHmac = mac.doFinal(text);
        } catch (InvalidKeyException e) {
            throw new SignatureException("InvalidKeyException:" + e.getMessage());
        } catch (NoSuchAlgorithmException e) {
            throw new SignatureException("NoSuchAlgorithmException:" + e.getMessage());
        }
        return new String(Base64.encodeBase64(rawHmac));
    }

    private String md5(String cipherText) {
        try {
            byte[] data = cipherText.getBytes();
            // 信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。
            MessageDigest mdInst = MessageDigest.getInstance("MD5");

            // MessageDigest对象通过使用 update方法处理数据, 使用指定的byte数组更新摘要
            mdInst.update(data);

            // 摘要更新之后,通过调用digest()执行哈希计算,获得密文
            byte[] md = mdInst.digest();

            // 把密文转换成十六进制的字符串形式
            int j = md.length;
            char[] str = new char[j * 2];
            int k = 0;
            for (byte byte0 : md) { // i = 0
                str[k++] = MD5_TABLE[byte0 >>> 4 & 0xf]; // 5
                str[k++] = MD5_TABLE[byte0 & 0xf]; // F
            }
            // 返回经过加密后的字符串
            return new String(str);
        } catch (Exception e) {
            return null;
        }
    }
}

# 错误码

错误码 描述 处理方式
20002 参数错误 确认接口入参
20005 大纲生成失败 查看是否存在敏感词汇,尝试重新生成
20006 PPT生成失败 PPT导出错误,请重新生成或联系技术人员
20007 鉴权错误 检查鉴权信息
9999 系统异常 确认鉴权信息、请求方式、请求参数是否有误,或联系技术人员排查相关日志

# 接口列表

# 1、PPT主题列表查询

1.1 接口地址:

https://zwapi.xfyun.cn/api/ppt/v2/template/list

1.2 请求示例:

{
    "style": "简约",
    "color": "红色",
    "industry": "教育培训",
    "pageNum": 1,
    "pageSize": 10
}

1.3 请求查询参数:

POST,application/json

注意:请求体不能为空,至少有一项。

名称 类型 描述 必须 默认值
style String 风格类型: "简约","卡通","商务","创意","国风","清新","扁平","插画","节日" N
color String 颜色类型: "蓝色","绿色","红色","紫色","黑色","灰色","黄色","粉色","橙色" N
industry String 行业类型: "科技互联网","教育培训","政务","学院","电子商务","金融战略","法律","医疗健康","文旅体育","艺术广告","人力资源","游戏娱乐" N
pageNum Integer 页数 N 1
pageSize Integer 每页数量 N 10

1.4 响应参数:

{
    "flag": true,
    "code": 0,
    "desc": "成功",
    "count": null,
    "data": {
        "total": 110,
        "records": [
            {
                "templateIndexId": "202407171E27C9D",
                "pageCount": 5,
                "type": "system_template",
                "color": "蓝色",
                "industry": "教育培训",
                "style": "卡通",
                "detailImage": "{\"titleCoverImageLarge\":\"https://sgw-dx.xf-yun.com/api/v1/sparkdesk/19052329831_W7Ct1g1723193798025-04123504173892696.jpeg?authorization=c2ltcGxlLWp3dCBhaz1zcGFya2Rlc2s4MDAwMDAwMDAwMDE7ZXhwPTMyOTk5OTM3OTk7YWxnbz1obWFjLXNoYTI1NjtzaWc9TDFIc01LbjFuNnNhSlZLZ21MK0VNdXhnSTBkdzBzM0VnbjdpL290dWd2VT0=&x_location=7YfmxI7B7uKO7jlRxIftd6Mbdo==\",\"titleCoverImage\":\"https://sgw-dx.xf-yun.com/api/v1/sparkdesk/19052329831_WAl06h1723193799949-04329013386342242.jpeg?authorization=c2ltcGxlLWp3dCBhaz1zcGFya2Rlc2s4MDAwMDAwMDAwMDE7ZXhwPTMyOTk5OTM4MDA7YWxnbz1obWFjLXNoYTI1NjtzaWc9YTFSbVJGaWpqQ3lYendNVzhHZVdvVXFQWStxNVNzN0ppck9lczZnMU00dz0=&x_location=7YfmxI7B7uKO7jlRxIftd6Mbdo==\",\"catalogueCoverImage\":\"https://sgw-dx.xf-yun.com/api/v1/sparkdesk/19052329831_AA2WnD1723193801664-05558363837592131.jpeg?authorization=c2ltcGxlLWp3dCBhaz1zcGFya2Rlc2s4MDAwMDAwMDAwMDE7ZXhwPTMyOTk5OTM4MDE7YWxnbz1obWFjLXNoYTI1NjtzaWc9Ymw0UVlick9jTjVVU1hkMHU2QXFjSUZTM2JtNmVWUk9FLytkc2NWU0JjUT0=&x_location=7YfmxI7B7uKO7jlRxIftd6Mbdo==\",\"chapterCoverImage\":\"https://sgw-dx.xf-yun.com/api/v1/sparkdesk/19052329831_5Vs2cK1723193803147-042723137781772724.jpeg?authorization=c2ltcGxlLWp3dCBhaz1zcGFya2Rlc2s4MDAwMDAwMDAwMDE7ZXhwPTMyOTk5OTM4MDM7YWxnbz1obWFjLXNoYTI1NjtzaWc9RmxFQTk5RWY3RElSUkEwMWQ2QUFmTi9aTFR6YVNKeU55MVJ5NUc3T05QWT0=&x_location=7YfmxI7B7uKO7jlRxIftd6Mbdo==\",\"contentCoverImage\":\"https://sgw-dx.xf-yun.com/api/v1/sparkdesk/19052329831_FVPl8y1723193804494-07550240915105764.jpeg?authorization=c2ltcGxlLWp3dCBhaz1zcGFya2Rlc2s4MDAwMDAwMDAwMDE7ZXhwPTMyOTk5OTM4MDQ7YWxnbz1obWFjLXNoYTI1NjtzaWc9cTJJeE5sYTdaTk52VlBnRTAvbjQrZDRBeWptUDdERStxc3BvRWorQTZRZz0=&x_location=7YfmxI7B7uKO7jlRxIftd6Mbdo==\",\"endCoverImage\":\"https://sgw-dx.xf-yun.com/api/v1/sparkdesk/19052329831_DV5MCg1723193805753-07957067972264273.jpeg?authorization=c2ltcGxlLWp3dCBhaz1zcGFya2Rlc2s4MDAwMDAwMDAwMDE7ZXhwPTMyOTk5OTM4MDY7YWxnbz1obWFjLXNoYTI1NjtzaWc9RlIraDdTMFJkUVhoc1BkMCs4dldNSWRGNkNZdGlFZ3V6TlZlTkJGK1NLMD0=&x_location=7YfmxI7B7uKO7jlRxIftd6Mbdo==\"}"
            },
			...
			 ],
        "pageNum": 1
    }
}

1.5 响应描述

响应字段 类型 描述
flag Boolean 响应标识
code Integer 错误码
desc String 错误详情
count Integer 不用关注,预留
data.total Long PPT主题列表总数
data.records array PPT主题列表集合
data.records[]. templateIndexId String 供用户检索模板的ID
data.records[]. pageCount Integer 总页数
data.records[]. type String 类型
data.records[]. color String 颜色类型
data.records[]. industry String 行业类型
data.records[]. style String 风格类型
data.records[]. detailImage String 详细图
data.records[]. payType String 模板支付方式,注意:所有模板均已免费使用

# 2、PPT生成(直接根据用户输入要求,获得最终PPT)

2.1 接口描述:

基于用户提示、文档等相关内容生成PPT,字数不得超过8000字,文件限制10M。

2.2 接口地址:

https://zwapi.xfyun.cn/api/ppt/v2/create

2.3 请求查询参数:

POST,multipart/form-data
名称 类型 描述 必须 默认值
query String 用户生成PPT要求(最多8000字;query、file、fileUrl必填其一)
注意:query不能为空字符串、仅包含空格的字符串
N
file MultipartFile 上传文件 (file、fileUrl、query必填其一,如果传file或者fileUrl,fileName必填) N
fileUrl String 文件地址(file、fileUrl、query必填其一,如果传file或者fileUrl,fileName必填) N
fileName String 文件名(带文件名后缀;如果传file或者fileUrl,fileName必填) N
templateId String 直接供用户检索模板的ID,从PPT主题列表查询中获取 N
businessId String 业务ID(非必传)- 业务方自行决定是否使用 N
author String PPT作者名:用户自行选择是否设置作者名 N 智文
isCardNote Boolean 是否生成PPT演讲备注 N false
search Boolean 是否联网搜索 N false
language String 语种 N cn
isFigure Boolean 是否自动配图 N false
aiImage String ai配图类型: normal、advanced (isFigure为true的话生效); normal-普通配图,20%正文配图;advanced-高级配图,50%正文配图 N

2.4 可选参数列表:

  • language:

    • cn:中文(简体)
    • en:英语
    • ja:日语
    • ru:俄语
    • ko:韩语
    • de:德语
    • fr:法语
    • pt:葡萄牙语
    • es:西班牙语
    • it:意大利语
    • th:泰语

2.5 请求响应:

{
    "flag": true,
    "code": 0,
    "desc": "成功",
    "count": null,
    "data": {
        "sid": "7416b894bdd54ccc95bab7400113989e",
        "coverImgSrc": "https://bjcdn.openstorage.cn/xinghuo-privatedata/zhiwen/2024-11-07/3d19478b-cac2-47c2-a238-ae25b9d4b900/81b87056834d4a1fb923dcf03bea4918.png",
        "title": "合肥天气趋势分析",
        "subTitle": "探索气候变化与城市生活影响",
        "outline": null
    }
}

2.6 响应描述

响应字段 类型 描述
flag Boolean 响应标识
code Integer 错误码
desc String 错误详情
count Integer 不用关注,预留
data.sid string 请求唯一id
data.CoverImgSrc string PPT封面图链接
data.title string PPT主标题
data.subTitle string PPT副标题
data.outline string PPT大纲

# 3、大纲生成

3.1 接口地址:

https://zwapi.xfyun.cn/api/ppt/v2/createOutline

3.2 请求参数查询

POST,multipart/form-data
名称 类型 描述 必须 默认值
query String 用户生成PPT要求(最多8000字)
注意:query不能为空字符串、仅包含空格的字符串
Y
businessId String 业务ID(非必传)- 业务方自行决定是否使用 N
language String 语种 N cn
search Boolean 是否联网搜索 N false

3.3 请求响应

{
    "flag": true,
    "code": 0,
    "desc": "成功",
    "count": null,
    "data": {
        "sid": "a88306c606c746178c2816b996c45125",
        "outline": {
            "title": "秋分时节的农业管理策略",
            "subTitle": "提升农作物产量的关键措施",
            "chapters": [
                {
                    "chapterTitle": "秋分简介",
                    "chapterContents": [
                        {
                            "chapterTitle": "定义与时间"
                        },
                        {
                            "chapterTitle": "历史背景"
                        }
                    ]
                },
                {
                    "chapterTitle": "秋分的天文意义",
                    "chapterContents": [
                        {
                            "chapterTitle": "昼夜平分"
                        },
                        {
                            "chapterTitle": "太阳直射点变化"
                        }
                    ]
                }
            ]
        }
    }
}

3.4 响应描述

响应字段 类型 描述
flag Boolean 响应标识
code Integer 错误码
desc String 错误详情
count Integer 不用关注,预留
data.sid string 请求大纲唯一id,后续通过大纲生成ppt可能需要
data.outline object 大纲数据
data.outline.title string PPT主标题
data.outline.subTitle string PPT副标题
data.outline.chapters[].chapterTitle string 章节、子章节标题名称
data.outline.chapters[].chapterContents[] array 二级大纲内容

3.5 大纲结构体说明(data.outline)

public class Outline {

    // 主标题
    private String title;

    // 副标题
    private String subTitle;

    /**
     * 文档的章节列表。
     */
    private List<Outline.Chapter> chapters;

    public static class Chapter {
        // 章节、子章节标题名称
        String chapterTitle;

        // 二级大纲chapterContents为空
        List<Outline.Chapter> chapterContents = null;
    }
}

# 4、自定义大纲生成

4.1 接口描述:

基于用户提示、文档等相关内容生成PPT大纲。
query参数不得超过8000字,上传文件支持pdf(不支持扫描件)、doc、docx、txt、md格式的文件,注意:txt格式限制100万字以内,其他文件限制10M。

4.2 接口地址:

https://zwapi.xfyun.cn/api/ppt/v2/createOutlineByDoc

4.3 请求查询参数:

POST,multipart/form-data
名称 类型 描述 必须 默认值
query String 用户生成PPT要求(最多8000字)
注意:query不能为空字符串、仅包含空格的字符串
N
file MultipartFile 上传文件 (file、fileUrl必填其一) N
fileUrl String 文件地址(file、fileUrl必填其一) N
fileName String 文件名(带文件名后缀;fileName必填) Y
businessId String 业务ID(非必传)- 业务方自行决定是否使用 N
language String 语种 N cn
search Boolean 是否联网搜索 N false

4.4请求响应与说明

见3.3、3.4小节说明

# 5、通过大纲生成PPT

5.1 接口地址:

https://zwapi.xfyun.cn/api/ppt/v2/createPptByOutline

5.2 请求示例:

{
    "outline": {
        "title": "烧烤制作方法",
        "subTitle": "从食材准备到成品展示",
        "chapters": [
            {
                "chapterTitle": "烧烤概述",
                "chapterContents": [
                    {
                        "chapterTitle": "烧烤定义与起源与发展",
                        "chapterContents": null
                    }
                ]
            }
        ]
    },
    "language": "cn",
    "isCardNote": true,
    "aiImage": "advanced",
    "search":true,
    "isFigure":true,
    "author":"测试",
    "query":"烧烤"
}

5.3 请求查询参数:

POST,application/json
名称 类型 描述 必须 默认值
query String 用户生成PPT要求(最多8000字)
注意:query不能为空字符串、仅包含空格的字符串
Y
outlineSid String 已生成大纲后,响应返回的请求大纲唯一id (见 3.4 小节返回字段data.sid) N
outline JSONObject 大纲内容(不得超过20个一级大纲--outline.chapters[].chapterTitle,见 3.4 小节返回字段data.outline) Y
templateId String 直接供用户检索模板的ID,从PPT主题列表查询中获取;见 1.5 小节返回字段templateIndexId;为空的话,从free模板中随机取一个 N
businessId String 业务ID(非必传)- 业务方自行决定是否使用 N
author String PPT作者名:用户自行选择是否设置作者名 N 讯飞智文
isCardNote Boolean 是否生成PPT演讲备注 N false
search Boolean 是否联网搜索 N false
language String 语种(保证传入大纲语种与输入PPT语种一致) N cn
fileUrl String 文件地址 N
fileName String 文件名(带文件名后缀) ,传fileUrl的话必填 N
isFigure Boolean 是否自动配图 N false
aiImage String ai配图类型: normal、advanced (isFigure为true的话生效); normal-普通配图,20%正文配图;advanced-高级配图,50%正文配图 N

5.4 请求响应与说明

见2.5、2.6小节说明

# 6、PPT进度查询

6.1 接口地址:

https://zwapi.xfyun.cn/api/ppt/v2/progress?sid={}

6.2 请求查询参数:

注:该接口设置限流,三秒访问一次

GET
名称 类型 描述 必须
sid String 请求唯一ID Y
{
    "flag": true,
    "code": 0,
    "desc": "成功",
    "count": null,
    "data": {
        "pptStatus": "done",
        "aiImageStatus": "done",
        "cardNoteStatus": "done",
        "pptUrl": "https://bjcdn.openstorage.cn/xinghuo-privatedata/zhiwen/2024-11-07/7c8fde0c-2d3e-4a1d-a6bb-b1a5688f10c0/9b1c22980ddf478c9557eedbc51a4d2d.pptx",
        "errMsg": null,
        "totalPages": 21,
        "donePages": 21
    }
}

6.3 响应描述

响应字段 类型 描述
flag Boolean 响应标识
code Integer 错误码
desc String 错误详情
count Integer 不用关注,预留
data.pptStatus String PPT构建状态:building(构建中),done(已完成),build_failed(生成失败)
data.aiImageStatus String ai配图状态:building(构建中),done(已完成)
data.cardNoteStatus String 演讲备注状态:building(构建中),done(已完成)
data.pptUrl String 生成PPT的地址
data.errMsg String 生成PPT的失败信息
data.totalPages Integer 生成PPT的总页数
data.donePages Integer 生成PPT的完成页数 (ai配图和演讲备注为异步任务,ppt页数完成,不代表配图和演讲备注也完成)

# 扣量说明

  • 基于query直接生成ppt:扣除10点量,1个并发,若需要增加备注,则增加5点量
  • 基于query生成大纲:扣除2点量1个并发
  • 基于sid,获取大纲(可修改)生成ppt:扣除8点量1个并发
  • 基于大纲生成ppt:8点量,若需要生成备注:额外扣除5点量
  • PPT自动配图:普通4点量,高级8点量
  • PPT需要生成演讲备注:5点量
  • PPT多语种翻译:仅生成大纲,扣1点量;大纲生成PPT,扣2点量;
  • 开启联网搜索:2点量
在线
咨询
建议
反馈
体验
中心