2Slides Logo
Tutorial de la API de 2slides - Guía Completa para la Generación de Presentaciones con IA
2Slides Team
17 min read

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

Image

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.

  1. Diapositivas de Línea de Tiempo - Perfectas para líneas de tiempo de proyectos y eventos históricos
  2. Diapositivas de Hoja de Ruta - Ideales para hojas de ruta de productos y planificación de proyectos
  3. 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

  1. Configuración de la Cuenta: Crea una cuenta en 2slides.com
  2. Clave API: Genera una clave API desde tu página de gestión de API
  3. 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

  1. Obtén tu clave API desde la página de gestión de API
  2. 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
  3. 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.
  4. Verifica el estado del trabajo hasta su finalización; se proporcionará la URL de descarga de las diapositivas generadas.
  5. Descarga tu presentación usando la URL de descarga proporcionada.

Autenticación

Image

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/generate

Encabezados:

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:

  • userInput
    (obligatorio): El contenido para el que deseas generar diapositivas
  • themeId
    (obligatorio): ID del tema a usar para la generación de diapositivas. Puede ser:
    • Temas públicos de la galería de plantillas
    • Tus propios temas personalizados subidos (accesibles a través de tu cuenta)
  • responseLanguage
    (opcional): Idioma para las diapositivas generadas. Usa "Auto" para detección automática
  • mode
    (opcional): Llamada síncrona (sync) o asíncrona (async), "sync" es el valor predeterminado

Idiomas Disponibles:

  • Auto
    - Detección automática del idioma a partir de la entrada (predeterminado)
  • English
    - Inglés
  • Simplified Chinese
    - 简体中文
  • Traditional Chinese
    - 繁體中文
  • Spanish
    - Español
  • Arabic
    - العربية
  • Portuguese
    - Português
  • Indonesian
    - Bahasa Indonesia
  • Japanese
    - 日本語
  • Russian
    - Русский
  • Hindi
    - हिंदी
  • French
    - Français
  • German
    - Deutsch
  • Vietnamese
    - Tiếng Việt
  • Turkish
    - Türkçe
  • Polish
    - Polski
  • Italian
    - Italiano
  • 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-this

Encabezados:

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:

  • userInput
    (obligatorio): El contenido para el que deseas generar diapositivas
  • referenceImageUrl
    (obligatorio): URL de la imagen de referencia para seguir el estilo de diseño. Soporta:
    • URLs HTTP/HTTPS
    • URLs de datos Base64 (data:image/...)
  • responseLanguage
    (opcional): Idioma para las diapositivas generadas. Usa "Auto" para detección automática (predeterminado: "Auto")
  • aspectRatio
    (opcional): Relación de aspecto para las diapositivas. Formato: "ancho:alto" (predeterminado: "16:9")
  • resolution
    (opcional): Resolución para las imágenes de las diapositivas. Opciones: "1K", "2K", "4K" (predeterminado: "2K")
  • page
    (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.
  • contentDetail
    (opcional): Nivel de detalle del contenido para las diapositivas. Opciones: "concise" (breve, centrado en palabras clave) o "standard" (exhaustivo, detallado). Predeterminado: "concise".

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:

  • success
    : Todas las diapositivas generadas con éxito, el PDF está disponible
  • partial
    : Algunas diapositivas no se generaron
  • failed
    : Todas las diapositivas no se generaron

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/search

Encabezados:

Authorization: Bearer sk-2slides-tu-clave-api-aqui

Parámetros de Consulta:

  • query
    (obligatorio): Palabra clave para buscar en el nombre, descripción y etiquetas del tema
  • limit
    (opcional): Número máximo de resultados (1-100, predeterminado 20)

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:

EndpointVentana de TiempoMáx. SolicitudesDescripción
/api/v1/slides/generate
1 minuto6 solicitudesEndpoint principal de generación
/api/v1/slides/create-like-this
1 minuto6 solicitudesCrear diapositivas a partir de imagen de referencia
/api/v1/jobs
1 minuto10 solicitudesVerificación del estado del trabajo
/api/v1/themes/search
1 minuto30 solicitudesBú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 Requests
con estos encabezados:

HTTP/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

Obtener Ayuda

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