> ## 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.

# Create Source

> Create a new source by uploading a file



## OpenAPI

````yaml /api-reference/knowledge-agent/source-api.json post /sources/
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/:
    post:
      tags:
        - Sources
      summary: Create Source
      description: Create a new source by uploading a file
      operationId: sources_create
      parameters:
        - in: query
          name: organization_name
          schema:
            type: string
          description: Organization name (required for multi-tenant API keys)
          required: true
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SourceCreateRequestRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceAPI'
          description: ''
      security:
        - cookieAuth: []
        - ApiKeyAuth: []
components:
  schemas:
    SourceCreateRequestRequest:
      type: object
      description: Request schema for source creation.
      properties:
        source_type:
          allOf:
            - $ref: '#/components/schemas/SourceTypeEnum'
          description: |-
            Type of the source file (pdf, html, md, csv)

            * `pdf` - pdf
            * `html` - html
            * `md` - md
            * `csv` - csv
        topic_uuids:
          type: array
          items:
            type: string
            format: uuid
          description: List of topic UUIDs to associate with the source
        file:
          type: string
          format: binary
          description: The file to upload
      required:
        - file
        - source_type
    SourceAPI:
      type: object
      description: Serializer for the public API - excludes internal job/tagging fields.
      properties:
        name:
          type: string
          maxLength: 256
        display_name:
          type: string
          nullable: true
          maxLength: 256
        type:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/TypeEnum'
            - $ref: '#/components/schemas/BlankEnum'
            - $ref: '#/components/schemas/NullEnum'
        status:
          $ref: '#/components/schemas/StatusEnum'
        updated_at:
          type: string
          format: date-time
          readOnly: true
        retrieval_disabled:
          type: boolean
        link:
          type: string
          format: uri
          nullable: true
          maxLength: 2048
        topics:
          type: array
          items:
            type: string
      required:
        - name
        - topics
        - updated_at
    SourceTypeEnum:
      enum:
        - pdf
        - html
        - md
        - csv
      type: string
      description: |-
        * `pdf` - pdf
        * `html` - html
        * `md` - md
        * `csv` - csv
    TypeEnum:
      enum:
        - CODE
        - TEXT
        - WEBSITE
        - JIRA
        - PART
        - PINOUT
        - HANDBOOK
        - ARTICLE
        - VIDEO
        - CACHE
        - REPOSITORY
        - HTML
        - MARKDOWN
        - CSV
      type: string
      description: |-
        * `CODE` - Code
        * `TEXT` - Text
        * `WEBSITE` - Website
        * `JIRA` - Jira
        * `PART` - Part
        * `PINOUT` - Pinout
        * `HANDBOOK` - Handbook
        * `ARTICLE` - Article
        * `VIDEO` - Video
        * `CACHE` - Cache
        * `REPOSITORY` - Repository
        * `HTML` - HTML
        * `MARKDOWN` - Markdown
        * `CSV` - CSV
    BlankEnum:
      enum:
        - ''
    NullEnum:
      enum:
        - null
    StatusEnum:
      enum:
        - WAITING_FOR_APPROVAL
        - TRAINING
        - ACTIVE
        - REJECTED
        - ERROR
      type: string
      description: |-
        * `WAITING_FOR_APPROVAL` - Waiting for Approval
        * `TRAINING` - Training
        * `ACTIVE` - Active
        * `REJECTED` - Rejected
        * `ERROR` - Error
  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.

````