> 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/websites/maintenance/update-a-website-s-maintenance-mode/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://api.docs.modulards.com/_mcp/server. # Update a website's maintenance mode PATCH https://api.modulards.com/api/public/v1/sites/{site}/maintenance Content-Type: application/json Turns a website's WordPress maintenance mode on or off and customizes the page visitors see while it is on. Send only the fields you want to change. The change reaches WordPress through the Modular Connector plugin a moment later: the answer confirms the request was stored and queued, not that the website has already switched. While maintenance mode is on the website's connection status is `maintaining`; turning it off also re-verifies the connection in the background. Returns the same document as "Retrieve a website's maintenance mode settings". The four customization fields depend on your plan: an organization whose plan does not include them can still change `status`. **Body** - `status` (`enabled` or `disabled`, optional): turns maintenance mode on or off. - `noindex` (boolean, optional): whether search engines are told not to index the maintenance page. - `background` (string, optional): a hex color for the page background. - `title` (string, optional): the page title, at most 70 characters. - `description` (string, optional): the message shown to visitors, at most 250 characters. **Errors** - **422**: `noindex`, `background`, `title` or `description` is sent while your plan does not include them. Reference: https://api.docs.modulards.com/modular-ds-public-api/websites/maintenance/update-a-website-s-maintenance-mode ## 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) ### Body (application/json) This endpoint expects an object. - `background` (string, optional) - `description` (string, optional) - `noindex` (boolean, optional) - `status` (string, optional) - `title` (string, optional) ## Response ### 200 200 - Maintenance updated - `data` (ApiPublicV1SitesSiteMaintenancePatchResponsesContentApplicationJsonSchemaData, optional) - `jsonapi` (ApiPublicV1SitesSiteMaintenancePatchResponsesContentApplicationJsonSchemaJsonapi, optional) ## Types ### ApiPublicV1SitesSiteMaintenancePatchResponsesContentApplicationJsonSchemaData - `attributes` (ApiPublicV1SitesSiteMaintenancePatchResponsesContentApplicationJsonSchemaDataAttributes, optional) - `id` (string, optional) - `links` (ApiPublicV1SitesSiteMaintenancePatchResponsesContentApplicationJsonSchemaDataLinks, optional) - `type` (string, optional) ### ApiPublicV1SitesSiteMaintenancePatchResponsesContentApplicationJsonSchemaJsonapi - `version` (string, optional) ### ApiPublicV1SitesSiteMaintenancePatchResponsesContentApplicationJsonSchemaDataAttributes - `connection_status` (string, optional) - `connector_version` (string, optional) - `core_version` (string, optional) - `created_at` (string, optional) - `created_by` (double, optional) - `db_engine` (string, optional) - `db_engine_version` (string, optional) - `deleted_at` (any, optional, nullable) - `display_host` (string, optional) - `ecommerce_engine` (string, optional) - `ecommerce_version` (string, optional) - `engine` (string, optional) - `engine_version` (string, optional) - `host` (string, optional) - `is_connected` (boolean, optional) - `is_main_site` (boolean, optional) - `is_multisite` (boolean, optional) - `locale` (string, optional) - `maintenance_background` (string, optional) - `maintenance_description` (string, optional) - `maintenance_noindex` (boolean, optional) - `maintenance_status` (string, optional) - `maintenance_title` (string, optional) - `name` (string, optional) - `path` (any, optional, nullable) - `provider` (string, optional) - `scheme` (string, optional) - `slug` (string, optional) - `synced_at` (string, optional) - `timezone` (string, optional) - `updated_at` (string, optional) - `uri` (string, optional) ### ApiPublicV1SitesSiteMaintenancePatchResponsesContentApplicationJsonSchemaDataLinks - `self` (string, optional) ## Examples ### 200 - Maintenance updated **Response** ```json { "data": { "attributes": { "connection_status": "established", "connector_version": "3.4.2", "core_version": "6.6.2", "created_at": "2026-01-14T09:30:00.000000Z", "created_by": 42, "db_engine": "mysql", "db_engine_version": "8.0.36", "deleted_at": null, "display_host": "acme-corp.com", "ecommerce_engine": "woocommerce", "ecommerce_version": "9.2.3", "engine": "php", "engine_version": "8.3.10", "host": "acme-corp.com", "is_connected": true, "is_main_site": true, "is_multisite": false, "locale": "en_US", "maintenance_background": "#1a1a2e", "maintenance_description": "Scheduled maintenance in progress.", "maintenance_noindex": true, "maintenance_status": "enabled", "maintenance_title": "We will be right back", "name": "Acme Corp", "path": null, "provider": "wp", "scheme": "https", "slug": "acme-corp", "synced_at": "2026-09-16T08:12:00.000000Z", "timezone": "Europe/Madrid", "updated_at": "2026-09-21T09:35:00.000000Z", "uri": "https://acme-corp.com" }, "id": "101", "links": { "self": "https://api.modulards.com/api/public/v1/sites/101" }, "type": "sites" }, "jsonapi": { "version": "1.1" } } ``` **SDK Code** ```python 200 - Maintenance updated import requests url = "https://api.modulards.com/api/public/v1/sites/site/maintenance" headers = {"Authorization": "Bearer "} response = requests.patch(url, headers=headers) print(response.json()) ``` ```javascript 200 - Maintenance updated const url = 'https://api.modulards.com/api/public/v1/sites/site/maintenance'; const options = {method: 'PATCH', 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 - Maintenance updated package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.modulards.com/api/public/v1/sites/site/maintenance" req, _ := http.NewRequest("PATCH", 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 - Maintenance updated require 'uri' require 'net/http' url = URI("https://api.modulards.com/api/public/v1/sites/site/maintenance") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Patch.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java 200 - Maintenance updated import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.patch("https://api.modulards.com/api/public/v1/sites/site/maintenance") .header("Authorization", "Bearer ") .asString(); ``` ```php 200 - Maintenance updated request('PATCH', 'https://api.modulards.com/api/public/v1/sites/site/maintenance', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp 200 - Maintenance updated using RestSharp; var client = new RestClient("https://api.modulards.com/api/public/v1/sites/site/maintenance"); var request = new RestRequest(Method.PATCH); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift 200 - Maintenance updated import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.modulards.com/api/public/v1/sites/site/maintenance")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "PATCH" 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() ``` ### Update a website's maintenance mode **Request** ```json { "background": "#1a1a2e", "description": "Scheduled maintenance in progress.", "noindex": true, "status": "enabled", "title": "We will be right back" } ``` **Response** ```json { "data": { "attributes": { "connection_status": "established", "connector_version": "3.4.2", "core_version": "6.6.2", "created_at": "2026-01-14T09:30:00.000000Z", "created_by": 42, "db_engine": "mysql", "db_engine_version": "8.0.36", "deleted_at": null, "display_host": "acme-corp.com", "ecommerce_engine": "woocommerce", "ecommerce_version": "9.2.3", "engine": "php", "engine_version": "8.3.10", "host": "acme-corp.com", "is_connected": true, "is_main_site": true, "is_multisite": false, "locale": "en_US", "maintenance_background": "#1a1a2e", "maintenance_description": "Scheduled maintenance in progress.", "maintenance_noindex": true, "maintenance_status": "enabled", "maintenance_title": "We will be right back", "name": "Acme Corp", "path": null, "provider": "wp", "scheme": "https", "slug": "acme-corp", "synced_at": "2026-09-16T08:12:00.000000Z", "timezone": "Europe/Madrid", "updated_at": "2026-09-21T09:35:00.000000Z", "uri": "https://acme-corp.com" }, "id": "101", "links": { "self": "https://api.modulards.com/api/public/v1/sites/101" }, "type": "sites" }, "jsonapi": { "version": "1.1" } } ``` **SDK Code** ```python Update a website's maintenance mode import requests url = "https://api.modulards.com/api/public/v1/sites/site/maintenance" payload = { "background": "#1a1a2e", "description": "Scheduled maintenance in progress.", "noindex": True, "status": "enabled", "title": "We will be right back" } headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.patch(url, json=payload, headers=headers) print(response.json()) ``` ```javascript Update a website's maintenance mode const url = 'https://api.modulards.com/api/public/v1/sites/site/maintenance'; const options = { method: 'PATCH', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{"background":"#1a1a2e","description":"Scheduled maintenance in progress.","noindex":true,"status":"enabled","title":"We will be right back"}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go Update a website's maintenance mode package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.modulards.com/api/public/v1/sites/site/maintenance" payload := strings.NewReader("{\n \"background\": \"#1a1a2e\",\n \"description\": \"Scheduled maintenance in progress.\",\n \"noindex\": true,\n \"status\": \"enabled\",\n \"title\": \"We will be right back\"\n}") req, _ := http.NewRequest("PATCH", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby Update a website's maintenance mode require 'uri' require 'net/http' url = URI("https://api.modulards.com/api/public/v1/sites/site/maintenance") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Patch.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{\n \"background\": \"#1a1a2e\",\n \"description\": \"Scheduled maintenance in progress.\",\n \"noindex\": true,\n \"status\": \"enabled\",\n \"title\": \"We will be right back\"\n}" response = http.request(request) puts response.read_body ``` ```java Update a website's maintenance mode import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.patch("https://api.modulards.com/api/public/v1/sites/site/maintenance") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{\n \"background\": \"#1a1a2e\",\n \"description\": \"Scheduled maintenance in progress.\",\n \"noindex\": true,\n \"status\": \"enabled\",\n \"title\": \"We will be right back\"\n}") .asString(); ``` ```php Update a website's maintenance mode request('PATCH', 'https://api.modulards.com/api/public/v1/sites/site/maintenance', [ 'body' => '{ "background": "#1a1a2e", "description": "Scheduled maintenance in progress.", "noindex": true, "status": "enabled", "title": "We will be right back" }', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp Update a website's maintenance mode using RestSharp; var client = new RestClient("https://api.modulards.com/api/public/v1/sites/site/maintenance"); var request = new RestRequest(Method.PATCH); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"background\": \"#1a1a2e\",\n \"description\": \"Scheduled maintenance in progress.\",\n \"noindex\": true,\n \"status\": \"enabled\",\n \"title\": \"We will be right back\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift Update a website's maintenance mode import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [ "background": "#1a1a2e", "description": "Scheduled maintenance in progress.", "noindex": true, "status": "enabled", "title": "We will be right back" ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.modulards.com/api/public/v1/sites/site/maintenance")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "PATCH" request.allHTTPHeaderFields = headers request.httpBody = postData as Data 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() ```