---
title: "Refresh a managed knowledge website"
method: POST
path: "/knowledge/websites/{websiteId}/recrawl"
---

# Refresh a managed knowledge website

`POST /knowledge/websites/{websiteId}/recrawl`

## Request

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

Enqueue a new crawl of an existing website; preserve existing knowledge until the service finalizes its generation. Uses crawl configuration already stored on the website. Poll get_knowledge_crawl using returned jobId, then read get_knowledge_website. May fetch external pages and embed content; reconcile existing jobs after timeouts before retrying. Required permission: knowledge:write. Connected business only; no tenant override.

## Path parameters

- `websiteId` string, required

## Request body

- object

## Response `202`

Success

- 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

## 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)
