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

# Import content in bulk

> Create up to 200 entries in one call. Each item is validated on its own and the response reports successes and failures separately, keyed by your clientRef, so one bad row does not sink the batch.



## OpenAPI

````yaml /api-reference/specs/claudia/v1.json post /v1/knowledge-bases/{kbId}/entries/import
openapi: 3.0.1
info:
  title: Claudia API
  version: 1.0.0
servers:
  - url: https://api.cloudhumans.com/claudia
    description: Production
  - url: https://api.cloudhumans.com/claudia/staging
    description: Staging
security:
  - bearerAuth: []
tags:
  - name: MCP Servers
    description: >-
      The MCP servers your agents can call tools on. Registering one here is
      what makes its tools selectable in an agent; the credentials it needs are
      stored encrypted and never read back.
  - name: Knowledge Base Content
    description: Read, search and edit the content that answers your customers.
  - name: Content Quality
    description: Rewrites proposed for content that is answering your customers badly.
  - name: Playground
    description: >-
      Talk to one of your agents as if you were a customer, without touching a
      real conversation.
  - name: Project Settings
    description: >-
      Read and change how a ClaudIA project behaves — the settings screens of
      the ClaudIA app, as an API.
  - name: Content Improvements
    description: Answers Claudia proposes for questions your content does not cover yet.
  - name: Knowledge Bases
    description: The knowledge bases your account can manage.
  - name: Content Sources
    description: The sites Claudia crawls to keep a knowledge base in sync.
paths:
  /v1/knowledge-bases/{kbId}/entries/import:
    post:
      tags:
        - Knowledge Base Content
      summary: Import content in bulk
      description: >-
        Create up to 200 entries in one call. Each item is validated on its own
        and the response reports successes and failures separately, keyed by
        your clientRef, so one bad row does not sink the batch.
      operationId: importEntries
      parameters:
        - name: kbId
          in: path
          description: Knowledge base to operate on. Get the ids from listMyKnowledgeBases.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportRequest'
        required: true
      responses:
        '201':
          description: >-
            The batch was processed. Read the per-row outcome — a rejected row
            does not fail the call.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImportResult'
        '400':
          description: The request could not be answered as written.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Missing, expired or invalid credentials.
        '403':
          description: The credentials hold no account allowed to manage this content.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: >-
            No such resource, or none these credentials can reach — the two are
            deliberately indistinguishable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit applied by the API gateway. Back off and retry.
components:
  schemas:
    ImportRequest:
      required:
        - items
      type: object
      properties:
        items:
          type: array
          description: Up to 200 rows.
          items:
            $ref: '#/components/schemas/EntryImportItem'
      description: A batch of content to load.
    ImportResult:
      required:
        - failures
        - successes
      type: object
      properties:
        successes:
          type: array
          description: Rows that were stored.
          items:
            $ref: '#/components/schemas/ImportedEntry'
        failures:
          type: array
          description: >-
            Rows that were refused, with the reason. The rest of the batch still
            applied.
          items:
            $ref: '#/components/schemas/RejectedEntry'
      description: Per-row outcome of a bulk import.
    Error:
      required:
        - error
      type: object
      properties:
        error:
          type: string
          description: What went wrong.
          example: 'Forbidden: token holds no claim for the requested account'
      description: Something the caller needs to fix.
    EntryImportItem:
      required:
        - clientRef
        - response
        - title
        - type
      type: object
      properties:
        clientRef:
          type: string
          description: >-
            Your own reference for this row. The result reports outcomes keyed
            by it.
        title:
          type: string
          description: What the content is about — the question it answers.
        response:
          type: string
          description: The answer itself.
        type:
          type: string
          description: Support level this content answers at. INTERACTIVE is rejected.
          enum:
            - N1
            - N2
            - INTERACTIVE
        label:
          type: string
          description: Tag to apply. Omit to leave the content untagged.
        topic:
          type: string
          description: Topic to group this content under.
      description: One row of a bulk import.
    ImportedEntry:
      required:
        - id
      type: object
      properties:
        clientRef:
          type: string
          description: The reference you sent for this row.
        id:
          type: string
          description: Id of the stored content.
      description: A row that was stored.
    RejectedEntry:
      required:
        - reason
      type: object
      properties:
        clientRef:
          type: string
          description: The reference you sent for this row.
        reason:
          type: string
          description: Why the row was refused.
          example: missing_required_field
          enum:
            - missing_required_field
            - invalid_type
            - invalid_source
            - missing_source_metadata
            - invalid_origin
            - flow_id_required
            - embedding_failed
            - storage_error
            - internal_error
        field:
          type: string
          description: Which field caused it, when the reason points at one.
          example: title
      description: A row that was refused.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````