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

# Discover knowledge sources and managed websites

> Start here for a combined inventory: text, file, standalone URL sources and managed website groups. Metadata/title search only, not semantic retrieval. Website pages are represented by their website item; use get_knowledge_website for generation and page selection. Follow nextCursor; sourceId and websiteId are distinct IDs. Required permission: knowledge:read. Connected business only; no tenant override.



## OpenAPI

````yaml /openapi.json get /knowledge/items
openapi: 3.0.3
info:
  title: Visito M2M API
  version: 1.0.0
  description: >-
    Tenant-scoped server-to-server API for channels, conversations, commerce,
    custom AI tools, and WhatsApp templates. Send operations are asynchronous
    and return queued acknowledgements. Expansion adds conversation controls,
    knowledge, sales opportunities, delivery status, reporting, and signed
    webhooks.
servers:
  - url: https://platform-api.visitoai.com/m2m/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Channels
  - name: Conversations
  - name: Commerce
  - name: Custom tools
  - name: WhatsApp templates
  - name: Properties
  - name: Knowledge
  - name: Sales CRM
  - name: Delivery
  - name: Reporting
  - name: Webhooks
paths:
  /knowledge/items:
    get:
      summary: Discover knowledge sources and managed websites
      description: >-
        Start here for a combined inventory: text, file, standalone URL sources
        and managed website groups. Metadata/title search only, not semantic
        retrieval. Website pages are represented by their website item; use
        get_knowledge_website for generation and page selection. Follow
        nextCursor; sourceId and websiteId are distinct IDs. Required
        permission: knowledge:read. Connected business only; no tenant override.
      operationId: list_knowledge_items
      parameters:
        - name: limit
          in: query
          required: false
          description: Page size; default 50, maximum 200.
          schema:
            type: integer
            minimum: 1
            maximum: 200
        - name: cursor
          in: query
          required: false
          description: >-
            Copy nextCursor from the previous response and retain all filters.
            Stop when nextCursor is absent; never construct a cursor.
          schema:
            type: string
            maxLength: 400
        - name: status
          in: query
          required: false
          description: >-
            Default all. Include inactive sources when diagnosing missing or
            quota-limited knowledge.
          schema:
            type: string
            enum:
              - all
              - active
              - inactive
        - name: sourceType
          in: query
          required: false
          description: Optional type filter; omit for all.
          schema:
            type: string
            enum:
              - text
              - file
              - url
              - website
        - name: query
          in: query
          required: false
          description: >-
            Title/URL metadata search; use search_knowledge for indexed answer
            content.
          schema:
            type: string
            maxLength: 200
        - name: propertyFilter
          in: query
          required: false
          description: >-
            Copy propertyId from list_properties, or global for globally
            applicable knowledge; omit for all.
          schema:
            type: string
            maxLength: 128
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnowledgeItems'
        '400':
          description: Invalid request
        '403':
          description: Missing permission
        '404':
          description: Resource not found
        '409':
          description: Conflict; read state and reconcile
