AB
AiBoss
Tutorials

Beautiful.ai

Tutorials

Beautiful.ai 快速上手:用结构化大纲通过 API 生成演示文稿

介绍如何调用 Beautiful.ai 的 /createPresentation 接口,把一份结构化大纲直接生成演示文稿:从获取 API 密钥、准备请求体、填写标题与幻灯片数组,到主题、图片来源、语言等可选参数,并给出一个可完整跑通的最小示例与常见错误码说明。

Beautiful.ai 提供了一套 HTTP API,其中 /createPresentation 接口可以把调用方准备好的结构化大纲直接转成一份演示文稿。它适合这样的场景:内容已经在别的系统里生成或整理好了(例如从文档、数据库、模板引擎里产出的章节与要点),需要批量、可重复地变成排版好的幻灯片,而不是在网页编辑器里一张张手工搭。本文按接口文档整理出一条从零到跑通的路径,重点讲清请求体里每个字段的作用、必填与可选的边界,以及一个最小可用的完整示例。如果你更习惯在网页端直接操作,可以先看站内的 Beautiful.ai 工具页了解产品形态,再回到本文处理接口调用。

准备工作

账号与权限

调用接口前需要有一个可用的 Beautiful.ai 账号,并且该账号具备创建演示文稿的权限。接口返回 403 表示身份验证通过但当前账号不被允许执行该操作,这通常与工作区权限或套餐能力有关,遇到时先确认账号在目标工作区里是否有创建权限。

API 密钥

接口使用 API 密钥鉴权,密钥放在请求头中随请求发送。文档中的示例按语言(Shell、Node、Ruby、PHP、Python)分别给出了请求头写法,核心是同一个鉴权头。密钥属于敏感凭据,不要写进前端代码或提交到代码仓库,放在服务端环境变量里读取。

接口地址与版本

接口的基础地址是 https://www.beautiful.ai/api/v1,创建演示文稿的路径为 /createPresentation,请求方法为 POST。当前文档标注的版本为 v1.0。

先摸清可用的资源 ID

请求体里的 folderId、themeId、workspaceId 都是可选字段,但一旦要指定,就必须填真实存在的 ID。这些 ID 不是猜出来的,而是通过配套的查询接口获得:

  • GET /getFolders:列出可用文件夹,返回的文件夹 ID 可直接用于 folderId。
  • GET /getThemes:列出可用主题,返回的主题 ID 可直接用于 themeId。
  • POST /listPresentations:列出当前可访问的演示文稿,可用于核对创建结果。
  • POST /getPresentation:加载一份已有演示文稿,用于检查生成后的实际内容。

建议在正式写创建逻辑之前,先用这几个接口把目标工作区里的文件夹与主题列一遍,把要用的 ID 记下来。这样后面调试创建请求时,就不会因为一个无效 ID 反复排查。

操作步骤

第一步:确定请求体结构

/createPresentation 的请求体是一个 JSON 对象,字段分为三类:定位类(工作区、文件夹)、样式类(主题、图片、语言)、内容类(标题与幻灯片数组)。逐项说明如下。

字段类型是否必填说明
titlestring必填演示文稿标题。
slides对象数组必填幻灯片内容,长度至少为 1,即不能为空数组。
workspaceIdstring可选显式指定目标工作区。
folderIdstring可选演示文稿要放入的文件夹,取值来自 /getFolders。
themeIdstring可选使用的主题,取值来自 /getThemes。
themeOptionsobject可选主题相关的细化选项,见下一节。
languagestring可选生成内容所使用的语言。
preserveExactTextboolean可选取 true 或 false,控制是否原样保留文本。

两个必填项里,slides 是最容易出错的地方:它必须是数组,且至少包含一个元素。传空数组会直接导致请求不合法。

第二步:配置主题选项

themeOptions 是一个对象,文档中列出的子字段包括:

  • imageSource:字符串枚举,允许的值为 ai、web、stock、none,用于决定幻灯片配图的来源。
  • imageStyle:字符串,用于指定配图风格。

其中 imageSource 的四个取值含义比较直观:ai 走 AI 生成,web 走网络图片,stock 走图库,none 表示不使用图片。如果内容本身以文字和图表为主,把 imageSource 设为 none 可以避免生成无关配图;如果希望每页都有视觉元素,再按需要选择前三种之一。注意这个字段是枚举,传了列表之外的值会被判为请求不合法。

第三步:组织幻灯片数组

slides 是一个对象数组,每个元素代表一页幻灯片。文档中该字段的类型标注为 slides * ADD object,即数组元素为对象,且至少一项。实际组织时,建议把每一页拆成「这一页要讲什么」的结构化描述,而不是把整段长文塞进一个字段——接口的定位就是从结构化大纲生成演示文稿,输入越结构化,输出越接近预期。

一个实用的做法是先在本地把大纲整理成数组,每个元素对应一个章节或一个论点,再整体序列化进请求体。这样既方便在代码里复用,也方便在出错时定位是哪一页的数据有问题。

第四步:发送请求

用 curl 发送请求的最小形态如下。把 YOUR_API_KEY 换成自己的密钥,请求体按上一步的结构填写:

