PAIM PAPYR ES, EN, FR, DE, IT, PT, 繁中, NL, PL, CA, EU, GL, SV, DA, NB, FI, CS, SK, RO, HU, EL, TR, JA, KO

The PAPYR API

The same tools as the site, from your code: send a file over HTTP and get the result back. No storage: we process and delete, as always.

Closed beta, on purpose

The API opens gradually by design: per-account keys (rotatable and revocable), burst limits, a monthly quota and input limits. It's included in the Pro plan; if you'd like to try it or need volume, write to us and we'll set you up.

Request access

Authentication

Every request carries your key in a header. The key is shown once at creation; keep it in a secrets manager. You can revoke it at any time.

Authorization: Bearer papyr_sk_…

Start in a minute

curl -X POST https://www.aim-papyr.ai/api/v1/pdf/merge \
  -H "Authorization: Bearer papyr_sk_YOUR_KEY" \
  -F "files=@report.pdf" -F "files=@annex.pdf" \
  -o merged.pdf

Scan to searchable PDF bash

curl -X POST https://www.aim-papyr.ai/api/v1/pdf/ocr \
  -H "Authorization: Bearer YOUR_KEY" \
  -F "file=@factura.pdf" -F "lang=spa" \
  -o factura-buscable.pdf

Extract tables to CSV python

import requests

r = requests.post(
    "https://www.aim-papyr.ai/api/v1/pdf/to-csv",
    headers={"Authorization": "Bearer YOUR_KEY"},
    files={"file": open("facturas.pdf", "rb")},
    data={"sep": ";"}, timeout=120)
r.raise_for_status()
open("facturas.csv", "wb").write(r.content)
print(r.headers["X-Monthly-Used"], "/", r.headers["X-Monthly-Limit"])

PDF to Word from the browser javascript

const fd = new FormData();
fd.append("file", archivo);        // File o Blob

const r = await fetch("https://www.aim-papyr.ai/api/v1/pdf/to-word", {
  method: "POST",
  headers: { Authorization: "Bearer YOUR_KEY" },
  body: fd,
});
if (!r.ok) throw new Error((await r.json()).detail);
const docx = await r.blob();

Endpoints (v1)

GET/api/v1/meValidates your key; returns plan, usage and limits.
POST/api/v1/convert/to-pdfOffice → PDF — file
POST/api/v1/img/compressCompress image — file + quality
POST/api/v1/img/convertConvert image — file + fmt, quality
POST/api/v1/pdf/compressCompress — file
POST/api/v1/pdf/mergeMerge — files[]
POST/api/v1/pdf/ocrOCR — file + lang
POST/api/v1/pdf/page-numbersPage numbers — file + position, start
POST/api/v1/pdf/protectProtect — file + password
POST/api/v1/pdf/rotateRotate — file + degrees
POST/api/v1/pdf/splitSplit — file + cada
POST/api/v1/pdf/to-csvPDF → CSV — file + sep
POST/api/v1/pdf/to-imagesPDF → images — file + dpi, fmt
POST/api/v1/pdf/to-textPDF → Text — file
POST/api/v1/pdf/to-wordPDF → Word — file + lang
POST/api/v1/pdf/unlockUnlock — file + password
POST/api/v1/pdf/watermarkWatermark — file + text

Limits — clear, and in the response

Your data, as always

Processed on EU servers for your operation only, and discarded with the response. The API relaxes nothing in the site's privacy policy.