

Tutorial de la API de 2slides - Guía Completa para la Generación de Presentaciones con IA
¡Bienvenido a la guía completa de la API de 2slides! Este tutorial te guiará a través de todo lo que necesitas saber para integrar la generación de presentaciones impulsada por IA en tus aplicaciones.
Resumen
La API de 2slides te permite generar presentaciones profesionales de forma programática utilizando IA. Con soporte para múltiples tipos de presentaciones, incluyendo líneas de tiempo, hojas de ruta, mapas mentales y más, puedes crear diapositivas impresionantes a partir de una simple entrada de texto.
Características Clave
- Generación Impulsada por IA: Crea automáticamente presentaciones profesionales a partir de texto
- Múltiples Tipos de Plantillas: Soporte para líneas de tiempo, hojas de ruta, mapas mentales, pitch decks, infografías y más
- Soporte Multilingüe: Genera contenido en múltiples idiomas
- Amplia Biblioteca de Plantillas: Acceso a cientos de plantillas diseñadas profesionalmente
- Plantillas Personalizadas: Sube y usa tus propias plantillas de diapositivas personalizadas
- Búsqueda de plantillas: Busca plantillas por nombre, palabras clave y etiquetas
- Opciones de Descarga: Obtén presentaciones en formato PowerPoint (.pptx)
- Seguimiento del Estado en Tiempo Real: Monitorea el progreso de la generación con los endpoints de estado de trabajo
Tipos de Presentaciones Destacados

Todas las plantillas de presentación están disponibles aquí: 2slides Templates. Específicamente, hay algunos tipos de presentaciones destacados que funcionan muy bien para propósitos y escenarios específicos.
- Diapositivas de Línea de Tiempo - Perfectas para líneas de tiempo de proyectos y eventos históricos
- Diapositivas de Hoja de Ruta - Ideales para hojas de ruta de productos y planificación de proyectos
- Diapositivas de Mapa Mental - Excelentes para el mapeo de conceptos y la estructura del conocimiento
Primeros Pasos
URL Base
Todas las solicitudes a la API deben hacerse a:
https://2slides.com
Requisitos Previos
- Configuración de la Cuenta: Crea una cuenta en 2slides.com
- Clave API: Genera una clave API desde tu página de gestión de API
- Créditos: Asegúrate de tener suficientes créditos para la generación de diapositivas (10 créditos por página de diapositiva)
Inicio Rápido
- Obtén tu clave API desde la página de gestión de API
- Busca un tema usando el endpoint de búsqueda de temas, o navega por las plantillas para obtener el ID del tema de la diapositiva
- Genera diapositivas con tu contenido y el ID del tema seleccionado; esto soporta tanto llamadas síncronas con las diapositivas resultantes devueltas como llamadas asíncronas con un ID de trabajo devuelto. Si usas una llamada síncrona, los pasos 4 y 5 no son necesarios.
- Verifica el estado del trabajo hasta su finalización; se proporcionará la URL de descarga de las diapositivas generadas.
- Descarga tu presentación usando la URL de descarga proporcionada.
Autenticación

