---
title: "Retrieve the pulse feed"
method: GET
path: "/events/pulse"
tags: ["Events"]
---

# Retrieve the pulse feed

`GET /events/pulse`

Returns a fully anonymized feed of recent platform-wide money movement, most recent first: purchases, payouts, withdrawals, card and ad spend, app revenue, and off-platform sales. Items carry only a `type`, the underlying event name, a USD amount, a coarse location under `user`, and a timestamp coarsened to the start of the minute; missing fields are omitted, not nulled. The payload is identical for every caller; no auth is required.

## Query parameters

- `event` string
- `first` integer
- `after` string
- `before` string

## Response `200`

pulse feed filtered to one type

- object
  - `data` object[], required — Recent anonymized money-movement events, newest first.
    - `event_name` 'payment.completed' | 'bounty.payout.completed' | 'affiliate.payout.completed' | 'ledger_line.created', required — The underlying event recorded. Several movements share `ledger_line.created`, so switch on `type` rather than this.
    - `event_time` string, date-time, required — When the event happened, coarsened to the start of the minute.
    - `total_usd_amount` number, nullable — The USD amount of the event.
    - `type` 'purchase' | 'bounty' | 'affiliate_commission' | 'withdrawal' | 'card_spend' | 'ad_spend' | 'app_revenue' | 'off_platform_sale', required — What moved: a purchase, a bounty or affiliate payout, a creator withdrawal, Whop card spend, ad spend, app revenue, or an off-platform sale.
    - `user` object — Coarse location, shaped like the event `user` block. Country only, except on a purchase, which also carries the buyer's city — every other type resolves to the person who received the money, a small enough population that an amount plus a city can name them. Omitted entirely when nothing is known.
      - `city` string — City name. Present on purchases only, and omitted when unknown.
      - `country` string — ISO 3166-1 alpha-2 country code. Omitted when unknown.
  - `page_info` object, required
    - `end_cursor` string, nullable
    - `has_next_page` boolean, required
    - `has_previous_page` boolean, required
    - `start_cursor` string, nullable

## Other responses

- `400` — event given as an event name rather than a type

## Changes

- **2026-08-01** `c82f49a6e7a1` — 1 warning, 1 info
  - added the new `ledger_line.created` enum value to the `data/items/event_name` response property for the response status `200`
  - added the required property `data/items/type` to the response with the `200` status
- **2026-07-31** `099fdc3be422` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/whop/apis/whop-api/changes/events/pulse/get.md)

---

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