---
name: prezentit
description: Generate beautiful AI-powered presentations instantly. Create professional slides with custom themes, visual designs, and speaker notes—all through natural language commands.
homepage: https://prezentit.net
emoji: "👽"
metadata:
clawdbot:
emoji: "👽"
skillKey: prezentit
homepage: https://prezentit.net
requires:
config:
- PREZENTIT_API_KEY
config:
requiredEnv:
- name: PREZENTIT_API_KEY
description: Your Prezentit API key (starts with pk_). Get one free at https://prezentit.net/api-keys
example: |
export PREZENTIT_API_KEY=pk_your_api_key_here
permissions:
network:
- https://prezentit.net/api/v1/*
fileSystem: none
env:
reads:
- PREZENTIT_API_KEY
writes: none
---
# Prezentit - AI Presentation Generator
**Base URL**: `https://prezentit.net/api/v1`
**Auth Header**: `Authorization: Bearer {PREZENTIT_API_KEY}`
> **This skill requires a `PREZENTIT_API_KEY` environment variable.** Get a free API key at https://prezentit.net/api-keys — new accounts include 100 free credits.
## ⚠️ CRITICAL FOR AI AGENTS
**ALWAYS use `"stream": false`** in generation requests! Without this, you get streaming responses that cause issues.
---
## Complete Workflow (FOLLOW THIS ORDER)
### Step 1: Check Credits First
GET /api/v1/me/credits Authorization: Bearer {PREZENTIT_API_KEY}
**Response:**{ "credits": 100, "pricing": { "outlinePerSlide": 5, "designPerSlide": 10, "estimatedCostPerSlide": 15 }, "_ai": { "canGenerate": true, "maxSlidesAffordable": 6, "nextSteps": ["..."] } }
→ If `_ai.canGenerate` is false, direct user to https://prezentit.net/buy-credits
→ Use `_ai.maxSlidesAffordable` to know the limit
### Step 2: Choose a Theme
**Option A — Browse all available themes and pick by ID:**
GET /api/v1/themes Authorization: Bearer {PREZENTIT_API_KEY}
**Response:**{ "themes": [ { "id": "corporate_blue", "name": "Corporate Blue", "category": "Corporate & Professional" }, { "id": "nature_earth", "name": "Nature Earth", "category": "Nature & Organic" } ], "categories": ["Corporate & Professional", "Creative & Visual", "Data & Analytics", ...], "_ai": { "totalThemes": 20, "popularThemes": ["corporate_blue", "midnight_tech", "nature_earth", "storyteller", "data_dashboard"] } }
→ Use the exact `id` value in your generation request
**Option B — Search for a theme by keyword:**
GET /api/v1/themes?search=minimalist Authorization: Bearer {PREZENTIT_API_KEY}
→ Returns best matches ranked by relevance. Use the `id` from `bestMatch`.
**Option C — Describe a custom style (no theme ID needed):**
Use the `customDesignPrompt` parameter instead. See the Custom Design Prompt section below.
### Step 3: Generate Presentation
POST /api/v1/presentations/generate Authorization: Bearer {PREZENTIT_API_KEY} Content-Type: application/json
{ "topic": "User's topic here", "slideCount": 5, "theme": "corporate_blue", "stream": false }
**⏱️ IMPORTANT: Generation takes 1-3 minutes. The API will return when complete.**
**Full Request Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `topic` | string | Yes* | Presentation topic (2-500 chars). Required if no `outline`. `prompt` is also accepted as an alias. |
| `outline` | object | No | Pre-built outline (saves ~33% credits). See Outline section below. |
| `slideCount` | number | No | Number of slides (3-50, default: 5). Ignored if outline provided. |
| `theme` | string | No | Theme ID from `GET /api/v1/themes`. Use the exact `id` value. |
| `customDesignPrompt` | string | No | Custom visual style description (see below). Overrides theme ID. |
| `details` | string | No | Additional context about the presentation content. |
| `confirmPartial` | boolean | No | Set `true` to confirm partial generation when credits are limited. |
| `stream` | boolean | **ALWAYS false** | **AI agents must always set `stream: false`**. |
*`topic` is required even when providing an `outline` (used for presentation metadata).
### Step 4: Get the Result
**Success Response:**{ "presentationId": "uuid-here", "viewUrl": "https://prezentit.net/view/abc123", "creditsUsed": 75, "remainingCredits": 25 }
→ Share the `viewUrl` with the user. That's their presentation!
### Step 5: Download (Optional)
GET /api/v1/presentations/{presentationId}/download?format=pptx Authorization: Bearer {PREZENTIT_API_KEY}
**Formats:** `pptx` (PowerPoint), `pdf`, `json` (raw data)
---
## Pricing
| Scenario | Cost per Slide | Example (5 slides) |
|----------|----------------|-------------------|
| Auto-generate outline | 15 credits | 75 credits |
| Provide your own outline | 10 credits | 50 credits (~33% savings!) |
- New accounts get **100 free credits**
- Buy more at: https://prezentit.net/buy-credits
---
## Theme Selection
### How to Pick a Theme
1. **Fetch the theme list**: `GET /api/v1/themes` — returns all available themes with `id`, `name`, and `category`
2. **Pick the best match** for the user's topic and style preference
3. **Pass the `id`** in the generation request as the `theme` parameter
You can also search: `GET /api/v1/themes?search=KEYWORD` or filter by category: `GET /api/v1/themes?category=CATEGORY_NAME`
### Custom Design Prompt (Skip the Theme List)
If no existing theme fits, use `customDesignPrompt` to describe a fully custom visual style. **This must be a detailed, structured description** — not just a color palette.
**REQUIRED structure for customDesignPrompt** (include ALL of these sections):
COLOR SYSTEM: Primary [hex], secondary [hex], accent [hex], background [hex/gradient], text colors for headings and body.
TYPOGRAPHY: Heading font style [e.g., bold geometric sans-serif like Montserrat], body font style [e.g., clean humanist sans-serif like Open Sans], size hierarchy [large/medium/small], weight contrast.
LAYOUT SYSTEM: Slide structure [e.g., asymmetric split with 60/40 content-to-visual ratio], alignment [left-aligned text with right visual panel], spacing philosophy [generous whitespace vs. dense information], grid approach.
VISUAL ELEMENTS: Background treatment [solid/gradient/textured/patterned], decorative motifs [geometric shapes, organic curves, line art, etc.], image style [photography with overlay, illustrations, icons, data visualizations], border/frame treatments.
MOOD & TONE: Overall aesthetic [e.g., corporate authority, playful creativity, academic rigor, tech-forward], energy level [calm/dynamic/bold], intended audience impression.
**Example — Good customDesignPrompt:**
{ "topic": "AI in Healthcare", "customDesignPrompt": "COLOR SYSTEM: Primary deep medical blue (#1B3A5C), secondary teal (#2A9D8F), accent warm coral (#E76F51) for callouts, backgrounds alternate between clean white (#FAFAFA) and very subtle blue-gray (#F0F4F8), heading text dark navy, body text #333333. TYPOGRAPHY: Headings in bold geometric sans-serif (Montserrat style), body in clean humanist sans (Source Sans style), strong size hierarchy with 48pt titles, 24pt subtitles, 16pt body. LAYOUT SYSTEM: Asymmetric layouts with 60/40 content-to-visual split, left-aligned text blocks with right-side data visualizations or medical imagery, generous padding (60px margins), clean grid structure. VISUAL ELEMENTS: Subtle DNA helix watermark in corners at 5% opacity, thin teal accent lines as section dividers, medical iconography (stethoscope, heartbeat, molecular structures) as small decorative elements, photography with blue-tinted overlay for full-bleed backgrounds. MOOD & TONE: Professional medical authority balanced with approachable warmth, calm and trustworthy, designed for hospital executives and medical professionals.", "stream": false }
**Example — Bad customDesignPrompt (TOO VAGUE, will produce generic results):**
"blue and white medical theme"
---
## Creating Outlines (Save ~33% Credits)
Providing your own outline saves credits and gives you full control over content.
### Outline Structure
The outline is an object with a `slides` array. Each slide has these fields:
{ "topic": "Your Presentation Topic", "outline": { "slides": [ { "title": "Slide Title Here", "mainIdea": "A clear sentence explaining the core message of this slide and what the audience should take away from it.", "talkingPoints": [ "First key point with enough detail to be meaningful (at least 10 characters)", "Second key point expanding on the main idea", "Third key point providing supporting evidence or examples" ], "visualGuide": "Detailed description of the visual layout: background style, image placement, icon suggestions, chart types, color emphasis areas, and decorative elements for this specific slide." } ] }, "stream": false }
### Slide Field Reference
| Field | Required | Constraints | Description |
|-------|----------|-------------|-------------|
| `title` | Yes | 3-100 chars, 1-15 words | Slide heading |
| `mainIdea` | Yes | 10-500 chars, 3-75 words | Core message of the slide |
| `talkingPoints` | Yes | 2-7 items, each 10-300 chars (3-50 words) | Key points to cover |
| `visualGuide` | Yes | 20-500 chars, 5-75 words | Visual design instructions for this slide |
### Validation Rules
**Overall:**
- Minimum **3 slides**, maximum **50 slides**
- `topic` is still required (used for presentation metadata)
- All four fields (`title`, `mainIdea`, `talkingPoints`, `visualGuide`) are required per slide
**The API returns detailed error messages with `fix` suggestions if validation fails.**
### Complete Example
{ "topic": "Introduction to Machine Learning", "outline": { "slides": [ { "title": "Introduction to Machine Learning", "mainIdea": "Machine learning is transforming how businesses operate by enabling systems to learn from data and improve automatically without explicit programming.", "talkingPoints": [ "Machine learning is a subset of artificial intelligence focused on pattern recognition", "ML systems improve through experience rather than manual rule-writing", "Global ML market projected to reach $209 billion by 2029" ], "visualGuide": "Bold title slide with futuristic tech aesthetic. Dark gradient background transitioning from deep navy to midnight blue. Large bold title text centered with a subtle neural network node pattern behind it. Accent glow in electric blue." }, { "title": "How Machine Learning Works", "mainIdea": "Machine learning algorithms are categorized into supervised, unsupervised, and reinforcement learning based on how they learn from data.", "talkingPoints": [ "Supervised learning uses labeled data for classification and regression tasks", "Unsupervised learning discovers hidden patterns in unlabeled data through clustering", "Reinforcement learning optimizes decisions through trial, error, and reward signals" ], "visualGuide": "Three distinct visual sections showing each ML type with representative icons: labeled data pairs for supervised, clustered groups for unsupervised, and a game-like reward loop for reinforcement. Use consistent color coding with blue, green, and purple." }, { "title": "Business Applications", "mainIdea": "Companies across industries are leveraging machine learning for competitive advantage in customer experience, operations, and decision-making.", "talkingPoints": [ "Customer churn prediction reduces revenue loss by identifying at-risk accounts early", "Fraud detection systems process millions of transactions in real-time", "Personalized recommendation engines drive significant increases in engagement and sales" ], "visualGuide": "Clean content layout with left-aligned text and right-side icons or mini-charts for each application. Use a white background with subtle grid lines. Each talking point gets a small illustrative icon (shield for fraud, chart for prediction, user icon for personalization)." }, { "title": "Getting Started with ML", "mainIdea": "Successful ML adoption requires starting with clear use cases, quality data, and the right team rather than jumping straight to complex algorithms.", "talkingPoints": [ "Identify high-impact use cases where prediction or automation adds clear value", "Invest in clean, well-structured data before selecting algorithms", "Build or partner with ML expertise and start with proven frameworks" ], "visualGuide": "Conclusion slide with a numbered roadmap or step layout. Three large numbered circles (1, 2, 3) each containing a step. Background with subtle upward-pointing arrows suggesting progress. Call-to-action feel with bold accent color on the final step." } ] }, "theme": "midnight_tech", "stream": false }
### Get Schema Programmatically
GET /api/v1/docs/outline-format Authorization: Bearer {PREZENTIT_API_KEY}
Returns the full JSON schema with all constraints and example slides.
---
## Error Handling
### Error Response Format
{ "error": "Human readable message", "code": "ERROR_CODE", "fix": "Guidance on how to resolve this" }
### Common Errors & Solutions
| HTTP | Code | Message | Solution |
|------|------|---------|----------|
| 400 | `MISSING_TOPIC` | Topic or prompt is required | Provide a `topic` or `prompt` field |
| 400 | `INVALID_OUTLINE` | Outline validation failed | Check outline structure — response includes detailed `validationErrors` with `fix` per field |
| 400 | `INVALID_SLIDE_COUNT` | Slide count must be 3-50 | Adjust `slideCount` to be between 3 and 50 |
| 401 | `UNAUTHORIZED` | Invalid or missing API key | Check `Authorization: Bearer pk_...` header |
| 402 | `INSUFFICIENT_CREDITS` | Not enough credits | Response includes `required`, `available`, and `purchaseUrl` |
| 404 | `PRESENTATION_NOT_FOUND` | Presentation doesn't exist | Verify presentation ID |
| 409 | `DUPLICATE_REQUEST` | Same request within cooldown | Wait and retry — don't resend identical requests |
| 409 | `GENERATION_IN_PROGRESS` | Already generating | Check status at `GET /api/v1/me/generation/status` or cancel at `POST /api/v1/me/generation/cancel` |
| 429 | `RATE_LIMITED` | Too many requests | Wait `retryAfter` seconds before retrying |
| 500 | `GENERATION_FAILED` | Internal error | Retry once, then contact support |
| 503 | `SERVICE_UNAVAILABLE` | System overloaded | Retry after `retryAfter` seconds |
### Handling Insufficient Credits
{ "error": "Insufficient credits", "code": "INSUFFICIENT_CREDITS", "required": 75, "available": 50, "purchaseUrl": "https://prezentit.net/buy-credits" }
**AI Agent Response:** "You need 75 credits but only have 50. Purchase more at https://prezentit.net/buy-credits"
### Handling Partial Generation
If the user has some credits but not enough for full generation, the API returns a `confirmation_required` response with options. Read the `_ai.options` array and present them to the user. To proceed with partial generation, resend the request with `"confirmPartial": true`.
### Handling Rate Limits
{ "error": "Too many requests", "code": "RATE_LIMITED", "retryAfter": 30 }
**AI Agent Action:** Wait `retryAfter` seconds before retrying.
---
## Additional Endpoints
### Check Generation Status
GET /api/v1/me/generation/status Authorization: Bearer {PREZENTIT_API_KEY}
Returns current progress if a generation is running: stage, percentage, designs completed.
### Cancel Active Generation
POST /api/v1/me/generation/cancel Authorization: Bearer {PREZENTIT_API_KEY}
Cancels the current generation in progress.
### Get Presentation Details
GET /api/v1/presentations/{presentationId} Authorization: Bearer {PREZENTIT_API_KEY}
### List User's Presentations
GET /api/v1/me/presentations Authorization: Bearer {PREZENTIT_API_KEY}
Optional: `?limit=20&offset=0`
### List All Themes
GET /api/v1/themes Authorization: Bearer {PREZENTIT_API_KEY}
Optional query params:
- `?search=keyword` — Filter by name
- `?category=corporate` — Filter by category
---
## Anti-Spam Rules
| Rule | Limit | What Happens |
|------|-------|--------------|
| Duplicate detection | ~30 seconds | 409 error for identical requests |
| Rate limit | Varies by key | 429 error with `retryAfter` |
| One generation at a time | 1 concurrent | 409 `GENERATION_IN_PROGRESS` error |
**Best Practice:** Always check for `retryAfter` in error responses and wait that duration.
---
## Quick Copy-Paste Examples
### Minimal Generation
POST /api/v1/presentations/generate
{ "topic": "Introduction to Climate Change", "stream": false }
### With Theme (Fetch ID First)
- GET /api/v1/themes → find the theme ID
- POST /api/v1/presentations/generate
{ "topic": "Q4 Sales Report", "slideCount": 8, "theme": "corporate_blue", "stream": false }
### With Custom Design Prompt
{ "topic": "Startup Pitch Deck", "slideCount": 10, "customDesignPrompt": "COLOR SYSTEM: Primary electric indigo (#4F46E5), secondary cyan (#06B6D4), accent hot pink (#EC4899), background dark charcoal (#111827) with subtle radial gradient to #1F2937, heading text white, body text #D1D5DB. TYPOGRAPHY: Headings in extra-bold wide-tracking sans-serif (Inter/Poppins style), body in medium-weight clean sans, dramatic size contrast with 56pt titles and 18pt body. LAYOUT SYSTEM: Full-bleed dark slides with asymmetric content placement, bold left-aligned headlines with supporting text below, large visual areas for mockups and charts, 80px margins. VISUAL ELEMENTS: Subtle dot grid pattern at 3% opacity on backgrounds, neon-glow accent lines, rounded corners on all containers, glassmorphism cards with frosted backgrounds for data callouts, gradient mesh blobs as decorative elements. MOOD & TONE: Bold tech-startup energy, confident and forward-looking, designed to impress venture capital investors.", "stream": false }
### With Outline (~33% Savings)
{ "topic": "Weekly Team Sync", "outline": { "slides": [ { "title": "Weekly Team Sync", "mainIdea": "Kickoff slide for the January 15, 2024 weekly team synchronization meeting covering accomplishments and upcoming goals.", "talkingPoints": [ "Welcome the team and set the agenda for today's sync", "Cover last week's wins and this week's priorities" ], "visualGuide": "Clean title slide with company colors. Bold centered title, date as subtitle below. Simple professional background with subtle geometric pattern." }, { "title": "Last Week's Accomplishments", "mainIdea": "The team delivered significant progress across feature development, bug resolution, and performance optimization last week.", "talkingPoints": [ "Feature X completed and merged into the main branch ahead of schedule", "Resolved three critical production bugs affecting checkout flow", "Database query optimization improved page load times by twenty percent" ], "visualGuide": "Content slide with checkmark icons next to each accomplishment. Green accent color for completed items. Left-aligned text with small celebration graphic in the corner." }, { "title": "This Week's Goals", "mainIdea": "This week focuses on the beta launch, initial user testing, and completing documentation before the public release.", "talkingPoints": [ "Launch beta version to internal testers by Wednesday", "Conduct user testing sessions with five pilot customers", "Complete API documentation and developer onboarding guide" ], "visualGuide": "Forward-looking slide with numbered steps or timeline visual. Blue accent color for upcoming items. Arrow or roadmap graphic showing progression from current state to launch." }, { "title": "Open Discussion", "mainIdea": "Time for team questions, blockers, and any items not covered in the structured agenda.", "talkingPoints": [ "Open floor for questions and discussion of blockers", "Next sync meeting scheduled for Monday at ten AM" ], "visualGuide": "Simple closing slide with question mark icon or discussion bubble graphic. Calm colors, minimal text, large font for the key info. Meeting time prominently displayed." } ] }, "theme": "corporate_blue", "stream": false }
---
## Getting Help
- **Website**: https://prezentit.net
- **Buy Credits**: https://prezentit.net/buy-credits
- **Support**: https://prezentit.net/support
- **API Key Management**: https://prezentit.net/api-keys