components:
  schemas:
    KnowledgeItems:
      type: object
      additionalProperties: false
      properties:
        items:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/KnowledgeSource'
              - $ref: '#/components/schemas/KnowledgeWebsite'
          maxItems: 200
        nextCursor:
          type: string
          maxLength: 400
      required:
        - items
    KnowledgeSource:
      type: object
      properties:
        sourceId:
          type: string
        sourceType:
          type: string
          enum:
            - text
            - file
            - url
        title:
          type: string
        active:
          type: boolean
        updatedAt:
          type: string
          format: date-time
        text:
          type: string
        url:
          type: string
        chunkCount:
          type: integer
        activeTokens:
          type: integer
        scope:
          type: string
          enum:
            - global
            - property
        propertyId:
          type: string
        propertyName:
          type: string
        preview:
          type: string
        originalFile:
          type: object
          properties:
            filename:
              type: string
            contentType:
              type: string
            size:
              type: integer
            uploadedAt:
              type: string
        asset:
          $ref: '#/components/schemas/KnowledgeAsset'
        createdAt:
          type: string
          maxLength: 128
        createdBy:
          type: object
          additionalProperties: false
          properties:
            id:
              type: string
              maxLength: 128
            displayName:
              type: string
              maxLength: 160
            email:
              type: string
              maxLength: 320
        websiteId:
          type: string
          maxLength: 128
        websiteGenerationId:
          type: string
          maxLength: 128
        canonicalUrl:
          type: string
          maxLength: 2048
        websiteGenerationState:
          type: string
          enum:
            - staging
            - current
            - superseded
      required:
        - sourceId
        - sourceType
        - active
        - chunkCount
    KnowledgeWebsite:
      type: object
      additionalProperties: false
      properties:
        websiteId:
          type: string
          maxLength: 128
        sourceId:
          type: string
          maxLength: 128
        sourceType:
          type: string
          enum:
            - website
        active:
          type: boolean
        scope:
          type: string
          enum:
            - property
            - global
        title:
          type: string
          maxLength: 160
        url:
          type: string
          maxLength: 2048
        chunkCount:
          type: integer
          minimum: 0
        activeTokens:
          type: integer
          minimum: 0
        selectedTokens:
          type: integer
          minimum: 0
        createdBy:
          type: object
          additionalProperties: false
          properties:
            id:
              type: string
              maxLength: 128
            displayName:
              type: string
              maxLength: 160
            email:
              type: string
              maxLength: 320
        rootUrl:
          type: string
          maxLength: 2048
        normalizedRootUrl:
          type: string
          maxLength: 2048
        crawlDepth:
          type: integer
          minimum: 1
          maximum: 10
        maxPages:
          type: integer
          minimum: 1
          maximum: 500
        propertyId:
          type: string
          maxLength: 128
        propertyName:
          type: string
          maxLength: 160
        status:
          type: string
          enum:
            - idle
            - crawling
            - failed
        defaultEnabled:
          type: boolean
        selectionRules:
          type: array
          items:
            type: object
            additionalProperties: false
            properties:
              kind:
                type: string
                enum:
                  - path
                  - page
              key:
                type: string
                maxLength: 2048
              enabled:
                type: boolean
            required:
              - kind
              - key
              - enabled
        currentGenerationId:
          type: string
          maxLength: 128
        latestJob:
          $ref: '#/components/schemas/KnowledgeCrawlJob'
        totalPages:
          type: integer
          minimum: 0
        enabledPages:
          type: integer
          minimum: 0
        pages:
          type: array
          items:
            type: object
            additionalProperties: false
            properties:
              sourceId:
                type: string
                maxLength: 128
              url:
                type: string
                maxLength: 2048
              canonicalUrl:
                type: string
                maxLength: 2048
              path:
                type: string
                maxLength: 2048
              enabled:
                type: boolean
              chunkCount:
                type: integer
                minimum: 0
              tokens:
                type: integer
                minimum: 0
              displayOrder:
                type: integer
                minimum: 0
              updatedAt:
                type: string
                maxLength: 128
            required:
              - sourceId
              - url
              - canonicalUrl
              - path
              - enabled
              - chunkCount
          maxItems: 500
        createdAt:
          type: string
          maxLength: 128
        updatedAt:
          type: string
          maxLength: 128
        lastCrawledAt:
          type: string
          maxLength: 128
      required:
        - websiteId
        - sourceId
        - sourceType
        - active
        - scope
        - title
        - url
        - chunkCount
        - rootUrl
        - normalizedRootUrl
        - crawlDepth
        - maxPages
        - status
        - defaultEnabled
        - selectionRules
        - totalPages
        - enabledPages
    KnowledgeAsset:
      type: object
      additionalProperties: false
      properties:
        sourceId:
          type: string
          maxLength: 128
        title:
          type: string
          maxLength: 160
        description:
          type: string
          maxLength: 600
        mediaType:
          type: string
          enum:
            - image
            - document
        contentType:
          type: string
          maxLength: 128
        filename:
          type: string
          maxLength: 255
        sizeBytes:
          type: integer
          minimum: 0
        active:
          type: boolean
        validationStatus:
          type: string
          enum:
            - unsupported
            - pending
            - ready
            - blocked
            - failed
        validationFindings:
          type: array
          items:
            type: string
            maxLength: 2000
        propertyId:
          type: string
          maxLength: 128
        propertyName:
          type: string
          maxLength: 160
        folderId:
          type: string
          maxLength: 128
      required:
        - sourceId
        - title
        - contentType
        - filename
        - sizeBytes
        - active
        - validationStatus
        - validationFindings
    KnowledgeCrawlJob:
      type: object
      properties:
        jobId:
          type: string
        status:
          type: string
          enum:
            - queued
            - running
            - completed
            - failed
        progress:
          type: object
          properties:
            phase:
              type: string
              enum:
                - queued
                - crawling
                - embedding
                - finalizing
            pagesDiscovered:
              type: integer
            pagesProcessed:
              type: integer
            chunksEmbedded:
              type: integer
        chunks:
          type: integer
        url:
          type: string
        crawlDepth:
          type: integer
        maxPages:
          type: integer
        sourceId:
          type: string
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
        websiteId:
          type: string
          maxLength: 128
        websiteGenerationId:
          type: string
          maxLength: 128
        createdAt:
          type: string
          maxLength: 128
        startedAt:
          type: string
          maxLength: 128
        completedAt:
          type: string
          maxLength: 128
        updatedAt:
          type: string
          maxLength: 128
        snapshotPages:
          type: integer
          minimum: 0
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Visito M2M API key
      description: Server-side tenant-scoped credential created from Build > API Keys.

````

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