# PaperOffice AI API > AI-powered document automation: OCR, IDP, PDF, e-signatures, translation, voice, workflows. Comprehensive REST API with native MCP server support — organized by category below. ## Quick Start - **Base URL:** `https://api.paperoffice.ai/latest` - **Auth:** `Authorization: Bearer po_sk_xxx` (System Key) or `Bearer po_ut_xxx` (User Token) - **Landing page:** https://paperoffice.ai/developer/llms (marketing + examples) - **Postman Collection:** [https://api.paperoffice.ai/latest/docs/postman](https://api.paperoffice.ai/latest/docs/postman) (for Postman / Insomnia / Bruno apps) - **MCP Server:** `https://mcp.paperoffice.ai/mcp` (Streamable HTTP, same Bearer Token) - **Get a token:** https://paperoffice.ai ## Authentication All endpoints (except a few VISITOR-mode ones like `/health`, `/ip2location/*`, `/currencyexchange/*`) require a Bearer Token in the `Authorization` header. ```http Authorization: Bearer po_sk_EXAMPLE_TOKEN_REPLACE_WITH_YOUR_KEY ``` | Prefix | Type | Scope | |--------|------|-------| | `po_sk_` | System Key | Server-to-server, full access | | `po_ut_` | User Token | User-scoped, tier-limited | ## Job Workflow (Sync vs Async) Every job endpoint accepts a `priority` parameter: | Priority | Mode | SLA | Use Case | |----------|------|-----|----------| | `>= 900` | **SYNC** | ~20s | Dev / testing — result returned inline | | `500-899` | **ASYNC** | 1-30 min | Production — returns `job_id`, poll `/job/get/{job_id}` | | `< 500` | **ASYNC** | 2h-72h | Batch / background | **Async workflow:** 1. `POST /job/add/{pipeline}` → returns `{ "job_id": "abc123" }` 2. `GET /job/get/{job_id}` → poll every 5-10s until `status="completed"` 3. `GET /job/download/{download_token}` → download result ## Response Format All responses are JSON. Success: ```json { "status": "success", "data": { ... }, "processing_time": "123.45ms" } ``` Error: ```json { "status": "error", "code": "AUTH_REQUIRED", "message": "Authentication required. Please provide a valid Bearer token." } ``` ## Standard Error Codes | HTTP | Code | Meaning | |------|------|---------| | 400 | `INVALID_REQUEST` | Missing/invalid parameters | | 400 | `INPUT_TOO_LARGE` | Input exceeds endpoint limit (e.g. 15k chars for /translate/text) | | 401 | `AUTH_REQUIRED` / `INVALID_TOKEN` | No or invalid Bearer token | | 402 | `INSUFFICIENT_CREDITS` | Not enough credits | | 404 | `NOT_FOUND` | Endpoint or resource not found | | 408 | — | Sync job > 45s proxy limit (poll with `job_id`) | | 429 | `RATE_LIMIT_EXCEEDED` | Retry after `Retry-After` header | | 500 | `INTERNAL_ERROR` | Retry with exponential backoff | | 500 | `TRANSLATION_FAILED` | LLM pipeline failure (endpoint-specific, e.g. /translate/text) | ## Rate Limits Per-token (authenticated) or per-IP (visitor). Minimum limits (all tiers): 5/sec, 30/min, 100/hr, 500/day. Paid tiers get higher limits. Check `RateLimit-*` and `X-RateLimit-*` response headers. ## API Endpoints (Index) For full endpoint specs, request [https://api.paperoffice.ai/latest/docs/llms-full.txt](https://api.paperoffice.ai/latest/docs/llms-full.txt) or [https://api.paperoffice.ai/latest/docs/postman](https://api.paperoffice.ai/latest/docs/postman). ### Account — Messaging - **Check Notification Delivery** — `POST /message_center/delivery_status` — Check the delivery status of a notification. Shows which channels were successful and which failed. - **Send Notification** — `POST /message_center/send` — Send a notification to a user across all configured channels (In-App, Web Push, Email, Telegram, SMS, Voice). The Not... - **Update Notification Preferences** — `POST /message_center/preferences` — Updates a user's notification settings: enabled channels per category, quiet hours, and AI features. ### Account — Pricing & Plans - **List pricing plans and tiers** — `GET /billing/pricing/tiers` — Lists all available PaperOffice pricing plans (tiers) with prices, credits, features and details. Ideal for price com... - **Calculate pricing (full)** — `GET /billing/pricing/all` — Returns all pricing data: tiers, job costs, overage system, storage pricing, priority system, support levels, and fea... - **List API job costs per service** — `GET /billing/pricing/jobs` — Shows credit costs for each individual API service (OCR, LLM, Voice, Import, etc.) with optional category filter. ### Account — Webhooks - **Create Webhook Subscription** — `POST /webhooks/subscribe` — Create a new webhook Subscription. payloads are signed with HMAC-SHA256. - **Delete Webhook Subscription** — `POST /webhooks/delete` — Delete a webhook Subscription. The delivery log is preserved. - **Get webhook system info** — `GET /webhooks/info` — Webhook system overview: available events, endpoints, and signature information. - **List Job Subscriptions** — `GET /webhooks/job-subscriptions` — List all job subscriptions for the account. - **List webhook deliveries** — `GET /webhooks/deliveries` — Webhook-Delivery-Log retrieve (delivery history). - **List Webhook Subscriptions** — `GET /webhooks/list` — List all webhook subscriptions of the account. - **Subscribe to Job** — `POST /webhooks/subscribe-job` — Create a one-time webhook Subscription for a specific job ID. - **Test webhook** — `POST /webhooks/test` — Send a test event to a webhook Subscription to verify delivery. - **Update Webhook Subscription** — `POST /webhooks/update` — existing Webhook-Subscription update. ### Agents AI — AI Features - **Create or update agent** — `POST /agents_v2/create` — Create or Update AI Agent Attach AI agent configuration to a document. Use case: - Custom extraction fields beyond st... - **Delete agent** — `POST /agents_v2/delete` — Delete AI Agent Remove agent configuration from a document. - **Generate meeting prep briefing** — `POST /document_intelligence/meeting_prep` — AI Meeting Prep Generate AI briefing for upcoming meeting. - **Get agent** — `POST /agents_v2/get` — Get AI Agent Retrieve agent configuration and extracted data. - **List agents** — `POST /agents_v2/list` — List All AI Agents Get all AI agents for the authenticated account. - **Predict no-show risk** — `POST /document_intelligence/noshow_risk` — AI No-Show Risk Predict no-show probability for a meeting. - **Suggest smart appointment slots** — `POST /document_intelligence/smart_slots` — AI Smart Slots Get AI-optimized slot suggestions based on your patterns. ### Analytics AI - **Get document topics and clustering** — `GET /document_intelligence/topics` — Displays the topic clusters of the documents. The Harvester automatically groups documents into topic clusters (e.g.,... - **Get knowledge graph document entities** — `GET /document_intelligence/entities/{document_id}` — Get all extracted entities from a document. Entity Types: - company, person, amount, date, location, iban, product, c... - **Get knowledge graph document relations** — `GET /document_intelligence/relations/{document_id}` — Get a list of document relations not graph format. relation Types: - references, supersedes, attachment_of, response_... - **Get knowledge graph for document** — `GET /document_intelligence/knowledge_graph/{document_id}` — Get a vi.js compatible graph centered on a specific document. Returns: - nodes - Array of vis.js node objects - edges... - **Get knowledge graph statistics** — `GET /knowledge_graph/stats` — Get knowledge graph statistics. Returns: - Total documents, relations, entities - relation type counts - Entity type ... - **Get workspace knowledge graph** — `GET /document_intelligence/knowledge_graph/{workspace_id}` — Get a vi.js compatible graph for an entire workspace. Returns: Same structure as Document Graph but includes all work... - **List knowledge graph business partners** — `GET /knowledge_graph/partners` — Displays all of the user's business partners as a network graph. Based on the knowledge graph automatically extracted... - **Search entities across documents** — `GET /document_intelligence/entities/search` — Search for entities (companies, persons, IBANs, amounts, etc.) across all documents. Utilizes the entity index automa... - **Generate report** — `GET /bi/bi-document-stats` — Generate Report Generate a new business report. - **Get dashboard** — `GET /bi/bi-dashboard` — Get BI Dashboard Retrieve business intelligence dashboard data. - **Get reports** — `GET /bi/bi-trends` — Get BI Reports List available business reports. ### Data AI — Currency Exchange - **Convert currency** — `POST /currency_exchange/get_rates` — Convert Currency Convert an amount from one currency to another. Parameters | Parameter | Type | Required | Descripti... - **Get currency exchange rates** — `GET /currency_exchange/get_rates` — Get Exchange Rates Get exchange rates for all 150+ currencies based on a source currency. Parameters | Parameter | Ty... ### Data AI — IP Geolocation - **Autocomplete geocoding query** — `POST /geocoding/forward` — Address Autocomplete Suggestions Get address suggestions as the user types. Fast response times for real-time autocom... - **Forward geocoding** — `POST /geocoding/forward` — Convert Address to Coordinates Translate any address worldwide into GPS coordinates latitude/longitude. Parameters fo... - **Get geocoding service status** — `GET /geocoding/status` — Service Health Check Public Check if geocoding service is available. No authentication required. Response json { "suc... - **Reverse-geocode coordinates** — `POST /geocoding/reverse` — Convert Coordinates to Address Translate GPS coordinates latitude/longitude into a human-readable address. Parameters... - **Get IP country details** — `POST /ip2location/countrylist` — Full country intelligence for an IP address. Returns comprehensive country data: - VAT rates, B2B reverse charge rule... - **Get IP device fingerprint** — `POST /ip2location/device` — Get device fingerprint information. Returns: - device_id - Unique device hash - confidence_score - Fingerprint confid... - **Get IP full information** — `POST /ip2location/full` — Full IP Information Get complete IP geolocation and ISP data. Parameters: | Parameter | Type | Required | Description... - **Get IP location only** — `POST /ip2location/location` — IP Location Only Get basic location data for an IP. Parameters: | Parameter | Type | Required | Description | |------... - **List IP countries** — `POST /ip2location/countrylist` — Get list of all supported countries with basic info. Returns: - Country codes ISO 2-letter - Country names - Currency... ### Data AI — Map Tiles - **Get map tile** — `GET /maptiles/tiles/get/{z}/{x}/{y}.pbf` — Get a vector map tile. Path parameters: - {z} - Zoom level 0-14, higher = more detail - {x} - Tile X coordinate - {y}... - **Get static map by coordinates** — `POST /maptiles/staticmap` — Generate a static map image from coordinates. Returns: PNG image or JSON Parameters: - lat/lon - Coordinates - zoom -... - **Get static map by IP address** — `POST /maptiles/staticmap` — Generate a static map from an IP address. Combines IP2Location + Static Map Returns: - Map image or JSON with locatio... ### Data AI — Validation & VAT - **Validate All (Email + Phone + Website)** — `POST /validate/all` — Validate All (Email + Phone + Website)\n\nRun all validations at once: email, phone, and website. Only provided field... - **Validate Email Address** — `POST /validate/email` — Validate Email Address\n\nCheck if an email address is valid, fake, disposable, or temporary. Uses format validation,... - **Validate Phone Number** — `POST /validate/phone` — Validate Phone Number\n\nValidate a phone number format, detect country, carrier type (mobile/landline), and check if... - **Validate Website URL** — `POST /validate/website` — Validate Website URL\n\nComprehensive website validation including DNS resolution, HTTP reachability, SSL certificate... - **Get EU VAT Rates** — `GET /vat/rates` — Get EU VAT Rates\n\nReturns current VAT rates for all 27 EU member states including standard and reduced rates.\n\n--... - **Validate EU VAT ID** — `POST /vat/validate` — Validate EU VAT ID\n\nValidate a European VAT identification number against the EU VIES database. Returns company nam... ### Data AI — Weather - **Get weather by city** — `POST /location2weather` — Weather by City Get current weather and 7-day forecast for any city worldwide. --- When to Use - Display weather for ... - **Get weather by coordinates** — `POST /location2weather` — Weather by Coordinates Get weather for specific coordinates. Parameters: | Parameter | Type | Required | Description ... - **Get weather by IP** — `POST /ip2location/weather` — Weather by IP Get weather for IP-based location. Parameters: | Parameter | Type | Required | Description | |---------... - **List weather icons** — `POST /ip2location/weathericon_get` — Weather Icons Get weather icon URLs. Parameters: | Parameter | Type | Required | Description | |-----------|------|--... ### Document AI — Anonymization - **Anonymize document (single-step)** — `POST /job/add/workflow` — Complete GDPR-compliant anonymization in one step: PDF Upload → OCR → PII Detection → Redaction → Anonymized ... - **Apply redaction** — `POST /job/add/workflow` — Step 2: Apply Redaction. Applies black boxes to the specified regions and generates the final PDF. Important: Use the... - **Detect PII preview** — `GET /document_intelligence/entities/{document_id}` — Step 1: Detect PII Preview Analyzes document and returns detected PII with bounding boxes. Response Structure: json {... - **Run anonymization full workflow example** — `POST /job/add/workflow` — Complete Workflow Example This example shows Step 1 Preview. After running this: 1. Copy the original_images URL from... ### Document AI — DMS - **Dissolve (unstaple) folder** — `POST /documents/folder-dissolve` — Folder Dissolve Unstaple R260114.1700 Dissolve a document folder - unstaple the documents. --- When to Use - Remove d... - **Export document list** — `POST /documents/documents-export` — Export Documents Bulk export documents as ZIP archive. Options: - Specific POFIDs - All from workspace - **Extract maximum metadata** — `POST /documents/document-metadata` — Variable Metadata Max Extraction Extract all possible metadata and content from any document. Parameters: | Parameter... - **Get document metadata** — `POST /documents/document-metadata` — Document Metadata Extract general document metadata. Parameters: | Parameter | Type | Required | Description | |-----... - **List folders** — `POST /documents/folder-list` — Folder List R260114.1700 List all document folders staples in a workspace. --- When to Use - Display document bundles... - **Run DMS document analysis** — `POST /documents/document-analysis` — Document Analysis DMS General document classification and metadata extraction. Fields: document_type, date, sender, r... - **Staple documents into folder** — `POST /documents/folder-create` — Folder Create Staple Documents R260114.1700 Staple multiple documents together into a document folder. --- When to Us... - **Update folder** — `POST /documents/folder-update` — Folder Update R260114.1700 Update a document folder's metadata name, description, icon, color. --- When to Use - Rena... - **Acquire Edit-Session (Presence-Lock)** — `POST /documents/document-edit-session-acquire` — Erwirbt a kooperativen metadata-Editing-Lock for a document. if already a anderer users editiert, is status=readonly ... - **Analyze document vision** — `GET /document_intelligence/vision/{document_id}` — Delivers vision analysis data for a document: Extracted tables, charts, forms, barcodes, layout information. Automati... - **Create Document from Content** — `POST /document_generation/create-from-content` — Generate a PDF document from Markdown or HTML content and save it directly to the DMS. Supports tables, lists, code b... - **Create Document from Template** — `POST /document_generation/create-from-template` — Generate a PDF document from a saved template with variable substitution and save it to the DMS. - **Create Document Template** — `POST /document_generation/template-create` — Create a new document template with HTML content and placeholder definitions. - **Delete Document Template** — `POST /document_generation/template-delete` — Deletes (deactivates) a document template. Soft-Delete — can be reactivated. - **Get Document Template** — `POST /document_generation/template-get` — Returns details of a document template including HTML content and variable schema. - **Get linked documents** — `POST /documents/linked-documents` — Documents linked to a CRM account. Link Types: - invoice - Invoices - contract - Contracts - quote - Quotes - corresp... - **Heartbeat Edit-Session** — `POST /documents/document-edit-session-heartbeat` — Hält a zuvor erworbene Edit-Session at the Leben. all 30 seconds send. returns 409 EDIT_SESSION_LOST Back, if the Lo... - **List Document Templates** — `POST /document_generation/templates-list` — List all available document templates of the account. - **Merge publisher** — `POST /publishers/{source_publisher_id}/merge` — Two Publisher merge and references move - **Query Edit-Session Status** — `GET /documents/document-edit-session-status` — Fragt the current Edit-Session-Status of a document's (free/mine/taken) without the Lock zu übernehmen. - **Release Edit-Session** — `POST /documents/document-edit-session-release` — returns the Edit-Session-Lock for a document frei. by Release can andere users the document edit. - **Rename publisher** — `POST /publishers/{publisher_id}/rename` — Publisher rename with automatic alias storage - **Search documents (ultimate)** — `POST /documents/documents-list` — ULTIMATE SEARCH ENGINE - Intelligent Multi-Source Document Search (31.01.2026) Searches documents using 4 parallel se... - **Update Document Template** — `POST /document_generation/template-update` — Updates an existing document template. - **Extract Document entities** — `POST /document_intelligence/entities` — All extracted entities of a document. Entity Types: company, person, location, date, amount, iban, product, email, ph... - **Get Canonical entities** — `GET /document_intelligence/entities/canonical` — Canonical deduplicated entities across all documents. Shows how often an entity appears in different documents. - **Search entities** — `GET /document_intelligence/entities/search` — Search for entities across all documents. Find entities that contain the search term and display the associated docum... - **Get account insights** — `POST /documents/account-insights` — All AI insights for a specific CRM account. Including Overall Health Score and Risk Level. - **Get all insights** — `POST /documents/all-insights` — All AI Insights across accounts or filtered. Insight Types: - sentiment - communication_sentiment - health_score - re... - **Get meta fields** — `GET /document_intelligence/meta_fields/{document_id}` — Get all AI-IDP extracted meta fields for a document by category: financial, parties, dates, classification, analysis. - **Get upsell opportunities** — `POST /documents/upsell-opportunities` — Identify upselling opportunities. Accounts with high upselling potential, sorted by score. - **Get document revisions** — `GET /documents/document-revisions` — Document version history. Displays all changes with timestamp, user, and change details. - **Get at-risk accounts** — `POST /documents/risk-analysis` — Accounts with high churn risk. Sorted by risk score, including factors and recommendations. - **Run RAG search** — `POST /documents/document-search` — RAG Semantic Search Search across all knowledge sources using semantic similarity. How it works: 1. Your query is emb... - **Run semantic vector search** — `POST /documents/document-search` — Semantic Vector Search AI-powered search using embeddings. How it works: 1. Query text is converted to 4096-dim vecto... - **Search exact field value** — `POST /documents/document-search` — Exact Field Search Filter documents by exact meta-field value. Use cases: - Find all documents of type X - Filter by ... - **Search fulltext** — `POST /documents/document-search` — Fulltext Search SQL LIKE + FULLTEXT search on: - file_name - All meta-field values - OCR text Features: - Relevance s... - **Search hybrid** — `POST /documents/document-search` — Hybrid Search Fulltext + Semantic Combines both search methods for best results using OpenClaw-style weighted scoring... - **Get sentiment history** — `POST /documents/sentiment-history` — Sentiment analysis for an account over time. Shows sentiment trend from emails and notes. - **Get CRM statistics** — `POST /documents/crm-stats` — Global CRM Intelligence Statistics. Overview of all accounts, insights, risks, and opportunities. - **Add Document day** — `POST /documents/document-tag-add` — Add a day to a document. - **Add Storage Mount** — `POST /storage_mounts/add` — Add Storage Mount Create a new storage mount connection. Required: name, host Optional: connector_type sftp|ftp|ftps|... - **Batch-process documents (AI-DMS)** — `POST /documents/document-batch-process` — Triggers AI-DMS processing for multiple documents simultaneously. Max 50 POFIDs per batch. Each document is processed... - **Browse storage mount files** — `GET /storage_mounts/browse` — Browse files and directories on a storage mount. Returns file listing with metadata (size, modified date, type). - **Check for duplicate documents** — `POST /documents/duplicate-check` — Check if a document with the same SHA-256 hash already exists. - **Copy document** — `POST /documents/document-copy` — Copy a document to another workspace. - **Create Document Comment** — `POST /documents/document-comment-create` — Create a comment or response to a document. - **Create Document Note** — `POST /documents/document-note-create` — Add a new note to a document. - **Create storage mount directory** — `POST /storage_mounts/mkdir` — Create a new directory on a storage mount. Specify the mount ID and the path for the new directory. - **Create storage mount mirror** — `POST /storage_mounts/mirrors-add` — Add a new mirror target for a storage mount. Configure destination, sync interval, and filter rules. - **Delete document** — `DELETE /documents/document-delete` — Deletes a document (soft-delete). The document is marked as deleted. - **Delete Document Comment** — `POST /documents/document-comment-delete` — Own comment delete (incl. replies). - **Delete Document Note** — `POST /documents/document-note-delete` — note delete (Soft Delete, only own). - **Delete Storage Mount** — `POST /storage_mounts/delete` — Delete Storage Mount ⚠️ Cannot delete mounts with active connectors. - **Delete storage mount mirror** — `POST /storage_mounts/mirrors-remove` — Remove a mirror configuration from a storage mount. Stops future syncs but does not delete mirrored data. - **Edit document fields** — `POST /documents/document-edit/{pofid}` — Sets or modifies a document's meta-fields via short alias keys. - **Empty document trash** — `POST /documents/trash-empty` — Empty Trash (permanently remove all deleted documents). - **Get document details** — `GET /documents/document-get/{pofid}` — Returns detailed metadata of a document. - **Get Document Lifecycle** — `GET /documents/document-lifecycle-get` — Get the current lifecycle status of a document, including allowed transitions. - **Get document OCR text** — `GET /documents/ocr-get` — Returns the OCR-extracted text of a document. Contains text per page with confidence scoring. - **Get storage mount access logs** — `GET /storage_mounts/logs` — View access and operation logs for storage mounts. Returns recent log entries with timestamps, operation types, and a... - **Get storage mount details** — `GET /storage_mounts/get` — Get Mount Details Get full details including linked connectors. - **Get storage mount health status** — `GET /storage_mounts/health` — Check health status of all configured storage mounts. Returns availability, latency, and disk usage per mount. - **Get trash settings** — `GET /documents/trash-settings` — Get or modify trash settings. - **List Deleted Documents (Trash)** — `POST /documents/trash-list` — Displays all soft-deleted documents in the trash. Paginated with days_remaining and is_restorable. Optionally filtera... - **List Document Comments** — `GET /documents/document-comments` — List document comments as a thread structure. - **List Document Notes** — `GET /documents/document-notes` — List all notes of a document. - **List Document Tags** — `GET /documents/document-tags` — List all tags of a document. - **List Legal Holds** — `GET /documents/document-legal-holds-list` — List Legal Holds (per Workspace or Document). - **List storage mount mirrors** — `GET /storage_mounts/mirrors-list` — List all configured mirror targets for storage mounts. Shows mirror destinations, sync status, and last sync time. - **List storage mounts** — `GET /storage_mounts/list` — List Storage Mounts Get all storage mount connections. Response: json { "status": "success", "data": { "mounts": { "m... - **Move document** — `POST /documents/document-move` — Move a document to another workspace. - **Place legal hold** — `POST /documents/document-legal-hold` — Place document under Legal Hold (deletion lock for legal retention). - **Release legal hold** — `POST /documents/document-legal-hold-release` — Release a legal hold (document becomes deletable again). - **Remove Document day** — `POST /documents/document-tag-remove` — Remove the day from a document. - **Rename document** — `POST /documents/document-rename` — Rename a document. The original extension is always preserved. Path separators (/, \, .) are rejected. Special charac... - **Resolve Document Comment** — `POST /documents/document-comment-resolve` — Mark the comment thread as completed or reopen it. - **Restore Document from Trash** — `POST /documents/document-restore` — Restore one or more soft-deleted documents from the trash. Also supports document folders (.podf). Only restorable wh... - **Run storage mount health check** — `POST /storage_mounts/health-check-now` — Trigger an immediate health check on a storage mount. Returns real-time connectivity, disk space, and I/O performance... - **Search documents (full-text)** — `GET /documents/document-search` — Search documents by full-text search terms. - **day Autocomplete** — `GET /documents/tag-autocomplete` — Search tags for autocomplete (cross-workspace). - **Test storage mount connection** — `POST /storage_mounts/test` — Test Connection Test if the storage mount is reachable. Can also test new credentials without saving: json { "connect... - **Toggle storage mount mirror** — `POST /storage_mounts/mirrors-toggle` — Enable or disable a storage mount mirror without deleting the configuration. Useful for temporary maintenance. - **Transition document lifecycle** — `POST /documents/document-lifecycle-transition` — Change the lifecycle status of a document. Only allowed transitions are possible. - **Update Document Comment** — `POST /documents/document-comment-update` — Update (edit) an existing comment authored by the current user. - **Update Document Note** — `POST /documents/document-note-update` — existing note update (only own). - **Update Storage Mount** — `POST /storage_mounts/update` — Update Storage Mount Modify an existing storage mount. Required: mount_id Optional: Any field to update - **Upload document** — `POST /documents/document-put` — Uploads a new document and saves it encrypted. - **Get document summary** — `POST /documents/document-summary` — Compact summary of all Document Intelligence data. An endpoint for all key metrics and API links. - **Get global statistics** — `POST /documents/global-stats` — Global Document Intelligence Statistics. Overview of all processed documents, entities, embeddings, etc. - **Get vision data** — `POST /documents/vision-data` — Vision-extracted data Ultra-Tier. Includes: - Tables - Structured table data with rows/columns - charts - Recognized ... - **Check access** — `POST /documents/workspace-access-check` — Check Workspace Access Verify if the current user session has access to a specific workspace. Returns: Access status ... - **Create workspace** — `POST /documents/workspace-create` — Create New Workspace Create a workspace to organize documents. Optional metadata: - data_contact: Contact information... - **Delete workspace** — `POST /documents/workspace-delete` — Delete Workspace Warning: This will also delete all documents in the workspace! - **List workspaces** — `GET /documents/workspaces-list` — List All Workspaces Get all workspaces for the authenticated account. Response includes: - id, name, description - ty... - **Update workspace** — `POST /documents/workspace-update` — Update Workspace Modify workspace name, description, status, or metadata. - **Validate Workspace Storage Health** — `POST /documents/workspace-storage-health` — Check the storage status of a workspace: Cloud-Mode, BYOS-Health, Latency, Offline-Status, Auto-Lock Reason. Especial... ### Document AI — E-Signatures - **Cancel Signature Request** — `POST /signatures/cancel` — Cancel a signature request. - **Create Signature Request** — `POST /signatures/create` — Create a new signature request for a document - **Download eSignature Document** — `GET /signatures/download` — Download the signed document - **Get signature details** — `GET /signatures/get` — Get details of a signature request. - **List signature requests** — `GET /signatures/list` — List all signature requests - **Send reminder** — `POST /signatures/remind` — Send a reminder to outstanding signers - **Cancel Signing Request** — `POST /signature_link/cancel_signing_request` — Cancel Signing Request Cancel a pending signing request. --- Parameters | Parameter | Type | Required | Description |... - **Check signing status** — `GET /signature_link/get_signing_status` — Check Signing Status Get current status of a signing request. --- Parameters | Parameter | Type | Required | Descript... - **Download Signing Link Document** — `GET /signature_link/download_signed_document` — Download Signed Document Download the completed signed document. --- Parameters | Parameter | Type | Required | Descr... - **Get document signatures** — `GET /signature_link/get_document_signatures` — Get Document signatures List all signatures on a document. --- Parameters | Parameter | Type | Required | Description... - **Resend invitation** — `POST /signature_link/resend_invitation` — Resend Invitation Resend signing invitation to a signer. --- Parameters | Parameter | Type | Required | Description |... - **Send Signing Request** — `POST /signature_link/send_signing_request` — Send Signing Request Send a document for signature via email. --- Parameters | Parameter | Type | Required | Descript... ### Document AI — Import & Migration - **Cancel import job** — `POST /import/import-cancel` — Cancel a running import job. Already imported files are preserved. - **Create import job** — `POST /import/import-create` — Create a new import job with source configuration (SFTP, S3, WebDAV, ELO, local upload, etc.) and target workspace. - **Delete import job** — `POST /import/import-delete` — Deletes an import job and all associated database file entries. - **Get import status** — `POST /import/import-status` — Returns the current status of an import job including progress and file statistics. - **List import files** — `POST /import/import-files` — Returns the file list of an import job with status per file (pending, imported, failed, skipped). - **List import jobs** — `POST /import/import-jobs-list` — List all import jobs of the account including KPI statistics (Total, Completed, In Progress, Failed). - **Request import upload URL** — `POST /import/request-upload-url` — Generate a signed upload URL for direct file upload. Returns URL + HMAC token + expiration time. The token is valid f... - **Retry import job** — `POST /import/import-retry` — Retry failed files of an import job. - **Scan import source** — `POST /import/import-scan` — Scans the import source and lists all found files. Returns count, sizes, and type breakdown. - **Start import job** — `POST /import/import-start` — Start the import process (in batches, 50 files per call). Repeat calls until all files are imported. - **Upload local files to import** — `POST /import/upload-local-files` — Uploads multiple files with folder structure (Local Upload Batch). Files are grouped in a session directory on NAS. - **Upload ZIP source for import** — `POST /import/upload-source` — Upload a ZIP file (ELO export or local upload). Maximum 5 GB. ### Document AI — OCR & IDP - **Extract AI-OCR grid boxes** — `POST /job/add/paperoffice_aiocr___generate` — AI-OCR Grid/Boxes OCR with bounding boxes - includes precise text positions for each line. Required for Document Anon... - **Extract AI-OCR plain text** — `POST /job/add/paperoffice_aiocr___generate` — AI-OCR Text Only Fastest OCR mode - extracts text only without position data. --- When to Use - Fast text extraction ... - **Run complete AI-OCR analysis** — `POST /job/add/paperoffice_aiocr___generate` — AI-OCR Complete Analysis Full document analysis - includes text, bounding boxes, table detection, and layout analysis... - **Run whitepage scan analysis** — `POST /job/add/workflow` — Scan documents for empty/whitepages and detect codes. Features: - Detect blank pages configurable threshold - Find ba... - **Extract ID card or passport** — `POST /job/add/workflow` — Identity Document Extract data from ID cards, passports, and driver licenses. Parameters: | Parameter | Type | Requir... - **Extract insurance policy** — `POST /job/add/workflow` — Insurance Policy Extract data from insurance policies and certificates. Parameters: | Parameter | Type | Required | D... - **Extract legal document** — `POST /job/add/workflow` — Legal Document Extract data from legal documents and contracts. Parameters: | Parameter | Type | Required | Descripti... - **Extract payroll / pay stub** — `POST /job/add/workflow` — Payroll / Pay Stub Extract salary and payroll data. Fields: employee_name, pay_period, gross, net, deductions, taxes,... - **Parse email file (EML/MSG)** — `POST /job/add/workflow` — Parse email messages and extract content - Supports EML, MSG, PST formats - **Redact image** — `POST /job/add/workflow` — Black out/anonymize images - Draw black rectangles over sensitive areas - **Scan for whitepage code** — `POST /job/add/workflow` — Scanning documents on blank pages and code fragments - Automatic detection and filtering - **Extract government form data** — `POST /job/add/paperoffice_aiocr___generate` — Form Processing Extract data from filled forms. Fields: all_fields, checkboxes, signatures - **Extract handwritten customer form** — `POST /job/add/paperoffice_aiocr___generate` — Handwritten Document AI-powered handwriting recognition. Fields: extracted_text, confidence, language - **Extract handwritten document** — `POST /job/add/paperoffice_aiocr___generate` — Handwritten Document AI-powered handwriting recognition. Fields: extracted_text, confidence, language - **Extract US tax forms** — `POST /job/add/paperoffice_aiocr___generate` — Form Processing Extract data from filled forms. Fields: all_fields, checkboxes, signatures - **Extract hotel invoice** — `POST /job/add/workflow` — Hotel Invoice Extract data from hotel bills and folio statements. Parameters: | Parameter | Type | Required | Descrip... - **Export DATEV SKR03 accounting** — `POST /job/add/workflow` — Extract structured accounting data in DATEV SKR03 format. Fields: document date, document number, posting text, debit... - **Extract bank check data** — `POST /job/add/workflow` — Bank Check Extract data from bank checks. Parameters: | Parameter | Type | Required | Description | |-----------|----... - **Extract bank details** — `POST /billing/bank/details` — Bank Details Extract banking information from documents. Parameters: | Parameter | Type | Required | Description | |-... - **Extract cash receipt data** — `POST /job/add/workflow` — Cash Receipt Extract data from retail receipts and cash transactions. Parameters: | Parameter | Type | Required | Des... - **Extract custom fields (IDP)** — `POST /job/add/workflow` — Custom Field Extraction idp_fields only Extract ONLY the fields you define - no template. Format: json {"key": "field... - **Extract invoice** — `POST /job/add/workflow` — Invoice Extraction Extract data from invoice documents. Parameters: | Parameter | Type | Required | Description | |--... - **Extract invoice (German/DATEV-optimized)** — `POST /job/add/workflow` — Extract data from German invoices with DATEV-compatible fields. Fields: invoice number, date, supplier, customer, net... - **Extract invoice basic fields** — `POST /job/add/workflow` — Invoice Light Basic Fields Extract basic invoice data minimal fields. Parameters: | Parameter | Type | Required | Des... - **Extract statement of account** — `POST /job/add/workflow` — Statement of account Extract data from account statements. Parameters: | Parameter | Type | Required | Description | ... - **Extract utility bill** — `POST /job/add/workflow` — Utility Bill Extract data from utility bills electricity, gas, water, internet. Parameters: | Parameter | Type | Requ... - **Extract letter or mail** — `POST /job/add/workflow` — Letter / Mail Extract letter metadata and content. Fields: sender, recipient, date, subject, body_summary - **Extract receipt** — `POST /job/add/workflow` — Receipt Extract data from receipts. Parameters: | Parameter | Type | Required | Description | |-----------|------|---... - **Get json** — `POST /job/add/paperoffice_aiocr___generate` — Get OCR Text JSON Retrieve extracted text from all pages. Response includes: - Per-page OCR text - Statistics char_co... - **Get OCR details** — `POST /job/add/paperoffice_aiocr___generate` — Detailed OCR data of a document. Includes: text per page, bounding boxes (x, y, width, height), Confidence scores, de... - **Get OCR plain text** — `POST /job/add/paperoffice_aiocr___generate` — Get OCR Text Plain Text Returns OCR text as plain text, page by page. Useful for: - Copy/paste full document text - i... - **Extract delivery note** — `POST /job/add/workflow` — Delivery Note Extract data from delivery notes and packing slips. Parameters: | Parameter | Type | Required | Descrip... - **Extract purchase order** — `POST /job/add/workflow` — Purchase Order Extract purchase order data. Fields: order_number, date, vendor, buyer, items, delivery_date, total Pa... - **Extract shipping waybill** — `POST /job/add/workflow` — Shipping Waybill Extract data from shipping waybills and freight documents. Parameters: | Parameter | Type | Required... - **Extract construction plan/blueprint** — `POST /job/add/workflow` — Construction Plan / Blueprint Extract data from construction plans and technical drawings. Parameters: | Parameter | ... - **Extract vehicle registration** — `POST /job/add/workflow` — Vehicle Registration Extract vehicle registration data. Fields: plate_number, make, model, VIN, owner, registration_date - **Execute template** — `POST /job/add/workflow` — Execute Workflow Template Run a workflow template with input data. --- Parameters | Parameter | Type | Required | Des... ### Document AI — PDF - **Add password to PDF** — `POST /job/add/workflow` — PDF Password Protection Add password protection to PDF documents. Parameters: | Parameter | Type | Required | Descrip... - **Compress PDF** — `POST /job/add/workflow` — Compress PDF to reduce file size - **Convert eBook to PDF** — `POST /job/add/workflow` — Convert E-Books to PDF - Supports EPUB, MOBI, AZW3, FB2 formats - **Convert image to PDF** — `POST /job/add/workflow` — Convert images to PDF documents - Supports JPG, PNG, TIF, TIFF - **Convert office document to PDF** — `POST /job/add/workflow` — Convert Office documents to PDF — Supports DOCX, DOC, XLSX, XLS, PPTX, PPT, ODS, ODT, ODP, RTF. Uses Windows VM clu... - **Convert PDF to Excel** — `POST /job/add/workflow` — Convert PDF to Excel spreadsheet (XLSX) - **Convert PDF to JPG** — `POST /job/add/workflow` — Convert PDF pages to JPG images - **Convert PDF to PDF/A** — `POST /job/add/workflow` — Convert PDF to PDF/A for archiving - **Convert PDF to PowerPoint** — `POST /job/add/workflow` — Convert PDF to PowerPoint presentation (PPTX) - **Convert PDF to WebP** — `POST /job/add/workflow` — Convert PDF pages to WebP images - **Convert PDF to Word** — `POST /job/add/workflow` — Convert PDF to Word document (DOCX) - **Convert URL to PDF** — `POST /job/add/workflow` — Convert webpage URL to PDF with full browser support (cookies, headers, inject CSS/JS) - **Edit PDF metadata** — `POST /job/add/workflow` — Edit PDF metadata (title, author, etc.) - **Merge pdf** — `POST /job/add/workflow` — Merge multiple PDFs into one - **Remove password from PDF** — `POST /job/add/workflow` — PDF Password Removal Remove password protection from PDF requires current password. Parameters: | Parameter | Type | ... - **Remove restrictions** — `POST /job/add/workflow` — PDF Remove Restrictions Remove printing/editing restrictions. Parameters: | Param | Type | Required | |-------|------... - **Rotate pdf** — `POST /job/add/workflow` — Rotate individual or all pages of a PDF document by 90, 180, or 270 degrees. - **Split PDF** — `POST /job/add/workflow` — Split PDF into individual pages - **Split PDF via AI** — `POST /job/add/workflow` — PDF AI Split Automatically detect and split multi-document PDFs into individual files using AI Vision analysis. --- W... - **Unlock PDF with password** — `POST /job/add/workflow` — Remove password from PDF (password required) ### Documentation & Discovery - **Get MCP server AI integration info** — `POST /docs/markdown` — 🤖 MCP Server - AI Tool integration Model Context Protocol MCP enables AI assistants to directly use PaperOffice to... - **Get Postman collection** — `POST /docs/postman` — Complete Postman Collection with all endpoints. Direct URL: https://api.paperoffice.ai/latest/docs/postman Import to Pos... ### Media AI — Image Studio - **Generate image (basic, max 512x512)** — `POST /job/add/paperoffice_imagestudio___generate` — AI Image Generation (Basic Tier) Generates images using Z-Image-Turbo AI. Max resolution: 512x512 (16px grid). Parame... - **Generate image (premium, max 1280x1280)** — `POST /job/add/paperoffice_imagestudio___generate` — AI Image Generation (Premium Tier) Generates high-quality images using Z-Image-Turbo AI. Max resolution: 1280x1280 (1... - **Generate image (ultra, max 2048x2048)** — `POST /job/add/paperoffice_imagestudio___generate` — AI Image Generation (Ultra Tier) Generates maximum-quality images using Z-Image-Turbo AI. Max resolution: 2048x2048 (... - **Remove background** — `POST /job/add/paperoffice_imagestudio___remove_bg` — Remove Background from Image Removes the background from any image using AI (REMBG), leaving only the foreground subj... ### Media AI — Translation - **Get Supported Languages** — `GET /translate/languages` — Get Supported Translation Languages\n\nReturns a list of all supported languages for AI-powered translation. Includes... - **Translate Batch** — `POST /translate/text` — Translate multiple texts in a single call. Alias for po_translate_text. - **Translate Single Text** — `POST /translate/text` — Translate a single text. Alias for po_translate_text. - **Translate Text** — `POST /translate/text` — Unified Translation: Translates text, arrays, or JSON objects via AI. Accepts string, string[], or object as input. B... ### Media AI — Voice - **Transcribe audio** — `POST /job/add/paperoffice_voice___stt` — Transcribe audio to text with 3 quality tiers. Basic (1ct/min): Full transcription, 50+ languages, auto detection, la... - **Clone voice (TTS)** — `POST /job/add/paperoffice_voice___tts` — Clone ANY voice with just an audio sample! Requires Premium or Ultra tier. No voice parameter needed - upload voice_s... - **Generate multi-speaker TTS (inline tags)** — `POST /job/add/paperoffice_voice___tts` — Generate audio with unlimited speakers using inline tags! Two day formats supported: **Shorthand:** [de|Anneliese] Te... - **Generate speech** — `POST /job/add/paperoffice_voice___tts` — Convert text to speech using neural voices. Output Formats: MP3, WAV, OGG. 39 Languages: DE, EN, ES, ES-MX, FR, IT, J... - **List available TTS voices** — `POST /voice/voices` — Returns all available TTS voices grouped by language. Each voice includes: name (use as voice parameter), gender, tie... ### Security AI — Fake Email - **Add domain** — `POST /fakeemail/stats` — Add Custom domain Add a domain to the disposable or whitelist database. --- When to Use - Report new disposable domai... - **Check email** — `POST /fakeemail/check` — Check Single Email Check if a single email address is fake, disposable, or temporary. --- When to Use - User registra... - **Check emails** — `POST /fakeemail/check_bulk` — Bulk Check Multiple Emails Check up to 100 email addresses in a single request. --- When to Use - Clean email lists -... - **Get statistics** — `POST /fakeemail/stats` — Get Detection Statistics Retrieve statistics about your fake email detection usage. --- When to Use - Monitor detecti... ### Security AI — Fingerprint - **Detect IP VPN usage** — `POST /ip2location/vpn` — Detect VPN, proxy, and anonymization services. Returns: - is_vpn - VPN detected - is_proxy - Proxy server detected - ... - **Find Similar Devices** — `POST /fingerprint/similar` — Find Similar Devices V2! Uses vector embeddings to find devices with similar fingerprint components. Use Cases: - Cro... - **Get fingerprint API stats** — `GET /fingerprint/stats` — Get API Statistics V2 Enhanced! Check available features, storage info, and detailed metrics. Response: json { "statu... - **Get fingerprint device details** — `POST /fingerprint/device` — Get Device Details Retrieve details about a known device. Response: json { "status": "success", "device": { "visitorI... - **Get Linked Devices** — `POST /fingerprint/linked` — Get Linked Devices via IP Clustering V2! Finds all devices that have been seen on the same IP address same network/ho... - **Identify device (fingerprint v2)** — `POST /fingerprint/identify` — Identify a Device V2! Main endpoint for device identification. Uses vector embeddings, IP clustering, and velocity ch... - **Verify fingerprint** — `POST /fingerprint/verify` — Verify Fingerprint Check if current visitor matches a known fingerprint. Response: json { "status": "success", "verif... ### Workflow AI — HITL - **Create HITL Config** — `POST /hitl_config/create` — Create HITL review configuration with trigger rules, review fields, SLA and assignment settings. - **Delete HITL Config** — `POST /hitl_config/delete` — Soft-delete HITL configuration (sets is_active=0). - **Get Document Field Keys** — `GET /hitl_config/field_keys` — Get available document meta field keys for review field config. - **Get HITL Config** — `GET /hitl_config/get` — Get single HITL configuration by UUID or ID. - **Get HITL config analytics** — `POST /hitl_config/analytics` — Detailed analytics for a HITL config. - **Get HITL reviewer performance stats** — `POST /hitl_config/reviewer_stats` — Per-reviewer performance stats for a HITL config. - **List Config Reviewers** — `GET /hitl_config/list_reviewers` — List reviewers assigned to account HITL configs. - **List HITL Configs** — `GET /hitl_config/list` — List all HITL configurations for the account. - **Update HITL Config** — `POST /hitl_config/update` — Update HITL configuration. Partial updates supported. - **Create Reviewer Profile** — `POST /hitl_review/create_profile` — Create or upsert a reviewer profile with language skills, tier and capacity settings. - **Get HITL consensus details** — `POST /hitl_review/consensus_details` — Retrieve all individual reviews for a task with side-by-side field comparison for supervisors. - **Get HITL review dashboard** — `GET /hitl_review/dashboard` — Aggregated HITL review statistics incl. awaiting_reviews, consensus metrics. - **Get HITL review statistics** — `GET /hitl_review/stats` — Alias for dashboard. Returns identical statistics. - **Get HITL task details** — `POST /hitl_review/get` — Retrieve full details of a single HITL review task by UUID. - **List Review Queue** — `GET /hitl_review/list` — HITL review queue with personalized ordering by language match and SLA urgency. - **List Reviewer Profiles** — `GET /hitl_review/list_reviewers` — List all reviewer profiles from SOT including language skills, tier, accuracy scores. - **Submit HITL consensus review** — `POST /hitl_review/submit_review` — Submit a review decision (approve/reject/escalate) for a HITL task. Part of 3-reviewer consensus workflow. - **Update Reviewer Profile** — `POST /hitl_review/update_profile` — Update an existing reviewer profile (upsert semantics). ### Workflow AI — Job Management - **Download Job Result** — `GET /job/download/{download_token}` — Download the result file of a completed job. The download_token is returned in the job result from /job/get/{job_id} ... - **Get job status and result** — `GET /job/get/{job_id}` — Retrieve the status and result of a processing job. Polling: call this endpoint every 5-10 seconds until job_status i... - **Get pricelist** — `GET /job/pricelist` — Get API Pricelist Returns all available API methods with their credit costs. Cost: 10 credits Response: json { "price... - **Ping management endpoint** — `GET /health` — Simple Ping Basic connectivity check. Returns "pong" if API is reachable. No Authentication Required Response: json {... ### Workflow AI — Orchestration - **Decide on approval** — `POST /approvals/decide` — Makes an approval decision (approved or rejected) for an approval step. - **Get Approval Status** — `POST /approvals/status` — Returns the complete status of an approval request, including all steps, audit trail, and deadline information. - **List Approvals** — `POST /approvals/list` — List all release requests for the account, optionally filtered by status. - **Submit document for approval** — `POST /approvals/submit` — Submit a document for approval. Define the approver, type (sequential/parallel/arbitrary), and deadline. - **Explain workflow (AI)** — `POST /workflow_ai/explain` — Explain Workflow: Obtain a natural language description of the functionality and steps of a specified workflow. - **Generate workflow** — `POST /workflow_ai/generate` — Generate Workflow with AI Let AI create a workflow from a natural language description. --- When to Use - Quickly cre... - **Optimize workflow (AI)** — `POST /workflow_ai/optimize` — Optimize Workflow AI analyzes and suggests optimizations. --- Parameters | Parameter | Type | Required | Description ... - **Suggest next workflow step (AI)** — `POST /workflow_ai/suggest_next` — Suggest Next Step AI suggests what step to add next. --- Parameters | Parameter | Type | Required | Description | |--... - **Validate workflow** — `POST /workflow_ai/validate` — Validate Workflow Check workflow for errors and issues. --- Parameters | Parameter | Type | Required | Description | ... ### Workflow AI — Tasks - **Create Substitute** — `POST /substitutes/create` — Create a new delegation rule with a time period and permissions. - **Delete Substitute** — `POST /substitutes/delete` — Remove an existing delegation rule. - **List active substitutes** — `GET /substitutes/get_active` — Get active substitutes. - **List Substitutes** — `GET /substitutes/list` — List configured substitutes. - **List substitutes delegated to me** — `GET /substitutes/list_delegated_to_me` — Delegations where I at the substitute. - **Update Substitute** — `POST /substitutes/update` — Updates an existing delegation rule (period, permissions, status). - **Claim task** — `POST /workflow_tasks/claim` — Takes on a task - **Complete task** — `POST /workflow_tasks/complete` — Mark a task as completed - **Get task details** — `POST /workflow_tasks/get` — Task Details - **List my tasks** — `POST /workflow_tasks/list` — List all tasks of the current user - **Mark Task Read** — `POST /workflow_tasks/mark_read` — Mark a task as read --- ## Further Reading - **Postman Collection:** https://api.paperoffice.ai/latest/docs/postman - **Pricing:** https://app.paperoffice.ai/en/pricing/calculator - **Pricing Tiers (API):** https://api.paperoffice.ai/latest/billing/pricing/tiers - **MCP Server:** https://mcp.paperoffice.ai/mcp - **Get API Token:** https://paperoffice.ai *Generated 2026-04-19 from live SOT (MariaDB `api_tools`).*