---
title: "Api Notifications Mark Read"
method: POST
path: "/api/notifications/{notification_id}/read"
tags: ["notifications"]
---

# Api Notifications Mark Read

`POST /api/notifications/{notification_id}/read`

## Request

- Base URL: `https://www.oxfordledge.com` (the document declares no server; this is the origin it was published from)
- URL: `https://www.oxfordledge.com/api/notifications/{notification_id}/read`
- Auth: none declared

Mark a single notification as read. IDOR-safe — the typed
helper filters by user_id, so a cross-user ID guess returns
`marked=false` rather than affecting another user's row.

## Path parameters

- `notification_id` integer, required

## Response `200`

Successful Response

- NotificationsMarkReadResponse: Shared envelope for the three mutating notification routes: `POST /api/notifications/{id}/read`, `POST /api/notifications/mark-all-read`, and `DELETE /api/notifications/{id}`. `marked` is True iff the operation succeeded (row was found + user-id matched the IDOR filter); `count` is the bulk-affected total (1 for single-row routes, ≥0 for mark-all-read).
  - `marked` boolean, required: Did the operation succeed? False on IDOR miss (cross-user attempt) or row-not-found.
  - `count` integer, nullable: Number of rows affected — only present on the mark-all-read bulk route.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api.md) · [All operations](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/llms.txt) · [OpenAPI document](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/revisions/e832a1260f0b?raw)
