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

# Bulk Create Sources from S3 Folder

> Discover supported files under an S3 folder, map topic paths from
folder hierarchy, and run bulk S3 ingestion.

In addition to standard source files (pdf, html, md, csv, etc.),
this endpoint also discovers structured JSON files for KBA and Forum
ingestion. Files whose name ends with `_kba.json` are ingested as
KBA sources, and files ending with `_forum.json` are ingested as
Forum sources. Other `.json` files are ignored.



## OpenAPI

````yaml /api-reference/knowledge-agent/source-api.json post /sources/bulk-ingest-s3-folder/
openapi: 3.0.3
info:
  title: Arcturus Source API
  version: 1.0.0
  description: API for managing sources and topics
servers:
  - url: https://api-prod.voltai.ai/source/api/
    description: Production
security: []
tags:
  - name: Sources
    description: Source CRUD operations
  - name: Sources - Bulk Actions
    description: Bulk operations on sources
  - name: Topics
    description: Topic CRUD operations
  - name: Topics - Tree & Sources
    description: Topic hierarchy and source listings
  - name: Topics - Bulk Actions
    description: Bulk operations on topics
  - name: Sources - Bulk Ingest
    description: Bulk ingestion of sources
paths:
  /sources/bulk-ingest-s3-folder/:
    post:
      tags:
        - Sources - Bulk Ingest
      summary: Bulk Create Sources from S3 Folder
      description: |-
        Discover supported files under an S3 folder, map topic paths from
        folder hierarchy, and run bulk S3 ingestion.

        In addition to standard source files (pdf, html, md, csv, etc.),
        this endpoint also discovers structured JSON files for KBA and Forum
        ingestion. Files whose name ends with `_kba.json` are ingested as
        KBA sources, and files ending with `_forum.json` are ingested as
        Forum sources. Other `.json` files are ignored.
      operationId: sources_bulk_ingest_s3_folder_create
      parameters:
        - in: query
          name: organization_name
          schema:
            type: string
          description: Organization name (required for multi-tenant API keys)
          required: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                s3_folder_url:
                  type: string
                  minLength: 1
                  description: 'S3 folder URL (example: s3://my-bucket/docs/)'
                force_reupload_existing:
                  type: boolean
                  default: false
                  description: >-
                    When true, re-upload and re-parse even if source already
                    exists.
                parent_topic_path:
                  type: array
                  items:
                    type: string
                    minLength: 1
                  description: >-
                    Optional parent topic root-to-leaf path. This path is
                    prefixed to each discovered file topic path.
              required:
                - s3_folder_url
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceS3FolderIngestAcceptedResponse'
          description: S3 folder discovery and ingestion queued.
      security:
        - cookieAuth: []
        - ApiKeyAuth: []
components:
  schemas:
    SourceS3FolderIngestAcceptedResponse:
      type: object
      description: Response returned when an S3 folder ingestion job is queued.
      properties:
        message:
          type: string
        job_id:
          type: string
          format: uuid
      required:
        - message
        - job_id
  securitySchemes:
    cookieAuth:
      type: apiKey
      in: cookie
      name: sessionid
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY
      description: >-
        API key for authentication. Get your API key from the organization
        settings.

````