---
title: "Mark Notification Read"
method: POST
path: "/me/notifications/{notification_id}/read"
tags: ["me"]
---

# Mark Notification Read

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

Mark a single notification as read. Idempotent: a second call is a
no-op against an already-read row.

Re-asserts owner via `eq("user_id", user.id)` so a leaked id from
another user yields 404, not a successful update on someone else's
row (the RLS policy already enforces this — defence in depth).

## Path parameters

- `notification_id` string, required

## Response `200`

Successful Response

- NotificationResponse
  - `id` string, required
  - `kind` 'index_complete' | 'index_failed' | 'reindex_complete' | 'reindex_failed' | 'prose_complete' | 'low_credit' | 'stale_decision' | 'security_findings' | 'security_new_cves' | 'security_secret_rotation' | 'engineering_hotspot_drift' | 'engineering_bus_factor' | 'engineering_health_decline' | 'payment_failed' | 'subscription_on_hold', required
  - `payload` object
  - `read_at` string, date-time, nullable
  - `created_at` string, date-time, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/repowise/apis/repowise-hosted-api.md) · [All operations](https://skmtc.dev/repowise/apis/repowise-hosted-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/repowise/repowise-hosted-api/revisions/1e57283a9737/schema)
