> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://api.docs.modulards.com/modular-ds-public-api/security-health/health-checks/list-a-website-s-site-health-checks/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://api.docs.modulards.com/_mcp/server. # List a website's site health checks GET https://api.modulards.com/api/public/v1/sites/{site}/health Lists the site health checks reported for one website. Use it to see what needs attention on a website, for example with `filter[status][]=critical` to list only the critical checks. Each check is in the `performance` or `security` category and has a status of `good`, `recommended` or `critical`. A check you muted keeps its status but counts one level milder. The worst checks come first unless you sort otherwise. Refreshing the checks and muting or unmuting one are done from the dashboard. Your role must be allowed to see health checks; without it the request answers 404. Reference: https://api.docs.modulards.com/modular-ds-public-api/security-health/health-checks/list-a-website-s-site-health-checks ## Authentication - `Authorization` header (bearer token, required) — Personal access token created in the Modular DS dashboard; read-only tokens can only call GET endpoints. ## Request ### Path parameters - `site` (string, required) ### Query parameters - `filter[status][]` (string, optional) — Only checks with these statuses: `good`, `recommended` or `critical`. Several values match any of them. - `filter[category][]` (string, optional) — Only checks of these categories: `performance` or `security`. Several values match any of them. - `filter[type][]` (string, optional) — Only these kinds of check, for example `php_version`, `wordpress_version`, `has_ssl`, `memory_limit`, `vulnerabilities_detected` or `pseudo_cron`. Several values match any of them. - `filter[ignored]` (string, optional) — `1` for only the checks you muted, `0` for only the ones that still count. Omit it to get both. - `sort` (string, optional) — Sort order. Accepted: `status`, `type`, `created_at`; a leading `-` reverses the order. Default `-status`, the worst checks first (plain `status` lists the best first). - `page[number]` (string, optional) — Page number, starting at 1. - `page[size]` (string, optional) — Rows per page, up to 50 (default 15). ## Response ### 200 200 - Health checks - `data` (list of ApiPublicV1SitesSiteHealthGetResponsesContentApplicationJsonSchemaDataItems, optional) - `jsonapi` (ApiPublicV1SitesSiteHealthGetResponsesContentApplicationJsonSchemaJsonapi, optional) - `links` (ApiPublicV1SitesSiteHealthGetResponsesContentApplicationJsonSchemaLinks, optional) - `meta` (ApiPublicV1SitesSiteHealthGetResponsesContentApplicationJsonSchemaMeta, optional) ## Types ### ApiPublicV1SitesSiteHealthGetResponsesContentApplicationJsonSchemaDataItems - `attributes` (ApiPublicV1SitesSiteHealthGetResponsesContentApplicationJsonSchemaDataItemsAttributes, optional) - `id` (string, optional) - `type` (string, optional) ### ApiPublicV1SitesSiteHealthGetResponsesContentApplicationJsonSchemaJsonapi - `version` (string, optional) ### ApiPublicV1SitesSiteHealthGetResponsesContentApplicationJsonSchemaLinks - `first` (string, optional) - `last` (string, optional) - `next` (any, optional, nullable) - `prev` (any, optional, nullable) ### ApiPublicV1SitesSiteHealthGetResponsesContentApplicationJsonSchemaMeta - `current_page` (double, optional) - `from` (double, optional) - `last_page` (double, optional) - `links` (list of ApiPublicV1SitesSiteHealthGetResponsesContentApplicationJsonSchemaMetaLinksItems, optional) - `path` (string, optional) - `per_page` (double, optional) - `to` (double, optional) - `total` (double, optional) ### ApiPublicV1SitesSiteHealthGetResponsesContentApplicationJsonSchemaDataItemsAttributes - `category` (enum, optional) — Area of the check, derived from its type. - Allowed values: `performance`, `security` - `created_at` (string, optional) - `description` (string, optional) - `effective_status` (enum, optional) — Result shown to the user: one level milder than status when the check is ignored. - Allowed values: `good`, `recommended`, `critical` - `ignored_at` (datetime, optional, nullable) — When the check was ignored; null while it counts. - `label` (string, optional) - `status` (enum, optional) — Raw result of the check. - Allowed values: `good`, `recommended`, `critical` - `type` (string, optional) - `updated_at` (string, optional) ### ApiPublicV1SitesSiteHealthGetResponsesContentApplicationJsonSchemaMetaLinksItems - `active` (boolean, optional) - `label` (string, optional) - `url` (string, optional, nullable) ## Examples **Response** ```json { "data": [ { "attributes": { "category": "security", "created_at": "2026-09-10T06:00:00.000000Z", "description": "One or more installed plugins or themes have a known vulnerability.", "effective_status": "critical", "ignored_at": null, "label": "Vulnerabilities detected", "status": "critical", "type": "vulnerabilities_detected", "updated_at": "2026-09-17T06:00:00.000000Z" }, "id": "1", "type": "site-health-checks" }, { "attributes": { "category": "performance", "created_at": "2026-09-10T06:00:00.000000Z", "description": "Update PHP to the latest supported version for better performance and security.", "effective_status": "good", "ignored_at": "2026-09-11T08:00:00.000000Z", "label": "PHP version is not the latest", "status": "recommended", "type": "php_version", "updated_at": "2026-09-11T08:00:00.000000Z" }, "id": "2", "type": "site-health-checks" } ], "jsonapi": { "version": "1.1" }, "links": { "first": "{{base_url}}/api/public/v1/sites/30/health?page%5Bnumber%5D=1", "last": "{{base_url}}/api/public/v1/sites/30/health?page%5Bnumber%5D=1", "next": null, "prev": null }, "meta": { "current_page": 1, "from": 1, "last_page": 1, "links": [ { "active": false, "label": "« Previous", "url": null }, { "active": true, "label": "1", "url": "{{base_url}}/api/public/v1/sites/30/health?page%5Bnumber%5D=1" }, { "active": false, "label": "Next »", "url": null } ], "path": "{{base_url}}/api/public/v1/sites/30/health", "per_page": 15, "to": 2, "total": 2 } } ``` **SDK Code** ```python 200 - Health checks import requests url = "https://api.modulards.com/api/public/v1/sites/site/health" headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript 200 - Health checks const url = 'https://api.modulards.com/api/public/v1/sites/site/health'; const options = {method: 'GET', headers: {Authorization: 'Bearer '}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go 200 - Health checks package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.modulards.com/api/public/v1/sites/site/health" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby 200 - Health checks require 'uri' require 'net/http' url = URI("https://api.modulards.com/api/public/v1/sites/site/health") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java 200 - Health checks import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.modulards.com/api/public/v1/sites/site/health") .header("Authorization", "Bearer ") .asString(); ``` ```php 200 - Health checks request('GET', 'https://api.modulards.com/api/public/v1/sites/site/health', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp 200 - Health checks using RestSharp; var client = new RestClient("https://api.modulards.com/api/public/v1/sites/site/health"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift 200 - Health checks import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.modulards.com/api/public/v1/sites/site/health")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```