> ## Documentation Index
> Fetch the complete documentation index at: https://docs.whop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Notification

A Notification is a message delivered to a user, such as a new post, a payment, or a mention. Each one comes from an experience the user belongs to or a team they are on, and falls under a topic, like new sales, that users set preferences on.

Use the Notifications API to list a user's feed, read and clear unread badges, send notifications from your app to an experience's users or an account's team, and list the topic catalog that notification preferences reference.

## Endpoints

| Endpoint | Request |
| - | - |
| [List Notifications](/api-reference/beta/notifications/list-notifications) | <Badge color="blue" size="sm" stroke>GET</Badge> `/notifications` |
| [Retrieve Notification](/api-reference/beta/notifications/retrieve-notification) | <Badge color="blue" size="sm" stroke>GET</Badge> `/notifications/{id}` |
| [List Notification Badges](/api-reference/beta/notifications/list-notification-badges) | <Badge color="blue" size="sm" stroke>GET</Badge> `/notifications/badges` |
| [List Notification Topics](/api-reference/beta/notifications/list-notification-topics) | <Badge color="blue" size="sm" stroke>GET</Badge> `/notifications/topics` |
| [Send Notification](/api-reference/beta/notifications/send-notification) | <Badge color="green" size="sm" stroke>POST</Badge> `/notifications` |
| [Mark Notifications Read](/api-reference/beta/notifications/mark-notifications-read) | <Badge color="green" size="sm" stroke>POST</Badge> `/notifications/mark_read` |

## Attributes

