Launch site scans
Authentication
Personal access token created in the Modular DS dashboard; read-only tokens can only call GET endpoints.
Request
Response
202 - Scans launched, two skipped
Personal access token created in the Modular DS dashboard; read-only tokens can only call GET endpoints.
202 - Scans launched, two skipped
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.Reason codes in meta.skipped, first match wins: PERMISSION_DENIED (the id is outside the token’s reach - site_name is null), SITE_UNREACHABLE (disconnected), UNSUPPORTED (no Malware Scanner configuration, or not yet registered with the scanning provider), CONFLICT (a scan of that website is already running) and QUOTA_EXCEEDED (no scan quota left for any of the requested areas this period - the message carries the reset date). 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).