> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://api.docs.modulards.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://api.docs.modulards.com/_mcp/server.

# Update backup service

PATCH https://api.modulards.com/api/public/v1/backup-services/{site_preset_backup}
Content-Type: application/json

Changes how ONE website is backed up. Send only what changes (at least one field); answers **200** with the backup service document, its attributes reading back under the same keys this body accepts.

**Body** (JSON), every field optional:
- `status` (`enabled`, `disabled`) - enables or pauses the website's automatic copies.
- `preset` (integer) - id of another backup global configuration to move the website to. The website keeps its status, and the copies it already holds take the new configuration's retention.
- `filesystem` (`default`, `custom`) and `content.included` (array) - what is copied. `content.included` must be sent together with `filesystem`: `default` accepts `core` and `database`; `custom` accepts `database`, `core`, `plugins`, `themes`, `mu_plugins`, `content` and `uploads`.

Changing the areas keeps the exclusions the website has. Changing the `filesystem` resets them to the defaults of the new mode (and the areas too, unless you send them), because the exclusions of one mode do not apply to the other.

Exclusions are managed in the dashboard: sending `content.excluded` answers 422. The schedule belongs to the configuration: sending `schedule` answers 422.

Requires a full-access token (read-only tokens answer 403). A backup service or a configuration of another organization answers 404.

Reference: https://api.docs.modulards.com/modular-ds-public-api/backup-services/update-backup-service

## 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_preset_backup` (string, required)

### Body (application/json)

This endpoint expects an object.

- `content` (object, optional)
  - `included` (list of string, optional)
- `filesystem` (string, optional)
- `status` (string, optional)

## Response

### 200

200 - Backup service updated

- `data` (object, optional)
  - `attributes` (object, optional)
    - `content` (object, optional)
      - `excluded` (object, optional)
        - `content` (any, optional, nullable)
        - `core` (any, optional, nullable)
        - `database` (any, optional, nullable)
        - `files` (any, optional, nullable)
        - `fonts` (any, optional, nullable)
        - `mu_plugins` (any, optional, nullable)
        - `plugins` (any, optional, nullable)
        - `themes` (any, optional, nullable)
        - `uploads` (any, optional, nullable)
      - `included` (list of string, optional)
    - `created_at` (string, optional)
    - `filesystem` (string, optional)
    - `last_request` (string, optional)
    - `next_request` (string, optional)
    - `schedule` (object, optional)
      - `day_month` (any, optional, nullable)
      - `day_week` (any, optional, nullable)
      - `frequency` (string, optional)
      - `start_hour` (string, optional)
      - `timezone` (string, optional)
    - `status` (string, optional)
    - `updated_at` (string, optional)
  - `id` (string, optional)
  - `type` (string, optional)
- `jsonapi` (object, optional)
  - `version` (string, optional)

## Examples

### 200 - Backup service updated

**Request**

```json
undefined
```

**Response**

```json
{
  "data": {
    "attributes": {
      "content": {
        "excluded": {
          "content": null,
          "core": null,
          "database": null,
          "files": null,
          "fonts": null,
          "mu_plugins": null,
          "plugins": null,
          "themes": null,
          "uploads": null
        },
        "included": [
          "database",
          "plugins",
          "themes",
          "uploads"
        ]
      },
      "created_at": "2026-09-01T08:30:00.000000Z",
      "filesystem": "custom",
      "last_request": "2026-09-17T01:00:00.000000Z",
      "next_request": "2026-09-18T01:00:00.000000Z",
      "schedule": {
        "day_month": null,
        "day_week": null,
        "frequency": "daily",
        "start_hour": "03:00",
        "timezone": "Europe/Madrid"
      },
      "status": "enabled",
      "updated_at": "2026-09-17T10:20:31.000000Z"
    },
    "id": "845",
    "type": "site-preset-backups"
  },
  "jsonapi": {
    "version": "1.1"
  }
}
```

**SDK Code**

```python 200 - Backup service updated
import requests

url = "https://api.modulards.com/api/public/v1/backup-services/site_preset_backup"

headers = {"Authorization": "Bearer <token>"}

response = requests.patch(url, headers=headers)

print(response.json())
```

