> ## Documentation Index
> Fetch the complete documentation index at: https://docs.clarifeye.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Bulk upload documents

> Upload multiple documents at once. Optionally skip the automatic parsing pipeline.

Per-file metadata can be attached at upload time via the `files_metadata` field so
documents arrive with their metadata already set (no follow-up `metadata-add` calls
needed).

Documents are queued for processing asynchronously — no pipeline is spawned inline.
Poll `/documents/indexing-status/` to track progress.




## OpenAPI

````yaml /api-reference/openapi-public.yaml post /projects/{project_id}/documents/bulk-upload/
openapi: 3.0.3
info:
  title: Clarifeye Platform API — Public API
  description: >
    Forward-facing, supported REST API for new integrators of the Clarifeye
    Platform.


    Covers the curated public surface: authentication, knowledge management

    (documents), users & teams, signals, and tool execution. New integrations

    should target these endpoints.


    ## Authentication

    All endpoints require authentication. Include the Authorization header in
    every request using either format:

    - `Authorization: Token <token_key>`

    - `Authorization: Bearer <token_key>`
  version: 1.0.0
  contact:
    name: Clarifeye Support
servers:
  - url: https://eu.app.clarifeye.ai/api/v1
    description: EU
  - url: https://us.app.clarifeye.ai/api/v1
    description: US
security:
  - BearerAuth: []
  - TokenAuth: []
tags:
  - name: Users
    description: Manage users within a project
  - name: Invitations
    description: Manage project invitations
  - name: Documents
    description: Manage documents within a project
  - name: Signals
    description: Submit signals about the project's content for domain experts to review
  - name: Tools
    description: Execute configured AI tools with custom parameters
  - name: Interviews
    description: >-
      Assign, run and review structured interview conversations, and manage
      interview drafts and campaigns
  - name: Artifacts
    description: >
      Knowledge-store artifact catalog: list artifacts, create and edit custom
      artifacts,

      manage scope membership, read and publish versions, and configure the
      cohesion guide.
  - name: Knowledge Changelog
    description: Chronological log of changes to the knowledge store's artifacts.
paths:
  /projects/{project_id}/documents/bulk-upload/:
    post:
      tags:
        - Documents
      summary: Bulk upload documents
      description: >
        Upload multiple documents at once. Optionally skip the automatic parsing
        pipeline.


        Per-file metadata can be attached at upload time via the
        `files_metadata` field so

        documents arrive with their metadata already set (no follow-up
        `metadata-add` calls

        needed).


        Documents are queued for processing asynchronously — no pipeline is
        spawned inline.

        Poll `/documents/indexing-status/` to track progress.
      operationId: bulkUploadDocuments
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - files
              properties:
                files:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: One or more files to upload
                files_metadata:
                  type: string
                  description: >
                    Optional JSON-encoded array of per-file metadata, aligned by
                    position with

                    `files`. Each entry is itself a list of `[key, value]`
                    string pairs for the

                    corresponding file, e.g.

                    `[[["author","Alice"],["year","2024"]],
                    [["author","Bob"]]]`.


                    The array length **must** equal the number of uploaded
                    files. If the lengths

                    do not match, all metadata is silently ignored and the files
                    are uploaded

                    without any metadata.
                skip_parsing:
                  type: string
                  enum:
                    - 'true'
                    - 'false'
                  default: 'false'
                  description: Set to "true" to skip automatic parsing pipeline
      responses:
        '201':
          description: Documents uploaded successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Document'
        '400':
          description: Bad request - no files uploaded or invalid file format
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
components:
  parameters:
    ProjectId:
      name: project_id
      in: path
      required: true
      description: UUID of the project
      schema:
        type: string
        format: uuid
  schemas:
    Document:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          description: Document filename
        file:
          type: string
          format: uri
          description: URL to the document file
        content_type:
          type: string
          description: MIME type of the document
          example: application/pdf
        computed_pdf_file:
          type: string
          format: uri
          nullable: true
          description: URL to generated PDF version (if applicable)
        source:
          type: string
          enum:
            - upload
            - connector
          description: Origin of the document
        source_metadata:
          type: object
          description: Metadata about the document source
        page_count:
          type: integer
          nullable: true
          description: Number of pages in the document
        file_size:
          type: integer
          nullable: true
          description: File size in bytes
        metadata:
          type: array
          description: >
            List of key-value metadata pairs. Each element is a two-element
            array `[key, value]`.
          items:
            type: array
            items:
              type: string
            minItems: 2
            maxItems: 2
          example:
            - - category
              - Finance
            - - region
              - EMEA
        status:
          type: string
          enum:
            - active
            - deleting
            - deleted
          description: Document deletion status
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error message
      example:
        error: User not found
  responses:
    Unauthorized:
      description: Unauthorized - missing or invalid authentication
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Authentication credentials were not provided.
    Forbidden:
      description: Forbidden - insufficient permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: You do not have permission to perform this action.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: 'Use Authorization: Bearer <token>'
    TokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'Use Authorization: Token <token>'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.