2Slides Logo
So Sánh API Tạo Slide AI với Ví Dụ Code: 2Slides vs SlideSpeak vs Canva (2026)
2Slides Team
11 min read

Bìa so sánh API tạo slide AI với ví dụ code

So Sánh API Tạo Slide AI với Ví Dụ Code: 2Slides vs SlideSpeak vs Canva (2026)

Dành cho dev đã biết mình cần API. Bài này là so sánh trực tiếp kèm code. Nếu bạn vẫn đang tìm hiểu API tạo slide AI là gì hoặc bạn có cần không, hãy bắt đầu với hướng dẫn dành cho developer đầy đủ — bao gồm định nghĩa, giá, MCP và mẫu kiến trúc. Trang này tiếp nối từ chỗ hướng dẫn đó kết thúc.

Nếu bạn cần tạo slide bằng cách lập trình — cho tích hợp SaaS, báo cáo tự động hoặc workflow agent AI — bạn cần một API tạo slide. Đáng ngạc nhiên là rất ít công cụ AI cung cấp API. So sánh và code ở dưới.

Bức tranh tổng quan (kiểm chứng tháng 5/2026)

Công cụCó APILoại APITài liệuHỗ trợ MCPPPTX gốc
2Slides✅ REST API đầy đủREST + JSON-RPC MCP✅ Toàn diện
SlideSpeak✅ Hạn chếREST + MCPMột phầnMột phần
Canva✅ (Canva Connect)RESTQua template
Gamma
Beautiful.ai
SlidesAI❌ (chỉ add-on)Chỉ Google Slides
Presenton✅ Mã nguồn mở self-hostREST

Kết luận chính: với việc tạo slide AI ở dạng dịch vụ được quản lý, 2Slides là lựa chọn đầy đủ nhất. SlideSpeak cung cấp truy cập API một phần. API của Canva phục vụ mục đích khác (chỉnh sửa thiết kế, không phải tạo bằng AI). Phần còn lại không có API công khai. Nếu cần tự host, Presenton (Apache 2.0) là lựa chọn thực tế duy nhất.


API 2Slides — đầy đủ tính năng

Endpoint

EndpointMethodMô tả
/api/v1/slides/generate
POSTTạo slide từ văn bản
/api/v1/slides/create-like-this
POSTTạo theo ảnh tham chiếu
/api/v1/slides/create-pdf-slides
POSTChuyển file thành slide
/api/v1/slides/generate-narration
POSTThêm thuyết minh AI
/api/v1/slides/download-slides-pages-voices
POSTTải về kèm âm thanh
/api/v1/jobs/{id}
GETTrạng thái job bất đồng bộ
/api/v1/themes/search
GETTìm trong 1.500+ template
/api/mcp
JSON-RPC 2.0Endpoint MCP cho agent AI

Bắt đầu nhanh

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" }'

Giá

  • Theo credit, không tính phí mỗi lần gọi
  • ~1 credit cho mỗi trang slide
  • 100-200 credit cho mỗi ảnh AI (theo độ phân giải)
  • Gói: từ $5 (2.000 credit) đến $80 (40.000 credit, giảm tới 20% theo lượng)
  • Gói Pro: $12,50/tháng cho 10.000 credit

Giới hạn tốc độ

  • 60 request/phút mỗi API key
  • Khuyến nghị chế độ bất đồng bộ (
    mode: "async"
    ) cho production

API SlideSpeak — hạn chế

Có sẵn

  • Chuyển PDF/DOCX → slide
  • Tạo bằng AI cơ bản
  • MCP server cho agent AI (cộng đồng)

Hạn chế

  • Ít chế độ tạo hơn 2Slides
  • Không có nhân bản phong cách thiết kế (không có
    create-like-this
    )
  • Không có thuyết minh giọng nói hoặc video qua API
  • Tài liệu kém đầy đủ; một số endpoint chỉ cho đối tác

Giá

  • $29/tháng Premium (50 credit)
  • $34/tháng Premium Plus (fair-use "không giới hạn")

API Canva — danh mục khác

API Canva Connect mạnh nhưng giải quyết vấn đề khác.

  • Trọng tâm: thao tác thiết kế bằng lập trình, không phải tạo bằng AI
  • Use case: điền dữ liệu vào template Canva theo lập trình
  • Hạn chế: bạn điền template, không tạo slide mới từ prompt. Phần "AI" của Canva (Magic Design, Magic Write) KHÔNG được expose qua API công khai tính đến Q2 2026

Nếu use case của bạn là "điền template Canva qua code", Canva là đúng cho việc đó. Nếu là "đưa prompt và lấy về slide deck hoàn chỉnh", Canva là công cụ sai.


Chọn đúng API (ma trận quyết định)

Nhu cầuLựa chọn tốt nhấtVì sao
Tạo bằng AI đầy đủ, dịch vụ quản lý2SlidesNhiều endpoint, định dạng và ngôn ngữ nhất
Tự host, mã nguồn mởPresentonApache 2.0, mã nguồn đầy đủ
Chỉ chuyển PDF sang slide2Slides hoặc SlideSpeakCả hai hỗ trợ đầu vào file
Tích hợp agent AI (MCP)2SlidesMCP đầy đủ với
slides_generate
/
themes_search
/
jobs_get
Điền thiết kế theo templateCanva ConnectHệ thống template phong phú + brand kits
Ngân sách dưới $5/tháng2SlidesGói credit từ $5; SlideSpeak từ $29/tháng
Thuyết minh giọng + xuất MP42SlidesAPI duy nhất trên thị trường có H.264 + giọng AI nhiều người nói

Ví dụ tích hợp

Node.js / TypeScript

