canonical: https://jentic.com/apis/exactpdf.com/exactpdf

# ExactPDF API

The ExactPDF API inspects PDFs and turns them into structured data for document workflows. It reads page count and metadata, extracts plain text, and converts a PDF to structured Markdown or to per-page JSON. It also compresses PDFs against a target size, merges and compresses several files, and converts images into a compressed PDF, with an asynchronous workflow for direct uploads. Capability discovery is public, while execution endpoints spend API credits.

## For AI agents

Inspect PDFs, extract text, convert PDFs to structured Markdown or JSON, and compress or merge files. Authenticated with a bearer API key; capability discovery is public.

## Scope

Does not handle PDF e-signing, form filling, or long-term storage. Use for inspecting, extracting from, converting, and compressing PDFs only.

## Capabilities

- Read a PDF's page count and metadata
- Extract plain text from a PDF
- Convert a PDF to structured Markdown or to per-page JSON
- Compress a PDF and optionally report whether it fits a target size
- Merge several PDFs and compress the combined file
- Convert images to a PDF and compress the output

## Use cases

### Document Text and Data Extraction

A pipeline needs machine-readable content out of PDFs. The ExactPDF API extracts plain text, converts a PDF to structured Markdown that preserves headings and lists, and returns per-page JSON with metadata, so downstream steps can index, summarize, or feed the content to a model.

Example prompt: Read a PDF's page count with the pdf-info operation, then extract its text and convert it to structured Markdown

### PDF Assembly and Compression

A team produces a single compact PDF from scattered inputs. The ExactPDF API merges several PDFs and compresses the result, converts a set of images into a compressed PDF, and can report whether a compressed file meets a target size, so attachments stay within upload limits.

Example prompt: Merge several PDFs and compress the combined file, then check whether the output meets the requested target size

### AI Agent Document Processing via Jentic

An AI agent processes documents through Jentic without holding the ExactPDF key itself. It searches by intent, receives the matching operation and its input schema, and runs extraction, conversion, and compression with the credential injected at run time, so a PDF-to-data step fits into a larger workflow.

Example prompt: Search Jentic for 'extract text from a PDF', load the extract-text operation schema, and run it with Jentic-managed credentials

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/api/v1/extract-text` | Extract plain text from a PDF |
| POST | `/api/v1/pdf-structured-markdown` | Convert a PDF to structured Markdown |
| POST | `/api/v1/pdf-to-json` | Extract PDF metadata and per-page text as JSON |
| POST | `/api/v1/pdf-info` | Read PDF page count and metadata |
| POST | `/api/v1/compress` | Compress a PDF and report target-size fit |
| POST | `/api/v1/merge-compress` | Merge PDFs and compress the result |
| GET | `/api/v1/capabilities` | Discover document workflow limits |

## Key resources

- **Inspection and Extraction** — Inspect and extract from PDFs via `/api/v1/pdf-info`, `/api/v1/extract-text`, `/api/v1/pdf-structured-markdown`, and `/api/v1/pdf-to-json`
- **Compression and Assembly** — Compress and assemble files via `/api/v1/compress`, `/api/v1/merge-compress`, and `/api/v1/images-to-pdf-compress`
- **Workflows and Account** — Run asynchronous jobs and read credit balance via `/api/v1/workflow-jobs` and `/api/v1/account`

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 65 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 79 / 100
  - Developer Experience & Jentic Compatibility: 64 / 100
  - AI-Readiness & Agent Experience: 46 / 100
  - Agent Usability: 94 / 100
  - Security: 60 / 100
  - AI Discoverability: 80 / 100
- **View full report:** https://jentic.com/apis/exactpdf.com/exactpdf/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring ExactPDF by hand means carrying its bearer key, tracking credit balances, and polling the asynchronous workflow for direct uploads yourself. Through Jentic you install once, import ExactPDF from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** ExactPDF carries the file in the request body, so rules bound which operations your agent may call, not which file. Limit the agent to the operations it needs, such as text extraction and PDF-to-Markdown conversion, so compression, merging, and the account operation are not included unless you add them.
- **Credential handling:** Your ExactPDF key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'extract text from a PDF' or 'convert a PDF to Markdown', and Jentic returns the matching ExactPDF operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **CloudConvert API** — General file conversion across many formats, including PDF
- **PDF.co API** — Broad PDF toolkit for parsing, editing, and generating PDFs
- **Epublys API** — Convert and manipulate EPUB and PDF ebooks

## FAQ

### What authentication does the ExactPDF API use?

The ExactPDF API authenticates with a bearer API key in the Authorization header per its OpenAPI spec, and the capability-discovery operation is public and free. Through Jentic the key is stored encrypted by your own Jentic One instance and injected at execution time, so it never reaches the agent.

### Can I convert a PDF to Markdown or JSON with the ExactPDF API?

Yes. The ExactPDF API has a structured-Markdown operation that preserves document structure and a pdf-to-json operation that returns metadata and per-page text. An agent can pick the format that best feeds its next step, such as Markdown for summarization or JSON for indexing.

### What are the rate limits for the ExactPDF API?

The OpenAPI spec does not specify numeric rate limits for the ExactPDF API; execution endpoints spend API credits instead. The account operation reports the credit balance and the capabilities operation reports workflow limits, so an agent can check both before running paid calls.

### How do I extract text from a PDF with the ExactPDF API through Jentic?

Search Jentic for 'extract text from a PDF' and it returns the ExactPDF extract-text operation with its input schema. Load the schema, send the PDF, and the key is injected at run time. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Can I limit what my agent is allowed to do with the ExactPDF API?

Yes. ExactPDF carries the file in the request body, so a rule bounds which operations your agent may call rather than which file. Limit it to the operations it needs, such as text extraction and conversion, and leave the asynchronous workflow and account operations out unless you add them.

### Is there an ExactPDF API MCP server?

You don't need an MCP server to give your agent the ExactPDF API. Jentic connects it directly from the API Directory: import it, store your key once, and your agent calls the extraction and conversion operations it needs without a separate server to install.
