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

# Trade Feed

> Your users add CabalSpy ID traders to their Trade Feed and get every trade and thesis of those traders, live: in your app through the Data API, webhooks and a stream, in embeddable widgets, and as Telegram alerts.

The **Trade Feed** is a person's own timeline of traders. A user adds CabalSpy ID traders to it, and from then on sees every trade those traders make on their verified wallets, plus every thesis they post, newest first. Each trade is labeled (new position, added, sold x %, closed) and a sell carries its realized PnL when the entry is known.

The Trade Feed is part of every CabalSpy ID account and works on every plan. Your platform can:

* show and manage a user's Trade Feed from your backend with the [Data API](https://docs.cabalspy.xyz/cabalspy-id/trade-feed-api.md),
* get every new trade and thesis for your users as a [webhook](https://docs.cabalspy.xyz/cabalspy-id/webhooks.md#trade-feed-events) or on the [Trade Feed stream](https://docs.cabalspy.xyz/cabalspy-id/trade-feed-api.md#live-stream), to send your own notifications,
* drop a **+ Trade Feed** button and the feed itself into your pages with the [widgets](https://docs.cabalspy.xyz/cabalspy-id/trade-feed-widgets.md),
* let users [copy](https://docs.cabalspy.xyz/cabalspy-id/copy-trading.md) the traders in their Trade Feed.

## Who has a Trade Feed

Your app acts in the name of a user who:

* signed in to your app with CabalSpy ID and granted the scope `trade_feed`, by `csid_id`,
* or is one of your [platform users](https://docs.cabalspy.xyz/cabalspy-id/white-label.md), who always have the scope.

The user must be within your plan's user limit. Others get 403 [consent\_required](https://docs.cabalspy.xyz/cabalspy-id/errors.md#consent_required). Request the scope at sign-in, for example with `data-scope="openid profile trade_feed"` on the [login button](https://docs.cabalspy.xyz/cabalspy-id/login-button.md). The consent screen shows it as "Add traders to your Trade Feed and get their trades".

## Who can be added

* Any CabalSpy ID user whose **trading is public**. Traders who keep their trading private cannot be added ([trading\_private](https://docs.cabalspy.xyz/cabalspy-id/errors.md#trading_private)).
* Your own platform users, on your platform. With network sharing switched on in your [settings](https://docs.cabalspy.xyz/cabalspy-id/platform-users-settings.md), on other platforms too.
* Not the user themselves ([cannot\_add\_self](https://docs.cabalspy.xyz/cabalspy-id/errors.md#cannot_add_self)).

A Trade Feed holds at most **300 traders** ([trade\_feed\_full](https://docs.cabalspy.xyz/cabalspy-id/errors.md#trade_feed_full)). A user can make at most 120 changes to their Trade Feed per hour ([rate\_limited](https://docs.cabalspy.xyz/cabalspy-id/errors.md#rate_limited)).

When a trader switches their trading to private, they disappear from every Trade Feed (timeline, alerts, webhooks, copy trading) until they are public again. A trader's verified wallet addresses are public, so every trade carries the wallet and links to the explorer.

Traders never see who added them, only in how many Trade Feeds they are.

## What appears in the feed

| Item | Labels |
| - | - |
| A buy | `new`: nothing was held before (first buy, or the first buy after the position was closed). `add`: added to an open position. |
| A sell | `partial`: sold part of the position, with `sold_percent`. `close`: the position is closed (at most 1 % of the bought tokens left). `sell`: the entry is unknown, for example tokens bought before the wallet was tracked. |
| A thesis | The trader's [token thesis](https://docs.cabalspy.xyz/cabalspy-id/theses.md), with stance, text, likes and replies. |

Trades on Solana, BNB Chain, Base, Ethereum and Robinhood Chain are included. The feed can be filtered to `buys`, `sells` or `theses`.

## Alerts and filters

**Every trade is delivered.** Nothing is capped, sampled or merged away. Per trader, each user can narrow what they are alerted about:

| Setting | Default | Effect |
| - | - | - |
| `notify_buys` | `true` | Alerts for buys. |
| `notify_sells` | `true` | Alerts for sells. |
| `notify_theses` | `true` | Alerts for theses. |
| `min_sol`, `min_bnb`, `min_eth` | 0 | Only trades of at least this size in the chain's native coin: SOL on Solana, BNB on BNB Chain, ETH on Base, Ethereum and Robinhood Chain. 0 means every trade. Up to 1,000,000. |
| `muted` | `false` | No alerts for this trader at all. |

A newly added trader starts with the user's default alert settings from their CabalSpy ID settings. You can pass other values when you [add the trader](https://docs.cabalspy.xyz/cabalspy-id/trade-feed-api.md#add-a-trader).

The filters decide which of your users are listed in a [webhook](https://docs.cabalspy.xyz/cabalspy-id/webhooks.md#trade-feed-events) or stream event, and what shows in [notifications](https://docs.cabalspy.xyz/cabalspy-id/trade-feed-api.md#notifications). The timeline itself always shows every trade. [Copy trading](https://docs.cabalspy.xyz/cabalspy-id/copy-trading.md) ignores the filters.

**Telegram.** Users who linked Telegram get their alerts from the CabalSpy ID bot. When several trades wait for the same chat, they go out together in one message listing every trade. Your [platform users](https://docs.cabalspy.xyz/cabalspy-id/platform-users-telegram.md) only get Telegram alerts when **Telegram alerts for your users** is on in your [settings](https://docs.cabalspy.xyz/cabalspy-id/platform-users-settings.md). With **No CabalSpy ID branding** on, the alerts carry no CabalSpy ID wording or links.

## Endpoints

| Method | Path | Description |
| - | - | - |
| GET | [/v1/trade-feed](https://docs.cabalspy.xyz/cabalspy-id/trade-feed-api.md#get-the-feed) | A user's Trade Feed, newest first. |
| GET | [/v1/trade-feed/traders](https://docs.cabalspy.xyz/cabalspy-id/trade-feed-api.md#list-traders) | The traders in a user's Trade Feed, with their settings. |
| POST | [/v1/trade-feed/traders](https://docs.cabalspy.xyz/cabalspy-id/trade-feed-api.md#add-a-trader) | Add a trader, or change the settings of one. |
| POST | [/v1/trade-feed/traders/delete](https://docs.cabalspy.xyz/cabalspy-id/trade-feed-api.md#remove-a-trader) | Remove a trader. |
| GET | [/v1/trade-feed/notifications](https://docs.cabalspy.xyz/cabalspy-id/trade-feed-api.md#notifications) | A user's recent alerts. |
| WS | [/v1/trade-feed/stream](https://docs.cabalspy.xyz/cabalspy-id/trade-feed-api.md#live-stream) | Every new trade and thesis for your users, live. |
| Webhook | [trade\_feed.trade, trade\_feed.thesis](https://docs.cabalspy.xyz/cabalspy-id/webhooks.md#trade-feed-events) | The same, pushed to your backend. |
| Widget | [+ Trade Feed button and feed](https://docs.cabalspy.xyz/cabalspy-id/trade-feed-widgets.md) | Embeddable, no backend needed. |


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