Follows, Entities & Campaigns
Structural coordination detection — the layer that answers who copies whom, which wallets are secretly one operator, and which tokens are being pushed by a coordinated group right now. Conyr models it as five primitives:
| Primitive | Question it answers |
|---|---|
| Follows | Does wallet B systematically copy wallet A? |
| Entities | Which wallets share enough funding or execution evidence to be one family? |
| Campaigns | Is this token being pushed by a coordinated group right now? |
| Crowd | How loud is the crowd on this token, minute by minute? |
| Health | Is the live signal pipeline keeping up? |
Any response may carry "degraded": true when the live pipeline is lagging. Render the data faintly or show a “signal delayed” note — never hide it. Confidence-style scores are calibrated 0–1 outputs; build on them, not on the internals that produce them.
Follows
L3 GET /v1/wallet/{address}/follows
Leader→follower copy-trade edges, in both directions. Conyr only surfaces edges that clear its internal calibration gates, so what you get is signal, not every coincidental overlap.
| Field | Description |
|---|---|
confidence | Calibrated 0–1 strength of the follow relationship |
supportCount | Independent observations backing the edge |
distinctTokens | Distinct tokens the pattern held on |
active | Whether recent activity still reinforces it |
{
"address": "7xKXtg...",
"followsOut": [
{ "leaderWallet": "4mNqR...", "followerWallet": "7xKXtg...", "confidence": 0.91, "supportCount": 18, "distinctTokens": 7, "active": true }
],
"followsIn": [],
"degraded": false
}Entities
L3 GET /v1/wallet/{address}/entity · GET /v1/entity/{entity_id} · GET /v1/entity/{entity_id}/members
An entity is a cluster of wallets that share funding lineage, bundle-execution evidence, or both — one operator behind many addresses.
| Entity kind | Meaning |
|---|---|
shared_funder | Members funded from a common direct or root funder |
shared_execution | Members co-executed bundle transactions in the same slots |
{
"address": "7xKXtg...",
"membership": {
"entityId": "ent_abc123",
"entityKind": "shared_funder",
"rootWallet": "9aBcD...",
"memberCount": 14,
"confidence": 0.87
},
"siblingsSample": ["4mNqR...", "2pQrS...", "8tVuW..."],
"degraded": false
}/v1/entity/{entity_id} returns the full record; /members paginates the member list (page, page_size up to 200). membership is null when the wallet isn’t in a tracked entity.
Campaigns
L3 GET /v1/token/{mint}/campaigns
A campaign is a time-bounded coordinated push — multiple wallets and entities buying in lockstep. active holds in-progress campaigns; recent holds recently-closed ones for context.
{
"mint": "EPjFWd...",
"active": [
{
"campaignId": "camp_xyz789",
"status": "active",
"startedTsMs": 1709654000000,
"participantWallets": 18,
"participantEntities": 3,
"confidence": 0.83
}
],
"recent": [],
"degraded": false
}Crowd
L3 GET /v1/token/{mint}/crowd
Per-minute crowd state — trades, unique wallets, a calibrated crowdScore, and a regime label.
| Regime | Meaning |
|---|---|
quiet | Baseline, no crowd pattern |
trending_crowd | Sustained elevated participation |
crowded_launch | Crowd pattern around a launch window |
{
"mint": "EPjFWd...",
"current": { "bucketStartMs": 1709654400000, "totalTrades": 142, "uniqueWallets": 87, "crowded": true, "crowdScore": 0.78, "crowdRegime": "trending_crowd" },
"minutes": []
}Health
L3 GET /v1/coordination/health
Freshness snapshot of the coordination pipeline — drive your “signal delayed” banners off it.
{ "healthy": true, "degradedWindowMs": 0, "droppedMessagesLastMinute": 0, "observedAtMs": 1709654400000 }Live streams
L3 Coordination primitives also stream:
| Channel | Fires when |
|---|---|
wallet:{address}:follow | A follow edge involving the address activates, updates, or expires |
wallet:{address}:entity | The address’s entity membership changes |
token:{mint}:campaign | A campaign on the token activates, updates, or closes |
Live coordination subjects are opt-in on the backend; if a stream is silent, fall back to the REST endpoints and check /v1/coordination/health. REST TTLs: follows 30s, entity 60s, campaigns/crowd 15s, health 30s.