13 KiB
2slides API Reference
Complete API documentation for 2slides slide generation service.
Base URL
https://2slides.com/api/v1
Authentication
All API requests require authentication using a Bearer token in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Get your API key from: https://2slides.com/api
Store the API key in environment variable: SLIDES_2SLIDES_API_KEY
Endpoints
1. Generate Slides
Generate slides from user input with optional theme selection.
Endpoint: POST /slides/generate
Headers:
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Request Body:
{
"userInput": "string (required) - Content to convert into slides",
"themeId": "string (required) - Theme ID from themes/search",
"responseLanguage": "string (optional, default: 'Auto') - Language code",
"mode": "string (optional, default: 'sync') - 'sync' or 'async'"
}
Supported Languages: Auto, English, Simplified Chinese (简体中文), Traditional Chinese (繁體中文), Spanish, Arabic, Portuguese, Indonesian, Japanese, Russian, Hindi, French, German, Vietnamese, Turkish, Polish, Italian, Korean
Response (sync mode):
{
"slideUrl": "https://2slides.com/slides/...",
"pdfUrl": "https://2slides.com/slides/.../download",
"status": "completed"
}
Response (async mode):
{
"jobId": "abc123...",
"status": "pending"
}
Notes:
- Sync mode: Waits for generation to complete and returns the result directly (may take 30-60 seconds)
- Async mode: Returns immediately with a jobId to poll for results using
/jobs/{jobId}
2. Create Like This (Reference Image)
Generate slides matching a reference image style (Nano Banana Pro mode).
Endpoint: POST /slides/create-like-this
Headers:
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Request Body:
{
"userInput": "string (required) - Content for slides",
"referenceImageUrl": "string (required) - URL or base64 of reference image",
"responseLanguage": "string (optional, default: 'Auto')",
"aspectRatio": "string (optional, default: '16:9') - width:height format",
"resolution": "string (optional, default: '2K') - '1K', '2K', or '4K'",
"page": "number (optional, default: 1) - 0 for auto-detection, max 100",
"contentDetail": "string (optional, default: 'concise') - 'concise' or 'standard'"
}
Resolution Options:
- 1K: Standard quality
- 2K: High quality (default)
- 4K: Ultra high quality
Content Detail Options:
- concise: Brief, keyword-focused content
- standard: Comprehensive, detailed content
Page Parameter:
- Set to
0to enable automatic slide count detection - Set to specific number (1-100) for exact slide count
Response:
{
"success": true,
"data": {
"jobId": "608f8997-5207-480c-9ff2-d2475cba6b9d",
"status": "success",
"message": "Successfully generated N slides",
"downloadUrl": "https://...pdf...",
"jobUrl": "https://2slides.com/workspace?jobId=...",
"createdAt": 1770108913384,
"updatedAt": 1770108934015,
"slidePageCount": 3,
"successCount": 3,
"failedCount": 0
}
}
Response Fields:
success: Boolean indicating if request succeededdata.jobId: Unique job identifierdata.status: Generation status ("success" or "failed")data.message: Human-readable status messagedata.downloadUrl: Direct PDF download URL (temporary, expires in 1 hour)data.jobUrl: View slides in 2slides workspacedata.slidePageCount: Number of slides generateddata.successCount: Number of successfully generated slidesdata.failedCount: Number of failed slides
Notes:
- This endpoint always runs synchronously
- Processing time: ~30 seconds per page
- Typical response time: 30-60 seconds for 1-2 pages
- Automatically generates PDF
- Matches the style and design of the reference image
- Timeout recommendation: Set timeout to
max(120, pages * 40)seconds
3. Create PDF Slides
Generate custom-designed slides from text with optional design specifications.
Endpoint: POST /slides/create-pdf-slides
Headers:
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Request Body:
{
"userInput": "string (required) - Content for slides",
"responseLanguage": "string (optional, default: 'Auto')",
"aspectRatio": "string (optional, default: '16:9') - width:height format",
"resolution": "string (optional, default: '2K') - '1K', '2K', or '4K'",
"page": "number (optional, default: 1) - 0 for auto-detection, max 100",
"contentDetail": "string (optional, default: 'concise') - 'concise' or 'standard'",
"designSpec": "string (optional) - Design specifications (e.g., 'modern minimalist')"
}
Response:
{
"success": true,
"data": {
"jobId": "608f8997-5207-480c-9ff2-d2475cba6b9d",
"status": "success",
"message": "Successfully generated N slides",
"downloadUrl": "https://...pdf...",
"jobUrl": "https://2slides.com/workspace?jobId=...",
"slidePageCount": 3,
"successCount": 3,
"failedCount": 0
}
}
Notes:
- Similar to create-like-this but without reference image
- Uses AI to generate custom design based on content and design specs
- Same credit costs: 100 credits/page (1K/2K), 200 credits/page (4K)
- Processing time: ~30 seconds per page
- Always runs synchronously
4. Generate Narration
Add AI voice narration to slides in single or multi-speaker mode.
Endpoint: POST /slides/generate-narration
Headers:
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Request Body:
{
"jobId": "string (required) - Job ID from slide generation (UUID format)",
"language": "string (optional, default: 'Auto') - Language for narration",
"voice": "string (optional, default: 'Puck') - Voice name from available voices",
"multiSpeaker": "boolean (optional, default: false) - Enable multi-speaker mode"
}
Available Voices (30 total): Puck, Aoede, Charon, Kore, Fenrir, Phoebe, Asteria, Luna, Stella, Theia, Helios, Atlas, Clio, Melpomene, Calliope, Erato, Euterpe, Polyhymnia, Terpsichore, Thalia, Urania, Zeus, Hera, Poseidon, Athena, Apollo, Artemis, Ares, Aphrodite, Hephaestus
Response:
{
"success": true,
"jobId": "abc123...",
"status": "pending",
"message": "Narration generation started"
}
Notes:
- Job must be completed before adding narration
- Job ID must be UUID format for Nano Banana jobs
- Cost: 210 credits per page (10 for text, 200 for audio)
- Runs asynchronously - poll with /jobs/{jobId}
- Multi-speaker mode uses different voices for variety
- 19 languages supported plus auto-detection
5. Download Slides Pages and Voices
Export slides as PNG files and voice narrations as WAV files in a ZIP archive.
Endpoint: POST /slides/download-slides-pages-voices
Headers:
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Request Body:
{
"jobId": "string (required) - Job ID from slide generation"
}
Response:
{
"success": true,
"downloadUrl": "https://...zip...",
"message": "Download ready"
}
Archive Contents:
- Pages: PNG files for each slide
- Voices: WAV audio files (if narration generated)
- Transcripts: Text files with narration transcripts
Notes:
- Cost: Completely FREE (no credits used)
- Download URL valid for 1 hour only
- High quality PNG export
- WAV format for audio
- Includes all slides and voice files
6. Search Themes
Search for available presentation themes.
Endpoint: GET /themes/search
Headers:
Authorization: Bearer YOUR_API_KEY
Query Parameters:
query: string (required) - Search keyword
limit: number (optional, default: 20, max: 100)
Response:
{
"themes": [
{
"id": "theme_id_123",
"name": "Professional Blue",
"description": "Clean professional theme with blue accents",
"previewUrl": "https://..."
}
],
"count": 1
}
7. Get Job Status
Retrieve the status and results of an async generation job.
Endpoint: GET /jobs/{jobId}
Headers:
Authorization: Bearer YOUR_API_KEY
Path Parameters:
jobId: string (required) - Job ID from async generation
Response:
{
"jobId": "abc123",
"status": "completed|pending|failed",
"slideUrl": "https://2slides.com/slides/...",
"pdfUrl": "https://2slides.com/slides/.../download",
"narrationStatus": "completed|pending|not_started",
"error": "error message if failed"
}
Status Values:
pending: Job is still processingcompleted: Slides are readyfailed: Generation failed (see error field)
Narration Status Values:
not_started: No narration requestedpending: Narration is being generatedcompleted: Narration is ready
Polling Recommendation: Poll every 20-30 seconds to avoid server strain
Error Handling
All endpoints return standard HTTP status codes:
200 OK: Request succeeded400 Bad Request: Invalid parameters401 Unauthorized: Missing or invalid API key404 Not Found: Resource not found429 Too Many Requests: Rate limit exceeded500 Internal Server Error: Server error
Error Response Format:
{
"error": "Error message",
"code": "ERROR_CODE"
}
Common Error Codes:
INSUFFICIENT_CREDITS: Account has insufficient creditsINVALID_JOB_ID: Job ID not found or invalid formatRATE_LIMIT_EXCEEDED: Too many requests (see rate limits below)JOB_NOT_COMPLETED: Job must complete before adding narrationINVALID_UUID: Job ID must be UUID format (for Nano Banana jobs)
Credit Costs
- Fast PPT (generate endpoint): 10 credits per page
- Nano Banana 1K/2K (create-like-this, create-pdf-slides): 100 credits per page
- Nano Banana 4K: 200 credits per page
- Voice Narration: 210 credits per page (10 for text, 200 for audio)
- Download Export: FREE (no credits)
Purchasing Credits
2slides operates on a pay-as-you-go credit system with no subscriptions.
Credit Packages (Current promotion: up to 20% off):
| Credits | Price | Cost per 1,000 | Savings |
|---|---|---|---|
| 2,000 | $5.00 | $2.50 | — |
| 4,000 | $9.50 | $2.38 | 5% |
| 10,000 | $22.50 | $2.25 | 10% |
| 20,000 | $42.50 | $2.13 | 15% |
| 40,000 | $80.00 | $2.00 | 20% |
Key Benefits:
- New users get 500 free credits (~50 Fast PPT pages)
- Credits never expire
- No monthly subscriptions
- 3-day refund window
- Purchase at: https://2slides.com/pricing
Example Costs:
- 10-slide Fast PPT presentation: 100 credits ($0.25 with largest package)
- 10-slide Nano Banana 2K presentation: 1,000 credits ($2.00 with largest package)
- 10-slide presentation with narration: 2,100 credits ($4.20 with largest package)
Rate Limits
Different endpoints have different rate limits:
- Fast PPT (generate): 10 requests per minute
- Nano Banana (create-like-this, create-pdf-slides): 6 requests per minute
Best Practices:
- Poll async jobs every 20-30 seconds to avoid server strain
- If rate limited (429 error), wait before retrying
- Check your plan's rate limits at https://2slides.com/api
Download URL Expiration
All download URLs (PDF, ZIP archives) remain valid for 1 hour only. Download files promptly after generation.
Best Practices
Content Formatting
For best results, structure content clearly:
Title: Introduction to AI
Section 1: Machine Learning
- Definition
- Key concepts
- Applications
Section 2: Deep Learning
- Neural networks
- Training process
- Use cases
Choosing Sync vs Async Mode
- Use sync for quick generations (<5 slides)
- Use async for larger presentations (>5 slides)
- Use async when integrating into workflows that can poll
Theme Selection
- Search themes with relevant keywords
- Preview themes if URLs available
- Use theme ID in generation request
- Leave theme blank for default styling
Language Support
Specify responseLanguage to generate slides in different languages:
"Auto"- Automatic language detection (default)"English"- English"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"- 한국어