> ## 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 managed knowledge websites

> List website groups with crawl state, applicability and selection metadata. Follow nextCursor and use websiteId for detail, refresh, selection and scope; websiteId is not a sourceId. Detail reads show pages and current generation. Required permission: knowledge:read. Connected business only; no tenant override.



## OpenAPI

````yaml /openapi.json get /knowledge/websites
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/websites:
    get:
      summary: Discover managed knowledge websites
      description: >-
        List website groups with crawl state, applicability and selection
        metadata. Follow nextCursor and use websiteId for detail, refresh,
        selection and scope; websiteId is not a sourceId. Detail reads show
        pages and current generation. Required permission: knowledge:read.
        Connected business only; no tenant override.
      operationId: list_knowledge_websites
      parameters:
        - name: limit
          in: query
          required: false
          description: Page size; default 50, maximum 100.
          schema:
            type: integer
            minimum: 1
            maximum: 100
        - 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
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnowledgeWebsites'
        '400':
          description: Invalid request
        '403':
          description: Missing permission
        '404':
          description: Resource not found
        '409':
          description: Conflict; read state and reconcile
components:
  schemas:
    KnowledgeWebsites:
      type: object
      additionalProperties: false
      properties:
        websites:
          type: array
          items:
            $ref: '#/components/schemas/KnowledgeWebsite'
          maxItems: 100
        nextCursor:
          type: string
          maxLength: 400
      required:
        - websites
    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
    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.