---
title: "Check a website for chat tools, voice agents and an existing AI notice"
method: POST
path: "/api/scan"
tags: ["Free tools"]
---

# Check a website for chat tools, voice agents and an existing AI notice

`POST /api/scan`

## Request

- Base URL: `https://botnotice.app`
- URL: `https://botnotice.app/api/scan`
- Auth: none required

The HTML pass of the free scan: which chat and voice-AI tools the site runs and whether an AI disclosure is already shown. Results are cached for 12 hours per host; send fresh=true to re-read. Rate limited to 10 per minute per address. For the browser pass (opens the chat, reads its opening line) use the page at /scan.

## Request body

- object
  - `url` string, required: https://example.com
  - `fresh` boolean

## Response `200`

OK

- ScanResult
  - `ok` boolean
  - `url` string
  - `finalUrl` string
  - `error` string
  - `blocked` boolean: The site's bot protection answered instead of the page
  - `chatWidgets` object[]
    - `name` string
    - `evidence` string
    - `weak` boolean: Mentioned in code, not seen running
  - `voiceAgents` object[]
    - `platform` string
    - `name` string, nullable
    - `evidence` string
  - `aiSignals` string[]
  - `disclosureFound` boolean: An AI notice is already on the page
  - `disclosureSnippets` string[]
  - `botnoticeInstalled` boolean
  - `pagesChecked` integer
  - `cached` boolean
  - `cachedAt` string

## Other responses

- `400`: Error
- `429`: Error

---

[API](https://skmtc.dev/botnotice/apis/botnotice-api.md) · [All operations](https://skmtc.dev/botnotice/apis/botnotice-api/llms.txt) · [OpenAPI document](https://skmtc.dev/botnotice/apis/botnotice-api/revisions/33724fe6eab9?raw)
