Import a v2 Presentation
POST
https://api.slidespeak.co/api/v2/presentation/import
Imports an existing PowerPoint (.pptx) file into your SlideSpeak account. The request is
synchronous — the response contains the presentation_id directly, ready to use with
/presentation/translate.
Headers
Section titled “Headers” Content-Type: string
multipart/form-data
X-API-Key: string
The API key to use for the request.
Body Parameters
Section titled “Body Parameters” file: file
The PowerPoint file to import. Must be a .pptx file of at most 100 MB.
Code Examples
Section titled “Code Examples”curl -X POST "https://api.slidespeak.co/api/v2/presentation/import" -H "X-API-Key: YOUR_API_KEY" -F "file=@presentation.pptx"import { readFile } from 'node:fs/promises';
const form = new FormData();form.append('file', new Blob([await readFile('presentation.pptx')]), 'presentation.pptx');
const response = await fetch('https://api.slidespeak.co/api/v2/presentation/import', { method: 'POST', headers: { 'X-API-Key': 'YOUR_API_KEY' }, body: form,});
const data = await response.json();console.log(data.presentation_id);import requests
url = "https://api.slidespeak.co/api/v2/presentation/import"headers = {"X-API-Key": "YOUR_API_KEY"}
with open("presentation.pptx", "rb") as f: response = requests.post(url, headers=headers, files={"file": ("presentation.pptx", f)})
print(response.json()["presentation_id"])<?phprequire 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://api.slidespeak.co/api/v2/presentation/import', [ 'headers' => [ 'X-API-Key' => 'YOUR_API_KEY' ], 'multipart' => [ [ 'name' => 'file', 'contents' => fopen('presentation.pptx', 'r'), 'filename' => 'presentation.pptx' ] ]]);
$data = json_decode($response->getBody(), true);echo $data['presentation_id'];Response
Section titled “Response”{ "presentation_id": "cmgt32cut0000h3ovex8dbzmn"}{ "detail": "File must be a .pptx file"}{ "detail": "Max file size (100 MB) exceeded. Please contact support for help."}Validation
Section titled “Validation”fileis required and must be a non-empty.pptxfile.- Files larger than 100 MB are rejected with a 413.
- The imported presentation belongs to the user that owns the API key.