Notifications API
The Notifications API provides programmatic access to the same notifications that appear in the bell panel. Use these endpoints to integrate alerts into your own tooling, build custom dashboards, or automate marking notifications as read from scripts.
Complete API Reference
For the full interactive API documentation with all request/response schemas, visit the API docs.
All endpoints use the base URL of your Qualytics deployment (e.g., https://your-instance.qualytics.io/api).
Authentication
All endpoints require a Qualytics Personal API Token (PAT); any role (Member, Manager, or Admin) can call them. List, acknowledge, and unacknowledge requests are scoped to the token's owner, so they only ever touch your own notifications.
Include the token in the Authorization header:
For instructions on generating a token, see Tokens.
category and notification_type
Two fields describe what a notification is about. category is the notification's type as shown in the panel's colored label: mention, ownership, anomaly, assignment, operation, flow, or system, derived from what the notification refers to. notification_type records how the notification was produced, so the two can differ: in the examples below, a flow's in-app notification action (notification_type: "flow") reported a finished operation, which the panel presents under the Operation type (category: "operation").
List Notifications (Paginated)
Returns your notifications sorted by creation date, with the most recent first. Supports filtering by read status, by flow trigger type, and by tag.
Endpoint: GET /api/user-notifications
Permission: Member or above
Example request and response
Request:
curl -X GET "https://your-instance.qualytics.io/api/user-notifications?status=unread&sort_created=desc&size=12" \
-H "Authorization: Bearer YOUR_QUALYTICS_TOKEN"
Response (200 OK, abbreviated; nested objects carry more fields than shown):
{
"items": [
{
"id": 42,
"created": "2026-05-13T12:00:00Z",
"acknowledged": false,
"notification": {
"id": 100,
"created": "2026-05-13T12:00:00Z",
"notification_type": "flow",
"category": "operation",
"title": "Scan completed • Healthcare Analytics",
"message": "A Scan operation on Healthcare Analytics has completed.",
"target_uri": "/datastores/101/activity?operation_id=50001",
"target_url": "https://your-instance.qualytics.io/datastores/101/activity?operation_id=50001",
"action_execution": {
"id": 200,
"flow_execution": {
"id": 300,
"flow": { "id": 7, "name": "Healthcare Nightly Quality Gate" }
}
}
}
}
],
"total": 1,
"page": 1,
"size": 12,
"pages": 1
}
Query parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
status |
string | No | Filter by read status. One of unread (default), read, or all. |
trigger_type |
array | No | Filter by flow trigger type. Supported values: Anomaly, AnomalyStatusChange, PartitionScan, Operation, Schedule, Manual. Only applies to flow-based notifications; mention notifications are always included in filtered results. |
tag |
array | No | Filter by tag name(s). Mention notifications are always included in filtered results. |
sort_created |
string | No | Sort order by creation date: desc (default) or asc. |
page |
integer | No | Page number, starting at 1. |
size |
integer | No | Number of notifications per page. |
List Notifications (Non-Paginated)
Returns the same data as the paginated endpoint but as a flat array, useful for small result sets where pagination is unnecessary.
Endpoint: GET /api/user-notifications/listing
Permission: Member or above
Example request and response
Request:
curl -X GET "https://your-instance.qualytics.io/api/user-notifications/listing?status=unread" \
-H "Authorization: Bearer YOUR_QUALYTICS_TOKEN"
Response (200 OK, abbreviated; nested objects carry more fields than shown):
[
{
"id": 42,
"created": "2026-05-13T12:00:00Z",
"acknowledged": false,
"notification": {
"id": 100,
"created": "2026-05-13T12:00:00Z",
"notification_type": "flow",
"category": "operation",
"title": "Scan completed • Healthcare Analytics",
"message": "A Scan operation on Healthcare Analytics has completed.",
"target_uri": "/datastores/101/activity?operation_id=50001",
"target_url": "https://your-instance.qualytics.io/datastores/101/activity?operation_id=50001",
"action_execution": {
"id": 200,
"flow_execution": {
"id": 300,
"flow": { "id": 7, "name": "Healthcare Nightly Quality Gate" }
}
}
}
}
]
Query parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
status |
string | No | Filter by read status. One of unread (default), read, or all. |
Get Single Notification
Retrieve the details of one notification by its ID.
Endpoint: GET /api/user-notifications/{id}
Permission: Member or above
Example request and response
Request:
curl -X GET "https://your-instance.qualytics.io/api/user-notifications/42" \
-H "Authorization: Bearer YOUR_QUALYTICS_TOKEN"
Response (200 OK, abbreviated; nested objects carry more fields than shown):
{
"id": 42,
"created": "2026-05-13T12:00:00Z",
"acknowledged": false,
"notification": {
"id": 100,
"created": "2026-05-13T12:00:00Z",
"notification_type": "flow",
"category": "operation",
"title": "Scan completed • Healthcare Analytics",
"message": "A Scan operation on Healthcare Analytics has completed.",
"target_uri": "/datastores/101/activity?operation_id=50001",
"target_url": "https://your-instance.qualytics.io/datastores/101/activity?operation_id=50001",
"action_execution": {
"id": 200,
"flow_execution": {
"id": 300,
"flow": { "id": 7, "name": "Healthcare Nightly Quality Gate" }
}
}
}
}
Path parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
integer | Yes | The unique ID of the notification. |
Responses:
200 OK: Notification returned.404 Not Found: No notification with that ID exists.
Bulk Mark as Read
Mark multiple notifications as read in a single request. Supply specific IDs to mark a subset as read, or pass an empty array [] to mark every unread notification as read.
Endpoint: PATCH /api/user-notifications/acknowledge
Permission: Member or above
Example request and response
Request to mark specific notifications as read:
curl -X PATCH "https://your-instance.qualytics.io/api/user-notifications/acknowledge" \
-H "Authorization: Bearer YOUR_QUALYTICS_TOKEN" \
-H "Content-Type: application/json" \
-d '[{"id": 42}, {"id": 43}]'
Request to mark all unread notifications as read:
curl -X PATCH "https://your-instance.qualytics.io/api/user-notifications/acknowledge" \
-H "Authorization: Bearer YOUR_QUALYTICS_TOKEN" \
-H "Content-Type: application/json" \
-d '[]'
Response (200 OK):
Request body: A JSON array of objects with the id field, or an empty array to mark all as read.
| Field | Type | Required | Description |
|---|---|---|---|
id |
integer | Yes (per object) | The ID of a notification to mark as read. |
Bulk Mark as Unread
Return multiple notifications to the unread list in a single request. Supply specific IDs to mark a subset as unread, or pass an empty array [] to mark every read notification as unread. In the panel, the same bulk action appears when you select notifications on the Read tab.
Endpoint: PATCH /api/user-notifications/unacknowledge
Permission: Member or above
Example request and response
Request to mark specific notifications as unread:
curl -X PATCH "https://your-instance.qualytics.io/api/user-notifications/unacknowledge" \
-H "Authorization: Bearer YOUR_QUALYTICS_TOKEN" \
-H "Content-Type: application/json" \
-d '[{"id": 42}, {"id": 43}]'
Response (200 OK):
Request body: A JSON array of objects with the id field, or an empty array to mark all read notifications as unread.
| Field | Type | Required | Description |
|---|---|---|---|
id |
integer | Yes (per object) | The ID of a notification to mark as unread. |
Mark Single Notification as Read
Mark exactly one notification as read.
Endpoint: PUT /api/user-notifications/acknowledge/{id}
Permission: Member or above
Example request and response
Request:
curl -X PUT "https://your-instance.qualytics.io/api/user-notifications/acknowledge/42" \
-H "Authorization: Bearer YOUR_QUALYTICS_TOKEN"
Response (200 OK):
Path parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
integer | Yes | The unique ID of the notification to mark as read. |
Responses:
200 OK: Notification marked as read.404 Not Found: No notification with that ID exists for the authenticated user.
Mark Single Notification as Unread
Return one notification to the unread list, reversing a previous mark as read.
Endpoint: PUT /api/user-notifications/unacknowledge/{id}
Permission: Member or above
Example request and response
Request:
curl -X PUT "https://your-instance.qualytics.io/api/user-notifications/unacknowledge/42" \
-H "Authorization: Bearer YOUR_QUALYTICS_TOKEN"
Response (200 OK):
Path parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
integer | Yes | The unique ID of the notification to mark as unread. |
Responses:
200 OK: Notification marked as unread.404 Not Found: No notification with that ID exists for the authenticated user.