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.
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 accessEvery 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_…
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
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.pdfimport 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"])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();
| GET | /api/v1/me | Validates your key; returns plan, usage and limits. |
| POST | /api/v1/convert/to-pdf | Office → PDF — file |
| POST | /api/v1/img/compress | Compress image — file + quality |
| POST | /api/v1/img/convert | Convert image — file + fmt, quality |
| POST | /api/v1/pdf/compress | Compress — file |
| POST | /api/v1/pdf/merge | Merge — files[] |
| POST | /api/v1/pdf/ocr | OCR — file + lang |
| POST | /api/v1/pdf/page-numbers | Page numbers — file + position, start |
| POST | /api/v1/pdf/protect | Protect — file + password |
| POST | /api/v1/pdf/rotate | Rotate — file + degrees |
| POST | /api/v1/pdf/split | Split — file + cada |
| POST | /api/v1/pdf/to-csv | PDF → CSV — file + sep |
| POST | /api/v1/pdf/to-images | PDF → images — file + dpi, fmt |
| POST | /api/v1/pdf/to-text | PDF → Text — file |
| POST | /api/v1/pdf/to-word | PDF → Word — file + lang |
| POST | /api/v1/pdf/unlock | Unlock — file + password |
| POST | /api/v1/pdf/watermark | Watermark — file + text |
Processed on EU servers for your operation only, and discarded with the response. The API relaxes nothing in the site's privacy policy.