---
title: "Classify"
method: POST
path: "/classify"
---

# Classify

`POST /classify`

## Request body

- ClassifyConfig
  - `persist_results` boolean — If True, persist the results indefinitely. Defaults to False.
  - `input` union, required — For parse/split/extract pipelines, the URL of the document to be processed. You can provide one of the following: 1. A publicly available URL 2. A presigned S3 URL 3. A reducto:// prefixed URL obtained from the /upload endpoint after directly uploading a document 4. A jobid:// prefixed URL obtained from a previous /parse invocation 5. A list of URLs (for multi-document pipelines, V3 API only) For edit pipelines, this should be a string containing the edit instructions
    - string
    - string[]
    - UploadResponse
      - `file_id` string, required
      - `presigned_url` string, nullable
  - `classification_schema` ClassificationCategory[] — A list of classification categories and their matching criteria.
    - `category` string, required — The category name/label that documents will be classified into (e.g., 'invoice', 'contract', 'receipt').
    - `criteria` string[], required — A list of criteria, keywords, or descriptions that define what characteristics a document must have to be classified into this category (e.g., ['contains billing information', 'has itemized charges']).
  - `page_range` union — The page range to process (1-indexed). By default, the first 5 pages are used. If more than 25 pages are selected, only the first 25 (after sorting) are used. Only applies to PDFs; ignored for other document types.
    - PageRange
      - `start` integer, nullable — The page number to start processing from (1-indexed).
      - `end` integer, nullable — The page number to stop processing at (1-indexed).
    - PageRange[]
      - `start` integer, nullable — The page number to start processing from (1-indexed).
      - `end` integer, nullable — The page number to stop processing at (1-indexed).
    - integer[]
  - `document_metadata` string, nullable — Optional document-level metadata to include in classification prompts.

## Response `200`

Successful Response

- ClassifyResponse — Response from classify job - returned when polling /job/{job_id}
  - `job_id` string, required
  - `result` ClassifyResponseCategory, required
    - `category` string, required
  - `response_confidence` ResponseConfidence — Overall confidence breakdown for classification response.
    - `categories` CategoryConfidence[], required
      - `category` string, required
      - `confidence` number, required
      - `criteria_confidence` CriteriaConfidence[], required
        - `criterion` string, required
        - `confidence` 'high' | 'low', required
  - `duration` number, nullable — The duration of the classify request in seconds.

## Other responses

- `422` — Validation Error

## Changes

- **2026-03-20** `66f51bc4a1bb` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/reductoai/apis/reducto-api/changes/classify/post.md)

---

[API](https://skmtc.dev/reductoai/apis/reducto-api.md) · [All operations](https://skmtc.dev/reductoai/apis/reducto-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/reductoai/reducto-api/revisions/9dcbb133ea8d/schema)
