Quick Start
Generate your first PPTX presentation in 5 minutes. Step-by-step guide to set up API authentication, create templates, and make your first API call.
This guide walks you through creating your first presentation with Pluslide in under 5 minutes.
Prerequisites
- A Pluslide account (free tier available)
- Any way to call APIs (your application code, curl, Postman, etc.)
Step 1: Create an Account
Visit pluslide.com and sign up. If you're already logged in, you're ready to go.
When you create a new account, you'll be guided through the entire setup process. However, if you prefer to set things up manually, you can skip the onboarding and follow the steps below.
Step 2: Create a Project and Template
2.1 Create a New Project
- Navigate to the Projects page
- Click "New Project"
- Enter a project name (e.g., "My First Project")
- Note your Project ID - you'll need this for API calls
For your first project, we recommend choosing Smart Generator. It will automatically complete the template setup (steps 2.2-2.4). You can always create a blank project later to build templates from scratch.
2.2 Create a Template
- Open your new project
- Click "New Template"
- Set the Template Key (e.g.,
title-slide) - The editor will open with a blank slide
2.3 Add Fields
- Click "Add Field" in the editor
- Select "Text" as the field type
- Set the Field Key to
title - Position and style the text field
- Repeat to add a
subtitlefield
2.4 Save Your Template
Click "Save" to save your template. Your template is now ready for API calls.
Step 3: Generate an API Key
- Go to API Tokens
- Click "Add Token"
- Enter a name (e.g., "Development")
- Copy the token secret immediately - it's only shown once
Store your API key securely. Never commit it to version control.
Step 4: Make Your First API Call
Replace YOUR_API_KEY with your API key and YOUR_PROJECT_ID with your project ID. Update the slides array with your own content - each slide should reference a template key and provide values for the fields you defined.
curl -X POST "https://api.pluslide.com/v1/project/export" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "projectId": "YOUR_PROJECT_ID", "presentation": { "slideList": [ { "templateKey": "title-slide", "content": { "title": "Hello, Pluslide!", "subtitle": "My first presentation" } } ] } }'const response = await fetch('https://api.pluslide.com/v1/project/export', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ projectId: 'YOUR_PROJECT_ID', presentation: { slideList: [ { templateKey: 'title-slide', content: { title: 'Hello, Pluslide!', subtitle: 'My first presentation' } } ] } })});const { url } = await response.json();console.log('Download URL:', url);import requestsresponse = requests.post( 'https://api.pluslide.com/v1/project/export', headers={ 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, json={ 'projectId': 'YOUR_PROJECT_ID', 'presentation': { 'slideList': [ { 'templateKey': 'title-slide', 'content': { 'title': 'Hello, Pluslide!', 'subtitle': 'My first presentation' } } ] } })data = response.json()print('Download URL:', data['url'])<?php$ch = curl_init('https://api.pluslide.com/v1/project/export');curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => json_encode([ 'projectId' => 'YOUR_PROJECT_ID', 'presentation' => [ 'slideList' => [ [ 'templateKey' => 'title-slide', 'content' => [ 'title' => 'Hello, Pluslide!', 'subtitle' => 'My first presentation' ] ] ] ] ])]);$response = curl_exec($ch);curl_close($ch);$data = json_decode($response, true);echo 'Download URL: ' . $data['url'];package mainimport ( "bytes" "encoding/json" "fmt" "net/http")func main() { payload := map[string]interface{}{ "projectId": "YOUR_PROJECT_ID", "presentation": map[string]interface{}{ "slideList": []map[string]interface{}{ { "templateKey": "title-slide", "content": map[string]string{ "title": "Hello, Pluslide!", "subtitle": "My first presentation", }, }, }, }, } body, _ := json.Marshal(payload) req, _ := http.NewRequest("POST", "https://api.pluslide.com/v1/project/export", bytes.NewBuffer(body)) req.Header.Set("Authorization", "Bearer YOUR_API_KEY") req.Header.Set("Content-Type", "application/json") client := &http.Client{} resp, _ := client.Do(req) defer resp.Body.Close() var result map[string]interface{} json.NewDecoder(resp.Body).Decode(&result) fmt.Println("Download URL:", result["url"])}require 'net/http'require 'json'require 'uri'uri = URI('https://api.pluslide.com/v1/project/export')http = Net::HTTP.new(uri.host, uri.port)http.use_ssl = truerequest = Net::HTTP::Post.new(uri)request['Authorization'] = 'Bearer YOUR_API_KEY'request['Content-Type'] = 'application/json'request.body = { projectId: 'YOUR_PROJECT_ID', presentation: { slideList: [ { templateKey: 'title-slide', content: { title: 'Hello, Pluslide!', subtitle: 'My first presentation' } } ] }}.to_jsonresponse = http.request(request)data = JSON.parse(response.body)puts "Download URL: #{data['url']}"import java.net.http.*;import java.net.URI;public class Main { public static void main(String[] args) throws Exception { String json = """ { "projectId": "YOUR_PROJECT_ID", "presentation": { "slideList": [ { "templateKey": "title-slide", "content": { "title": "Hello, Pluslide!", "subtitle": "My first presentation" } } ] } } """; HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.pluslide.com/v1/project/export")) .header("Authorization", "Bearer YOUR_API_KEY") .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(json)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println("Response: " + response.body()); }}Step 5: Download Your Presentation
The API response contains a direct download URL:
{
"url": "https://assets.pluslide.com/presentations/abc123.pptx"
}Open this URL in a browser or use it in your application to download the PPTX file.
Testing with the Playground
Not sure about your field keys or content structure? Use the Playground to:
- Select any template from your projects
- Preview with sample data
- Generate test presentations
- Copy the exact request body for API calls
What is Pluslide
Pluslide is a B2B SaaS platform with a credit-based PPTX generation API and no-code visual editor for easy presentation automation.
How It Works
Learn Pluslide's three-step workflow - design templates in the visual editor, call the API with your data, and get instant PPTX download URLs.
