---
title: "Personal notification rules HTTP API | Grafana Cloud documentation"
description: "Personal notification rules HTTP API Post a personal notification rule Required permission: grafana-irm-app.user-settings:write To create a rule for another user, you also need the grafana-irm-app.user-settings:admin permission. Service account tokens always need this permission, because service accounts can’t have their own notification rules. For OnCall API keys, permissions are checked on the user who created the key."
---

> For a curated documentation index, see [llms.txt](/llms.txt). For the complete documentation index, see [llms-full.txt](/llms-full.txt).

# Personal notification rules HTTP API

## Post a personal notification rule

**Required permission**: `grafana-irm-app.user-settings:write`

To create a rule for another user, you also need the `grafana-irm-app.user-settings:admin` permission. Service account tokens always need this permission, because service accounts can’t have their own notification rules. For OnCall API keys, permissions are checked on the user who created the key.

For authentication options, refer to [Authentication](/docs/grafana-cloud/observe-and-act/respond-to-incidents/reference/oncall-api/#authentication).

shell ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```shell
curl "{{API_URL}}/api/v1/personal_notification_rules/" \
  --request POST \
  --header "Authorization: Bearer meowmeowmeow" \
  --header "Content-Type: application/json" \
  --header "X-Grafana-URL: https://your-stack.grafana.net" \
  --data '{
      "user_id": "U4DNY931HHJS5",
      "type": "notify_by_sms"
  }'
```

The above command returns JSON structured in the following way:

JSON ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```json
{
  "id": "NT79GA9I7E4DJ",
  "user_id": "U4DNY931HHJS5",
  "position": 0,
  "important": false,
  "type": "notify_by_sms"
}
```

Expand table

| Parameter   | Required | Description                                                                                                                                                                                                                                                                                         |
|-------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `user_id`   | Yes      | User ID. Can’t be a service account user.                                                                                                                                                                                                                                                           |
| `position`  | Optional | Personal notification rules execute one after another starting from `position=0`. `Position=-1` will put the escalation policy to the end of the list. A new escalation policy created with a position of an existing escalation policy will move the old one (and all following) down on the list. |
| `type`      | Yes      | One of: `wait`, `notify_by_slack`, `notify_by_sms`, `notify_by_phone_call`, `notify_by_telegram`, `notify_by_email`, `notify_by_mobile_app`, `notify_by_mobile_app_critical`,`notify_by_webhook`, or `notify_by_msteams`.                                                                           |
| `duration`  | Optional | A time in seconds to wait (when `type=wait`). Can be one of 60, 300, 900, 1800, or 3600.                                                                                                                                                                                                            |
| `important` | Optional | Boolean value indicates if a rule is “important”. Default is `false`.                                                                                                                                                                                                                               |

**HTTP request**

`POST {{API_URL}}/api/v1/personal_notification_rules/`

## Get personal notification rule

**Required permission**: `grafana-irm-app.user-settings:read`

For authentication options, refer to [Authentication](/docs/grafana-cloud/observe-and-act/respond-to-incidents/reference/oncall-api/#authentication).

shell ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```shell
curl "{{API_URL}}/api/v1/personal_notification_rules/ND9EHN5LN1DUU/" \
  --request GET \
  --header "Authorization: Bearer meowmeowmeow" \
  --header "Content-Type: application/json" \
  --header "X-Grafana-URL: https://your-stack.grafana.net"
```

The above command returns JSON structured in the following way:

JSON ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```json
{
  "id": "ND9EHN5LN1DUU",
  "user_id": "U4DNY931HHJS5",
  "position": 1,
  "duration": 300,
  "important": false,
  "type": "wait"
}
```

**HTTP request**

`GET {{API_URL}}/api/v1/personal_notification_rules/<PERSONAL_NOTIFICATION_RULE_ID>/`

## List personal notification rules

**Required permission**: `grafana-irm-app.user-settings:read`

For authentication options, refer to [Authentication](/docs/grafana-cloud/observe-and-act/respond-to-incidents/reference/oncall-api/#authentication).

shell ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```shell
curl "{{API_URL}}/api/v1/personal_notification_rules/" \
  --request GET \
  --header "Authorization: Bearer meowmeowmeow" \
  --header "Content-Type: application/json" \
  --header "X-Grafana-URL: https://your-stack.grafana.net"
```

The above command returns JSON structured in the following ways:

JSON ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```json
{
  "count": 4,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": "NT79GA9I7E4DJ",
      "user_id": "U4DNY931HHJS5",
      "position": 0,
      "important": false,
      "type": "notify_by_sms"
    },
    {
      "id": "ND9EHN5LN1DUU",
      "user_id": "U4DNY931HHJS5",
      "position": 1,
      "duration": 300,
      "important": false,
      "type": "wait"
    },
    {
      "id": "NEF49YQ1HNPDD",
      "user_id": "U4DNY931HHJS5",
      "position": 2,
      "important": false,
      "type": "notify_by_phone_call"
    },
    {
      "id": "NWAL6WFJNWDD8",
      "user_id": "U4DNY931HHJS5",
      "position": 0,
      "important": true,
      "type": "notify_by_phone_call"
    }
  ],
  "current_page_number": 1,
  "page_size": 50,
  "total_pages": 1
}
```

> **Note**: The response is [paginated](/docs/grafana-cloud/observe-and-act/respond-to-incidents/reference/oncall-api/#pagination). You may need to make multiple requests to get all records.

The following available filter parameters should be provided as `GET` arguments:

- `user_id`
- `important`

**HTTP Request**

`GET {{API_URL}}/api/v1/personal_notification_rules/`

## Delete a personal notification rule

**Required permission**: `grafana-irm-app.user-settings:write`

To delete another user’s rule, you also need the `grafana-irm-app.user-settings:admin` permission. Service account tokens always need this permission, because service accounts can’t have their own notification rules. For OnCall API keys, permissions are checked on the user who created the key.

For authentication options, refer to [Authentication](/docs/grafana-cloud/observe-and-act/respond-to-incidents/reference/oncall-api/#authentication).

shell ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```shell
curl "{{API_URL}}/api/v1/personal_notification_rules/NWAL6WFJNWDD8/" \
  --request DELETE \
  --header "Authorization: Bearer meowmeowmeow" \
  --header "Content-Type: application/json" \
  --header "X-Grafana-URL: https://your-stack.grafana.net"
```

**HTTP request**

`DELETE {{API_URL}}/api/v1/personal_notification_rules/<PERSONAL_NOTIFICATION_RULE_ID>/`
