---
title: "Discover managed knowledge websites"
method: GET
path: "/knowledge/websites"
---

# Discover managed knowledge websites

`GET /knowledge/websites`

## Request

- Base URL: `https://platform-api.visitoai.com/m2m/v1`
- URL: `https://platform-api.visitoai.com/m2m/v1/knowledge/websites`
- Auth: HTTP bearer

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.

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

Success

- KnowledgeWebsites
  - `websites` KnowledgeWebsite[], required
    - `websiteId` string, required
    - `sourceId` string, required
    - `sourceType` 'website', required
    - `active` boolean, required
    - `scope` 'property' | 'global', required
    - `title` string, required
    - `url` string, required
    - `chunkCount` integer, required
    - `activeTokens` integer
    - `selectedTokens` integer
    - `createdBy` object
      - `id` string
      - `displayName` string
      - `email` string
    - `rootUrl` string, required
    - `normalizedRootUrl` string, required
    - `crawlDepth` integer, required
    - `maxPages` integer, required
    - `propertyId` string
    - `propertyName` string
    - `status` 'idle' | 'crawling' | 'failed', required
    - `defaultEnabled` boolean, required
    - `selectionRules` object[], required
      - `kind` 'path' | 'page', required
      - `key` string, required
      - `enabled` boolean, required
    - `currentGenerationId` string
    - `latestJob` KnowledgeCrawlJob
      - `jobId` string
      - `status` 'queued' | 'running' | 'completed' | 'failed'
      - `progress` object
        - `phase` 'queued' | 'crawling' | 'embedding' | 'finalizing'
        - `pagesDiscovered` integer
        - `pagesProcessed` integer
        - `chunksEmbedded` integer
      - `chunks` integer
      - `url` string
      - `crawlDepth` integer
      - `maxPages` integer
      - `sourceId` string
      - `error` object
        - `code` string
        - `message` string
      - `websiteId` string
      - `websiteGenerationId` string
      - `createdAt` string
      - `startedAt` string
      - `completedAt` string
      - `updatedAt` string
      - `snapshotPages` integer
    - `totalPages` integer, required
    - `enabledPages` integer, required
    - `pages` object[]
      - `sourceId` string, required
      - `url` string, required
      - `canonicalUrl` string, required
      - `path` string, required
      - `enabled` boolean, required
      - `chunkCount` integer, required
      - `tokens` integer
      - `displayOrder` integer
      - `updatedAt` string
    - `createdAt` string
    - `updatedAt` string
    - `lastCrawledAt` string
  - `nextCursor` string

## Other responses

- `400`: Invalid request
- `403`: Missing permission
- `404`: Resource not found
- `409`: Conflict; read state and reconcile

---

[API](https://skmtc.dev/visitoai/apis/visito-m2m-api.md) - [All operations](https://skmtc.dev/visitoai/apis/visito-m2m-api/llms.txt) - [OpenAPI document](https://skmtc.dev/visitoai/apis/visito-m2m-api/revisions/98377d35c234?raw)
