---
title: "Batch-process documents (AI-DMS)"
method: POST
path: "/documents/document-batch-process"
tags: ["Document AI — DMS"]
---

# Batch-process documents (AI-DMS)

`POST /documents/document-batch-process`

## Request

- Base URL: `https://api.paperoffice.ai/latest`
- URL: `https://api.paperoffice.ai/latest/documents/document-batch-process`
- Auth: HTTP bearer

Triggers AI-DMS processing for multiple documents simultaneously. Max 50 POFIDs per batch. Each document is processed asynchronously via OCR, Entity Extraction, Classification, etc.

## Request body

- object
  - `pofids` string[], required: Array of POFIDs to process (max 50)
  - `ai_dms_tier` 'basic' | 'premium' | 'ultra': AI-DMS processing tier: basic (OCR + classification), premium (+ entity extraction), ultra (+ deep analysis)
  - `confirm` boolean: Required for bulk (>5 POFIDs) or mode=instant — MCP matches the API.
  - `confirm_tier_downgrade` boolean: Required when ai_dms_tier is lower than the document's current tier (downgrade). MCP ≡ API.
  - `confirm_reprocess` boolean: Required when ai_dms_tier equals the current tier and the document was successfully processed before (same-tier reprocess). MCP ≡ API.
  - `processing_lane` 'no_sla' | 'sla_24h' | 'sla_12h' | 'sla_6h' | 'sla_1h' | 'instant': Start-SLA lane (wait-to-start guarantee, not completion). Values: no_sla (fair use ×1), sla_24h (×1.5), sla_12h (×2), sla_6h (×3), sla_1h (×4), instant (×5 interactive start). Prefer this over legacy numeric priority. If omitted: workspace default_processing_lane, else no_sla.

## Response `200`

Success

- object: Batch AI-DMS Aktivierung
  - `status` 'success' | 'partial_success' | 'error'
  - `message` string
  - `ai_dms_tier` string: Tier used (basic, premium, ultra)
  - `queued` object[]: Successfully queued documents
    - `pofid` string
    - `file_name` string
    - `status` string
    - `was_reset` boolean
  - `queued_count` integer: Number of queued documents
  - `reset_count` integer: Number of reset documents (re-processing)
  - `not_found` string[]: POFIDs not found
  - `not_found_count` integer
  - `errors` object[]: Failed documents
    - `pofid` string
    - `file_name` string
    - `error` string
    - `code` string: Machine-readable error code (e.g. LEGAL_HOLD_ACTIVE)
  - `error_count` integer
  - `processing_time` string
  - `skipped_legal_hold` object[]: Documents skipped because of active legal hold (AI re-index blocked)
    - `pofid` string
    - `file_name` string
    - `reason` 'legal_hold_active'
  - `skipped_legal_hold_count` integer: Count of documents skipped due to legal hold

## Other responses

- `4XX`: Error
- `5XX`: Error

---

[API](https://skmtc.dev/paperoffice/apis/paperoffice-ai-api.md) · [All operations](https://skmtc.dev/paperoffice/apis/paperoffice-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/paperoffice/apis/paperoffice-ai-api/revisions/c6a6228a4509?raw)