<Columns cols={2}>
  <Column>
    <ResponseField name="id" type="string" required>
      Notification ID. Feed rows carry a composite id that doubles as the list
      cursor.
    </ResponseField>

    <ResponseField name="account" type="object | null" required>
      Account the notification belongs to. `null` when the notification is not associated with an account.

      <Accordion title="Properties" defaultOpen={true}>
        <ResponseField name="id" type="string" required>
          Account ID, prefixed `biz_`.
        </ResponseField>

        <ResponseField name="logo_url" type="string | null" required>
          Account logo image URL. `null` when the account has not uploaded one.
        </ResponseField>

        <ResponseField name="route" type="string | null" required>
          URL slug of the account's store page on whop.com.
        </ResponseField>

        <ResponseField name="title" type="string" required>
          Account display name.
        </ResponseField>
      </Accordion>
    </ResponseField>

    <ResponseField name="attachment_url" type="string" required>
      Image displayed alongside the notification — the sender's avatar, or the
      default notification image.
    </ResponseField>

    <ResponseField name="content" type="string" required>
      The body text of the notification displayed to the user.
    </ResponseField>

    <ResponseField name="created_at" type="string" required>
      When the notification was created, as an ISO 8601 timestamp.
    </ResponseField>

    <ResponseField name="experience" type="object | null" required>
      Experience the notification is related to. `null` when not tied to a specific experience.

      <Accordion title="Properties" defaultOpen={true}>
        <ResponseField name="id" type="string" required>
          Experience ID, prefixed `exp_`.
        </ResponseField>

        <ResponseField name="app" type="object | null" required>
          App the experience belongs to.

          <Accordion title="Properties" defaultOpen={true}>
            <ResponseField name="id" type="string" required>
              App ID, prefixed `app_`.
            </ResponseField>

            <ResponseField name="icon_url" type="string" required>
              Icon image URL. Always present — the default app icon when none is uploaded.
            </ResponseField>
          </Accordion>
        </ResponseField>

        <ResponseField name="name" type="string | null" required>
          Display name of the experience.
        </ResponseField>
      </Accordion>
    </ResponseField>

    <ResponseField name="iframe_link" type="string | null" required>
      The same destination on the app's own domain, which the Whop web and mobile
      clients embed instead of navigating to it. Only relevant if you render Whop
      apps yourself. `null` when the notification carries its own `link`.
    </ResponseField>

    <ResponseField name="link" type="string | null" required>
      The whop.com page the notification opens, as a normal top-level navigation.
      This is the link to use unless you host Whop apps yourself. `null` when the
      notification has no click-through destination.
    </ResponseField>

    <ResponseField name="mentions_me" type="boolean" required>
      Whether the authenticated user was directly mentioned in this notification.
    </ResponseField>

    <ResponseField name="rest_path" type="string | null" required>
      Additional path information appended to the notification's deep link, if any.
    </ResponseField>

    <ResponseField name="sender" type="object | null" required>
      User who triggered the notification. `null` when it was system-generated.

      <Accordion title="Properties" defaultOpen={true}>
        <ResponseField name="id" type="string" required>
          User ID, prefixed `user_`.
        </ResponseField>

        <ResponseField name="name" type="string | null" required>
          Display name.
        </ResponseField>

        <ResponseField name="username" type="string" required>
          Public username.
        </ResponseField>
      </Accordion>
    </ResponseField>

    <ResponseField name="subject" type="string" required>
      The title line of the notification displayed to the user.
    </ResponseField>

    <ResponseField name="topic" type="object | null" required>
      Topic category the notification belongs to, used for grouping and preference management. `null` when uncategorized.

      <Accordion title="Properties" defaultOpen={true}>
        <ResponseField name="id" type="string" required>
          Notification topic ID, prefixed `topic_`.
        </ResponseField>

        <ResponseField name="default_preference_value" type="boolean" required>
          Whether notifications for this topic are enabled by default when the user has
          not set a preference.
        </ResponseField>

        <ResponseField name="is_mention" type="boolean" required>
          Whether this topic exclusively handles mention-based notifications.
        </ResponseField>

        <ResponseField name="topic_type" type="string" required>
          Scope of the topic: whether it applies to an account, a user, or an account's team.

          Available options: `account`, `user`, `account_team`
        </ResponseField>
      </Accordion>
    </ResponseField>
  </Column>

  <Column>
    <div className="api-resource-sticky-example">
      ```json Notification theme={null}
      {
      	"id": "ntfr_xxxxxxxxxxxxxx:xxxxxxxxxxxxx",
      	"account": {
      		"id": "biz_xxxxxxxxxxxxxx",
      		"logo_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      		"route": "shine-time-auto-detailing",
      		"title": "Shine Time Auto Detailing"
      	},
      	"content": "Tuesday 9:00 AM, Bay 2",
      	"created_at": "2026-09-15T14:30:00.000Z",
      	"experience": {
      		"id": "exp_xxxxxxxxxxxxxx",
      		"app": {
      			"id": "app_xxxxxxxxxxxxxx",
      			"icon_url": "https://pub-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.r2.dev/custom-perk-icon.svg"
      		},
      		"name": "Bookings"
      	},
      	"iframe_link": "https://whopappdomain0000001.apps.whop.com/experiences/exp_xxxxxxxxxxxxxx/bookings/upcoming",
      	"link": "https://whop.com/joined/shine-time-auto-detailing/bookings-xxxxxxxxxxxxxx/app/bookings/upcoming/",
      	"mentions_me": false,
      	"rest_path": "/bookings/upcoming",
      	"sender": {
      		"id": "user_xxxxxxxxxxxxxx",
      		"name": "Tanya Cole",
      		"username": "tanyacole"
      	},
      	"subject": "Your ceramic coating is booked",
      	"topic": {
      		"id": "topic_xxxxxxxxxxxxxx",
      		"default_preference_value": true,
      		"is_mention": false,
      		"topic_type": "user"
      	},
      	"attachment_url": "https://ui-avatars.com/api/?name=Tanya+Cole"
      }
      ```
    </div>
  </Column>
</Columns>


## Related topics

- [List Notifications](/api-reference/beta/notifications/list-notifications.md)
- [Retrieve Notification](/api-reference/beta/notifications/retrieve-notification.md)
- [Create notification](/api-reference/notifications/create-notification.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.