Skip to main content
POST
/
api
/
v1
/
classify
/
sync
Synchronous Classification
curl --request POST \
  --url https://extraction-api.nanonets.com/api/v1/classify/sync \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: multipart/form-data' \
  --form 'categories=[{"name": "Invoice", "description": "Bills and invoices"}, {"name": "Contract", "description": "Legal agreements"}]' \
  --form file='@example-file'
{
  "success": true,
  "message": "<string>",
  "record_id": "<string>",
  "filename": "<string>",
  "status": "queued",
  "result": {
    "total_pages": 0,
    "mode": "page",
    "splits": [
      {
        "category": "<string>",
        "pages": [
          123
        ],
        "segment_key": "<string>",
        "segments": [
          {
            "value": "<string>",
            "pages": [
              123
            ]
          }
        ]
      }
    ]
  },
  "processing_time": 123
}

Authorizations

Authorization
string
header
required

API key as Bearer token: Authorization: Bearer YOUR_API_KEY

Body

multipart/form-data
categories
string
required

JSON array of category objects: [{"name": "Category Name", "description": "Optional description", "segment_key": "Optional field name"}]

Example:

"[{\"name\": \"Invoice\", \"description\": \"Bills and invoices\"}, {\"name\": \"Contract\", \"description\": \"Legal agreements\"}]"

file
file

File to classify (PDF, PNG, JPG, JPEG, TIFF, BMP, WebP)

file_url
string

URL of the file to classify (alternative to file upload)

record_id
integer

Existing record ID to classify (alternative to file upload)

mode
enum<string>
default:page

'document' — whole document gets one category; 'page' — each page gets one category; 'section' — each page may match multiple categories

Available options:
document,
page,
section
merge_unknown_segments
string

Set to 'true' to fill missing segment values from previous pages (page-level only)

Response

Classification completed

success
boolean
required
message
string
required
record_id
string

Record ID for polling results

filename
string

Original filename

status
enum<string>

Processing status

Available options:
queued,
processing,
completed,
failed,
retrying
result
object

Classification result data, populated when status='completed'

processing_time
number

Processing time in seconds