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

# Retrieve a notification configuration

GET https://api.modulards.com/api/public/v1/alerts/{alert_id}

Returns one notification configuration with its event settings, its Slack and Discord destinations (with their complete URL) and the contacts it notifies, together with the number of websites it covers that your token can reach. Use `include` to narrow the answer to some of them.

Websites are added and removed explicitly with "Add websites to a notification configuration" and "Remove websites from a notification configuration", never replaced as a whole selection.

Reference: https://api.docs.modulards.com/modular-ds-public-api/notification-configurations/configurations/retrieve-a-notification-configuration

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

- `alert_id` (string, required)

### Query parameters

- `include` (string, optional) — Narrows the related data returned to the listed ones. Accepted: `items`, `integrations` and `contacts`, separated by commas. All three are returned when omitted.

## Response

### 200

200 - Configuration

- `data` (ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaData, optional)
- `included` (list of ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaIncludedItems, optional)
- `jsonapi` (ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaJsonapi, optional)

## Errors

### 404 Not Found Error

404 - Foreign configuration

- `errors` (list of ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaErrorsItems, optional)
- `jsonapi` (ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaJsonapi, optional)

## Types

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaData

- `attributes` (ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataAttributes, optional)
- `id` (string, optional)
- `links` (ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataLinks, optional)
- `relationships` (ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationships, optional)
- `type` (string, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaIncludedItems

- `attributes` (ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaIncludedItemsAttributes, optional)
- `id` (string, optional)
- `links` (ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaIncludedItemsLinks, optional)
- `type` (string, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaJsonapi

- `version` (string, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaErrorsItems

- `detail` (string, optional)
- `status` (string, optional)
- `title` (string, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataAttributes

- `created_at` (string, optional)
- `discord_channel` (boolean, optional)
- `email_channel` (boolean, optional)
- `is_default` (boolean, optional)
- `name` (string, optional)
- `sites_count` (double, optional)
- `slack_channel` (boolean, optional)
- `status` (string, optional)
- `updated_at` (string, optional)
- `whatsapp_channel` (boolean, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataLinks

- `self` (string, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationships

- `contacts` (ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationshipsContacts, optional)
- `integrations` (ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationshipsIntegrations, optional)
- `items` (ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationshipsItems, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaIncludedItemsAttributes

- `company` (any, optional, nullable)
- `created_at` (string, optional)
- `last_name` (string, optional)
- `name` (string, optional)
- `status` (string, optional)
- `type` (string, optional)
- `updated_at` (string, optional)
- `url` (string, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaIncludedItemsLinks

- `self` (string, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationshipsContacts

- `data` (list of ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationshipsContactsDataItems, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationshipsIntegrations

- `data` (list of ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationshipsIntegrationsDataItems, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationshipsItems

- `data` (list of ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationshipsItemsDataItems, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationshipsContactsDataItems

- `id` (string, optional)
- `type` (string, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationshipsIntegrationsDataItems

- `id` (string, optional)
- `type` (string, optional)

### ApiPublicV1AlertsAlertIdGetResponsesContentApplicationJsonSchemaDataRelationshipsItemsDataItems

- `id` (string, optional)
- `type` (string, optional)

## Examples

**Response**

```json
{
  "data": {
    "attributes": {
      "created_at": "2026-09-20T09:00:00.000000Z",
      "discord_channel": false,
      "email_channel": true,
      "is_default": true,
      "name": "Operations",
      "sites_count": 1,
      "slack_channel": true,
      "status": "enabled",
      "updated_at": "2026-09-20T09:00:00.000000Z",
      "whatsapp_channel": false
    },
    "id": "12",
    "links": {
      "self": "https://api.modulards.com/api/public/v1/alerts/12"
    },
    "relationships": {
      "contacts": {
        "data": [
          {
            "id": "7",
            "type": "contacts"
          }
        ]
      },
      "integrations": {
        "data": [
          {
            "id": "9",
            "type": "alert-integrations"
          }
        ]
      },
      "items": {
        "data": [
          {
            "id": "301",
            "type": "alert-items"
          }
        ]
      }
    },
    "type": "alerts"
  },
  "included": [
    {
      "attributes": {
        "status": "enabled",
        "type": "uptime.down"
      },
      "id": "301",
      "type": "alert-items"
    },
    {
      "attributes": {
        "created_at": "2026-09-18T10:00:00.000000Z",
        "type": "slack",
        "updated_at": "2026-09-18T10:00:00.000000Z",
        "url": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
      },
      "id": "9",
      "type": "alert-integrations"
    },
    {
      "attributes": {
        "company": null,
        "created_at": "2026-08-01T09:00:00.000000Z",
        "last_name": "Doe",
        "name": "Alice",
        "updated_at": "2026-08-01T09:00:00.000000Z"
      },
      "id": "7",
      "links": {
        "self": "https://api.modulards.com/api/public/v1/contacts/7"
      },
      "type": "contacts"
    }
  ],
  "jsonapi": {
    "version": "1.1"
  }
}
```

**SDK Code**

```python 200 - Configuration
import requests

url = "https://api.modulards.com/api/public/v1/alerts/alert_id"

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

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

print(response.json())
```

```javascript 200 - Configuration
const url = 'https://api.modulards.com/api/public/v1/alerts/alert_id';
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 - Configuration
package main

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

func main() {

	url := "https://api.modulards.com/api/public/v1/alerts/alert_id"

	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 - Configuration
require 'uri'
require 'net/http'

url = URI("https://api.modulards.com/api/public/v1/alerts/alert_id")

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 - Configuration
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

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

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

$client = new \GuzzleHttp\Client();

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

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

```csharp 200 - Configuration
using RestSharp;

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

```swift 200 - Configuration
import Foundation

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

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