ListenHubOpenAPI
API 参考

演示文稿

通过 API 生成带有 AI 画面和演讲稿的专业演示文稿,适用于会议汇报和商业演示。

演示文稿模式(Slides)生成专业的幻灯片风格内容,包含 AI 画面和演讲旁白,适用于会议演示、商业汇报和大会演讲。

说明
图片风格PPT 布局(网格、流程图、大数字展示)
首页演讲标题页
适用场景会议演示、商业汇报、大会演讲

如需导出 PPT 文件,请通过 ListenHub 平台操作——OpenAPI 暂不支持 PPT 导出。


创建演示文稿

POST /v1/storybook/episodes

创建一个演示文稿单集,自动生成 AI 幻灯片画面与演讲旁白。

sources 最多 1 项,speakers 最多 1 项。

curl -X POST "https://api.marswave.ai/openapi/v1/storybook/episodes" \
  -H "Authorization: Bearer $LISTENHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "sources": [
      {"type": "text", "content": "第三季度营收同比增长45%,亚太市场扩张成为主要增长动力..."}
    ],
    "speakers": [
      {"speakerId": "CN-Man-Beijing-V2"}
    ],
    "language": "zh",
    "mode": "slides"
  }'
const response = await fetch('https://api.marswave.ai/openapi/v1/storybook/episodes', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.LISTENHUB_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    sources: [{ type: 'text', content: '第三季度营收同比增长45%,亚太市场扩张成为主要增长动力...' }],
    speakers: [{ speakerId: 'CN-Man-Beijing-V2' }],
    language: 'zh',
    mode: 'slides',
  }),
});
const data = await response.json();
console.log(data);
import os, requests

response = requests.post(
    'https://api.marswave.ai/openapi/v1/storybook/episodes',
    headers={'Authorization': f'Bearer {os.environ["LISTENHUB_API_KEY"]}'},
    json={
        'sources': [{'type': 'text', 'content': '第三季度营收同比增长45%,亚太市场扩张成为主要增长动力...'}],
        'speakers': [{'speakerId': 'CN-Man-Beijing-V2'}],
        'language': 'zh',
        'mode': 'slides',
    }
)
print(response.json())

响应

{
  "code": 0,
  "message": "",
  "data": {
    "episodeId": "{episodeId}"
  }
}

请求参数

参数类型必填说明
sourcesarray(1)内容来源,最多 1 个
sources[].typestring"text""url"
sources[].contentstring文本内容或 URL
sources[].uristring来源 URI
sources[].metadataobject来源元数据
speakersarray(1)语音配置,最多 1 个
speakers[].speakerIdstring说话人 ID(参见音色列表
languagestring语言代码(如 "zh""en"
modestring必须为 "slides"
stylestring视觉风格 ID

查询单集状态

GET /v1/storybook/episodes/{episodeId}

用返回的 episodeId 轮询查询,直到 processStatussuccess

curl "https://api.marswave.ai/openapi/v1/storybook/episodes/{episodeId}" \
  -H "Authorization: Bearer $LISTENHUB_API_KEY"
const response = await fetch(
  `https://api.marswave.ai/openapi/v1/storybook/episodes/${episodeId}`,
  { headers: { 'Authorization': `Bearer ${process.env.LISTENHUB_API_KEY}` } }
);
const data = await response.json();
console.log('状态:', data.data.processStatus);
import os, requests

response = requests.get(
    f'https://api.marswave.ai/openapi/v1/storybook/episodes/{episode_id}',
    headers={'Authorization': f'Bearer {os.environ["LISTENHUB_API_KEY"]}'}
)
data = response.json()
print('状态:', data['data']['processStatus'])

响应processStatussuccess 时):

{
  "code": 0,
  "message": "",
  "data": {
    "episodeId": "{episodeId}",
    "createdAt": 1700000000,
    "mode": "slides",
    "processStatus": "success",
    "credits": 30,
    "title": "Q3 业务回顾",
    "cover": "https://assets.listenhub.ai/covers/{episodeId}.png",
    "audioUrl": "https://assets.listenhub.ai/storybook/{episodeId}.mp3",
    "audioDuration": 180,
    "videoUrl": "",
    "videoStatus": "not_generated",
    "pages": [
      {
        "text": "欢迎来到第三季度业务回顾。本季度取得了显著增长...",
        "pageNumber": 1,
        "imageUrl": "https://assets.listenhub.ai/pages/{episodeId}-1.png",
        "audioTimestamp": 0
      },
      {
        "text": "营收同比增长 45%,主要受亚太市场扩张驱动...",
        "pageNumber": 2,
        "imageUrl": "https://assets.listenhub.ai/pages/{episodeId}-2.png",
        "audioTimestamp": 25.3
      }
    ]
  }
}

幻灯片 + 演讲稿素材pages[] 中的 imageUrl(幻灯片画面)和 text(演讲旁白,每页约 80–100 词)可作为独立素材下载,用于自行组合演示文稿或二次创作。

processStatus 状态

含义
pending处理中
success生成完成
fail生成失败(查看 failCode

videoStatus 状态

含义
not_generated未触发视频生成
pending视频生成中
success视频就绪(videoUrl 可用)
fail视频生成失败

生成通常需要 2–5 分钟。推荐轮询策略:等待 60 秒后开始,每 10 秒查询一次。


生成视频

POST /v1/storybook/episodes/{episodeId}/video

为已完成的单集触发视频生成,processStatus 必须为 success

必须等待 processStatussuccess 后才能调用此接口。

curl -X POST "https://api.marswave.ai/openapi/v1/storybook/episodes/{episodeId}/video" \
  -H "Authorization: Bearer $LISTENHUB_API_KEY"
const response = await fetch(
  `https://api.marswave.ai/openapi/v1/storybook/episodes/${episodeId}/video`,
  {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${process.env.LISTENHUB_API_KEY}` },
  }
);
console.log(await response.json());
import os, requests

response = requests.post(
    f'https://api.marswave.ai/openapi/v1/storybook/episodes/{episode_id}/video',
    headers={'Authorization': f'Bearer {os.environ["LISTENHUB_API_KEY"]}'}
)
print(response.json())

响应

{
  "code": 0,
  "message": "",
  "data": {
    "success": true
  }
}

触发后,继续轮询 GET /v1/storybook/episodes/{episodeId},等待 videoStatussuccess


完整工作流

创建演示文稿

调用 POST /v1/storybook/episodes,设置 mode: "slides",传入内容来源和音色,保存返回的 episodeId

轮询等待完成

轮询 GET /v1/storybook/episodes/{episodeId}(初始等待 60 秒,之后每 10 秒查询),直到 processStatussuccess

使用幻灯片素材(可选)

pages[] 数组包含幻灯片画面(imageUrl)和演讲旁白(text),可直接下载使用,无需生成视频。

生成视频

调用 POST /v1/storybook/episodes/{episodeId}/video,将幻灯片合成为带旁白的视频。

轮询视频状态

继续轮询直到 videoStatussuccessvideoUrl 即为下载链接。

On this page