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

# Add a knowledge source

> Type `text` is indexed before the response (201, `ready`). Type `url` starts a crawl and answers 202 `pending`; poll the list for its status.



## OpenAPI

````yaml /api-reference/openapi.json post /agents/{agent_id}/knowledge
openapi: 3.1.0
info:
  title: Wiredesk API
  version: 1.0.0
  description: >-
    Read and change a Wiredesk workspace: agents, conversations, contacts, leads
    and knowledge, and talk to an agent. Authenticate with an API key from
    Developers → API keys. Every response carries an x-request-id header, which
    Developers → Logs finds the request by.
servers:
  - url: https://wiredesk.ai/api/v1
security:
  - bearerAuth: []
tags:
  - name: Agents
    description: 'The workspace''s agents: their name, greeting, instructions and channels.'
  - name: Chat
    description: >-
      Send a customer's message to an agent and get its reply, without the chat
      widget.
  - name: Knowledge
    description: >-
      What an agent answers from: pasted text and websites, and the sources
      added in the dashboard.
  - name: Conversations
    description: Conversations on every channel, and their transcripts.
  - name: Contacts
    description: The people the agents talk to, by phone number, email or your own id.
  - name: Leads
    description: Leads the agents captured.
  - name: Onboarding
    description: >-
      Agent-first onboarding: an AI agent builds a trial agent from a website,
      and a person claims it.
paths:
  /agents/{agent_id}/knowledge:
    post:
      tags:
        - Knowledge
      summary: Add a knowledge source
      description: >-
        Type `text` is indexed before the response (201, `ready`). Type `url`
        starts a crawl and answers 202 `pending`; poll the list for its status.
      operationId: add_knowledge_source
      parameters:
        - name: agent_id
          in: path
          required: true
          schema:
            type: string
          description: The agent's id.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - text
                    - url
                content:
                  type: string
                  maxLength: 200000
                  description: For `text`.
                label:
                  type: string
                  maxLength: 200
                  description: For `text`. Defaults to "Pasted text".
                url:
                  type: string
                  description: 'For `url`: the website to crawl.'
              required:
                - type
      responses:
        '201':
          description: Text, indexed
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    $ref: '#/components/schemas/KnowledgeSource'
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
        '202':
          description: A crawl, started
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    $ref: '#/components/schemas/KnowledgeSource'
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
        '403':
          description: Read-only key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
        '502':
          description: Upstream failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
components:
  schemas:
    KnowledgeSource:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
          const: knowledge_source
        agent_id:
          type: string
        type:
          type: string
          enum:
            - url
            - text
            - file
            - qa
            - zendesk_guide
            - intercom_articles
            - notion
            - confluence
          description: >-
            `qa` is a Q&A answer. `zendesk_guide`, `intercom_articles`, `notion`
            and `confluence` are synced from a connected app every 15 minutes;
            they are set up on the agent's Knowledge page.
        label:
          type: string
        status:
          type: string
          enum:
            - pending
            - ready
            - error
        error:
          anyOf:
            - type: string
            - type: 'null'
        chunk_count:
          type: integer
        page_count:
          type: integer
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              enum:
                - invalid_request
                - unauthorized
                - spend_cap_reached
                - read_only_key
                - channel_disabled
                - knowledge_full
                - not_found
                - method_not_allowed
                - already_exists
                - conflict
                - rate_limited
                - internal_error
                - upstream_error
                - not_configured
            message:
              type: string
          additionalProperties: true
  headers:
    RequestId:
      description: >-
        A unique id for this request, on every response including errors.
        Developers → Logs finds the request by it; quote it to support.
      schema:
        type: string
        format: uuid
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: An API key, `wd_...`.

````

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