Notifications
List and acknowledge in-app notifications for the authenticated user. Used by the mobile client and any tooling that needs to surface async platform events (deploy completion, billing alerts, share invites, etc.).
All endpoints require authentication via X-API-Key header and the appropriate scope.
Notification Object
{
"_id": "ntf_abc123",
"userId": "user_456",
"type": "success",
"icon": "CheckCircle",
"label": "Workflow deployed",
"message": "Your workflow 'invoice-extractor' finished deploying.",
"link": "/workflow-builder/wf_789",
"metadata": {
"workflowId": "wf_789"
},
"read": false,
"createdAt": "2026-05-16T09:30:00Z",
"createdBy": "system"
}
typeisinfo,success,warning,error,newUserorsystem;iconis the icon shown with it.labelis the short title andmessagethe full text.linkis the page in the Strongly UI the notification opens.metadatacarries any extra details the sender attached.createdByis the user who triggered the notification, orsystem.
GET /api/v1/me/notifications
List notifications for the authenticated user.
Scope: notifications:read
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
unreadOnly | string | No | Set to "true" to return only unread notifications |
limit | integer | No | Max results (default 50, max 200) |
cursor | string | No | meta.nextCursor of the previous page; omit for the first page |
sort | string | No | Sort field(s), -prefix for descending (default -createdAt) |
Response 200 OK
{
"data": [ /* Notification objects */ ],
"meta": {
"total": 42,
"limit": 50,
"nextCursor": null,
"requestId": "req_abc123"
}
}
GET /api/v1/me/notifications/unread-count
Get the count of unread notifications for the authenticated user.
Scope: notifications:read
Response 200 OK
{
"data": { "count": 7 },
"meta": { "requestId": "req_abc123" }
}
POST /api/v1/me/notifications/mark-all-read
Mark all your unread notifications read.
Scope: notifications:write
Response 200 OK: { "count": 7 }, how many were marked read.
PATCH /api/v1/me/notifications/:id
Mark one of your notifications read or unread.
Scope: notifications:write
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Notification ID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
read | boolean | Yes | Whether it is read |
Response 200 OK: the notification.
A notification that is not yours, or does not exist, is 404 not-found.
DELETE /api/v1/me/notifications/:id
Delete one of your notifications.
Scope: notifications:write
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Notification ID |
Response 204 No Content
Returns 400 validation-error for an invalid ID, and 404 not-found if the notification does not exist or belongs to another user.
POST /api/v1/me/push-devices
Register a device's push notification token (for example the APNs device token the iOS app receives when the user allows notifications), so that device can receive push notifications for the authenticated user. Registering a token that is already registered replaces the earlier entry.
Scope: notifications:write
Request Body
{
"token": "a1b2c3d4e5f6...",
"platform": "ios"
}
| Field | Type | Required | Description |
|---|---|---|---|
token | string | Yes | The device's push token |
platform | string | No | Device platform (default: ios) |
Response 200 OK
{
"data": { "registered": true },
"meta": { "requestId": "req_abc123" }
}
Returns 400 validation-error if token is missing or blank.