// 2slides-generate.ts // Tạo bất đồng bộ với polling. Mẫu sẵn sàng cho production. // pnpm add ofetch (hoặc dùng fetch trực tiếp ở Node 18+) 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. Khởi chạy job (chế độ bất đồng bộ) 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. Polling đến khi hoàn tất (tối đa 5 phút) 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('Hết thời gian chờ tạo') } // Sử dụng: const result = await generateDeck({ topic: 'Đánh giá doanh số Q1 2026 cho ban điều hành', resolution: '2K', }) console.log('Tải xuống:', result.downloadUrl)

Python

# 2slides_generate.py # Tạo bất đồng bộ với polling. Cùng mẫu với ví dụ 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 = "vi", 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("Hết thời gian chờ tạo") if __name__ == "__main__": result = generate_deck( topic="Đánh giá doanh số Q1 2026 cho ban điều hành", resolution="2K", ) print("Tải xuống:", result["downloadUrl"])

cURL / Shell

#!/usr/bin/env bash # 2slides-generate.sh — chế độ đồng bộ cho prototype nhanh. # Chế độ bất đồng bộ được ưu tiên ở production (xem Node/Python phía trên). set -euo pipefail API_KEY="${TWOSLIDES_API_KEY:?Đặt TWOSLIDES_API_KEY trước}" 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": "vi" } JSON

Gọi qua MCP (cho agent AI)

Nếu bạn gọi 2Slides từ Claude Desktop, Cursor hoặc bất kỳ agent tương thích MCP nào, bạn không viết code HTTP. Bạn cấu hình MCP server một lần và agent gọi tool một cách native:

{ "mcpServers": { "2slides": { "command": "npx", "args": ["2slides-mcp"], "env": { "API_KEY": "sk-2slides-xxx" } } } }

Sau đó ra lệnh cho agent: "Tạo pitch deck 12 slide cho startup fintech về thanh toán nhúng, bằng tiếng Việt, độ phân giải 2K." Agent gọi

slides_generate
tự động. Đặc tả tool đầy đủ ở repo mã nguồn mở của MCP server.


Mẫu production

Mẫu 1 — Webhook callback (thay vì polling)

2Slides hỗ trợ tham số

webhookUrl
trên
/slides/generate
. Cung cấp endpoint của bạn và bỏ qua hoàn toàn vòng polling:

curl -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" }'

Mẫu 2 — Tìm theme trước khi tạo

Để output nhất quán với thương hiệu, tìm trong thư viện theme và cố định một

themeId
:

# Tìm theme khớp với "consulting" curl -sS "https://2slides.com/api/v1/themes/search?q=consulting&limit=5" \ -H "Authorization: Bearer sk-2slides-xxx" | jq '.themes[].id' # Dùng id trả về trong generate()

Mẫu 3 — Nhân bản style từ tham chiếu thương hiệu

Nếu bạn có template thương hiệu dạng ảnh, dùng

create-like-this
thay vì
generate
:

curl -X POST https://2slides.com/api/v1/slides/create-like-this \ -H "Authorization: Bearer sk-2slides-xxx" \ -H "Content-Type: application/json" \ -d '{ "userInput": "Báo cáo doanh số Q1 2026", "referenceImageUrl": "https://your-cdn.com/brand-slide.png", "page": 12 }'

Trả về đồng bộ một PDF + URL workspace. Tính đến Q2 2026, không API tạo slide AI nào khác cung cấp mẫu nhân bản style này.


Câu hỏi thường gặp

Tôi có thể dùng API 2Slides cho sản phẩm thương mại không?

Có, không hạn chế. Bạn có thể xây dựng sản phẩm SaaS, công cụ nội bộ, tính năng white-label hoặc tính năng hướng tới khách hàng trên API. Áp dụng giới hạn chuẩn (60 RPM); liên hệ sales nếu cần giới hạn cao hơn.

Có sandbox hoặc môi trường thử nghiệm không?

Không có sandbox riêng. Hãy dùng API key thật với gói credit nhỏ ($5/2.000 credit) để thử nghiệm. Mọi endpoint chấp nhận tham số

dryRun: true
để xác minh cấu trúc request mà không tiêu hao credit.

Độ trễ chế độ đồng bộ là bao nhiêu?

Thông thường 15-45 giây cho slide deck 10 trang ở 2K, tùy độ phức tạp ảnh AI và template. Để có độ trễ dự đoán được trong production, dùng

mode: "async"
với polling (mỗi 3-5 giây) hoặc callback
webhookUrl
.

MCP server của 2Slides so với SlideSpeak ra sao?

2Slides expose ba tool —

slides_generate
,
themes_search
,
jobs_get
— bao quát tạo, khám phá theme và trạng thái bất đồng bộ. MCP của SlideSpeak có bề mặt nhỏ hơn, tập trung vào chuyển đổi file. Với hầu hết workflow agent (Claude Desktop, Cursor, agent LangChain tự xây), 2Slides mạnh hơn.

Tôi có thể self-host thay vì dùng API quản lý không?

Riêng 2Slides thì không — đây là dịch vụ được quản lý. Nếu self-hosting là yêu cầu bắt buộc, Presenton (Apache 2.0) là phương án mã nguồn mở đáng tin cậy nhất trong 2026.

Còn rate limit khi traffic burst thì sao?

Mặc định 60 RPM mỗi API key. Với workload nặng burst (ví dụ Slack bot kích hoạt 200 lần tạo song song trong giờ làm việc), mẫu được khuyến nghị: chế độ bất đồng bộ + một queue (BullMQ, SQS, v.v.) ở phía bạn. Liên hệ sales để nâng giới hạn nếu bạn có tải production cao và dự đoán được.


Bài đọc liên quan


Bắt đầu xây dựng — tạo API key 2Slides của bạn và ship deck đầu tiên trong chưa đến 30 giây.

About 2Slides

Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.

Try For Free