List notifications

GET/notifications

List notifications addressed to the authenticated user, newest first. Deleted notifications are excluded. With `unreadFirst=true`, unread notifications come first and are ordered newest-first within that group (useful for a header dropdown).

AuthLogin required

Query parameters

limitnumber

Number of items to return. Defaults to 10.

offsetnumber

Number of items to skip. Defaults to 0.

isReadboolean

Filter by read state (true / false). Both when omitted.

typestring

Filter by notification type (e.g. NEW_MESSAGE, EVENT_ANNOUNCEMENT).

sincestring

Only return notifications created at or after this timestamp (ISO 8601).

unreadFirstboolean

Put unread notifications first when true.

Notes

Notifications carry no rendered text. Pick a message template from `type` and interpolate `messageParams` on the client to localize.

`metadata` carries the values needed to build a link (`roomId`, `eventId`, `eventSlug`, `communityId`, `communitySlug`, `announcementId`, …). Which keys are present depends on the notification type.

`total` and `unreadCount` reflect the same filters (including `since`). Pass the same `since` to both the badge and the list to keep the counts consistent.

Response

FieldTypeDescription
notificationsNotification[]Notifications.
totalnumberTotal number of notifications matching the filters.
unreadCountnumberUnread count under the same filters.
Request
curl https://api.4s.link/notifications \
-H "Authorization: Bearer 4s_at_..."
Example response
{
"notifications": [
{
"id": "5f2a1c40-...",
"userId": "9c3b7e21-...",
"type": "EVENT_ANNOUNCEMENT",
"messageParams": {
"eventName": "4S Conference 2026",
"announcementTitle": "受付開始時刻のお知らせ"
},
"isRead": false,
"relatedId": "0b6d4f88-...",
"metadata": {
"eventId": "0b6d4f88-...",
"eventSlug": "4s-conference-2026",
"announcementId": "7ae2c915-..."
},
"createdAt": "2026-08-19T02:30:00.000Z",
"updatedAt": "2026-08-19T02:30:00.000Z"
}
],
"total": 34,
"unreadCount": 3
}