---
title: "List recent notifications + unread count for the bell icon"
method: GET
path: "/api/me/notifications"
tags: ["me"]
---

# List recent notifications + unread count for the bell icon

`GET /api/me/notifications`

## Request

- Base URL: `https://api.signalraven.ai`
- URL: `https://api.signalraven.ai/api/me/notifications`
- Auth: none declared

## Query parameters

- `limit` integer

## Response `200`

Notification list

- NotificationListResponse
  - `unreadCount` integer, required: Total unread for the current (user, customer). Drives the bell-icon badge.
  - `items` NotificationItem[], required
    - `id` string, uuid, required
    - `type` 'shared_with_me' | 'mentioned' | 'commented_on_my_share' | 'role_changed' | 'credit_usage_80pct' | 'credit_usage_100pct' | 'credit_usage_projected_exhaustion' | 'credit_payment_failed' | 'credit_refund_processed' | 'weekly_credit_digest' | 'trial_inactive_deactivated' | 'plan_downgrade_to_trial_scheduled' | 'subscription_downgrade_scheduled' | 'subscription_resumed' | 'destination_action_required' | 'pending_teammate_review' | 'add_your_teammates_reminder' | 'trial_to_paid_welcome' | 'credit_pack_purchase' | 'first_signal_delivered' | 'card_expiring_soon' | 'upgrade_prompt' | 'setup_incomplete_nudge' | 'no_recent_signals' | 'trial_credit_usage_80pct' | 'trial_credit_usage_100pct' | 'signals_taking_longer' | 'login_nudge_1' | 'login_nudge_2', required
    - `payload` object, required: Type-specific payload. Collaboration: shared_with_me {signalId, fromUserId, fromUserEmail, message}; mentioned/commented_on_my_share {signalId, commentId, actorUserId, actorUserEmail, excerpt}; role_changed {fromRole, toRole, changedByUserId, changedByUserEmail}. Billing (credit_*, weekly_credit_digest, trial_inactive_deactivated): generic shape {title, body?, actionUrl?} — title + body render directly in the bell-icon, actionUrl is the portal route the click should navigate to. The email + id values on collaboration payloads are immutable history; if the actor was later removed from the team, see actorRemoved below.
    - `actorRemoved` boolean, required: True when the actor recorded in payload is no longer a member of this customer. Lets the FE render "Alice (removed)" without the FE having to re-look-up membership for every row.
    - `readAt` string, date-time, nullable, required
    - `createdAt` string, date-time, required

---

[API](https://skmtc.dev/signalraven/apis/zygnal-api.md) · [All operations](https://skmtc.dev/signalraven/apis/zygnal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/signalraven/apis/zygnal-api/revisions/36e1d9b9d604?raw)
