> 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.

# List Uptime Monitor configurations

GET https://api.modulards.com/api/public/v1/preset-uptimes

List the organization's Uptime Monitor global configurations (presets): the named check settings applied to websites, with how many websites use each and which one is the default for new websites. The id is what the `preset_uptime` field of "Create connection plugin" (`POST /api/public/v1/connection-plugins`) takes, and what the requests under "Uptime Configurations" address: read one in full, create, edit or delete it, and assign websites to it there.

Every row carries the same attributes as "Show uptime configuration", under the keys the writes accept: `id`, `name`, `status` (enabled, disabled), `is_default`, `region` (where the check runs from, e.g. eu-west-1), `interval` (seconds between checks), `timeout` (milliseconds before a check is considered failed), `method` (GET, HEAD), `status_codes` (the HTTP codes counted as up), `sites_count` (opt in with `fields[preset-uptimes]=sites_count`), `created_at`, `updated_at`.

Reference: https://api.docs.modulards.com/modular-ds-public-api/uptime-monitor/list-uptime-monitor-configurations

## Authentication

- `Authorization` header (bearer token, required) — Personal access token created in the Modular DS dashboard; read-only tokens can only call GET endpoints.

## Request

### Query parameters

- `filter[id]` (string, optional) — Exact configuration ids
- `filter[s]` (string, optional) — Free-text search over the configuration name
- `filter[is_default]` (string, optional) — 1 = only the default configuration for new websites; 0 = the others
- `filter[status]` (string, optional) — Comma list: enabled, disabled
- `sort` (string, optional) — name (default), -name, created_at, sites_count (prefix - for descending)
- `page[number]` (string, optional) — Page number
- `page[size]` (string, optional) — Items per page, max 50
- `fields[preset-uptimes]` (string, optional) — Opt into the computed website count

## Response

### 200

200 - Uptime configurations

- `data` (list of object, optional)
  - `attributes` (object, optional)
    - `created_at` (string, optional)
    - `interval` (double, optional)
    - `is_default` (boolean, optional)
    - `method` (string, optional)
    - `name` (string, optional)
    - `region` (string, optional)
    - `sites_count` (double, optional)
    - `status` (string, optional)
    - `status_codes` (list of double, optional)
    - `timeout` (double, optional)
    - `updated_at` (string, optional)
  - `id` (string, optional)
  - `links` (object, optional)
    - `self` (string, optional)
  - `type` (string, optional)
- `jsonapi` (object, optional)
  - `version` (string, optional)
- `links` (object, optional)
  - `first` (string, optional)
  - `last` (string, optional)
  - `next` (any, optional, nullable)
  - `prev` (any, optional, nullable)
- `meta` (object, optional)
  - `current_page` (double, optional)
  - `from` (double, optional)
  - `last_page` (double, optional)
  - `links` (list of object, optional)
    - `active` (boolean, optional)
    - `label` (string, optional)
    - `url` (string, optional, nullable)
  - `path` (string, optional)
  - `per_page` (double, optional)
  - `to` (double, optional)
  - `total` (double, optional)

## Examples

**Response**

```json
{
  "data": [
    {
      "attributes": {
        "created_at": "2026-09-01T09:00:00.000000Z",
        "interval": 300,
        "is_default": true,
        "method": "GET",
        "name": "Client sites",
        "region": "eu-west-1",
        "status": "enabled",
        "status_codes": [
          200
        ],
        "timeout": 30000,
        "updated_at": "2026-09-01T09:00:00.000000Z"
      },
      "id": "5",
      "links": {
        "self": "{{base_url}}/api/public/v1/preset-uptimes/5"
      },
      "type": "preset-uptimes"
    },
    {
      "attributes": {
        "created_at": "2026-08-01T09:00:00.000000Z",
        "interval": 60,
        "is_default": false,
        "method": "HEAD",
        "name": "High-frequency",
        "region": "us-east-1",
        "sites_count": 4,
        "status": "enabled",
        "status_codes": [
          200,
          301,
          302
        ],
        "timeout": 15000,
        "updated_at": "2026-09-10T09:00:00.000000Z"
      },
      "id": "6",
      "links": {
        "self": "{{base_url}}/api/public/v1/preset-uptimes/6"
      },
      "type": "preset-uptimes"
    }
  ],
  "jsonapi": {
    "version": "1.1"
  },
  "links": {
    "first": "{{base_url}}/api/public/v1/preset-uptimes?page%5Bnumber%5D=1",
    "last": "{{base_url}}/api/public/v1/preset-uptimes?page%5Bnumber%5D=1",
    "next": null,
    "prev": null
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "links": [
      {
        "active": false,
        "label": "&laquo; Previous",
        "url": null
      },
      {
        "active": true,
        "label": "1",
        "url": "{{base_url}}/api/public/v1/preset-uptimes?page%5Bnumber%5D=1"
      },
      {
        "active": false,
        "label": "Next &raquo;",
        "url": null
      }
    ],
    "path": "{{base_url}}/api/public/v1/preset-uptimes",
    "per_page": 15,
    "to": 2,
    "total": 2
  }
}
```

**SDK Code**

```python 200 - Uptime configurations
import requests

url = "https://api.modulards.com/api/public/v1/preset-uptimes"

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

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

print(response.json())
```

```javascript 200 - Uptime configurations
const url = 'https://api.modulards.com/api/public/v1/preset-uptimes';
const options = {method: 'GET', 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 - Uptime configurations
package main

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

func main() {

	url := "https://api.modulards.com/api/public/v1/preset-uptimes"

	req, _ := http.NewRequest("GET", 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 - Uptime configurations
require 'uri'
require 'net/http'

url = URI("https://api.modulards.com/api/public/v1/preset-uptimes")

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

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

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

```java 200 - Uptime configurations
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

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

```php 200 - Uptime configurations
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

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

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

```csharp 200 - Uptime configurations
using RestSharp;

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

```swift 200 - Uptime configurations
import Foundation

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

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