curl -X POST 'https://www.beautiful.ai/api/v1/createPresentation' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -d '{
    "title": "季度业务回顾",
    "slides": [
      { "title": "本季度概览" },
      { "title": "关键指标" }
    ]
  }'

如果使用 Node、Python、Ruby 或 PHP,文档为每种语言都给出了对应的示例片段,逻辑一致:设置 JSON 内容类型、带上鉴权头、以 POST 提交请求体。选自己项目里已有的 HTTP 客户端即可,不必额外引入 SDK。

第五步:读取响应

接口返回 200 表示演示文稿创建成功。文档在响应区提供了 application/json 的 200 示例以及 400、401、403、500 的示例,可以在文档页的 Try It 面板里直接发起请求查看实际返回。创建成功后,可以用 POST /listPresentations 列出可访问的演示文稿来确认新文档已经出现,再用 POST /getPresentation 加载它检查内容。

一个完整示例

下面是一个从头到尾可跑通的最小流程:先查主题,再创建演示文稿,最后核对结果。示例中的 ID 均为占位,需要替换成自己账号下真实返回的值。

1. 查询可用主题

curl -X GET 'https://www.beautiful.ai/api/v1/getThemes' \
  -H 'Authorization: Bearer YOUR_API_KEY'

从返回结果里挑一个主题,记下它的 ID。

2. 查询可用文件夹

curl -X GET 'https://www.beautiful.ai/api/v1/getFolders' \
  -H 'Authorization: Bearer YOUR_API_KEY'

同样记下目标文件夹的 ID。如果不需要归档到特定文件夹,这一步可以跳过,创建时不传 folderId 即可。

3. 创建演示文稿

curl -X POST 'https://www.beautiful.ai/api/v1/createPresentation' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -d '{
    "title": "产品发布计划",
    "themeId": "THEME_ID_FROM_GETTHEMES",
    "folderId": "FOLDER_ID_FROM_GETFOLDERS",
    "language": "zh-CN",
    "preserveExactText": true,
    "themeOptions": {
      "imageSource": "stock",
      "imageStyle": "minimal"
    },
    "slides": [
      { "title": "背景与目标" },
      { "title": "目标用户与场景" },
      { "title": "功能范围" },
      { "title": "上线节奏" },
      { "title": "风险与应对" }
    ]
  }'

这个请求覆盖了所有可选字段的典型用法:指定主题、指定文件夹、指定语言、要求原样保留文本、指定配图来源与风格,并给出五页的大纲。实际使用时可以按需删减,只保留 title 与 slides 也能成功创建。

4. 核对结果

curl -X POST 'https://www.beautiful.ai/api/v1/listPresentations' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -d '{}'

在返回列表中找到刚创建的「产品发布计划」,拿到它的标识后,再用 POST /getPresentation 加载详情,逐页检查排版与文字是否符合预期。如果某些页面的文本被改写或截断,回头调整 preserveExactText 与大纲的粒度。

注意事项

错误码的含义

接口文档明确列出了五种响应状态,排查时按这个顺序对照即可:

  • 200:演示文稿创建成功。
  • 400:请求不合法。常见原因是缺少 title、slides 为空数组、imageSource 传了枚举之外的值,或 folderId、themeId 不是有效 ID。
  • 401:API 密钥缺失或无效。检查鉴权头是否带上、密钥是否过期。
  • 403:身份验证通过,但不允许执行该操作。检查账号在目标工作区中的权限。
  • 500:服务端内部错误。这类错误与请求内容无关,重试或稍后再试。

必填与可选的边界

只有 title 和 slides 是必填的,其余字段全部可选。这意味着一个只带标题和一页幻灯片的最小请求是合法的。反过来说,任何可选字段一旦出现,就必须符合类型与取值约束:slides 长度不得小于 1,imageSource 只能取 ai、web、stock、none,preserveExactText 只能是布尔值。

ID 必须来自查询接口

workspaceId、folderId、themeId 都不是自由填写的字符串。文件夹 ID 来自 /getFolders,主题 ID 来自 /getThemes。跨工作区复用 ID 往往会导致 400 或 403,切换工作区时记得重新查询。

相关接口的用途

除了本文重点讲的 /createPresentation,同一套 API 还提供几个相邻能力,按需组合使用:

  • /createPresentationFromTemplate:复制一份演示文稿模板并插值变量,适合已有固定版式的场景。配合 /getPresentationTemplateVariables 可以先查看模板里有哪些变量可填。
  • /generatePresentation:从一段提示词生成演示文稿,适合没有现成大纲、只有想法的情况。
  • /exportPresentation:导出演示文稿。
  • /listPresentationTemplates:列出可访问的演示文稿模板。

选择哪条路径取决于输入形态:有结构化大纲用 /createPresentation,有固定模板用 /createPresentationFromTemplate,只有一句话需求用 /generatePresentation。

以官方当前信息为准

接口的字段、枚举取值、可用主题与文件夹、套餐能力都可能随版本调整,本文所述以文档 v1.0 为准。正式接入前请核对官网当前的接口说明与账号套餐,价格与配额同样以官网当前信息为准。