Pluslide LogoPluslide

Overview

Generate beautiful, customizable PPTX presentations through Pluslide's REST API. Get instant download URLs with smart compression and responsive layouts.

Key Features

FeatureDescription
Instant ResponseSingle API call returns download URL directly
Smart CompressionFiles optimized up to 70% smaller
No-Code EditorVisual template design with drag-and-drop
Responsive LayoutsCSS-like flexbox for dynamic content
High ScalabilityHandle 10,000+ concurrent requests

Example Request

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());    }}

Getting Started

  1. Create an account at pluslide.com
  2. Design templates using the no-code editor
  3. Generate API key from your dashboard
  4. Make API calls to generate presentations

Ready to start? Follow the Quick Start Guide.

On this page