# Alerts and notifications
Alert channels, alert rules and notification settings. Read only: changing who gets alerted stays in the app.
**Common tasks**
- [List alert channels](#get-organizations-organization-alert-channels)
**Only in the app:** Adding or changing alert channels and who gets alerted.
**How it works in the app:** [help article](https://infranest.io/docs/alerts).
**Scopes:** Read with `monitoring.read`. See [Tokens and scopes](../tokens-and-scopes.md#scopes).
`GET` `/organizations/{organization}/alert-channels`
**Scope:** `monitoring.read` · **Changes data:** no
Every place the organization sends alerts, such as email, Slack or Telegram, with how many checks use each and how many alerts it missed while it refused messages. Pass `personal=1` for only your own personal destinations.
| Field | Type | Notes |
|---|---|---|
| `organization_id`
path · required | integer | Your organization's ID. |
**Errors:** [`unauthenticated`](../errors.md#unauthenticated), [`scope_missing`](../errors.md#scope_missing), [`wrong_organization`](../errors.md#wrong_organization), [`test_token_required`](../errors.md#test_token_required), [`test_token_sandbox_only`](../errors.md#test_token_sandbox_only), [`permission_denied`](../errors.md#permission_denied), [`not_found`](../errors.md#not_found), [`rate_limited`](../errors.md#rate_limited)
**Request**
```sh
curl "https://api.infranest.io/api/organizations/42/alert-channels" \
-H "Authorization: Bearer $INFRANEST_TOKEN" \
-H "Accept: application/json"
```
**Response** · 200
```json
[
{
"id": 1,
"organization_id": 1,
"name": "Ops team — email",
"type": "email",
"settings": {
"email": "ops@northwind.example"
},
"enabled": true,
"deleted_at": null,
"created_at": "2026-01-15T12:00:00.000000Z",
"updated_at": "2026-01-15T12:00:00.000000Z",
"subscriptions": [
"monitoring_down",
"monitoring_recovered"
],
"is_personal": false,
"user_id": null,
"format": "html",
"last_sent_at": null,
"purge_after": null,
"purge_reminder_sent_at": null,
"deleted_by_id": null,
"deleted_by_label": null,
"deletion_reason": null,
"consecutive_failures": 0,
"last_failure_at": null,
"last_error": null,
"last_error_type": null,
"broken_since": null,
"broken_notified_at": null,
"broken_notify_count": 0,
"awaiting_confirmation_at": null,
"categories": null,
"telegram_link_id": null,
"telegram_chat_id": null,
"slack_installation_id": null,
"slack_channel_id": null,
"checks_count": 0,
"missed_alerts_count": 0,
"missed_alerts_min_created_at": null,
"needs_telegram_link": false
},
{
"id": 2,
"organization_id": 1,
"name": "On-call — critical only",
"type": "email",
"settings": {
"email": "oncall@northwind.example",
"critical_only": true
},
"enabled": true,
"deleted_at": null,
"created_at": "2026-01-15T12:00:00.000000Z",
"updated_at": "2026-01-15T12:00:00.000000Z",
"subscriptions": [
"monitoring_down",
"domain_expiry_critical"
],
"is_personal": false,
"user_id": null,
"format": "html",
"last_sent_at": null,
"purge_after": null,
"purge_reminder_sent_at": null,
"deleted_by_id": null,
"deleted_by_label": null,
"deletion_reason": null,
"consecutive_failures": 0,
"last_failure_at": null,
"last_error": null,
"last_error_type": null,
"broken_since": null,
"broken_notified_at": null,
"broken_notify_count": 0,
"awaiting_confirmation_at": null,
"categories": null,
"telegram_link_id": null,
"telegram_chat_id": null,
"slack_installation_id": null,
"slack_channel_id": null,
"checks_count": 0,
"missed_alerts_count": 0,
"missed_alerts_min_created_at": null,
"needs_telegram_link": false
}
]
```
---
### Get an alert destination {#get-organizations-organization-alert-channels-alertchannel}
`GET` `/organizations/{organization}/alert-channels/{alertChannel}`
**Scope:** `monitoring.read` · **Changes data:** no
One alert destination with the checks that send to it.
| Field | Type | Notes |
|---|---|---|
| `organization_id`
path · required | integer | Your organization's ID. |
| `alertChannel_id`
path · required | integer | The alertChannel's ID. |
**Errors:** [`unauthenticated`](../errors.md#unauthenticated), [`scope_missing`](../errors.md#scope_missing), [`wrong_organization`](../errors.md#wrong_organization), [`test_token_required`](../errors.md#test_token_required), [`test_token_sandbox_only`](../errors.md#test_token_sandbox_only), [`permission_denied`](../errors.md#permission_denied), [`not_found`](../errors.md#not_found), [`rate_limited`](../errors.md#rate_limited)
**Request**
```sh
curl "https://api.infranest.io/api/organizations/42/alert-channels/1" \
-H "Authorization: Bearer $INFRANEST_TOKEN" \
-H "Accept: application/json"
```
**Response** · 200
```json
{
"id": 1,
"organization_id": 1,
"name": "Ops team — email",
"type": "email",
"settings": {
"email": "ops@northwind.example"
},
"enabled": true,
"deleted_at": null,
"created_at": "2026-01-15T12:00:00.000000Z",
"updated_at": "2026-01-15T12:00:00.000000Z",
"subscriptions": [
"monitoring_down",
"monitoring_recovered"
],
"is_personal": false,
"user_id": null,
"format": "html",
"last_sent_at": null,
"purge_after": null,
"purge_reminder_sent_at": null,
"deleted_by_id": null,
"deleted_by_label": null,
"deletion_reason": null,
"consecutive_failures": 0,
"last_failure_at": null,
"last_error": null,
"last_error_type": null,
"broken_since": null,
"broken_notified_at": null,
"broken_notify_count": 0,
"awaiting_confirmation_at": null,
"categories": null,
"telegram_link_id": null,
"telegram_chat_id": null,
"slack_installation_id": null,
"slack_channel_id": null,
"checks_count": 0,
"checks": []
}
```