---
title: "Inspect any PPTX — read-only Deck Quality Report (free)"
method: POST
path: "/v1/inspect"
tags: ["inspect"]
---

# Inspect any PPTX — read-only Deck Quality Report (free)

`POST /v1/inspect`

## Request

- Base URL: `https://api.slideforge.dev`
- URL: `https://api.slideforge.dev/v1/inspect`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Structural quality report for ANY deck — a prior SlideForge job, an https URL, or uploaded bytes. Deterministic checks (no LLM): clipped/overflowing text via real font metrics, tiny fonts, off-canvas objects, text collisions, WCAG contrast, image-only slides — with honest coverage for what inherited theme formatting hides. Free; ≤25 MB; first 50 slides.

## Request body

- InspectRequest: Exactly ONE source.
  - `job_id` string, nullable: A prior SlideForge slide/deck job to inspect
  - `pptx_url` string, nullable: HTTPS URL to a .pptx
  - `pptx_base64` string, nullable: Base64-encoded .pptx (≤25 MB decoded)

## Response `200`

The Deck Quality Report (status: clean | review | failed)

- InspectResponse
  - `status` string, required
  - `slides_total` integer, required
  - `canvas` object, required
  - `summary` object, required
  - `slides` object[], required
  - `truncated` boolean, nullable
  - `note` string, nullable
  - `source` string, required
  - `latency_ms` integer, required
  - `cost` number
  - `billed` boolean

## Other responses

- `400`: Bad source (none/multiple provided, invalid base64, non-https URL)
- `413`: File exceeds the 25 MB inspect cap
- `422`: Unreadable file (corrupt, encrypted, or legacy .ppt)
- `429`: Rate limit exceeded

---

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