unread=true — only rows where read_at is null.kind — filter by notification kind (exact match). Comma-separated values are OR-combined (e.g. kind=proposal_received,work_will_begin). Use kind=inbox_info or inbox_announcement for broadcast-style rows.data is a JSON array of notification objects (same pattern as e.g. GET /api/v1/institutions, GET /api/v1/partners).read_at and notifiable are omitted when unset (not returned as JSON null). There is no per-row data property on items.page, per_page, q (searches title and body), date_filter, start_date, end_date, year, month (date filters apply to created_at).sort_by: created_at (default), read_at, or kind. sort_order: asc or desc (default desc).curl --location '/api/v1/notifications?unread=true&kind=undefined&q=undefined&page=undefined&per_page=undefined&sort_by=undefined&sort_order=undefined&date_filter=undefined&start_date=undefined&end_date=undefined&year=undefined&month=undefined' \
--header 'Authorization: Bearer <token>'{
"success": true,
"data": [
{
"id": 1,
"kind": "proposal_accepted",
"title": "Proposal request accepted",
"body": "Partner accepted the proposal for your service.",
"read": false,
"notifiable": {
"type": "Contract",
"id": 42
},
"created_at": "2026-04-14T10:00:00.000Z",
"updated_at": "2026-04-14T10:00:00.000Z"
},
{
"id": 2,
"kind": "inbox_info",
"title": "Maintenance window",
"body": "Scheduled maintenance tonight.",
"read": true,
"read_at": "2026-04-14T11:00:00.000Z",
"created_at": "2026-04-14T09:00:00.000Z",
"updated_at": "2026-04-14T09:00:00.000Z"
}
],
"meta": {
"page": 1,
"per_page": 20,
"total_count": 2,
"total_pages": 1,
"prev_page": null,
"next_page": null
}
}