Data API
Signals
Radar events as they happen, curated baskets, and the numbers behind the whole dataset.
Radar
GET
/v1/radarRecent notable entries by proven wallets — the polling equivalent of the live stream.
Query parameters
| Name | Type | Description |
|---|---|---|
limit | int | Events to return, newest first. |
Try it/v1/radar?limit=5
Kept in this browser only, and reused on every page. Never sent anywhere but the API.
Response
{
"radar_events": [
{
"ts": "2026-08-02T11:41:09Z",
"wallet": "0x6011...",
"score": 88.4,
"archetype": "information_trader",
"market": "Will X happen by December?",
"category": "politics",
"side": "Yes",
"entry_cents": 44.0,
"kind": "entry"
}
],
"meta": { "limit": 1 },
"system": { }
}Response fields
| Name | Type | Description |
|---|---|---|
ts | string | When the event happened, UTC. |
wallet | string | The Safe proxy address behind the trade. |
score | float | That wallet’s skill score at the time — how much the event is worth reading. |
side | string | Outcome bought. |
entry_cents | float | Price paid, in cents. |
kind | string | Event type, e.g. an entry rather than an exit. |
Radar is a poll. If you want the same information without asking repeatedly, use Streaming instead — it costs far fewer credits at any useful refresh rate.
Baskets
GET
/v1/basketsGroups of wallets assembled to be followed together, with realistic copy returns already modelled.
Try it/v1/baskets
Kept in this browser only, and reused on every page. Never sent anywhere but the API.
Response
{
"baskets": [
{
"key": "durable-edge",
"name": "Durable Edge",
"description": "Wallets whose edge has survived being copied.",
"members_count": 24,
"basket_score": 81.2,
"weighted_sharpe": 2.1,
"pnl_30d_weighted": 184220.0,
"capacity_usdc": 420000.0,
"rebalance": "weekly",
"copy_realistic_return_pct": 9.4,
"avg_capture": 0.62,
"members_with_copyfit": 19,
"members": ["0x6011...", "0x9a3d..."]
}
],
"meta": { }
}Response fields
| Name | Type | Description |
|---|---|---|
basket_score | float | Composite quality of the group as a group, not the average of its members. |
capacity_usdc | float | Roughly how much money this basket absorbs before the edge degrades. The number most people ignore and should not. |
copy_realistic_return_pct | float | Modelled return after slippage and delay — not the members’ raw PnL. |
avg_capture | float | Fraction of the members’ edge a copier actually captures, 0–1. |
rebalance | string | How often membership is recomputed. |
Copy returns are modelled, not promised.
copy_realistic_return_pctalready accounts for slippage and delay, which is why it is far below the members’ headline PnL. Treat capacity_usdc as a ceiling: past it, you are the one moving the price.Stats
GET
/v1/statsDataset-wide counters. Cheap, and useful as a health check.
Try it/v1/stats
Kept in this browser only, and reused on every page. Never sent anywhere but the API.
Response
{
"wallets_tracked": 1756282,
"proven_traders": 205944,
"trading_now": 12812,
"observed_copy_delay_s": 251.33,
"top_30d_pnl": {
"value": 8049886.14,
"name": "DEEDDIT",
"archetype": "retail"
},
"meta": { "note": "wallets_tracked is an exact count(*), refreshed periodically." }
}Response fields
| Name | Type | Description |
|---|---|---|
wallets_tracked | int | Every wallet in the dataset — an exact count, not an estimate. |
proven_traders | int | Wallets with enough resolved history to be ranked. |
trading_now | int | Wallets active in the current window. |
observed_copy_delay_s | float | Measured median delay between a tracked wallet trading and its copiers following. The realistic floor on any copy strategy. |
/v1/stats is uncached and aggregates across the whole dataset, so a cold call can take a few seconds while a warm one returns in milliseconds. Fine for a dashboard; do not put it in a request path.