Endpoint Reference
Structured endpoint data for programmatic consumption. See /openapi.yaml for the full machine-readable spec.
Live Stream Mapping
Every major REST endpoint has a WebSocket stream counterpart. Use REST for backfill, WebSocket for real-time. Sub-second latency on all streams.
| REST Endpoint | WebSocket Channel | Description |
|---|---|---|
| GET /v1/wallets/{addr}/trades | wallet:{addr}:pnl | Real-time realized PnL (sub-second, unique to CONYR) |
| GET /v1/wallets/{addr}/unrealized-pnl | wallet:{addr}:unrealized-pnl | Unrealized PnL on open positions (mark-to-market) |
| GET /v1/wallets/{addr}/positions | wallet:{addr}:positions | Position open/update/close events |
| GET /v1/wallets/{addr}/bundles | wallet:{addr}:bundles | Bundle detection and lifecycle updates |
| GET /v1/wallets/{addr}/security | wallet:{addr}:security | Malicious activity and threat scoring |
| GET /v1/wallets/{addr}/taxonomy | wallet:{addr}:taxonomy | Badge and classification changes |
| GET /v1/tokens/{mint}/trades | token:{mint}:trades | Live trade tape |
| GET /v1/tokens/{mint}/ohlcv | token:{mint}:ohlcv:{view}:{tf} | Candle updates (full or filtered) |
| — | token:{mint}:ticks | Chart tick events (stream-only) |
Wallets
GET /v1/wallets/{address}/performance
| Parameter | In | Type | Required | Default | Enum |
|---|---|---|---|---|---|
| address | path | string | yes | — | — |
| window | query | string | no | 7d | 1d, 7d, 30d |
Response schema: WalletPerformance
Cache TTL: 30s
GET /v1/wallets/{address}/trades
| Parameter | In | Type | Required | Default | Constraints |
|---|---|---|---|---|---|
| address | path | string | yes | — | — |
| limit | query | integer | no | 50 | max 200 |
| offset | query | integer | no | 0 | — |
| token | query | string | no | — | token mint filter |
Response: {"trades": WalletTrade[], "limit": int, "offset": int}
Live stream: wallet:{address}:pnl — fires on every trade close with realized PnL, hold time, entry/exit prices, fee attribution, trade tool fingerprint
GET /v1/wallets/{address}/unrealized-pnl
| Parameter | In | Type | Required | Default | Constraints |
|---|---|---|---|---|---|
| address | path | string | yes | — | — |
| token | query | string | no | — | token mint filter |
Response: {"positions": UnrealizedPosition[], "wallet_address": string, "total_unrealized_pnl_usd": number}
Live stream: wallet:{address}:unrealized-pnl — fires when mark-to-market values change
Includes: per-position unrealized PnL in USD and SOL, current price, entry price, percentage gain/loss, position value, cost basis
GET /v1/wallets/{address}/positions
| Parameter | In | Type | Required | Default | Enum |
|---|---|---|---|---|---|
| address | path | string | yes | — | — |
| status | query | string | no | all | open, closed, all |
Response: {"positions": WalletPosition[]}
Live stream: wallet:{address}:positions — fires on position open, partial close, full close
GET /v1/wallets/{address}/labels
| Parameter | In | Type | Required |
|---|---|---|---|
| address | path | string | yes |
Response: WalletLabel | null
Cache TTL: 60s
Includes: trader_type, performance_level, size_class, exit_style, trade_badges, identity_badges, quantitative performance metrics
GET /v1/wallets/{address}/taxonomy
| Parameter | In | Type | Required |
|---|---|---|---|
| address | path | string | yes |
Response: WalletTaxonomy
Live stream: wallet:{address}:taxonomy — fires when badges change
Includes: 4-axis classification + up to 22 behavioral and identity badges with confidence scores
GET /v1/wallets/{address}/bundles
| Parameter | In | Type | Required | Default | Constraints |
|---|---|---|---|---|---|
| address | path | string | yes | — | — |
| limit | query | int | no | 25 | max 100 |
Response: {"bundles": Bundle[]}
Live stream: wallet:{address}:bundles — fires on bundle detection, lifecycle state changes
Includes: bundle_type, status, member wallets, leader, supply-at-risk, invested/returned, risk score, evidence
GET /v1/wallets/{address}/security
| Parameter | In | Type | Required |
|---|---|---|---|
| address | path | string | yes |
Response: WalletSecurity
Live stream: wallet:{address}:security — fires on threat detection
Includes: malicious flag, detection reason, associated suspicious tokens, total PnL from flagged activity
Leaderboard
GET /v1/leaderboard
| Parameter | In | Type | Required | Default | Enum/Constraints |
|---|---|---|---|---|---|
| window | query | string | no | 7d | 1d, 7d, 30d |
| sort | query | string | no | pnl_usd | pnl_usd, roi, win_rate |
| limit | query | integer | no | 100 | max 500 |
| offset | query | integer | no | 0 | — |
Response: {"leaderboard": LeaderboardEntry[], "window": string, "sort": string, "limit": int, "offset": int}
Cache TTL: 60s
Note: Minimum 5 trades required for inclusion.
Tokens
GET /v1/tokens/{mint}/info
| Parameter | In | Type | Required |
|---|---|---|---|
| mint | path | string | yes |
Response schema: TokenInfo
Cache TTL: 300s
Includes: name, symbol, supply, deployer, validation status, mintable/freezable flags, primary DEX, token health score (0-100) with breakdown and evidence
GET /v1/tokens/{mint}/ohlcv
| Parameter | In | Type | Required | Default | Enum/Constraints |
|---|---|---|---|---|---|
| mint | path | string | yes | — | — |
| timeframe | query | string | no | 1m | 1s, 1m, 5m, 15m, 1h |
| view | query | string | no | full | full, filtered |
| from | query | integer | no | — | unix ms |
| to | query | integer | no | — | unix ms |
| limit | query | integer | no | 500 | max 2000 |
Response: {"candles": OhlcvCandle[], "token_mint": string, "timeframe": string, "view": string}
Cache TTL: 5s
Live stream: token:{mint}:ohlcv:{view}:{tf} — candle updates as computed
Note: filtered view removes bot/wash trades for organic price discovery. Each candle includes OHLCV, buy/sell volume split, VWAP, trade count, unique buyers, unique sellers.
GET /v1/tokens/{mint}/trades
| Parameter | In | Type | Required | Default | Constraints |
|---|---|---|---|---|---|
| mint | path | string | yes | — | — |
| limit | query | integer | no | 50 | max 200 |
Response: {"trades": TokenTrade[], "token_mint": string, "limit": int}
Live stream: token:{mint}:trades — every swap as it lands on-chain
Also available: token:{mint}:ticks — chart tick price updates (stream-only)
Operations (No Auth)
| Endpoint | Response |
|---|---|
| GET /health | {"status": "ok"} |
| GET /ready | {"status": "ready|not ready"} |
| GET /metrics | Prometheus text format |