```javascript 200 - Backup service updated
const url = 'https://api.modulards.com/api/public/v1/backup-services/site_preset_backup';
const options = {method: 'PATCH', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go 200 - Backup service updated
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.modulards.com/api/public/v1/backup-services/site_preset_backup"

	req, _ := http.NewRequest("PATCH", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby 200 - Backup service updated
require 'uri'
require 'net/http'

url = URI("https://api.modulards.com/api/public/v1/backup-services/site_preset_backup")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java 200 - Backup service updated
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.patch("https://api.modulards.com/api/public/v1/backup-services/site_preset_backup")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php 200 - Backup service updated
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PATCH', 'https://api.modulards.com/api/public/v1/backup-services/site_preset_backup', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp 200 - Backup service updated
using RestSharp;

var client = new RestClient("https://api.modulards.com/api/public/v1/backup-services/site_preset_backup");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift 200 - Backup service updated
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.modulards.com/api/public/v1/backup-services/site_preset_backup")! 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 backup service

**Request**

```json
{
  "content": {
    "included": [
      "database",
      "plugins",
      "themes",
      "uploads"
    ]
  },
  "filesystem": "custom",
  "status": "enabled"
}
```

**Response**

```json
{
  "data": {
    "attributes": {
      "content": {
        "excluded": {
          "content": null,
          "core": null,
          "database": null,
          "files": null,
          "fonts": null,
          "mu_plugins": null,
          "plugins": null,
          "themes": null,
          "uploads": null
        },
        "included": [
          "database",
          "plugins",
          "themes",
          "uploads"
        ]
      },
      "created_at": "2026-09-01T08:30:00.000000Z",
      "filesystem": "custom",
      "last_request": "2026-09-17T01:00:00.000000Z",
      "next_request": "2026-09-18T01:00:00.000000Z",
      "schedule": {
        "day_month": null,
        "day_week": null,
        "frequency": "daily",
        "start_hour": "03:00",
        "timezone": "Europe/Madrid"
      },
      "status": "enabled",
      "updated_at": "2026-09-17T10:20:31.000000Z"
    },
    "id": "845",
    "type": "site-preset-backups"
  },
  "jsonapi": {
    "version": "1.1"
  }
}
```

**SDK Code**

```python Update backup service
import requests

url = "https://api.modulards.com/api/public/v1/backup-services/site_preset_backup"

payload = {
    "content": { "included": ["database", "plugins", "themes", "uploads"] },
    "filesystem": "custom",
    "status": "enabled"
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.json())
```

```javascript Update backup service
const url = 'https://api.modulards.com/api/public/v1/backup-services/site_preset_backup';
const options = {
  method: 'PATCH',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"content":{"included":["database","plugins","themes","uploads"]},"filesystem":"custom","status":"enabled"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Update backup service
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.modulards.com/api/public/v1/backup-services/site_preset_backup"

	payload := strings.NewReader("{\n  \"content\": {\n    \"included\": [\n      \"database\",\n      \"plugins\",\n      \"themes\",\n      \"uploads\"\n    ]\n  },\n  \"filesystem\": \"custom\",\n  \"status\": \"enabled\"\n}")

	req, _ := http.NewRequest("PATCH", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	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 backup service
require 'uri'
require 'net/http'

url = URI("https://api.modulards.com/api/public/v1/backup-services/site_preset_backup")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"content\": {\n    \"included\": [\n      \"database\",\n      \"plugins\",\n      \"themes\",\n      \"uploads\"\n    ]\n  },\n  \"filesystem\": \"custom\",\n  \"status\": \"enabled\"\n}"

response = http.request(request)
puts response.read_body
```

```java Update backup service
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.patch("https://api.modulards.com/api/public/v1/backup-services/site_preset_backup")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"content\": {\n    \"included\": [\n      \"database\",\n      \"plugins\",\n      \"themes\",\n      \"uploads\"\n    ]\n  },\n  \"filesystem\": \"custom\",\n  \"status\": \"enabled\"\n}")
  .asString();
```

```php Update backup service
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PATCH', 'https://api.modulards.com/api/public/v1/backup-services/site_preset_backup', [
  'body' => '{
  "content": {
    "included": [
      "database",
      "plugins",
      "themes",
      "uploads"
    ]
  },
  "filesystem": "custom",
  "status": "enabled"
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Update backup service
using RestSharp;

var client = new RestClient("https://api.modulards.com/api/public/v1/backup-services/site_preset_backup");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"content\": {\n    \"included\": [\n      \"database\",\n      \"plugins\",\n      \"themes\",\n      \"uploads\"\n    ]\n  },\n  \"filesystem\": \"custom\",\n  \"status\": \"enabled\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Update backup service
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "content": ["included": ["database", "plugins", "themes", "uploads"]],
  "filesystem": "custom",
  "status": "enabled"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.modulards.com/api/public/v1/backup-services/site_preset_backup")! 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()
```