Public beta · live · no API key required

PDF to Markdown,
built for agents.

Fast, deterministic extraction for text-layer PDFs. No vision model. No signup. One request.

curl -s https://api.marklipi.com/convert -F "file=@statement.pdf"
The conversion

Your agent reads Markdown, not PDF soup.

statement.pdf → statement.md
PDF text layer

ACCOUNT STATEMENT

Page 1 of 4 · Generated 30 Jun 2026

02 JunDirect credit — rent1,950.00

05 JunCouncil rates-412.30

11 JunPlumbing — invoice 8821-280.00

…positioned glyphs, no structure…

markdown out

# Account Statement

| Date | Description | Amount |

| --- | --- | --- |

| 02 Jun | Direct credit — rent | 1,950.00 |

| 05 Jun | Council rates | -412.30 |

| 11 Jun | Plumbing — invoice 8821 | -280.00 |

≈ 60–90% fewer tokens than sending the PDF straight to the model
Agent-first, not agent-compatible

Designed for the caller that never reads a marketing page.

Zero config

No API key for basic use. No SDK required. POST a file, get JSON: {markdown, filename, characters}.

Stateless by design

Files are processed in memory and discarded. No sessions, no storage, nothing to leak. Uploads only — your client fetches the PDF, marklipi converts it.

Deterministic output

Same PDF in, same Markdown out. No vision-model dice rolls on documents that already contain their own text.

#

Machine-readable everything

llms.txt, docs.md, OpenAPI 3.1 — and this whole site ships an agent mode. Flip the toggle above.

How it works

One request, three guarantees.

01

Upload bytes

multipart/form-data, field file, up to 25 MB. Your client fetches the PDF; marklipi only ever sees bytes.

02

Deterministic extraction

The existing text layer is parsed in memory — headings, paragraphs, tables. No OCR pass, no hallucinated cells.

03

Markdown + metadata

Structured JSON back in one round trip. Pipe markdown straight into your context window.

Honest scope

Great at text-layer PDFs. Useless at scans. On purpose.

Send these

Digital-native, selectable text
  • Bank & card statements
  • Ownership & title records
  • Contracts and leases
  • Invoices, reports, tables
Rule of thumb: if you can select the text in a PDF viewer, marklipi converts it.

Don't send these

Image-only — returns 422, fast
  • Scanned documents
  • Photos of paperwork
  • Handwriting
  • Anything needing OCR
You get a clean 422 in milliseconds instead of a confident hallucination — route those to a vision pipeline.
Pricing

Free stays free. Pay only to raise the ceiling.

Free
$0 forever

10 conversions/min, 100/day per IP. No key, no signup.

Start converting
Pro
$19 per month

25,000 conversions/day and priority support.

Talk to us

Paid keys are issued by email within 24 hours of purchase. The free tier never shrinks.

Your next PDF is one request away.

Free while in public beta — 10 conversions a minute, 100 a day, no key. Need more? Say hello.

# marklipi — agent mode
raw
# marklipi

PDF → Markdown conversion API, built for agents. Fast, deterministic extraction for text-layer PDFs — bank statements, ownership records, contracts, tables. No vision model, no OCR theater: if the text layer exists, marklipi extracts it cleanly and cheaply.

## Quickstart

```bash
curl -s https://api.marklipi.com/convert -F "file=@statement.pdf"
```

```json
{
  "markdown": "# Account Statement\n\n| Date | Description | Amount |\n...",
  "filename": "statement.pdf",
  "characters": 18342
}
```

No API key. No signup. One request.

## Why agents pick marklipi

- **Zero config** — no auth for basic use; upload bytes, get JSON.
- **Stateless** — files are processed in memory and discarded. Nothing stored, ever.
- **Token economics** — Markdown costs 60–90% fewer tokens than feeding the raw PDF to an LLM.
- **Machine-readable everything** — [llms.txt](https://marklipi.com/llms.txt), [docs.md](https://marklipi.com/docs.md), [OpenAPI](https://api.marklipi.com/openapi.json).
- **Uploads only** — there is no URL parameter; your client fetches, marklipi converts.

## Endpoints

| Method | Path       | Purpose                                  |
| ------ | ---------- | ---------------------------------------- |
| POST   | `/convert` | PDF in (multipart `file`), Markdown out. |
| GET    | `/health`  | Liveness + version.                      |

Base URL `https://api.marklipi.com` · max 25 MB · rate limits 10/min, 100/day per IP · errors as JSON `{"detail": "..."}`.

## Pricing

The free tier stays free — no key, no signup. Paid tiers lift the daily limit:

| Tier               | Price       | Limits                                                  |
| ------------------ | ----------- | ------------------------------------------------------- |
| Free               | $0          | 10/min, 100/day per IP. No key.                         |
| Founding Supporter | $5 one-time | 1,000 conversions/day for life. First 20 buyers only.   |
| Pro                | $19/month   | 25,000 conversions/day, priority support.               |

To buy: email [hello@dovey.com.au](mailto:hello@dovey.com.au?subject=Founding%20Supporter) with the tier name. Paid keys are issued by email within 24 hours of purchase. Details: [marklipi.com/#pricing](https://marklipi.com/#pricing).

## Scope (honest)

- **Great:** digital-native PDFs with selectable text.
- **Not for:** scans, photos, image-only PDFs — those return `422`; use an OCR pipeline instead.

## Resources

- [Free in-browser converter](https://marklipi.com/pdf-to-markdown) — try it on a PDF, no signup
- [Full API reference (Markdown)](https://marklipi.com/docs.md)
- [Full API reference (web)](https://marklipi.com/docs)
- [llms.txt](https://marklipi.com/llms.txt) · [llms-full.txt](https://marklipi.com/llms-full.txt)
- [OpenAPI 3.1 spec](https://api.marklipi.com/openapi.json)
- Contact: [hello@dovey.com.au](mailto:hello@dovey.com.au)
machine endpoints /llms.txt /llms-full.txt /docs.md /index.md openapi.json