Tools

PPT to JSON API

Submit any PowerPoint file. Get back slide text as searchable chunks, metadata, slide count, and a thumbnail as structured JSON.

Try it below:

FILEDrop a file or click to upload

Production-ready

Private by design

Security-first

Scalable

Production-ready

Private by design

Security-first

Scalable

Production-ready

Private by design

Security-first

Scalable

Turn presentations into structured JSON

Upload a PPTX file or submit a URL, get structured JSON back.

{
  "kind": "document",
  "name": "Sales Deck — Q3 2026",
  "state": "completed",
  "extraction": {
    "common": {
      "mimeType": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
      "size": 3240000,
      "thumbnail": "https://cdn.exabase.io/...",
      "chunkCount": 24
    },
    "document": {
      "pages": 24,
      "author": "Sales Team",
      "title": "Sales Deck — Q3 2026",
      "creationDate": "2026-07-18T00:00:00.000Z",
      "pdfRender": { "url": "https://cdn.exabase.io/..." }
    }
  }
}

What is Exabase's PPT to JSON API?

Submit a PowerPoint file to the Exabase Extract API and get structured JSON back. The response includes the presentation title, author, slide count, creation date, MIME type, file size, a CDN-hosted thumbnail (the first slide), a rendered PDF version, and the text content from all slides split into searchable chunks. The API handles the parsing. No python-pptx, no LibreOffice, no slide-processing pipeline on your end.

This is the same POST /v2/extract endpoint used for all content types. Submit the PPTX, poll for completion (or use a webhook), then read the extraction data or fetch chunks.

What you get back

The response includes the presentation metadata (title, author, slide count, creation date), a CDN-hosted thumbnail of the first slide, a rendered PDF version of the full deck, and the text from all slides as searchable chunks. Each chunk has a sequence number, the extracted text, and a page number (corresponding to the slide). The API reference has the complete response schema.

One multi-modal API

The same POST /v2/extract endpoint handles every content type Exabase supports. For PPTX files, it returns slide text as chunks with page numbers and presentation metadata. For DOCX, it returns document text and metadata. For PDFs, it also supports structured field extraction for recognised document types. For audio and video, it generates transcripts with timestamps. For images, it runs OCR.

The submission flow is identical across all types: one endpoint, one SDK method, one webhook configuration. The Extract docs cover each content type in detail.

What you can build with it

The structured chunks map slide content to slide numbers. Feed them into a RAG pipeline so your agent can reference specific slides. Build a searchable presentation library where users find the right deck and the right slide by searching the content. Index sales decks, training materials, and internal presentations and make them searchable across your organisation.

Store extracted presentations as Resources in a Base and the content becomes searchable through Deep Search at the slide level. Workers can process new uploads on a schedule, keeping your library indexed without manual work.

Beyond extraction

The Extract API returns more than text chunks. You get a CDN-hosted thumbnail of the title slide, a rendered PDF of the full deck, and standard document metadata. Store the output as a Resource and it's searchable through Deep Search immediately. The rendered PDF lets you display the presentation in your UI without client-side rendering.

How do I use it?

  1. Get your API key

Free, no credit card:

Sign up at exabase.io and copy your API key from the dashboard.

  1. Submit a PowerPoint file

Using the SDK (Node.js):

import { Exabase } from "@exabase/sdk";
import { createReadStream } from "fs";

const api = new Exabase({
  apiKey: process.env.EXABASE_API_KEY,
});

const job = await api.extract.createFromFile({
  file: createReadStream("./sales-deck-q3.pptx"),
  name: "Sales Deck — Q3 2026",
});

console.log(job.id);    // extraction job id
console.log(job.state); // "pending"
  1. Get structured JSON back

Poll the job until state reaches completed, or skip polling entirely with webhooks.

const result = await api.extract.get({ jobId: job.id });

if (result.state === "completed") {
  console.log(result.extraction?.document?.title);
  console.log(result.extraction?.document?.author);
  console.log(result.extraction?.document?.pages); // slide count
  console.log(result.extraction?.common?.chunkCount);
  console.log(result.extraction?.common?.thumbnail);
  console.log(result.extraction?.document?.pdfRender?.url);
}

One API call. No python-pptx, no LibreOffice, no slide parser.

What you get back

Field

Type

Description

state

string

completed or failed

kind

string

document

[...].mimeType

string

application/vnd.openxmlformats-officedocument.presentationml.presentation

[...].size

number

File size in bytes

[...].thumbnail

string

CDN-hosted thumbnail of the title slide

[...].chunkCount

number

Number of text chunks

[...].pages

number

Slide count

[...].author

string

Presentation author

[...].title

string

Presentation title

[...].creationDate

string

Creation

[...].pdfRender.url

string

CDN-hosted rendered PDF of the full deck

Text chunks are retrieved separately via GET /v2/extract/{jobId}/chunks.

Each chunk includes a sequence number, the extracted text, and a page number.

API quick reference

Endpoint

Method

Description

/v2/extract

POST

Submit extraction job

/v2/extract

GET

List extraction jobs

/v2/extract/{jobId}

GET

Poll for result

/v2/extract/{jobId}/chunks

GET

Fetch text chunks

/v2/extract-settings

PUT

Configure webhook

Auth: X-Api-Key header on all requests.

File retention: Stored files are retained for 1 day from job creation. Download or copy anything you need before they expire.

Need file extraction or full page content?

Exabase offers a full set of tools to extract content from any media, document or website.

All your data extraction needs in one place.

Why Exabase

Use cases

FAQs

What is Exabase?

Exabase is infrastructure for AI agents. It gives your agents memory, versioned file storage, AI deep search, and context automation through a set of APIs. Store what your agent learns, search inside any content type, and keep knowledge bases current automatically. Built for production use. Give your agent precise context and cut your token spend by up to 81%.

Who uses Exabase?

Developers and teams building AI agents, copilots, and RAG applications. If your agent needs to remember things between sessions, store and retrieve files, search across documents and media, or stay up to date without manual maintenance, Exabase handles that infrastructure so you can focus on your product.

Does it handle .ppt files (old PowerPoint format)?

The API is optimised for .pptx (Office Open XML). Older .ppt files (binary format) may be supported but .pptx is recommended for best results.

Does it extract text from slide images and charts?

The API extracts text from text boxes, titles, and body placeholders. Text embedded in images or rendered as part of charts is not extracted unless it's in a text element. The rendered PDF preserves the full visual layout.

Does it extract speaker notes?

Speaker notes are included in the text extraction alongside slide content.

Can I submit a URL instead of uploading a file?

Yes. Pass a url field in the request body pointing to a publicly accessible PPTX file.

Do I have to poll for results?

No. Configure a webhook to receive the result on completion.

What happens if extraction fails?

Call the reprocess endpoint to retry without re-uploading.

How long are files retained?

Stored files are retained for 1 day from job creation, then permanently deleted. Download or copy anything you need before the retention window expires.

Is there an SDK?

Yes. The @exabase/sdk package for Node.js/TypeScript handles file streaming, job polling, and chunk retrieval. Install with npm install @exabase/sdk. Or call the REST API directly from any language.

What other file types does Extract support?

PDFs, DOCX, EPUBs, images (with OCR), audio (with transcription), video (with transcription), and web pages. The same POST /v2/extract endpoint handles all of them.

Deciding?

Ask your favourite AI about Exabase:

Cut your token spend and give your agent precise context.

Get started in minutes.

Cut your token spend and give your agent precise context.

Get started in minutes.