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

# upload knowledge group document

> Upload a document to a RAG group (Supports PDF, TXT, MD, DOCX, CSV, JSON up to 50MB). Authentication can be via API key (Bearer token) OR upload token (X-Upload-Token header).



## OpenAPI

````yaml https://api.anam.ai/swagger.json post /v1/knowledge/groups/{id}/documents
openapi: 3.1.0
info:
  title: Anam AI API
  version: '1.0'
servers:
  - url: https://api.anam.ai
    description: Anam API
security:
  - BearerAuth: []
tags:
  - name: Sessions
  - name: Avatar Videos
  - name: Meetings
  - name: Personas
  - name: Avatars
  - name: Voices
  - name: LLMs
  - name: Knowledge
  - name: Tools
  - name: Share Links
  - name: Engine
paths:
  /v1/knowledge/groups/{id}/documents:
    post:
      tags:
        - Knowledge
      summary: upload knowledge group document
      description: >-
        Upload a document to a RAG group (Supports PDF, TXT, MD, DOCX, CSV, JSON
        up to 50MB). Authentication can be via API key (Bearer token) OR upload
        token (X-Upload-Token header).
      operationId: uploadKnowledgeGroupDocument
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
          description: Unique identifier of the knowledge group
      requestBody:
        description: >-
          Document file to upload into the knowledge group. Supported formats
          are PDF, TXT, MD, DOCX, CSV, and JSON, up to 50MB. Must be sent as
          `multipart/form-data`. Documents are processed asynchronously — the
          returned record starts in `PROCESSING` state and becomes searchable
          once it reaches `READY`.
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - file
              properties:
                file:
                  type: string
                  format: binary
                  description: Document file (PDF, TXT, MD, DOCX, CSV, or JSON, max 50MB).
                chunkSize:
                  type: integer
                  minimum: 100
                  maximum: 2000
                  description: >-
                    Maximum tokens per chunk for this document. Defaults to the
                    group's chunkSize, or the default of 350 when the group has
                    none. Setting chunkSize or chunkOverlap overrides the
                    group's settings for this document. JSON files ignore chunk
                    settings; they are kept whole up to 2000 tokens, and larger
                    files are split at 1000 tokens with 50 overlap.
                chunkOverlap:
                  type: integer
                  minimum: 0
                  maximum: 1000
                  description: >-
                    Token overlap between chunks for this document. Must be at
                    most half of chunkSize, or at most 175 when chunkSize is not
                    set. Defaults to the group's chunkOverlap, or the default of
                    0 when the group has none. If you set only chunkSize,
                    overlap is the default of 0 rather than the group's value.
      responses:
        '201':
          description: Successfully uploaded document
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnowledgeDocument'
              examples:
                default:
                  $ref: '#/components/examples/KnowledgeDocumentResponse'
        '400':
          description: Bad request - Invalid file or parameters
        '401':
          description: Unauthorized - Invalid or missing API key/upload token
        '403':
          description: Forbidden - API key lacks the required permission
        '404':
          description: RAG group not found
        '500':
          description: Server error
components:
  schemas:
    KnowledgeDocument:
      type: object
      description: >-
        A single file uploaded into a knowledge group. Retrieved chunks
        reference it by ID.
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the document.
        knowledgeFolderId:
          type: string
          format: uuid
          description: ID of the knowledge group this document belongs to.
        filename:
          type: string
          description: Original filename as uploaded.
        fileType:
          type: string
          description: MIME type or extension-derived file type.
        fileSize:
          type: integer
          description: Size of the file in bytes.
        fileUrl:
          type: string
          format: uri
          description: Internal URL at which the file is stored.
        status:
          type: string
          enum:
            - UPLOADED
            - PROCESSING
            - READY
            - FAILED
          description: Current processing state. Only `READY` documents are searchable.
        errorMessage:
          type:
            - string
            - 'null'
          description: Failure reason when `status` is `FAILED`, otherwise `null`.
        chunkSize:
          type:
            - integer
            - 'null'
          description: >-
            Chunk size override set at upload, in tokens; null when not
            overridden. When both chunkSize and chunkOverlap are null, the
            document uses its group's settings. When only chunkOverlap is set, a
            null chunkSize means the default of 350.
        chunkOverlap:
          type:
            - integer
            - 'null'
          description: >-
            Chunk overlap override set at upload, in tokens; null when not
            overridden. When both chunkSize and chunkOverlap are null, the
            document uses its group's settings. When only chunkSize is set, a
            null chunkOverlap means the default of 0.
        appliedChunking:
          type:
            - object
            - 'null'
          description: >-
            Settings the last successful processing used. Null until the
            document has been processed.
          properties:
            strategy:
              type: string
            chunkSize:
              type:
                - integer
                - 'null'
            chunkOverlap:
              type:
                - integer
                - 'null'
            source:
              type: string
              enum:
                - document
                - folder
                - default
            appliedAt:
              type: string
              format: date-time
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the document was uploaded.
        updatedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: Timestamp when the document record was last updated.
  examples:
    KnowledgeDocumentResponse:
      summary: A single knowledge document
      value:
        id: 00000000-0000-0000-0000-000000000000
        knowledgeFolderId: 00000000-0000-0000-0000-000000000000
        filename: getting-started.pdf
        fileType: application/pdf
        fileSize: 248320
        fileUrl: https://cdn.anam.ai/knowledge/getting-started.pdf
        status: READY
        errorMessage: null
        chunkSize: null
        chunkOverlap: null
        appliedChunking:
          strategy: paragraph
          chunkSize: 800
          chunkOverlap: 100
          source: folder
          appliedAt: '2026-04-20T10:01:12.000Z'
        createdAt: '2026-04-20T10:00:00.000Z'
        updatedAt: '2026-04-20T10:01:12.000Z'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

````

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