---
title: "Create a presentation from a PDF (legacy — use /ppt-from-text)"
method: POST
path: "/ppt_from_pdf"
tags: ["Presentations"]
deprecated: true
---

# Create a presentation from a PDF (legacy — use /ppt-from-text)

`POST /ppt_from_pdf`

## Request

- Base URL: `https://api.magicslides.app/public/api`
- URL: `https://api.magicslides.app/public/api/ppt_from_pdf`
- Auth: none required

> **Deprecated.**

## Request body

- object
  - `pdfURL` string, uri, required: Public PDF URL.
  - `apiKey` string
  - `model` 'gpt-4' | 'gpt-3.5'
  - `email` string, email: Account email (legacy auth, use apiKey instead).
  - `accessId` string: Account access ID from /dashboard/settings (legacy auth, use apiKey instead).
  - `template` string: Presentation template style.
  - `language` string: Target language (ISO code).
  - `slideCount` integer: Number of slides to generate.
  - `aiImages` boolean: Generate AI images.
  - `imageForEachSlide` boolean: Place an image on every slide.
  - `googleImage` boolean: Use Google Images instead of AI images.
  - `googleText` boolean: Enrich content with Google search.
  - `presentationFor` string: Target audience, e.g. "investors".
  - `watermark` Watermark: Optional image watermark placed on every slide.
    - `width` string
    - `height` string
    - `brandURL` string, uri
    - `position` 'TopLeft' | 'TopRight' | 'BottomLeft' | 'BottomRight'

## Response `200`

Presentation generated.

- PresentationResult
  - `status` 'success' | 'failed', required
  - `success` boolean
  - `message` string
  - `inputType` 'topic' | 'summary' | 'youtube' | 'website' | 'pdf' | 'docx'
  - `url` string, uri, required: Download URL of the generated PPTX.
  - `pdfUrl` string, uri: Download URL of the PDF export.
  - `pptId` string: Presentation ID — open at https://www.magicslides.app/ppt/{pptId}.
  - `json` object: Slide-by-slide content as JSON.
  - `metadata` object
    - `slideCount` integer
    - `generatedAt` string, date-time
    - `fileSize` integer: Bytes.

## Other responses

- `400`: Invalid or missing parameters. Note: legacy endpoints answer missing parameters with 404, not 400.
- `401`: Missing or invalid apiKey / accessId.
- `404`: Missing required parameters (legacy behaviour) — body `{ status: "failed", message: "Something is missing..." }`.
- `429`: Plan rate limit exceeded. Back off and retry later.

---

[API](https://skmtc.dev/magicslides/apis/magicslides-api.md) · [All operations](https://skmtc.dev/magicslides/apis/magicslides-api/llms.txt) · [OpenAPI document](https://skmtc.dev/magicslides/apis/magicslides-api/revisions/bb1173e74e5f?raw)
