Mindee Classification API

Classify documents into predefined categories so they can be routed to the appropriate downstream extraction model. Enqueue at POST /v2/products/classification/enqueue and retrieve the label from GET /v2/products/classification/results/{inference_id}.

Mindee Classification API is one of 6 APIs that Mindee publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Document Parsing, Classification, Routing, and IDP. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

mindee-classification-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Mindee Classification API
  version: 2.0.0
  description: Classify documents by type so they can be routed to the appropriate downstream extraction model.
  contact:
    name: Mindee
    url: https://mindee.com
  license:
    name: Proprietary
servers:
- url: https://api-v2.mindee.net
tags:
- name: Classification
  description: Classify documents by type so they can be routed to the appropriate downstream extraction model.
paths:
  /v2/products/classification/enqueue:
    post:
      tags:
      - Classification
      summary: Send A File For A Classification Utility Inference
      description: "Send a file to the asynchronous processing queue for a classification utility inference.\n\nResults can\
        \ be retrieved in two ways:\n* Loop on the `polling_url` endpoint in the response until the status\n  is `Processed`\
        \ or `Failed` (polling).\n* Use a webhook to be notified when the inference is finished.\n  Webhooks can be configured\
        \ on the platform on a per-model basis.\n\nInferences taking longer than 590 seconds will time out."
      operationId: Enqueue_Classification_Product_Inference_v2_products_classification_enqueue_post
      requestBody:
        content:
          multipart/form-data:
            schema:
              properties:
                model_id:
                  type: string
                  format: uuid4
                  title: Model Id
                  description: Model ID to use for the inference.
                file:
                  anyOf:
                  - type: string
                    format: binary
                  - type: 'null'
                  title: File
                  description: Upload a file as bytes. Required if `url` is not provided.
                url:
                  anyOf:
                  - type: string
                    maxLength: 2048
                    minLength: 1
                    format: uri
                  - type: 'null'
                  title: Url
                  description: Download the file from a URL, must be secure (HTTPS) and publicly available. Required if `file`
                    is not provided.
                file_base64:
                  anyOf:
                  - type: string
                    minLength: 15
                  - type: 'null'
                  title: File Base64
                  description: Upload a file as a base 64 string. Used as an alternative to `file`. *Not recommended*, for
                    specific use only.
                  examples:
                  - Base64String==
                webhook_ids:
                  items:
                    type: string
                    format: uuid4
                  type: array
                  title: Webhook Ids
                  description: Webhook IDs to call after all processing is finished. If empty, no webhooks will be used. Can
                    be a list or comma-separated string.
                filename:
                  anyOf:
                  - type: string
                  - type: 'null'
                  title: Filename
                  description: Optional filename to associate with the uploaded or fetched file.
                alias:
                  anyOf:
                  - type: string
                  - type: 'null'
                  title: Alias
                  description: 'Optional: a free-form string to tag the request with your own identifier. For example, an
                    internal document ID, reference number, or database key. If set, it will be included in the job and result
                    responses.'
                  examples:
                  - my_file_alias
              type: object
              required:
              - model_id
              title: UtilityEnqueueForm
              description: Form to enqueue an inference for utility models.
          application/json:
            schema:
              properties:
                model_id:
                  type: string
                  format: uuid4
                  title: Model Id
                  description: Model ID to use for the inference.
                url:
                  anyOf:
                  - type: string
                    maxLength: 2048
                    minLength: 1
                    format: uri
                  - type: 'null'
                  title: Url
                  description: Download the file from a URL, must be secure (HTTPS) and publicly available. Required if `file`
                    is not provided.
                file_base64:
                  anyOf:
                  - type: string
                    minLength: 15
                  - type: 'null'
                  title: File Base64
                  description: Upload a file as a base 64 string. Used as an alternative to `file`. *Not recommended*, for
                    specific use only.
                  examples:
                  - Base64String==
                webhook_ids:
                  items:
                    type: string
                    format: uuid4
                  type: array
                  title: Webhook Ids
                  description: Webhook IDs to call after all processing is finished. If empty, no webhooks will be used. Can
                    be a list or comma-separated string.
                filename:
                  anyOf:
                  - type: string
                  - type: 'null'
                  title: Filename
                  description: Optional filename to associate with the uploaded or fetched file.
                alias:
                  anyOf:
                  - type: string
                  - type: 'null'
                  title: Alias
                  description: 'Optional: a free-form string to tag the request with your own identifier. For example, an
                    internal document ID, reference number, or database key. If set, it will be included in the job and result
                    responses.'
                  examples:
                  - my_file_alias
              type: object
              required:
              - model_id
              title: UtilityEnqueueForm
              description: Form to enqueue an inference for utility models.
        required: true
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponse'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - APIKeyHeader: []
  /v2/products/classification/results/{inference_id}:
    get:
      tags:
      - Classification
      summary: Get The Result Of A Completed Classification Product Inference
      description: 'Get the result of a classification utility inference that was previously enqueued.


        The inference will only be available after it has finished processing.


        If you are using webhooks there is no need to call this route.<br/>

        However, the JSON payload described here is what will be sent to each specified webhook''s URL.


        If you activated the "Delete extracted data when fetched" option for the model,

        the inference will be deleted after this route completes.<br>

        Any further requests to the same inference ID will return a 404.'
      operationId: Get_classification_Product_Result_v2_products_classification_results__inference_id__get
      security:
      - APIKeyHeader: []
      parameters:
      - name: inference_id
        in: path
        required: true
        schema:
          type: string
          format: uuid4
          title: Inference ID
          description: UUID of the inference to retrieve
        description: UUID of the inference to retrieve
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClassificationResponse-Output'
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Not Found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unprocessable Content
components:
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: Authorization
  schemas:
    BaseJob:
      properties:
        id:
          type: string
          format: uuid4
          title: Id
          description: UUID of the Job.
      type: object
      required:
      - id
      title: BaseJob
      description: Base class for Job.
    ClassificationClassifier-Output:
      properties:
        document_type:
          type: string
          title: Document Type
          description: The document type, as identified on given classification values.
        extraction_response:
          anyOf:
          - $ref: '#/components/schemas/ExtractionResponse-Output'
          - type: 'null'
          description: The extraction response associated with the classification.
      type: object
      required:
      - document_type
      title: ClassificationClassifier
      description: Document level classification with chained result.
    ClassificationInference-Output:
      properties:
        id:
          type: string
          format: uuid4
          title: Id
          description: UUID of the Inference.
        job:
          $ref: '#/components/schemas/BaseJob'
          title: Job
          description: Job the inference belongs to.
        model:
          $ref: '#/components/schemas/InferenceModel'
        file:
          $ref: '#/components/schemas/InferenceFile'
        result:
          $ref: '#/components/schemas/ClassificationResult-Output'
      type: object
      required:
      - id
      - job
      - model
      - file
      - result
      title: ClassificationInference
      description: The inference result for a classification utility request.
    ClassificationResponse-Output:
      properties:
        inference:
          $ref: '#/components/schemas/ClassificationInference-Output'
      type: object
      required:
      - inference
      title: ClassificationResponse
      description: Response for a classification utility inference.
    ClassificationResult-Output:
      properties:
        classification:
          $ref: '#/components/schemas/ClassificationClassifier-Output'
          title: Document
          description: Classification of document type from the source file.
      type: object
      required:
      - classification
      title: ClassificationResult
      description: Result of the document classifier inference.
    DataSchemaActiveOption:
      properties:
        replace:
          type: boolean
          title: Replace
          description: Whether the data schema was replaced for the inference.
      type: object
      required:
      - replace
      title: DataSchemaActiveOption
      description: Data schema options activated during the inference.
    ErrorItem:
      properties:
        pointer:
          anyOf:
          - type: string
          - type: 'null'
          title: Pointer
          description: A JSON Pointer to the location of the body property.
          examples:
          - '#/model_id'
        detail:
          type: string
          title: Detail
          description: Explicit information on the issue.
          examples:
          - '''model_id'' must be a valid UUID format'
      type: object
      required:
      - pointer
      - detail
      title: ErrorItem
      description: Explicit details on a problem.
    ErrorResponse:
      properties:
        status:
          type: integer
          maximum: 599.0
          minimum: 100.0
          title: Status
          description: The HTTP status code returned by the server.
          examples:
          - 422
        detail:
          type: string
          title: Detail
          description: A human-readable explanation specific to the occurrence of the problem.
          examples:
          - One or more fields failed validation.
        title:
          type: string
          title: Title
          description: A short, human-readable summary of the problem.
          examples:
          - Invalid fields in form
        code:
          type: string
          title: Code
          description: A machine-readable code specific to the occurrence of the problem.
          examples:
          - 422-001
        errors:
          items:
            $ref: '#/components/schemas/ErrorItem'
          type: array
          title: Errors
          description: A list of explicit details on the problem.
          default: []
      type: object
      required:
      - status
      - detail
      - title
      - code
      title: ErrorResponse
      description: Error response detailing a problem. The format adheres to RFC 9457.
    ExtractionInference-Output:
      properties:
        id:
          type: string
          format: uuid4
          title: Id
          description: UUID of the Inference.
        job:
          $ref: '#/components/schemas/BaseJob'
          title: Job
          description: Job the inference belongs to.
        model:
          $ref: '#/components/schemas/InferenceModel'
        file:
          $ref: '#/components/schemas/InferenceFile'
        result:
          $ref: '#/components/schemas/ExtractionResult-Output'
        active_options:
          $ref: '#/components/schemas/InferenceActiveOptions'
      type: object
      required:
      - id
      - job
      - model
      - file
      - result
      - active_options
      title: ExtractionInference
      description: The inference result for an extraction request.
    ExtractionResponse-Output:
      properties:
        inference:
          $ref: '#/components/schemas/ExtractionInference-Output'
      type: object
      required:
      - inference
      title: ExtractionResponse
      description: Response for an extraction inference.
    ExtractionResult-Output:
      properties:
        fields:
          additionalProperties:
            oneOf:
            - $ref: '#/components/schemas/SimpleField'
            - $ref: '#/components/schemas/ObjectField-Output'
            - $ref: '#/components/schemas/ListField-Output'
          propertyNames:
            description: Name of the field in the data schema.
            examples:
            - my_simple_field
          type: object
          title: Fields
          description: Extracted fields, the key corresponds to the field's name in the data schema.
        raw_text:
          anyOf:
          - $ref: '#/components/schemas/RawText'
          - type: 'null'
          title: Raw Text
          description: If `raw_text` was activated, contains the extracted text of the document.
        rag:
          anyOf:
          - $ref: '#/components/schemas/Rag'
          - type: 'null'
          title: RAG
          description: If `rag` was activated, contains metadata about the RAG operation.
      type: object
      required:
      - fields
      title: ExtractionResult
      description: Result of an extraction inference.
    FieldConfidence:
      type: string
      enum:
      - Certain
      - High
      - Medium
      title: FieldConfidence
      description: Confidence level of a field.
    FieldLocation:
      properties:
        polygon:
          items:
            prefixItems:
            - type: number
              maximum: 1.0
              minimum: 0.0
              title: Coordinate
              description: Coordinate value relative to document edge.
            - type: number
              maximum: 1.0
              minimum: 0.0
              title: Coordinate
              description: Coordinate value relative to document edge.
            type: array
            maxItems: 2
            minItems: 2
            title: Point
            description: Relative coordinates of a point in [X,Y] notation.
          type: array
          minItems: 3
          title: Polygon
          description: Position information as a list of points in clockwise order.
        page:
          type: integer
          minimum: 0.0
          title: Page
          description: 0-based page index of where the polygon is located.
      type: object
      required:
      - polygon
      - page
      title: FieldLocation
      description: A field's location on the document.
    InferenceActiveOptions:
      properties:
        raw_text:
          type: boolean
          title: Raw Text
          description: 'Whether the Raw Text feature was activated.

            When this feature is activated, the raw text extracted from the document is returned in the result.'
        polygon:
          type: boolean
          title: Polygon
          description: 'Whether the polygon feature was activated.

            When this feature is activated, the bounding-box polygon(s) for each field is returned in the result.'
        confidence:
          type: boolean
          title: Confidence
          description: 'Whether the confidence feature was activated.

            When this feature is activated, a confidence score for each field is returned in the result.'
        rag:
          type: boolean
          title: RAG
          description: 'Whether the Retrieval-Augmented Generation feature was activated.

            When this feature is activated, the RAG pipeline is used to increase result accuracy.'
        multipage_context:
          type: boolean
          title: Multipage Context
          description: 'Whether the multipage context feature was activated.

            When this feature is activated, the model has access to all the other pages as context.'
        text_context:
          type: boolean
          title: Text Context
          description: 'Whether the text context feature was activated.

            When this feature is activated, the provided context is used to improve the accuracy of the inference.'
        data_schema:
          $ref: '#/components/schemas/DataSchemaActiveOption'
          title: Data Schema
          description: Data schema options provided for the inference.
      type: object
      required:
      - raw_text
      - polygon
      - confidence
      - rag
      - multipage_context
      - text_context
      - data_schema
      title: InferenceActiveOptions
      description: 'Options which were activated during the inference.


        Options can be activated or deactivated:

        * By setting their default values on the Platform UI

        * By explicitly setting them in the inference request'
    InferenceFile:
      properties:
        name:
          type: string
          title: Name
          description: File name as sent to the API.
        alias:
          anyOf:
          - type: string
          - type: 'null'
          title: Alias
          description: Alias sent to the API.
        page_count:
          type: integer
          minimum: 1.0
          title: Page Count
          description: Number of pages in the file.
        mime_type:
          type: string
          title: MIME Type
          description: Detected MIME type of the file.
      type: object
      required:
      - name
      - page_count
      - mime_type
      title: InferenceFile
      description: File used for the inference.
    InferenceModel:
      properties:
        id:
          type: string
          format: uuid4
          title: ID
          description: UUID of the model.
      type: object
      required:
      - id
      title: InferenceModel
      description: Model used for the inference.
    Job:
      properties:
        id:
          type: string
          format: uuid4
          title: Id
          description: UUID of the Job.
        model_id:
          type: string
          format: uuid4
          title: Model Id
          description: UUID of the model to be used for the inference.
        filename:
          type: string
          title: Filename
          description: Name of the file sent.
          examples:
          - file.jpg
        alias:
          anyOf:
          - type: string
          - type: 'null'
          title: Alias
          description: Optional alias sent for the file.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: Date and time of the Job creation.
        completed_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Completed At
          description: Date and time of the Job completion. Filled once processing is finished.
        status:
          $ref: '#/components/schemas/Status'
        polling_url:
          type: string
          maxLength: 2083
          minLength: 1
          format: uri
          title: Polling Url
          description: URL to poll for the Job status.
        result_url:
          anyOf:
          - type: string
            maxLength: 2083
            minLength: 1
            format: uri
          - type: 'null'
          title: Result Url
          description: URL to retrieve the inference results. Will be filled once the inference is ready.
        webhooks:
          items:
            $ref: '#/components/schemas/WebhookResponse'
          type: array
          title: Webhooks
          description: List of responses from webhooks called. Empty until processing is finished.
          default: []
        error:
          anyOf:
          - $ref: '#/components/schemas/ErrorResponse'
          - type: 'null'
          description: If an error occurred during processing, contains the problem details.
      type: object
      required:
      - id
      - model_id
      - filename
      - created_at
      - status
      - polling_url
      title: Job
      description: Information on the processing of a file sent to the Mindee API.
    JobResponse:
      properties:
        job:
          $ref: '#/components/schemas/Job'
      type: object
      required:
      - job
      title: JobResponse
      description: Response for a Job.
    ListField-Output:
      properties:
        items:
          items:
            oneOf:
            - $ref: '#/components/schemas/SimpleField'
            - $ref: '#/components/schemas/ObjectField-Output'
            - $ref: '#/components/schemas/ListField-Output'
          type: array
          title: Items
        confidence:
          anyOf:
          - $ref: '#/components/schemas/FieldConfidence'
          - type: 'null'
      additionalProperties: false
      type: object
      required:
      - items
      title: ListField
      description: Field having a list of fields.
    ObjectField-Output:
      properties:
        locations:
          items:
            $ref: '#/components/schemas/FieldLocation'
          type: array
          title: Locations
          default: []
        confidence:
          anyOf:
          - $ref: '#/components/schemas/FieldConfidence'
          - type: 'null'
        fields:
          additionalProperties:
            oneOf:
            - $ref: '#/components/schemas/SimpleField'
            - $ref: '#/components/schemas/ObjectField-Output'
            - $ref: '#/components/schemas/ListField-Output'
          propertyNames:
            description: Name of the field in the data schema.
            examples:
            - my_simple_field
          type: object
          title: Fields
      additionalProperties: false
      type: object
      required:
      - fields
      title: ObjectField
      description: Field having a set of sub-fields.
    Rag:
      properties:
        retrieved_document_id:
          anyOf:
          - type: string
            format: uuid4
          - type: 'null'
          title: Retrieved document ID
          description: The UUID of the matched document used during the RAG operation.
      type: object
      required:
      - retrieved_document_id
      title: Rag
      description: Metadata about the RAG operation.
    RawText:
      properties:
        pages:
          items:
            $ref: '#/components/schemas/RawTextPage'
          type: array
          title: Pages
          description: List of pages with their extracted text content.
      type: object
      required:
      - pages
      title: RawText
      description: Raw text extracted from all pages in the document.
    RawTextPage:
      properties:
        content:
          type: string
          title: Content
          description: Text content of the page as a single string. '\n' is used to separate lines.
      type: object
      required:
      - content
      title: RawTextPage
      description: Raw text extracted from a single page.
    SimpleField:
      properties:
        locations:
          items:
            $ref: '#/components/schemas/FieldLocation'
          type: array
          title: Locations
          default: []
        confidence:
          anyOf:
          - $ref: '#/components/schemas/FieldConfidence'
          - type: 'null'
        value:
          anyOf:
          - type: boolean
          - type: integer
          - type: number
          - type: string
          - type: 'null'
          title: Value
      additionalProperties: false
      type: object
      required:
      - value
      title: SimpleField
      description: Field having a single value.
    Status:
      type: string
      enum:
      - Processing
      - Failed
      - Processed
      title: Status
      description: Possible states of an operation.
    WebhookResponse:
      properties:
        id:
          type: string
          format: uuid4
          title: Id
          description: UUID of the webhook endpoint.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: Date and time the webhook was called.
        status:
          $ref: '#/components/schemas/Status'
          default: Processing
        error:
          anyOf:
          - $ref: '#/components/schemas/ErrorResponse'
          - type: 'null'
          description: If an error occurred when calling the webhook, contains the problem details.
        attempts_count:
          type: integer
          title: Attempts Count
          description: Number of attempts made to call the webhook.
          default: 0
      type: object
      required:
      - id
      title: WebhookResponse
      description: Response from a webhook call.
security:
- APIKeyHeader: []