作品生成与导出
接入前提
获取调用 API 所需的 token 请参考 API 鉴权
内容生成完成后,通过作品接口创建可管理的 PPT,并异步导出 PPTX、PDF 或图片。作品 ID 和导出任务标识含义不同,需要分别保存。
作品生命周期
| 阶段 | 接口 | 说明 |
|---|---|---|
| 生成作品 | 作品生成 | 根据 taskId、模板等信息创建 PPT 作品 |
| 管理作品 | 作品列表 / 作品详情 / 作品重命名 / 作品删除 | 查询和维护已生成作品 |
| 导出作品 | 作品导出 / 作品导出结果 | 发起 PPT 导出并查询下载结果 |
作品导出是异步过程。作品导出 返回的是导出任务标识,不是最终文件地址;接入方需要继续调用 作品导出结果 获取下载链接。
最小闭环
| 顺序 | 目标 | 关键返回 |
|---|---|---|
| 1 | 调用作品生成 | user_design_id 或作品 ID |
| 2 | 发起作品导出 | 导出任务标识 |
| 3 | 查询作品导出结果 | PPTX、PDF、PNG 或 JPEG 下载地址 |
这条链路以导出结果接口返回可下载地址为结束。作品导出 返回的任务标识不能直接用于下载。
作品生成
接口行为
| 接口描述 | 此接口通过任务id,与用户选择或动态匹配的模板数据的模板id生成PPT画布数据并保存作品。 | ||
| 接口地址 | /api/design/v2/save | 请求方式 | POST |
| 权限校验 | 是 | 请求参数 | json |
请求参数
请求示例
ts
curl --location --request POST 'https://co.aippt.cn/api/design/v2/save' \
--header 'x-api-key: <apiKey>' \
--header 'x-channel: <channel>' \
--header 'x-token: <token>' \
--data-urlencode 'name=毕业季' \
--data-urlencode 'task_id=<taskId>' \
--data-urlencode 'template_id=<templateId>' \
--data-urlencode 'template_type=<templateType>' \
--data-urlencode 'layout_type=<layoutType>' \
--data-urlencode 'layout_task_id=<layoutTaskID>'响应内容
响应示例
ts
{
"code": 0,
"data": {
"id": 5634,
"name": "毕业季",
"cover_url": "https://aippt-domestic.aippt.com/aippt-api-server/personal/image/0/4/20231027163605yopnatz.jpeg",
"size": "960x540"
},
"msg": "ok"
}作品列表
接口行为
| 接口描述 | 此接口返回第三方用户作品列表 | ||
| 接口地址 | /api/design/list | 请求方式 | GET |
| 权限校验 | 是 | 请求参数 | json |
请求参数
请求示例
ts
curl --location 'https://co.aippt.cn/api/design/list?page=1&page_size=2&order=1' \
--header 'x-api-key: <apiKey>' \
--header 'x-channel: <channel>' \
--header 'x-token: <token>' \响应内容
响应示例
ts
{
"code": 0,
"data": {
"pagination": {
"total": 4,
"current_page": 1,
"page_size": 2
},
"list": [
{
"id": 16,
"user_id": 4,
"name": "实现财富自由的路径",
"cover_url": "https://aippt-domestic.aippt.com/aippt-api-server/personal/image/0/4/20231027163605yopnatz.jpeg",
"size": "960x540",
"canvas_url": "https://aippt-domestic.aippt.com/aippt-api-server/personal/other/0/4/20231027163606rsuzjsu.json",
"ai_data": "https://aippt-domestic.aippt.com/aippt-api-server/personal/other/0/4/20231027163607jqpzeag.json",
"storage_time": "2023-10-27 16:36:08",
"delete_time": "",
"auto_delete_time": 0,
"created_at": "2023-10-27 16:36:08",
"updated_at": "2023-10-27 16:36:08"
}
]
},
"msg": "ok"
}作品详情
接口行为
| 接口描述 | 此接口返回第三方用户作品详情 | ||
| 接口地址 | /api/design/info | 请求方式 | GET |
| 权限校验 | 是 | 请求参数 | json |
请求参数
请求示例
ts
curl --location 'https://co.aippt.cn/api/design/info?user_design_id=1' \
--header 'x-api-key: <apiKey>' \
--header 'x-channel: <channel>' \
--header 'x-token: <token>' \响应内容
响应示例
ts
{
"code": 0,
"data": {
"id": 1234,
"name": "个人年终总结",
"cover_url": "https://aippt-domestic.aippt.com/123.jpeg",
"task_id": 1234,
"created_at": "2024-09-27 19:42:43",
"storage_time": "2024-09-27 19:42:43",
"version": 1
},
"msg": "ok"
}作品导出
接口行为
| 接口描述 | 此接口会根据传入的参数生成一条导出任务并返回任务标识,需结合 导出结果 接口轮询返回结果。 | ||
| 接口地址 | /api/download/export/file | 请求方式 | POST |
| 权限校验 | 是 | 请求参数 | json |
请求参数
请求示例
ts
curl --location --request POST 'https://co.aippt.cn/api/download/export/file' \
--header 'x-api-key: <apiKey>' \
--header 'x-channel: <channel>' \
--header 'x-token: <token>' \
--data-urlencode 'edit=true' \
--data-urlencode 'files_to_zip=false' \
--data-urlencode 'format=ppt' \
--data-urlencode 'id=1'响应内容
响应示例
ts
{
"code": 0,
"data": "cdb8146b-746b-4006-bd40-19f597e85293", // 需结合 "作品导出结果" 进行下载
"msg": "操作成功"
}作品导出结果
接口行为
| 接口描述 | 此接口需要根据 作品导出 接口返回的任务标识轮询查询结果。 | ||
| 接口地址 | /api/download/export/file/result | 请求方式 | POST |
| 权限校验 | 是 | 请求参数 | json |
请求参数
请求示例
ts
curl --location --request POST 'https://co.aippt.cn/api/download/export/file/result' \
--header 'x-api-key: <apiKey>' \
--header 'x-channel: <channel>' \
--header 'x-token: <token>' \
--data-urlencode 'task_key=<taskKey>'响应内容
响应示例
ts
{
"code": 0,
"data": [
"https://aippt-domestic.aippt.com/node-server/aippt/2024-01-29/653680052115yf23h1.ppt?Expires=1706537538&OSSAccessKeyId=LTAI5tEC4LwH9eYcd5ANuTnS&Signature=u1sUfdTYQVLWWMq6bCzcP%2BE9IRo%3D&response-content-disposition=attachment%3Bfilename%2A%3DUTF-8%27%27%25E6%25AF%2595%25E4%25B8%259A%25E5%25AD%25A3.ppt"
],
"msg": "导出成功"
}导出结果处理
- 调用
作品导出后保存返回的导出任务标识。 - 使用导出任务标识调用
作品导出结果。 - 如果导出结果暂未生成,按业务节奏继续查询,避免高频轮询。
- 如果下载链接过期,重新发起导出或重新查询导出结果。
作品重命名
接口行为
| 接口描述 | 第三方用户修改作品名称 | ||
| 接口地址 | /api/design/save/name | 请求方式 | POST |
| 权限校验 | 是 | 请求参数 | json |
请求参数
请求示例
ts
curl --location --request POST 'https://co.aippt.cn/api/design/save/name' \
--header 'x-api-key: <apiKey>' \
--header 'x-channel: <channel>' \
--header 'x-token: <token>' \
--data-urlencode 'name=作品重命名' \
--data-urlencode 'user_design_id=<designId>'响应内容
响应示例
ts
{
"code": 0,
"data": {
"name": "重命名测试"
},
"msg": "ok"
}作品删除
接口行为
| 接口描述 | 第三方用户删除作品 | ||
| 接口地址 | /api/design/delete | 请求方式 | POST |
| 权限校验 | 是 | 请求参数 | json |
请求参数
请求示例
ts
curl --location --request POST 'https://co.aippt.cn/api/design/delete' \
--header 'x-api-key: <apiKey>' \
--header 'x-channel: <channel>' \
--header 'x-token: <token>' \
--data-urlencode 'user_design_id=<designId>'响应内容
响应示例
ts
{
"code": 0,
"data": [],
"msg": "ok"
}