---
title: "Classify Async"
method: POST
path: "/classify_async"
---

# Classify Async

`POST /classify_async`

## Request

- Base URL: `https://platform.reducto.ai`
- URL: `https://platform.reducto.ai/classify_async`
- Auth: HTTP bearer

Async classify endpoint.

Persists a pollable job row, then runs the same classify CPU-worker pipeline
without awaiting the result. Clients poll ``GET /job/{job_id}``.

## Request body

- ClassifyConfig
  - `model` 'default' | 'accurate': The classification model to use. Set to "accurate" to run Deep Classify for higher accuracy on hard documents. Defaults to "default".
  - `priority` boolean: Workers poll the priority queue ahead of the standard queue, so priority jobs start sooner when there is queued work; sync jobs are prioritized above async jobs by default.
  - `async` ConfigV3AsyncConfig
    - `metadata` unknown
    - `priority` boolean: Workers poll the priority queue ahead of the standard queue, so priority jobs start sooner when there is queued work; sync jobs are prioritized above async jobs by default.
    - `webhook` union: The webhook configuration for the asynchronous processing.
      - SvixWebhookConfig
        - `mode` 'svix'
        - `channels` string[]: A list of Svix channels the message will be delivered down, omit to send to all channels.
      - DirectWebhookConfig
        - `mode` 'direct'
        - `url` string, required
  - `force_url_result` boolean: Force the endpoint result to be returned in URL form.
  - `input` union, required: The URL of the document to be classified. 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
    - 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']).
  - `category_groups` object: A mapping of higher-level classify groups to the category labels that belong to each group. When provided, the response includes `extra_metadata.grouping` with the matched group name, or `ungrouped` if the selected category is not in any group.
  - `page_range` union: The page range to process (1-indexed). By default, the first 5 pages are used. At most 10 pages can be selected. 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

- AsyncClassifyResponse
  - `job_id` string, required

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-16** `7f4e04c7afae`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/reductoai/apis/reducto-api/changes/classify_async/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.dev/reductoai/apis/reducto-api/revisions/2af491884b8b?raw)
