


AI 簡報 API 比較與程式碼範例:2Slides vs SlideSpeak vs Canva(2026)
寫給已經知道需要 API 的開發者。 本文是帶程式碼的橫向比較。如果你還在判斷 什麼是 AI 簡報 API、自己是否需要,請先看 開發者完整指南 — 涵蓋定義、價格、MCP 與架構模式。本頁接著那裡繼續。
如果你需要以程式方式產生簡報 — 用於 SaaS 整合、自動化報表,或 AI 代理工作流程 — 那你就需要一個簡報 API。市面上提供 API 的 AI 簡報工具出乎意料地少。下面是比較與程式碼。
全景(2026 年 5 月核實)
| 工具 | 提供 API | API 類型 | 文件 | MCP 支援 | 原生 PPTX |
|---|---|---|---|---|---|
| 2Slides | ✅ 完整 REST API | REST + JSON-RPC MCP | ✅ 完善 | ✅ | ✅ |
| SlideSpeak | ✅ 受限 | REST + MCP | 部分 | ✅ | 部分 |
| Canva | ✅(Canva Connect) | REST | ✅ | ❌ | 透過範本 |
| Gamma | ❌ | — | — | ❌ | ❌ |
| Beautiful.ai | ❌ | — | — | ❌ | ❌ |
| SlidesAI | ❌(僅外掛) | — | — | ❌ | 僅 Google Slides |
| Presenton | ✅ 開源自架 | REST | ✅ | ❌ | ✅ |
**關鍵結論:**作為託管服務的 AI 簡報生成,2Slides 是最完整的選項。SlideSpeak 提供部分 API。Canva API 屬於另一類目標(範本填充,不是 AI 生成)。其餘都沒有公開 API。如果一定要自架,Presenton(Apache 2.0)是唯一現實可行的選擇。
2Slides API — 功能完整
端點
| 端點 | 方法 | 說明 |
|---|---|---|
/api/v1/slides/generate | POST | 從文字產生投影片 |
/api/v1/slides/create-like-this | POST | 用參考圖產生 |
/api/v1/slides/create-pdf-slides | POST | 檔案轉投影片 |
/api/v1/slides/generate-narration | POST | 加上 AI 語音旁白 |
/api/v1/slides/download-slides-pages-voices | POST | 帶音訊下載 |
/api/v1/jobs/{id} | GET | 非同步任務狀態 |
/api/v1/themes/search | GET | 在 1500+ 範本庫中搜尋 |
/api/mcp | JSON-RPC 2.0 | 給 AI 代理的 MCP 端點 |
快速開始
curl -X POST https://2slides.com/api/v1/slides/generate \ -H "Authorization: Bearer sk-2slides-xxx" \ -H "Content-Type: application/json" \ -d '{ "userInput": "Top 10 AI Trends 2026", "mode": "sync", "resolution": "2K" }'
價格
- 點數制,無單次呼叫費用
- 每頁投影片約 1 點
- 每張 AI 圖像 100-200 點(按解析度)
- 點數包:5 美元(2,000 點)到 80 美元(40,000 點,約 20% 量級折扣)
- Pro 訂閱:12.50 美元/月,10,000 點
速率限制
- 每個 API key 每分鐘 60 次請求
- 正式環境推薦非同步模式()
mode: "async"
SlideSpeak API — 受限
已提供
- PDF/DOCX → 投影片轉換
- 基本 AI 生成
- 給 AI 代理的 MCP 伺服器(社群版)
不足
- 生成模式比 2Slides 少
- 無設計風格複製(無 對應功能)
create-like-this - API 不支援語音旁白與影片
- 文件不夠完整;部分端點僅對合作夥伴開放
價格
- 29 美元/月 Premium(50 點)
- 34 美元/月 Premium Plus(「無限」公平使用)
Canva API — 另一個類別
Canva Connect API 很強,但解的是另一個問題。
- 重點: 程式化的設計操作,不是生成式 AI
- 使用情境: 用程式把資料填到 Canva 範本裡
- 限制: 你在填範本,不是從提示詞生成新的簡報。Canva 的「AI」部分(Magic Design、Magic Write)截至 2026 年 Q2 都未在公開 API 暴露
如果你的情境是「用程式填充 Canva 範本」,Canva 就是為此而生。如果你的情境是「給個提示詞,回傳完成的投影片包」,Canva 就是錯的工具。
怎麼選合適的 API(決策矩陣)
| 需求 | 最佳解 | 為什麼 |
|---|---|---|
| 完整 AI 生成、託管服務 | 2Slides | 端點、格式、語系最齊全 |
| 自架、開源 | Presenton | Apache 2.0,原始碼完整 |
| 僅 PDF 轉投影片 | 2Slides 或 SlideSpeak | 都支援檔案輸入 |
| AI 代理整合(MCP) | 2Slides | 完整 MCP,含 slides_generatethemes_searchjobs_get |
| 範本填充式設計 | Canva Connect | 範本系統 + brand kit 豐富 |
| 月預算 5 美元以下 | 2Slides | 點數包 5 美元起;SlideSpeak 29 美元/月起 |
| 語音旁白 + MP4 匯出 | 2Slides | 市面唯一支援 H.264 + 多語者 AI 語音的 API |
整合範例
Node.js / TypeScript
// 2slides-generate.ts // 非同步生成 + 輪詢。可上線模式。 // pnpm add ofetch (或 Node 18+ 直接用 fetch) import { ofetch } from 'ofetch' const API_KEY = process.env.TWOSLIDES_API_KEY! // sk-2slides-... const API_BASE = 'https://2slides.com/api/v1' interface GenerateInput { topic: string themeId?: string language?: string resolution?: '512px' | '1K' | '2K' | '4K' } interface JobResult { jobId: string status: 'pending' | 'processing' | 'success' | 'failed' downloadUrl?: string error?: string } async function generateDeck(input: GenerateInput): Promise<JobResult> { // 1. 啟動任務(非同步模式) const job = await ofetch<{ jobId: string }>(`${API_BASE}/slides/generate`, { method: 'POST', headers: { Authorization: `Bearer ${API_KEY}`, 'Content-Type': 'application/json', }, body: { userInput: input.topic, themeId: input.themeId, responseLanguage: input.language ?? 'en', resolution: input.resolution ?? '2K', mode: 'async', }, }) // 2. 輪詢直到完成(最多 5 分鐘) const deadline = Date.now() + 5 * 60 * 1000 while (Date.now() < deadline) { await new Promise((r) => setTimeout(r, 3000)) const status = await ofetch<JobResult>(`${API_BASE}/jobs/${job.jobId}`, { headers: { Authorization: `Bearer ${API_KEY}` }, }) if (status.status === 'success') return status if (status.status === 'failed') throw new Error(status.error ?? 'Generation failed') } throw new Error('等待生成逾時') } // 用法: const result = await generateDeck({ topic: '面向高層團隊的 2026 Q1 銷售檢討', resolution: '2K', }) console.log('下載:', result.downloadUrl)
Python
# 2slides_generate.py # 非同步生成 + 輪詢。與 Node 範例同款模式。 # pip install requests import os import time import requests from typing import Optional, Literal API_KEY = os.environ["TWOSLIDES_API_KEY"] # sk-2slides-... API_BASE = "https://2slides.com/api/v1" HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"} def generate_deck( topic: str, theme_id: Optional[str] = None, language: str = "zh-TW", resolution: Literal["512px", "1K", "2K", "4K"] = "2K", timeout_s: int = 300, ) -> dict: body = { "userInput": topic, "themeId": theme_id, "responseLanguage": language, "resolution": resolution, "mode": "async", } r = requests.post(f"{API_BASE}/slides/generate", json=body, headers=HEADERS, timeout=30) r.raise_for_status() job_id = r.json()["jobId"] deadline = time.time() + timeout_s while time.time() < deadline: time.sleep(3) s = requests.get(f"{API_BASE}/jobs/{job_id}", headers=HEADERS, timeout=10) s.raise_for_status() data = s.json() if data["status"] == "success": return data if data["status"] == "failed": raise RuntimeError(data.get("error", "Generation failed")) raise TimeoutError("等待生成逾時") if __name__ == "__main__": result = generate_deck( topic="面向高層團隊的 2026 Q1 銷售檢討", resolution="2K", ) print("下載:", result["downloadUrl"])
cURL / Shell
#!/usr/bin/env bash # 2slides-generate.sh — 同步模式,適合快速原型。 # 正式環境建議非同步模式(參考上方 Node/Python)。 set -euo pipefail API_KEY="${TWOSLIDES_API_KEY:?請先設定 TWOSLIDES_API_KEY}" TOPIC="${1:-Top 10 AI Trends 2026}" curl -sS -X POST https://2slides.com/api/v1/slides/generate \ -H "Authorization: Bearer ${API_KEY}" \ -H "Content-Type: application/json" \ -d @- <<JSON | jq -r '.downloadUrl // .error' { "userInput": "${TOPIC}", "mode": "sync", "resolution": "2K", "responseLanguage": "zh-TW" } JSON
透過 MCP 呼叫(給 AI 代理)
如果你從 Claude Desktop、Cursor 或任何相容 MCP 的代理裡呼叫 2Slides,根本不需要寫 HTTP 程式碼。設定 MCP 伺服器一次,代理就會原生呼叫工具:
{ "mcpServers": { "2slides": { "command": "npx", "args": ["2slides-mcp"], "env": { "API_KEY": "sk-2slides-xxx" } } } }
然後給代理下指令:「為一家做嵌入式支付的金融科技新創公司產生 12 頁投資人 pitch deck,繁體中文,2K 解析度。」 代理會自動呼叫
slides_generate正式環境模式
模式 1 — Webhook 回呼(取代輪詢)
2Slides 在
/slides/generatewebhookUrlcurl -X POST https://2slides.com/api/v1/slides/generate \ -H "Authorization: Bearer sk-2slides-xxx" \ -H "Content-Type: application/json" \ -d '{ "userInput": "...", "mode": "async", "webhookUrl": "https://your-app.com/api/2slides-callback" }'
模式 2 — 生成前先搜尋主題
要讓輸出符合品牌,先搜尋主題庫並固定一個
themeId# 找到符合 "consulting" 的主題 curl -sS "https://2slides.com/api/v1/themes/search?q=consulting&limit=5" \ -H "Authorization: Bearer sk-2slides-xxx" | jq '.themes[].id' # 把回傳的 id 用到 generate() 裡
模式 3 — 用品牌參考圖複製風格
如果你有品牌範本的圖片,使用
create-like-thisgeneratecurl -X POST https://2slides.com/api/v1/slides/create-like-this \ -H "Authorization: Bearer sk-2slides-xxx" \ -H "Content-Type: application/json" \ -d '{ "userInput": "2026 Q1 銷售報告", "referenceImageUrl": "https://your-cdn.com/brand-slide.png", "page": 12 }'
會同步回傳 PDF + 工作區 URL。截至 2026 年 Q2,沒有別的 AI 簡報 API 提供這種風格複製能力。
常見問題
2Slides API 可以用在商業產品裡嗎?
可以,無任何限制。在 API 之上建構 SaaS 產品、內部工具、白標功能或面向客戶的特性都行。適用標準速率上限(每分鐘 60 次);更高額度請聯絡銷售。
有沙箱或測試環境嗎?
沒有獨立沙箱。用真實 API key + 小額點數包(5 美元/2,000 點)測試即可。所有端點都接受
dryRun: true同步模式延遲多少?
2K 解析度下 10 頁簡報一般 15-45 秒,取決於 AI 圖像複雜度與範本。正式環境希望延遲可預期,建議用
mode: "async"webhookUrl2Slides 的 MCP 伺服器與 SlideSpeak 的相比如何?
2Slides 暴露三個工具 —
slides_generatethemes_searchjobs_get能不能不用託管 API、自己架?
2Slides 本身不行 — 是託管服務。如果一定要自架,Presenton(Apache 2.0)是 2026 年最可信的開源替代。
突發流量下的速率限制怎麼辦?
預設每 API key 每分鐘 60 次。突發型負載(例如工作時間一個 Slack 機器人觸發 200 個並發生成)建議:非同步模式 + 你方加一個佇列(BullMQ、SQS 等)。可預期的高正式負載請聯絡銷售提升上限。
相關閱讀
- 面向開發者的最佳 AI 簡報 API(完整指南) — 定義型 hub:什麼是 AI 簡報 API、為何使用、價格模型、MCP 概覽
- 用 Claude 製作簡報(含 MCP) — 代理驅動的生成走讀
- 企業級 AI 簡報工具橫評 — SSO / SOC 2 / 稽核日誌
開始建構 — 建立 2Slides API key,30 秒內交付第一份投影片包。
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free