---
name: paperoffice-ai-api
description: Integrate the PaperOffice AI REST API (OCR, IDP extraction, DMS documents, PDF, e-signatures, anonymization, workflows, translation, voice, image, geo, VAT and currency data). Use when code calls api.paperoffice.ai or when document automation from PaperOffice is added to an application.
---

# PaperOffice AI API

Release `R20261001.1040` · 345 documented endpoints · Base URL `https://api.paperoffice.ai/latest`

## Before writing code

1. Fetch [llms.txt](https://api.paperoffice.ai/latest/docs/llms.txt) and read it completely (under 100,000 characters: authentication, request bodies, job workflow, errors, billing, and one link per endpoint).
2. For every endpoint you call, open its linked page `https://api.paperoffice.ai/latest/docs/endpoints/{slug}.md` (parameters, body type, responses, execution).
3. Single-file context: [llms-full.txt](https://api.paperoffice.ai/latest/docs/llms-full.txt) (about 411 KB). Typed clients: [openapi.json](https://api.paperoffice.ai/latest/docs/openapi.json).

## Rules

- Use only documented endpoints, fields and values. Never invent paths, parameters or response fields.
- Auth: `Authorization: Bearer <key>`. `po_sk_` and `po_ut_` stay on the server (environment variable, e.g. `PAPEROFFICE_API_KEY`), never in browser code or commits. Browser code uses a `po_pk_` Publishable Key; scripts that use `po_pk_` outside a browser must send the allowlisted `Origin` header.
- Mutations are `POST` with action paths (`POST /documents/document-delete`), not HTTP `DELETE`.
- Jobs (`POST /job/add/{pipeline}`, `POST /job/add/workflow`): `client_wait=true` (default) returns the result inline. HTTP 202 is not an error — poll `GET /job/get/{job_id}` every 5–10 s until `job_status` is `completed`, then read `result ?? job_result`. `processing_lane` selects the Start-SLA; do not send `priority`.
- The segment after `/job/add/` is the pipeline slug in `handler___command` form (triple underscore). `po-*` API reference IDs are documentation IDs, not pipeline slugs.
- Errors: `status: "error"` with `code` and `message`. Retry 429 (`Retry-After`) and 5xx with exponential backoff; fix 4xx requests instead of retrying.
- Destructive calls need the exact target confirmation (`confirm_name`, `confirm_count`, `confirm_pofid`).
- Billing: every billable product call costs at least 5 credits; read `_billing.job.credits_billed`.

## Sections (Document AI first)

- Document AI — OCR & IDP
- Workflow AI — Job Management
- Document AI — DMS
- Document AI — AI Document Operations
- Document AI — PDF
- Document AI — E-Signatures
- Document AI — Anonymization
- Document AI — Workflow Orchestration
- Document AI — HITL
- Document AI — Tasks & Substitutes
- Document AI — Import & Migration
- Document AI — Storage Mounts
- Document AI — Webhooks
- Media AI — Translation
- Media AI — Voice
- Media AI — Image Studio
- Analytics AI — Analytics & BI
- Analytics AI — Knowledge Graph
- Relations AI — CRM
- Data AI — Validation & VAT
- Data AI — Currency Exchange
- Data AI — Geocoding
- Data AI — IP Geolocation
- Data AI — Weather
- Data AI — Map Tiles
- Security AI — Fingerprint
- Security AI — Fake Email
- Documentation & Discovery

MCP clients connect to `https://mcp.paperoffice.ai/dms` instead (OAuth 2.1 or `po_ut_`); details in `llms-full.txt` → MCP Server.
n8n, Make, and Zapier call the same REST API (HTTP Request, HTTP, or a custom request) or connect an MCP client to `https://mcp.paperoffice.ai/dms` (OAuth 2.1 or `po_ut_` / `po_gt_`; `po_sk_` and `po_pk_` are rejected). Details: [llms.txt](https://api.paperoffice.ai/latest/docs/llms.txt) → Using PaperOffice from n8n, Make, and Zapier.

*Generated 2026-10-01 from live API documentation (release `R20261001.1040`).*