


Confronto API per Presentazioni AI con Esempi di Codice: 2Slides vs SlideSpeak vs Canva (2026)
Per sviluppatori che già sanno di aver bisogno di un'API. Questo articolo è il confronto diretto con il codice. Se stai ancora capendo cos'è un'API per presentazioni AI o se ti serve, parti dalla nostra guida completa per sviluppatori — copre definizioni, prezzi, MCP e pattern architetturali. Questa pagina riprende da dove quella finisce.
Se devi generare presentazioni in modo programmatico — da integrazioni SaaS a reportistica automatizzata o workflow di agenti AI — ti serve un'API per presentazioni. Sorprendentemente pochi strumenti AI ne offrono una. Ecco il confronto e il codice.
Il panorama (verificato a maggio 2026)
| Tool | API disponibile | Tipo API | Documentazione | Supporto MCP | PPTX nativo |
|---|---|---|---|---|---|
| 2Slides | ✅ API REST completa | REST + JSON-RPC MCP | ✅ Completa | ✅ | ✅ |
| SlideSpeak | ✅ Limitata | REST + MCP | Parziale | ✅ | Parziale |
| Canva | ✅ (Canva Connect) | REST | ✅ | ❌ | Tramite template |
| Gamma | ❌ | — | — | ❌ | ❌ |
| Beautiful.ai | ❌ | — | — | ❌ | ❌ |
| SlidesAI | ❌ (solo add-on) | — | — | ❌ | Solo Google Slides |
| Presenton | ✅ Open-source self-host | REST | ✅ | ❌ | ✅ |
Conclusione: per la generazione di presentazioni AI come servizio gestito, 2Slides è l'opzione più completa. SlideSpeak offre accesso API parziale. L'API di Canva serve a uno scopo diverso (manipolazione di design, non generazione AI). Il resto non ha API pubblica. Per un'alternativa self-hosted, Presenton (Apache 2.0) è l'unica opzione realistica.
API 2Slides — Funzionalità complete
Endpoint
| Endpoint | Metodo | Descrizione |
|---|---|---|
/api/v1/slides/generate | POST | Genera slide da testo |
/api/v1/slides/create-like-this | POST | Genera con immagine di riferimento |
/api/v1/slides/create-pdf-slides | POST | Converte file in slide |
/api/v1/slides/generate-narration | POST | Aggiunge narrazione vocale AI |
/api/v1/slides/download-slides-pages-voices | POST | Scarica con audio |
/api/v1/jobs/{id} | GET | Stato del job asincrono |
/api/v1/themes/search | GET | Cerca tra oltre 1.500 template |
/api/mcp | JSON-RPC 2.0 | Endpoint MCP per agenti AI |
Avvio rapido
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"
}'Prezzi
- A crediti, nessun costo per chiamata
- 10 crediti per pagina di slide Fast PPT (circa 0,025 $ con il pacchetto da 5 $)
- 100-200 crediti per immagine AI (in base alla risoluzione)
- Pacchetti da 5 $ (2.000 crediti) a 80 $ (40.000 crediti, sconto volume fino al 20%)
- Abbonamento Pro: 12,50 $/mese per 10.000 crediti
Rate limit
- 60 richieste al minuto per API key
- Modalità asincrona (
mode: "async") consigliata per la produzione
API SlideSpeak — Limitata
Disponibile
- Conversione PDF/DOCX → slide
- Generazione AI di base
- Server MCP per agenti AI (community)
Limitazioni
- Meno modalità di generazione rispetto a 2Slides
- Nessuna clonazione di stile (nessun equivalente di
create-like-this) - Nessuna narrazione vocale o video via API
- Documentazione meno completa; alcuni endpoint solo per partner
Prezzi
- 29 $/mese Premium (50 crediti)
- 34 $/mese Premium Plus (uso equo "illimitato")
API Canva — Categoria diversa
L'API Canva Connect è potente ma risolve un problema diverso.
- Focus: manipolazione programmatica del design, non generazione AI
- Caso d'uso: popolare programmaticamente template Canva con dati
- Limite: stai riempiendo template, non generando nuove presentazioni da prompt. Le parti "AI" di Canva (Magic Design, Magic Write) NON sono esposte nell'API pubblica al Q2 2026
Se il tuo caso è "popolare un template Canva via codice", Canva è fatto per questo. Se è "dato questo prompt, restituiscimi uno slide deck completo", Canva è lo strumento sbagliato.
Scegliere l'API giusta (matrice decisionale)
| Esigenza | Scelta migliore | Perché |
|---|---|---|
| Generazione AI completa, servizio gestito | 2Slides | Più endpoint, formati, lingue |
| Self-hosted, open source | Presenton | Apache 2.0, codice sorgente completo |
| Solo PDF a slide | 2Slides o SlideSpeak | Entrambi supportano file in input |
| Integrazione agenti AI (MCP) | 2Slides | MCP completo con slides_generate / themes_search / jobs_get |
| Design basato su template | Canva Connect | Sistema di template ricco + brand kit |
| Budget sotto 5 $/mese | 2Slides | Pacchetti da 5 $; SlideSpeak parte da 29 $/mese |
| Narrazione vocale + export MP4 | 2Slides | Unica API sul mercato con H.264 + voce AI multi-speaker |
Esempi di integrazione
Node.js / TypeScript
// 2slides-generate.ts
// Generazione asincrona con polling. Pattern pronto per la produzione.
// pnpm add ofetch (o usa fetch direttamente in 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. Avvia il job (modalità asincrona)
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 fino al completamento (max 5 minuti)
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('Timeout in attesa della generazione')
}
// Uso:
const result = await generateDeck({
topic: 'Revisione vendite Q1 2026 per il team executive',
resolution: '2K',
})
console.log('Download:', result.downloadUrl)Python
# 2slides_generate.py
# Generazione asincrona con polling. Stesso pattern dell'esempio 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 = "it",
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("Timeout in attesa della generazione")
if __name__ == "__main__":
result = generate_deck(
topic="Revisione vendite Q1 2026 per il team executive",
resolution="2K",
)
print("Download:", result["downloadUrl"])cURL / Shell
#!/usr/bin/env bash
# 2slides-generate.sh — modalità sincrona per prototipi rapidi.
# In produzione si preferisce la modalità asincrona (vedi Node/Python sopra).
set -euo pipefail
API_KEY="${TWOSLIDES_API_KEY:?Imposta prima 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": "it"
}
JSONChiamata via MCP (per agenti AI)
Se chiami 2Slides da Claude Desktop, Cursor o qualunque agente compatibile MCP, non scrivi codice HTTP. Configuri il server MCP una volta e l'agente chiama la tool nativamente:
{
"mcpServers": {
"2slides": {
"command": "npx",
"args": ["-y", "2slides-mcp@latest"],
"env": { "API_KEY": "sk-2slides-xxx" }
}
}
}Poi chiedi all'agente: "Genera una pitch deck di 12 slide per una startup fintech sui pagamenti embedded, in italiano, risoluzione 2K." L'agente chiama slides_generate automaticamente. Il repo open-source del server MCP contiene le specifiche complete delle tool.
Pattern di produzione
Pattern 1 — Webhook callback (al posto del polling)
2Slides supporta un parametro webhookUrl su /slides/generate. Indica il tuo endpoint e salta del tutto il loop di 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://tua-app.it/api/2slides-callback"
}'Pattern 2 — Ricerca tema prima della generazione
Per output coerenti con il brand, cerca nella libreria di temi e fissa un themeId:
# Trovare un tema corrispondente a "consulting"
curl -sS "https://2slides.com/api/v1/themes/search?query=consulting&limit=5" \
-H "Authorization: Bearer sk-2slides-xxx" | jq '.themes[].id'
# Usa l'id restituito in generate()Pattern 3 — Clonazione di stile da una referenza brand
Se hai un template del brand come immagine, usa create-like-this invece di 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": "Report vendite Q1 2026",
"referenceImageUrl": "https://tuo-cdn.it/slide-brand.png",
"page": 12
}'Restituisce in modo sincrono un PDF + URL del workspace. Nessuna altra API di presentazione AI offre questo pattern di clonazione di stile al Q2 2026.
Domande frequenti
Posso usare l'API 2Slides in prodotti commerciali?
Sì, senza restrizioni. Costruisci prodotti SaaS, tool interni, funzioni white-label o feature rivolte al cliente sull'API. Si applica il rate limit standard (60 RPM); contatta il sales per limiti più alti.
Esiste una sandbox o un ambiente di test?
Non c'è una sandbox separata. Usa la tua API key reale con piccoli pacchetti di crediti (5 $/2.000 crediti) per testare. Tutti gli endpoint accettano un parametro dryRun: true che valida la struttura della richiesta senza consumare crediti.
Qual è la latenza in modalità sincrona?
Tipicamente 15-45 secondi per una presentazione di 10 slide a 2K, in base alla complessità delle immagini AI e al template. Per latenza deterministica in produzione, usa mode: "async" con polling (ogni 3-5 secondi) o callback webhookUrl.
Come si confronta il server MCP di 2Slides con quello di SlideSpeak?
2Slides espone tre tool — slides_generate, themes_search, jobs_get — coprendo generazione, scoperta dei temi e stato asincrono. L'MCP di SlideSpeak espone una superficie più piccola incentrata sulla conversione di file. Per la maggior parte dei workflow agent (Claude Desktop, Cursor, agenti LangChain custom), 2Slides è più capace.
Posso fare self-hosting invece di usare un'API gestita?
Per 2Slides specificamente no — è un servizio gestito. Se il self-hosting è un requisito non negoziabile, Presenton (Apache 2.0) è l'alternativa open-source più credibile nel 2026.
E i rate limit con traffico a burst?
Default 60 RPM per API key. Per carichi a burst (es. un bot Slack che lancia 200 generazioni in parallelo in orario lavorativo), il pattern consigliato è: modalità asincrona + una coda (BullMQ, SQS, ecc.) dal tuo lato. Contatta il sales per rate limit elevati su carichi prevedibili in produzione.
Letture correlate
- Migliore API di presentazione AI per sviluppatori (guida completa) — hub di definizioni: cos'è un'API di presentazione, perché usarla, modelli di prezzo, MCP
- Come usare Claude per creare presentazioni (con MCP) — walkthrough di generazione guidata da agente
- Tool di presentazione AI per aziende a confronto — SSO / SOC 2 / audit log
Inizia a costruire — crea la tua API key 2Slides e spedisci la prima slide deck in meno di 30 secondi.
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free