Todos los endpoints de la API requieren autenticación usando una clave API. Puedes gestionar tus claves API a través de la interfaz de gestión de API.
Formato de la Clave API
Las claves API siguen este formato:
sk-2slides-{cadena-hexadecimal-de-64-caracteres}
Métodos de Autenticación
Encabezado de Autorización
Authorization: Bearer sk-2slides-tu-clave-api-aqui
Gestión de Claves API
- Máximo de Claves: Cada usuario puede crear hasta 10 claves API
- Nomenclatura de Claves: Asigna nombres descriptivos a tus claves para una fácil identificación
- Seguridad: Mantén tus claves API seguras y nunca las compartas públicamente
- Rotación: Rota tus claves API regularmente para una seguridad mejorada
⚠️ Aviso de Seguridad Importante: La plataforma 2slides NO almacena tus claves API en texto plano por razones de seguridad. Una vez generada, debes copiar y almacenar tu clave API de forma segura de inmediato. Si pierdes tu clave API, deberás generar una nueva ya que la original no se puede recuperar.
Endpoints de la API
1. Generar Diapositivas (Fast PPT)
Genera diapositivas (Fast PPT) a partir de una entrada de texto utilizando un tema específico.
Endpoint:
POST /api/v1/slides/generateEncabezados:
Authorization: Bearer sk-2slides-tu-clave-api-aqui Content-Type: application/json
Cuerpo de la Solicitud:
{ "userInput": "Tu contenido de presentación aquí...", "themeId": "uuid-del-tema-aqui", "responseLanguage": "Auto" }
Parámetros:
- (obligatorio): El contenido para el que deseas generar diapositivas
userInput - (obligatorio): ID del tema a usar para la generación de diapositivas. Puede ser:
themeId- Temas públicos de la galería de plantillas
- Tus propios temas personalizados subidos (accesibles a través de tu cuenta)
- (opcional): Idioma para las diapositivas generadas. Usa "Auto" para detección automática
responseLanguage - (opcional): Llamada síncrona (sync) o asíncrona (async), "sync" es el valor predeterminado
mode
Idiomas Disponibles:
- - Detección automática del idioma a partir de la entrada (predeterminado)
Auto - - Inglés
English - - 简体中文
Simplified Chinese - - 繁體中文
Traditional Chinese - - Español
Spanish - - العربية
Arabic - - Português
Portuguese - - Bahasa Indonesia
Indonesian - - 日本語
Japanese - - Русский
Russian - - हिंदी
Hindi - - Français
French - - Deutsch
German - - Tiếng Việt
Vietnamese - - Türkçe
Turkish - - Polski
Polish - - Italiano
Italian - - 한국어
Korean
Respuesta en modo asíncrono:
{ "success": true, "data": { "jobId": "uuid-del-trabajo-aqui", "status": "processing", "message": "Slides generation started. Use the jobId to check status.", "credits": { "current": 150, "required": 30 } } }
Respuesta en modo síncrono:
{ "success": true, "data": { "jobId": "1pFqIww3JjquQ1T3Ysmw1", "status": "success", "message": "Slides generated successfully", "downloadUrl": "https://url-prefirmada-aqui", "createdAt": 1760347015388, "updatedAt": 1760347048261, "duration": 32694, "slidePageCount": 9 } }
2. Verificar Estado del Trabajo (Fast PPT)
Verifica el estado de un trabajo de generación de diapositivas (Fast PPT) y obtén los resultados cuando esté completo.
Endpoint:
GET /api/v1/jobs/{jobId}Encabezados:
Authorization: Bearer sk-2slides-tu-clave-api-aqui
Ejemplos de Respuesta:
Procesando:
{ "success": true, "data": { "jobId": "uuid-del-trabajo-aqui", "status": "processing", "message": "Slides generation in progress", "createdAt": 1703123456789, "updatedAt": 1703123460000 } }
Éxito:
{ "success": true, "data": { "jobId": "uuid-del-trabajo-aqui", "status": "success", "message": "Slides generated successfully", "downloadUrl": "https://url-prefirmada-aqui", "createdAt": 1703123456789, "updatedAt": 1703123500000, "duration": 33211, "slidePageCount": 3 } }
Fallido:
{ "success": true, "data": { "jobId": "uuid-del-trabajo-aqui", "status": "failed", "message": "Slides generation failed", "errorMessage": "Insufficient credits for generation", "createdAt": 1703123456789, "updatedAt": 1703123460000 } }
3. Crear Diapositivas Como Esta (Nano Banana Pro)
Genera diapositivas (Nano Banana Pro) a partir de una imagen de referencia. Este endpoint usa el modo síncrono y genera automáticamente un PDF cuando todas las diapositivas están completas.
Endpoint:
POST /api/v1/slides/create-like-thisEncabezados:
Authorization: Bearer sk-2slides-tu-clave-api-aqui Content-Type: application/json
Cuerpo de la Solicitud:
{ "userInput": "Tu contenido de presentación aquí...", "referenceImageUrl": "https://example.com/imagen-de-referencia.jpg", "responseLanguage": "Auto", "aspectRatio": "16:9", "resolution": "2K", "page": 1 }
Parámetros:
- (obligatorio): El contenido para el que deseas generar diapositivas
userInput - (obligatorio): URL de la imagen de referencia para seguir el estilo de diseño. Soporta:
referenceImageUrl- URLs HTTP/HTTPS
- URLs de datos Base64 (data:image/...)
- (opcional): Idioma para las diapositivas generadas. Usa "Auto" para detección automática (predeterminado: "Auto")
responseLanguage - (opcional): Relación de aspecto para las diapositivas. Formato: "ancho:alto" (predeterminado: "16:9")
aspectRatio - (opcional): Resolución para las imágenes de las diapositivas. Opciones: "1K", "2K", "4K" (predeterminado: "2K")
resolution - (opcional): Número de diapositivas a generar. Usa 0 para autodetección. Especifica un número (>=1, máx: 100) para forzar esa cantidad de diapositivas. Predeterminado: 1.
page - (opcional): Nivel de detalle del contenido para las diapositivas. Opciones: "concise" (breve, centrado en palabras clave) o "standard" (exhaustivo, detallado). Predeterminado: "concise".
contentDetail
Respuesta:
{ "success": true, "data": { "jobId": "uuid-del-trabajo-aqui", "status": "success", "message": "Successfully generated 5 slides", "downloadUrl": "https://url-prefirmada-a-pdf.pdf", "jobUrl": "https://2slides.com/workspace?jobId=uuid-del-trabajo-aqui", "createdAt": 1703123456789, "updatedAt": 1703123500000, "slidePageCount": 5, "successCount": 5, "failedCount": 0 } }
Valores de Estado:
- : Todas las diapositivas generadas con éxito, el PDF está disponible
success - : Algunas diapositivas no se generaron
partial - : Todas las diapositivas no se generaron
failed
Nota: Este endpoint se ejecuta en modo síncrono y esperará a que todas las diapositivas se generen antes de devolver una respuesta.
4. Buscar Temas (Fast PPT)
Busca temas de diapositivas disponibles (Fast PPT) por palabra clave. Esto incluye tanto temas públicos como tus propios temas personalizados subidos.
Endpoint:
GET /api/v1/themes/searchEncabezados:
Authorization: Bearer sk-2slides-tu-clave-api-aqui
Parámetros de Consulta:
- (obligatorio): Palabra clave para buscar en el nombre, descripción y etiquetas del tema
query - (opcional): Número máximo de resultados (1-100, predeterminado 20)
limit
Ejemplo de Solicitud:
GET /api/v1/themes/search?query=timeline&limit=10
Respuesta:
{ "success": true, "data": { "total": 25, "themes": [ { "id": "uuid-del-tema-1", "name": "Modern Timeline", "description": "Clean and modern timeline template for project presentations", "tags": "timeline, modern, project, clean", "themeURL": "https://2slides.com/templates/st-1759917935785-nx0z6ae54" }, { "id": "uuid-del-tema-2", "name": "Business Roadmap", "description": "Professional roadmap template for business planning", "tags": "roadmap, business, planning, professional", "themeURL": "https://2slides.com/templates/st-1755509077270-sftfm616s" } ] } }
Límite de Tasa
La API implementa un límite de tasa para asegurar un uso justo y la estabilidad del sistema. Diferentes endpoints tienen diferentes límites de tasa:
| Endpoint | Ventana de Tiempo | Máx. Solicitudes | Descripción |
|---|---|---|---|
/api/v1/slides/generate | 1 minuto | 6 solicitudes | Endpoint principal de generación |
/api/v1/slides/create-like-this | 1 minuto | 6 solicitudes | Crear diapositivas a partir de imagen de referencia |
/api/v1/jobs | 1 minuto | 10 solicitudes | Verificación del estado del trabajo |
/api/v1/themes/search | 1 minuto | 30 solicitudes | Búsqueda de temas |
Encabezados de Límite de Tasa
Cuando se exceden los límites de tasa, la API devuelve una respuesta
429 Too Many RequestsHTTP/1.1 429 Too Many Requests X-RateLimit-Limit: 6 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 1703123600 Retry-After: 45
Manejo de Límites de Tasa
Debes manejar el límite de tasa de llamadas a la API con cuidado; aquí tienes un ejemplo en Javascript.
async function makeApiRequest(url, options) { try { const response = await fetch(url, options); if (response.status === 429) { const retryAfter = response.headers.get('Retry-After'); console.log(`Rate limited. Retry after ${retryAfter} seconds`); // Límite de tasa alcanzado. Reintentar después de ${retryAfter} segundos await new Promise(resolve => setTimeout(resolve, retryAfter * 1000)); return makeApiRequest(url, options); // Reintentar } return response; } catch (error) { console.error('API request failed:', error); // La solicitud a la API falló: throw error; } }
Sistema de Créditos
2slides utiliza un sistema basado en créditos para la generación de diapositivas. Cada página de diapositiva cuesta 10 créditos.
Reglas de Crédito
- Nuevos Usuarios: Reciben 880 créditos gratuitos al registrarse
- Costo: 10 créditos por página de diapositiva (Fast PPT), 100 créditos por página de diapositiva Nano Banana Pro 1K/2K, 200 créditos por página de diapositiva Nano Banana Pro 4K
- Mínimo: Los usuarios necesitan al menos 10 créditos para iniciar la generación
- Deducción: Los créditos se deducen solo después de una generación exitosa
- Reembolsos: Los créditos se reembolsan si la generación falla
Verificación de Créditos
Puedes verificar tu saldo de créditos a través del panel de control de tu cuenta o examinando la información de créditos en las respuestas de la API.
Compra de Créditos
Se pueden comprar créditos adicionales a través de la página de precios utilizando varios métodos de pago.
Ejemplos
Ejemplo de Flujo de Trabajo Completo
Aquí tienes un ejemplo completo de cómo generar diapositivas utilizando la API de 2slides en Javascript y Python:
const API_KEY = 'sk-2slides-tu-clave-api-aqui'; const BASE_URL = 'https://2slides.com'; async function generateSlides() { try { // Paso 1: Buscar un tema const themeResponse = await fetch( `${BASE_URL}/api/v1/themes/search?query=timeline&limit=5`, { headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' } } ); const themeData = await themeResponse.json(); const themeId = themeData.data.themes[0].id; // Paso 2: Generar diapositivas const generateResponse = await fetch( `${BASE_URL}/api/v1/slides/generate`, { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ userInput: "Create a timeline for our product development: Q1 - Research and planning, Q2 - MVP development, Q3 - Beta testing, Q4 - Public launch", // Crea una línea de tiempo para el desarrollo de nuestro producto: Q1 - Investigación y planificación, Q2 - Desarrollo de MVP, Q3 - Pruebas Beta, Q4 - Lanzamiento público themeId: themeId, responseLanguage: "English", mode: "async" }) } ); const generateData = await generateResponse.json(); const jobId = generateData.data.jobId; // Paso 3: Sondear para la finalización let jobStatus; do { await new Promise(resolve => setTimeout(resolve, 2000)); // Esperar 2 segundos const statusResponse = await fetch( `${BASE_URL}/api/v1/jobs/${jobId}`, { headers: { 'Authorization': `Bearer ${API_KEY}` } } ); jobStatus = await statusResponse.json(); console.log(`Status: ${jobStatus.data.status}`); // Estado: } while (jobStatus.data.status === 'processing' || jobStatus.data.status === 'pending'); // Paso 4: Manejar el resultado if (jobStatus.data.status === 'success') { console.log('Slides generated successfully!'); // ¡Diapositivas generadas con éxito! console.log('Download URL:', jobStatus.data.downloadUrl); // URL de descarga: console.log('Pages generated:', jobStatus.data.slidePageCount); // Páginas generadas: // Descargar el archivo const downloadResponse = await fetch(jobStatus.data.downloadUrl); const blob = await downloadResponse.blob(); // Crear enlace de descarga const url = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'presentation.pptx'; a.click(); window.URL.revokeObjectURL(url); } else { console.error('Generation failed:', jobStatus.data.errorMessage); // La generación falló: } } catch (error) { console.error('Error:', error); // Error: } } // Ejecutar el ejemplo generateSlides();
Ejemplo en Python
import requests import time import json API_KEY = 'sk-2slides-tu-clave-api-aqui' BASE_URL = 'https://2slides.com' def generate_slides(): headers = { 'Authorization': f'Bearer {API_KEY}', 'Content-Type': 'application/json' } try: # Paso 1: Buscar un tema theme_response = requests.get( f'{BASE_URL}/api/v1/themes/search', params={'query': 'roadmap', 'limit': 5}, headers=headers ) theme_data = theme_response.json() theme_id = theme_data['data']['themes'][0]['id'] # Paso 2: Generar diapositivas generate_payload = { 'userInput': 'Create a product roadmap for our mobile app: Phase 1 - Core features, Phase 2 - Advanced features, Phase 3 - AI integration', # Crea una hoja de ruta de producto para nuestra aplicación móvil: Fase 1 - Funciones principales, Fase 2 - Funciones avanzadas, Fase 3 - Integración de IA 'themeId': theme_id, 'responseLanguage': 'English', 'mode': 'async' } generate_response = requests.post( f'{BASE_URL}/api/v1/slides/generate', headers=headers, json=generate_payload ) generate_data = generate_response.json() job_id = generate_data['data']['jobId'] # Paso 3: Sondear para la finalización while True: time.sleep(2) # Esperar 2 segundos status_response = requests.get( f'{BASE_URL}/api/v1/jobs/{job_id}', headers=headers ) status_data = status_response.json() status = status_data['data']['status'] print(f'Status: {status}') # Estado: if status in ['success', 'failed']: break # Paso 4: Manejar el resultado if status == 'success': print('Slides generated successfully!') # ¡Diapositivas generadas con éxito! print(f'Download URL: {status_data["data"]["downloadUrl"]}') # URL de descarga: print(f'Pages generated: {status_data["data"]["slidePageCount"]}') # Páginas generadas: # Descargar el archivo download_response = requests.get(status_data['data']['downloadUrl']) with open('presentation.pptx', 'wb') as f: f.write(download_response.content) print('File downloaded as presentation.pptx') # Archivo descargado como presentation.pptx else: print(f'Generation failed: {status_data["data"]["errorMessage"]}') # La generación falló: except Exception as error: print(f'Error: {error}') # Error: # Ejecutar el ejemplo generate_slides()
Ejemplos cURL
Buscar temas:
curl -X GET "https://2slides.com/api/v1/themes/search?query=timeline&limit=5" \ -H "Authorization: Bearer sk-2slides-tu-clave-api-aqui" \ -H "Content-Type: application/json"
Generar diapositivas:
curl -X POST "https://2slides.com/api/v1/slides/generate" \ -H "Authorization: Bearer sk-2slides-tu-clave-api-aqui" \ -H "Content-Type: application/json" \ -d '{ "userInput": "Create a timeline for our project milestones", // Crea una línea de tiempo para los hitos de nuestro proyecto "themeId": "uuid-del-tema-aqui", "responseLanguage": "English", "mode": "async" }'
Verificar estado del trabajo:
curl -X GET "https://2slides.com/api/v1/jobs/uuid-del-trabajo-aqui" \ -H "Authorization: Bearer sk-2slides-tu-clave-api-aqui"
Manejo de Errores
La API utiliza códigos de estado HTTP estándar y devuelve información detallada de errores en formato JSON.
Respuestas de Error Comunes
400 Solicitud Incorrecta:
{ "success": false, "error": "userInput is required and must be a non-empty string" // userInput es obligatorio y debe ser una cadena no vacía }
401 No Autorizado:
{ "success": false, "error": "Authentication required" // Autenticación requerida }
403 Prohibido:
{ "success": false, "error": "Access denied" // Acceso denegado }
404 No Encontrado:
{ "success": false, "error": "Theme not found" // Tema no encontrado }
429 Demasiadas Solicitudes:
{ "success": false, "error": "Rate limit exceeded" // Límite de tasa excedido }
500 Error Interno del Servidor:
{ "success": false, "error": "Internal server error" // Error interno del servidor }
Mejores Prácticas para el Manejo de Errores
async function handleApiRequest(url, options) { try { const response = await fetch(url, options); const data = await response.json(); if (!response.ok) { switch (response.status) { case 400: throw new Error(`Bad Request: ${data.error}`); // Solicitud Incorrecta: case 401: throw new Error('Authentication failed. Please check your API key.'); // Falló la autenticación. Por favor, verifica tu clave API. case 403: throw new Error('Access denied. You may not have permission for this resource.'); // Acceso denegado. Es posible que no tengas permiso para este recurso. case 404: throw new Error('Resource not found.'); // Recurso no encontrado. case 429: throw new Error('Rate limit exceeded. Please try again later.'); // Límite de tasa excedido. Por favor, inténtalo de nuevo más tarde. case 500: throw new Error('Server error. Please try again later.'); // Error del servidor. Por favor, inténtalo de nuevo más tarde. default: throw new Error(`API Error: ${data.error || 'Unknown error'}`); // Error de la API: || Error desconocido } } return data; } catch (error) { if (error.name === 'TypeError' && error.message.includes('fetch')) { throw new Error('Network error. Please check your internet connection.'); // Error de red. Por favor, verifica tu conexión a internet. } throw error; } }
Mejores Prácticas
1. Seguridad de la Clave API
- Nunca expongas las claves API en código del lado del cliente o repositorios públicos
- Usa variables de entorno para almacenar las claves API de forma segura
- Rota las claves regularmente para una seguridad mejorada
- Monitorea el uso de claves a través del panel de gestión de API
- Almacena las claves de forma segura: Recuerda que 2slides no almacena tus claves API, por lo que debes mantenerlas a salvo
- Haz una copia de seguridad de tus claves: Almacena las claves API en un gestor de contraseñas seguro o en un almacenamiento cifrado
2. Uso Eficiente de la API
- Almacena en caché los resultados de búsqueda de temas para evitar solicitudes repetidas
- Implementa intervalos de sondeo adecuados para las verificaciones de estado del trabajo (2-5 segundos)
- Maneja los límites de tasa con elegancia con retroceso exponencial
- Agrupa operaciones cuando sea posible para reducir las llamadas a la API
3. Manejo de Errores
- Siempre verifica los códigos de estado de la respuesta
- Implementa lógica de reintento para fallos transitorios
- Registra los errores apropiadamente para la depuración
- Proporciona mensajes de error amigables para el usuario
4. Optimización del Rendimiento
- Usa intervalos de sondeo apropiados para evitar solicitudes innecesarias
- Implementa tiempos de espera de solicitud para evitar solicitudes colgadas
- Almacena en caché los datos de uso frecuente como la información del tema
- Monitorea tu uso de créditos para evitar cargos inesperados
5. Pautas de Contenido
- Proporciona una entrada clara y estructurada para una mejor generación de diapositivas
- Usa temas apropiados para tu tipo de contenido
- Especifica el idioma cuando sea necesario para contenido internacional
- Mantén el contenido conciso para un diseño óptimo de las diapositivas
Soporte y Recursos
Documentación y Recursos
- Documentación de la API - Documentación interactiva de la API y entorno de pruebas
- Galería de Plantillas - Explora las plantillas de diapositivas disponibles
- Información de Precios - Paquetes de créditos y precios
- Blog - Últimas actualizaciones y consejos
Obtener Ayuda
- API Playground: Prueba tus llamadas a la API directamente en el navegador en 2slides.com/api
- Panel de Control de la Cuenta: Gestiona tu uso de créditos en 2slides.com/account
- Soporte: Contacta al soporte a través del sitio web principal
Comunidad y Actualizaciones
- Actualizaciones de Funciones: Mantente al día con las nuevas funciones y mejoras
- Biblioteca de Plantillas: Adiciones regulares de nuevas plantillas profesionales
- Mejoras de la API: Mejoras continuas en el rendimiento y las funciones de la API
Conclusión
La API de 2slides proporciona una forma potente y flexible de generar presentaciones profesionales de forma programática. Con su conjunto completo de funciones, manejo robusto de errores y una extensa biblioteca de plantillas, puedes integrar la generación de diapositivas impulsada por IA en cualquier aplicación o flujo de trabajo.
¡Empieza a construir presentaciones increíbles hoy mismo con la API de 2slides! Visita 2slides.com/api para obtener tu clave API y comenzar a crear.
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free