# Presenton API异步生成

已真实生成两份本地请求草稿并校验事实；未提交Presenton API，未产生真实任务ID或模型输出。

1. 选定一套API文档
本页使用自托管v1异步任务思路，Cloud v3的认证和schema不同。先从自己版本的OpenAPI导出请求schema；素材中的beginners-request.json与volunteers-request.json是本地构造草稿，不冒充跨版本通用可用请求。
python3 verify.py

2. 按受众构造两份请求
分别读beginners与volunteers，生成3页和4页任务。核对60分钟、12台设备、4名志愿者没有因受众变化而改写；用request-builder.py把事实和提示写入本地请求草稿。
python3 request-builder.py

3. 对照schema再提交
自托管创建端点为POST /api/v1/ppt/presentation/generate/async，状态端点为GET /api/v1/ppt/presentation/status/{id}。工作流指南与旧v0.9.7-beta参考的认证示例分别出现Bearer和Basic；使用自己部署OpenAPI的完整Authorization值，不混用Cloud key。响应顶层id落盘后再轮询。
curl --fail-with-body --request POST "$PRESENTON_BASE_URL/api/v1/ppt/presentation/generate/async" --header "Authorization: $PRESENTON_AUTHORIZATION_HEADER" --header "Content-Type: application/json" --data-binary @beginners-request.json

4. 限制轮询与重试
使用poll-example.py轮询明确的自托管状态URL。终态completed保存产物数据，error保存实际错误并退出；pending继续等待。设置间隔与超时，请求可能已受理时不自动重新创建任务。认证从PRESENTON_AUTHORIZATION_HEADER读取完整值。
python3 poll-example.py --url "$PRESENTON_BASE_URL/api/v1/ppt/presentation/status/$TASK_ID" --success completed --failure error

5. 下载终态产物
仅在自己版本定义的成功终态出现时下载结果URL。下载路径和任务映射按受众分别保存；确认文件是PPTX而不是JSON错误页。


6. 验证两份演示的差异
新手版讲课程准备，志愿者版讲值班分工；保留不同页数和同一事实。用verify.py对实际文件检查ZIP结构，再逐页打开检查受众内容。
python3 verify.py --pptx beginners.pptx

7. 留存请求与恢复点
保存两份请求、状态日志和实际文件。素材里只有可离线运行的请求构造器及人工参考，不包含真实模型结果；未执行API时不要把草稿说成批量任务成功。


官方来源：https://docs.presenton.ai/api-reference/presentation/generate-a-presentation-asynchronously
