API Reference
All data parsed from a self-hosted Yellowstone gRPC node — not aggregated from third-party APIs. Sub-second latency from chain to your application.
Authentication
All /v1/* routes require a Bearer token:
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.conyr.ai/v1/token/{mint}/scoreSystem endpoints (/health, /ready, /metrics) require no authentication.
Tiered Access
Every API key is associated with a tier that determines endpoint access, rate limits, and WebSocket connection limits.
| Tier | REST req/min | WS Connections | Highlights |
|---|---|---|---|
| Free | 10 | 0 | Token score, buyer quality, bundle summary |
| Layer 1 — Market Data | 100 | 5 | OHLCV, trades, price, ticks, trade tape |
| Layer 2 — Wallet Intelligence | 300 | 20 | PnL, positions, labels, profile, similarity, provenance |
| Layer 3 — Security Intelligence | 600 | 50 | Bundles, coordination, wash trades, entanglement, squads |
| Enterprise | 3,000+ | Unlimited | Bulk endpoints, dedicated NATS, custom limits |
Each tier includes all endpoints from lower tiers.
Endpoint Map
Free Tier
| Method | Path | Description |
|---|---|---|
| GET | /v1/token/{mint}/score | 5-axis composite risk score (0–100) |
| GET | /v1/token/{mint}/buyer-quality | Buyer quality tier decomposition |
| GET | /v1/token/{mint}/bundles/summary | Bundle count and classification |
Layer 1 — Market Data
| Method | Path | Description |
|---|---|---|
| GET | /v1/token/{mint}/score | Full axis breakdown and sub-scores |
| GET | /v1/token/{mint}/price | Real-time on-chain price |
| GET | /v1/token/{mint}/ohlcv | OHLCV candlestick data |
| GET | /v1/token/{mint}/trades | Recent trade history |
| GET | /v1/leaderboard | Ranked wallet leaderboard |
| WS | token:{mint}:ticks | Zero-latency chart ticks |
| WS | token:{mint}:ohlcv:{view}:{tf} | Candle stream |
| WS | token:{mint}:trades | Trade tape |
Layer 2 — Wallet Intelligence
| Method | Path | Description |
|---|---|---|
| GET | /v1/wallet/{addr}/profile | 30-dimensional behavior vector |
| GET | /v1/wallet/{addr}/similar | k-NN wallet similarity search |
| GET | /v1/wallet/{addr}/provenance | Funding chain resolution |
| GET | /v1/wallet/{addr}/pnl | Historical realized PnL |
| GET | /v1/wallet/{addr}/positions | Open positions with cost basis |
| GET | /v1/wallet/{addr}/labels | Enriched wallet labels (45+ fields) |
| GET | /v1/token/{mint}/buyer-quality | Extended buyer decomposition |
| WS | wallet:{addr}:pnl | Real-time PnL events |
| WS | wallet:{addr}:positions | Position deltas |
| WS | wallet:{addr}:labels | Label state changes |
Layer 3 — Security Intelligence
| Method | Path | Description |
|---|---|---|
| GET | /v1/token/{mint}/bundles | Full bundle detection results |
| GET | /v1/token/{mint}/bundles/{bundle_id} | Bundle detail with members |
| GET | /v1/token/{mint}/coordination | Coordinated wallet pairs |
| GET | /v1/wallet/{addr}/coordination | Wallet coordination signals |
| GET | /v1/squad/{family_id} | Squad membership and density |
| GET | /v1/token/{mint}/wash-trades | Wash trade detection |
| GET | /v1/wallet/{addr}/entanglement | Graph-based cluster analysis |
| GET | /v1/token/{mint}/suspicious-activity | Flagged suspicious activity |
| POST | /v1/webhooks | Register security webhooks |
| WS | token:{mint}:security | Token security events |
| WS | wallet:{addr}:security | Wallet security events |
Error Responses
All errors return a consistent JSON envelope:
{"error": "Human-readable message", "code": 400}| Code | Meaning |
|---|---|
| 400 | Bad request — invalid parameters |
| 401 | Unauthorized — missing or invalid API key |
| 403 | Forbidden — tier insufficient for this endpoint |
| 404 | Not found — resource doesn’t exist |
| 429 | Rate limited — slow down |
| 500 | Internal error |
| 503 | Service unavailable — upstream dependency down |
Caching
Every endpoint is fronted by an in-process LRU cache. Cache TTLs vary by data freshness requirements:
| Cache | TTL | Max Entries |
|---|---|---|
| Token score | 10s | 50,000 |
| Buyer quality | 30s | 10,000 |
| OHLCV candles | 5s | 5,000 |
| Wallet performance | 30s | 10,000 |
| Wallet labels | 60s | 10,000 |
| Wallet profile | 60s | 10,000 |
| Provenance | 300s | 10,000 |
| Bundles | 15s | 20,000 |
| Coordination | 30s | 20,000 |
| Wash trades | 15s | 10,000 |
| Leaderboard | 60s | 50 |
| Token info | 300s | 50,000 |
For zero-latency data, use WebSockets instead of polling REST.
Response Compression
All responses support gzip compression. Send Accept-Encoding: gzip to reduce transfer sizes.