Launch site scans

View as MarkdownOpen in Claude
Launches a malware scan on an explicit selection of websites, one scan per website, over each website's configured areas unless `included` names them (`core`, `plugins`, `themes`, `mu_plugins`, `content`, `uploads`, `database`); each website's own exclusions always apply. Answers **202** with `data` as `site-scans` resources - one per website the preflight accepted - and `meta.skipped` for every website it refused. **Body** (JSON): - `sites` (array of website ids, required, 1 to 200). - `included` (array of string, optional) - areas to scan instead of each website's configured ones. A website that is disconnected, has no Malware Scanner configuration, is not yet registered with the scanning provider, already has a scan running, or has no scan quota left for any of the requested areas this period is answered in `meta.skipped` with a `reason_code` (`SITE_UNREACHABLE`, `UNSUPPORTED`, `CONFLICT`, `QUOTA_EXCEEDED` - the last carries the reset date) instead of failing the call. When only one of the requested areas has quota left, that website's scan still runs, on that area alone, and the response carries a `meta.warnings` entry naming the area left out. A manual scan uses the website's scan quota and does not move its scheduled scan; a scan can take hours - follow the launched ids with "List site scans" (`filter[id][]`) and read `status`/`verdict`. Requires a full-access token (read-only tokens answer 403).

Authentication

AuthorizationBearer

Personal access token created in the Modular DS dashboard; read-only tokens can only call GET endpoints.

Request

This endpoint expects an object.
includedlist of stringsOptional
siteslist of doublesOptional

Response

202 - Scans launched, one skipped

datalist of objectsOptional
jsonapiobjectOptional
metaobjectOptional