@coinmarketman/hypertracker-skills 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,434 @@
1
+ # HyperTracker API
2
+
3
+ Pre-computed intelligence layer for Hyperliquid, the largest on-chain perpetual futures exchange. Cohort analytics, live order flow, liquidation risk scoring, leaderboards, and more. All data is independently aggregated and not available through the standard Hyperliquid API.
4
+
5
+ ## Authentication
6
+
7
+ ```
8
+ Authorization: Bearer <your_jwt_token>
9
+ ```
10
+
11
+ Get your token: https://app.coinmarketman.com/hypertracker/api-dashboard?utm_source=skill&utm_medium=ai&utm_campaign=skill-launch
12
+
13
+ ## Base URL
14
+
15
+ ```
16
+ https://ht-api.coinmarketman.com/api/external
17
+ ```
18
+
19
+ All paths below are relative to this base URL. Full OpenAPI spec: `GET /api/external-json`.
20
+
21
+ ## Critical Rules
22
+
23
+ 1. **Dates MUST be ISO 8601.** Example: `2026-02-25T00:00:00.000Z`. Never epoch milliseconds.
24
+ 2. **Coin values are uppercase ticker strings.** Examples: `"BTC"`, `"ETH"`, `"SOL"`. No USDT suffix.
25
+ 3. **Fills have a 24-hour max window.** `end` must be within the same day as `start`.
26
+ 4. **Order snapshots floor date:** `2026-01-19T11:05:00Z`. Timestamps must align to 5-minute boundaries.
27
+ 5. **Leaderboard `rankBy`:** `pnlAllTime`, `pnlMonth`, `pnlWeek`, `pnlDay`. **`limit`:** `25`, `50`, `100`.
28
+ 6. **Default result count is 500** unless `limit` is specified. Paginate with `cursor` from the response.
29
+ 7. **Data refreshes every ~5 minutes** for most endpoints. State/summary updates may take up to 15-17 minutes. Plan polling accordingly.
30
+ 8. **REST only.** WebSocket and Webhook delivery are available on higher tiers as a custom package (not part of the standard API).
31
+
32
+ ---
33
+
34
+ ## Historical Data Availability
35
+
36
+ Not all data goes back the same distance. Check this before building anything historical.
37
+
38
+ | Data Type | Lookback | Earliest Date |
39
+ |-----------|----------|---------------|
40
+ | Individual positions | ~10 months | Apr 2025 |
41
+ | Position metrics (general OI) | ~9 months | May 2025 |
42
+ | Fills (trades) | ~6.5 months | Jul 2025 |
43
+ | Per-coin cohort metrics | ~4 weeks | Jan 2026 |
44
+ | Order snapshots | ~3 weeks | Jan 19, 2026 |
45
+ | Cohort bias | **12 hours only** | Rolling window |
46
+ | Heatmap / Leaderboards | **Current only** | No history |
47
+
48
+ **Important:** Cohort bias (`/segments/{segmentId}/bias-history`) returns data over a rolling window. It is not suitable for multi-day backtesting. Use `/position-metrics/coin/{coin}/segment/{segmentId}` for historical cohort analysis (up to ~4 weeks).
49
+
50
+ ---
51
+
52
+ ## Cohort Segments
53
+
54
+ Every wallet on Hyperliquid is classified into 16 behavioral segments across two dimensions.
55
+
56
+ ### Size-Based Cohorts
57
+ | ID | Name | Position Size |
58
+ |----|------|---------------|
59
+ | 16 | Shrimp | $0 - $250 |
60
+ | 1 | Fish | $250 - $10K |
61
+ | 2 | Dolphin | $10K - $50K |
62
+ | 3 | Apex Predator | $50K - $100K |
63
+ | 4 | Small Whale | $100K - $500K |
64
+ | 5 | Whale | $500K - $1M |
65
+ | 6 | Tidal Whale | $1M - $5M |
66
+ | 7 | Leviathan | $5M+ |
67
+
68
+ ### PnL-Based Cohorts
69
+ | ID | Name | All-Time PnL |
70
+ |----|------|--------------|
71
+ | 8 | Money Printer | $1M+ |
72
+ | 9 | Smart Money | $100K - $1M |
73
+ | 10 | Consistent Grinder | $10K - $100K |
74
+ | 11 | Humble Earner | $0 - $10K |
75
+ | 12 | Exit Liquidity | -$10K - $0 |
76
+ | 13 | Semi-Rekt | -$100K - -$10K |
77
+ | 14 | Full Rekt | -$1M - -$100K |
78
+ | 15 | Giga-Rekt | Below -$1M |
79
+
80
+ PnL segments use `/segment/{segmentId}`. Size segments use `/position-size-segment/{sizeSegmentId}`. Call `GET /segments` to confirm latest ID mapping.
81
+
82
+ ---
83
+
84
+ ## Endpoints
85
+
86
+ ### Cohort Intelligence
87
+
88
+ **GET /segments** — All 16 cohort definitions with IDs and names. Call first to confirm segment IDs.
89
+
90
+ **GET /segments/{segmentId}/bias-history** — Bias history for a specific cohort. Negative = net short, positive = net long. Params: `segmentId` (path), `limit`, `nextCursor`, `start`, `end`, `positionRecencyTimeframe` (enum: `24h`, `7d`, `30d`, `all`; default: `all`). To get all cohorts, call once per segment ID.
91
+
92
+ **GET /segments/{segmentId}/summary** — Per-segment summary: trader counts, aggregate positioning. Params: `segmentId` (path), `positionAge`.
93
+
94
+ ### Positions & Market Exposure
95
+
96
+ **GET /positions** — Individual open positions. Params: `start` (required), `end`, `coin`, `segmentId` (filter by cohort ID), `address` (array, use `address[]=0x...`), `open`, `limit`, `nextCursor`. Historical from April 2025. Also available as "Get All Positions by Cohort" on the Cohorts subpage.
97
+
98
+ **GET /position-metrics/general** — Exchange-level OI, position counts, aggregate metrics. Params: `start`, `end`, `limit`, `nextCursor`.
99
+
100
+ **GET /position-metrics/coin/{coin}** — Per-coin long/short breakdown, OI, trader counts. Params: `coin` (path), `start`, `end`, `limit`, `nextCursor`.
101
+
102
+ **GET /position-metrics/coin/{coin}/segment/{segmentId}** — Per-coin, per-PnL-cohort metrics. Compare Smart Money (9) vs Exit Liquidity (12). Params: `coin`, `segmentId` (path), `start`, `end`, `limit`, `nextCursor`.
103
+
104
+ **GET /position-metrics/coin/{coin}/position-size-segment/{sizeSegmentId}** — Per-coin, per-size-tier metrics. Params: `coin`, `sizeSegmentId` (path), `start`, `end`, `limit`, `nextCursor`.
105
+
106
+ ### Order Flow
107
+
108
+ **GET /orders/5m-snapshots/latest** — Most recent snapshot of every open order. Params: `coin`, `limit`, `nextCursor`, `address`, `oid`, `orderType`. orderType enum: `Limit`, `Stop Limit`, `Stop Market`, `Take Profit Limit`, `Take Profit Market`.
109
+
110
+ **GET /orders/5m-snapshots/{snapshotTime}** — Historical snapshot at a specific time. Params: `snapshotTime` (path, must be 5-min boundary, after floor date), `coin`, `limit`, `nextCursor`, `address`, `oid`, `start`, `end`, `orderType`.
111
+
112
+ **GET /orders/5m-snapshots/latest-snapshot-timestamp** — Returns the most recent available snapshot timestamp.
113
+
114
+ **GET /orders/5m-snapshots/coins/{coin}/download** — Download all order snapshots for a coin as a file.
115
+
116
+ ### Liquidation Risk
117
+
118
+ **GET /{segmentId}/assets/liquidation-risk** — Per-asset liquidation risk for a specific cohort. Params: `segmentId` (path), `offset`, `limit`. Returns risk scores, at-risk OI, directional skew.
119
+
120
+ **GET /positions/heatmap** — Liquidation clusters across price levels. Params: `openedWithin` (enum: `24h`, `7d`, `30d`, `all`; default: `all`). Current snapshot only, no history.
121
+
122
+ ### Leaderboards
123
+
124
+ **GET /leaderboards/perp-pnl** — Top traders by PnL. Params: `rankBy`, `limit`, `offset`, `order`, `orderBy`.
125
+
126
+ **GET /leaderboards/perp-pnl/{period}/download** — Download leaderboard data for a given period. Params: `period` (path, enum: `all`, `30d`, `7d`, `24h`).
127
+
128
+ ### Fills
129
+
130
+ **GET /fills** — Trade executions. Params: `start` (required), `end` (same day), `coin` (array, e.g. `coin[]=BTC`), `limit`, `nextCursor`, `address`, `builder`, `side`. 24hr max window. Historical from July 2025.
131
+
132
+ ### Volume Metrics
133
+
134
+ **GET /metrics/perp-volume** — Aggregate volume metrics. Params: `start`, `end`, `limit`, `nextCursor`.
135
+
136
+ ### Wallets
137
+
138
+ **GET /wallets** — Tracked wallets. Params: `offset`, `limit`, `order`, `orderBy`, `segmentIds`, `hasOpenPositions`, `address` (filter by individual wallet address).
139
+
140
+ ### $HYPE Token
141
+
142
+ **GET /hype/holders** — HYPE token holders with balances, staking, and comparisons. Params: `offset`, `limit` (max 500), `order`, `orderBy`, `rankBy`, `rankOrder`.
143
+
144
+ ### Global State
145
+
146
+ **GET /state/summary** — Exchange snapshot: total/active traders, aggregate OI, segment distribution. No parameters. **Note:** This endpoint may not yet be available on all environments.
147
+
148
+ ### Builders
149
+
150
+ **GET /builders/list/timeframe/{timeframe}** — Full list of all builders on Hyperliquid for a given timeframe, ordered by revenue (descending). Params: `timeframe` (path, enum: `24h`, `7d`, `30d`, `all`).
151
+
152
+ **GET /builders/{builder}/profile** — Comprehensive profile for a builder address. Returns identity, revenues, fee rates, and a full breakdown of analytics across 24h/7d/30d/all-time timeframes. Params: `builder` (path).
153
+
154
+ **GET /builders/all-time-revenue** — All-time daily revenue data for builders.
155
+
156
+ **GET /builders/{builder}/fills** — Trade fills attributed to a builder code. Params: `builder` (path), `start` (required), `end`, `coin`, `limit`, `nextCursor`, `address`, `fillType` (enum: `perp`, `spot`), `side`.
157
+
158
+ **GET /builders/{builder}/users** — Users attributed to a builder code. Params: `builder` (path), `offset`, `limit`, `order`, `orderBy`, `period`.
159
+
160
+ ---
161
+
162
+ ## Response Examples
163
+
164
+ ### /segments/{segmentId}/bias-history
165
+ ```json
166
+ {
167
+ "segment": {"id": 9, "name": "Smart Money", "category": "pnl", "criteria": {"minPnl": 100000, "maxPnl": 1000000}},
168
+ "nextCursor": null,
169
+ "positionRecencyTimeframe": "all",
170
+ "start": "2026-03-03T08:10:00.099Z",
171
+ "end": "2026-03-04T08:10:00.099Z",
172
+ "pageStart": "2026-03-04T08:10:00.075Z",
173
+ "pageEnd": "2026-03-03T08:10:00.388Z",
174
+ "historySnapshotStructure": ["timestamp", "bias", "exposureRatio", "openValue", "openLongValue", "openShortValue", "activePerpEquity"],
175
+ "history": [
176
+ ["2026-03-04T08:10:00.075Z", 0.81, 2.95, 169578077.10, 108075482.73, 61502594.37, 57458083.37],
177
+ ["2026-03-04T06:10:00.019Z", 0.91, 3.02, 173871275.29, 113170965.45, 60700309.84, 57517772.99]
178
+ ]
179
+ }
180
+ ```
181
+ Returns data for the requested segment. The `history` array uses columnar format defined by `historySnapshotStructure`. Positive bias = net long, negative = net short. Call once per segment ID to get all 16 cohorts.
182
+
183
+ ### /{segmentId}/assets/liquidation-risk
184
+ ```json
185
+ {
186
+ "totalCount": 297,
187
+ "items": [
188
+ {"coin": "BTC", "totalValue": 287062584.45, "riskValue": 50791.19, "percentRisk": 49.06}
189
+ ]
190
+ }
191
+ ```
192
+
193
+ ### /orders/5m-snapshots/latest
194
+ ```json
195
+ {
196
+ "orders": [
197
+ {
198
+ "height": 922290820,
199
+ "address": "0xdef1...",
200
+ "oid": 756322353,
201
+ "coin": "BTC",
202
+ "side": "B",
203
+ "limitPx": 21500,
204
+ "sz": 0.00465,
205
+ "timestamp": "2023-07-18T10:30:51.626Z",
206
+ "triggerCondition": "N/A",
207
+ "isTrigger": false,
208
+ "triggerPx": 0,
209
+ "children": [],
210
+ "isPositionTpsl": false,
211
+ "reduceOnly": false,
212
+ "orderType": "Limit",
213
+ "origSz": 0,
214
+ "tif": "",
215
+ "cloid": "",
216
+ "status": "open",
217
+ "builder": "",
218
+ "builderFee": 0,
219
+ "untriggered": false,
220
+ "snapshotTs": "2026-03-13T09:40:00.000Z"
221
+ }
222
+ ],
223
+ "nextCursor": "eyJ..."
224
+ }
225
+ ```
226
+
227
+ ### Paginated response (positions, fills, etc.)
228
+ ```json
229
+ {
230
+ "data": [...],
231
+ "cursor": "eyJsYXN0SWQiOiAxMjM0NX0="
232
+ }
233
+ ```
234
+ Pass `cursor` value as a query parameter on next request to get the next page. When `cursor` is `null`, you've reached the end.
235
+
236
+ ---
237
+
238
+ ## Rate Limits
239
+
240
+ | Tier | Price | Requests | Rate Limit |
241
+ |------|-------|----------|------------|
242
+ | Free | $0 | 100/day | — |
243
+ | Pulse | $179/mo | 50,000/mo | 12/min |
244
+ | Flow | $1,159/mo | 200,000/mo | 25/min |
245
+ | Stream | $2,399/mo | 1,000,000/mo | 100/min |
246
+
247
+ **Note:** Some endpoints may support up to 200 requests/min. The rate limit counter on the API dashboard may not reflect per-endpoint limits.
248
+
249
+ ---
250
+
251
+ ## Code Patterns
252
+
253
+ ### Python: Auth + Request
254
+ ```python
255
+ import requests
256
+
257
+ headers = {"Authorization": "Bearer YOUR_JWT_TOKEN"}
258
+ response = requests.get(
259
+ "https://ht-api.coinmarketman.com/api/external/segments/9/bias-history",
260
+ headers=headers
261
+ )
262
+ data = response.json()
263
+ ```
264
+
265
+ ### JavaScript: Auth + Request
266
+ ```javascript
267
+ const response = await fetch(
268
+ "https://ht-api.coinmarketman.com/api/external/segments/9/bias-history",
269
+ { headers: { "Authorization": "Bearer YOUR_JWT_TOKEN" } }
270
+ );
271
+ const data = await response.json();
272
+ ```
273
+
274
+ ### ISO 8601 Dates (Python)
275
+ ```python
276
+ from datetime import datetime, timezone, timedelta
277
+
278
+ now = datetime.now(timezone.utc)
279
+ params = {
280
+ "start": (now - timedelta(hours=1)).strftime("%Y-%m-%dT%H:%M:%S.000Z"),
281
+ "end": now.strftime("%Y-%m-%dT%H:%M:%S.000Z")
282
+ }
283
+ ```
284
+
285
+ ### Cursor Pagination
286
+ ```python
287
+ cursor = None
288
+ all_data = []
289
+ while True:
290
+ params = {"start": start, "end": end, "coin": "BTC"}
291
+ if cursor:
292
+ params["cursor"] = cursor
293
+ resp = requests.get(url + "/positions", headers=headers, params=params).json()
294
+ all_data.extend(resp["data"])
295
+ cursor = resp.get("cursor")
296
+ if not cursor:
297
+ break
298
+ ```
299
+
300
+ ### Paginating Fills (day by day)
301
+ ```python
302
+ base_date = datetime(2026, 2, 20, tzinfo=timezone.utc)
303
+ for day_offset in range(5):
304
+ start = base_date + timedelta(days=day_offset)
305
+ end = start + timedelta(hours=23, minutes=59, seconds=59)
306
+ params = {
307
+ "start": start.strftime("%Y-%m-%dT%H:%M:%S.000Z"),
308
+ "end": end.strftime("%Y-%m-%dT%H:%M:%S.000Z"),
309
+ "coin[]": "BTC"
310
+ }
311
+ response = requests.get(url + "/fills", headers=headers, params=params)
312
+ ```
313
+
314
+ ### 5-Minute Boundary Alignment
315
+ ```python
316
+ def align_to_5min(dt):
317
+ return dt.replace(minute=(dt.minute // 5) * 5, second=0, microsecond=0)
318
+ ```
319
+
320
+ ---
321
+
322
+ ## Example Prompts
323
+
324
+ ### For Vibe Coders (no dev experience needed)
325
+
326
+ **"I want to see what smart money is doing right now. Build me something simple."**
327
+ Endpoints: `/segments/{segmentId}/bias-history`, `/segments`
328
+ Fetch bias data, display each cohort with a simple long/short indicator. Color-code green for long, red for short. One-page HTML.
329
+
330
+ **"Show me which coins are about to get liquidated"**
331
+ Endpoints: `/{segmentId}/assets/liquidation-risk`
332
+ Fetch risk data, sort by score, display as a simple ranked list with risk level colors.
333
+
334
+ **"What should I be watching today? Rank coins by where the most interesting activity is happening."**
335
+ Endpoints: `/segments/{segmentId}/bias-history`, `/position-metrics/coin/{coin}/segment/9`, `/orders/5m-snapshots/latest`, `/{segmentId}/assets/liquidation-risk`
336
+ Score each coin by: smart money conviction, order flow clustering, liquidation proximity. Rank and surface top 5 with a one-line reason for each.
337
+
338
+ **"Am I about to get liquidated? Check if my position is safe."**
339
+ Endpoints: `/{segmentId}/assets/liquidation-risk`, `/positions/heatmap`
340
+ User provides coin and direction. Fetch liquidation risk for that coin, show how close current price is to liquidation clusters, and give a plain-English safety rating.
341
+
342
+ **"Show me a fear/greed gauge for Hyperliquid right now"**
343
+ Endpoints: `/segments/{segmentId}/bias-history`, `/{segmentId}/assets/liquidation-risk`, `/state/summary`
344
+ Composite score from cohort sentiment, liquidation proximity, and OI trends. Display as a simple gauge with color-coded zones. One-page HTML.
345
+
346
+ **"Show me what whales are doing vs retail on BTC"**
347
+ Endpoints: `/position-metrics/coin/BTC/segment/9`, `/position-metrics/coin/BTC/position-size-segment/7`, `/position-metrics/coin/BTC/position-size-segment/16`
348
+ Compare Leviathan (7) and Smart Money (9) positioning against Shrimp (16). Show who's long, who's short, and whether they agree.
349
+
350
+ ### Dashboards
351
+
352
+ **"Build a Hyperliquid market dashboard with cohort positioning, order flow, and liquidation risk"**
353
+ Endpoints: `/segments/{segmentId}/bias-history`, `/orders/5m-snapshots/latest`, `/{segmentId}/assets/liquidation-risk`, `/position-metrics/coin/{coin}`
354
+
355
+ **"Track my positions and compare them against smart money"**
356
+ Endpoints: `/wallets`, `/position-metrics/coin/{coin}/segment/9`, `/segments/{segmentId}/bias-history`
357
+
358
+ ### Trading Signals
359
+
360
+ **"Alert me when two cohorts diverge on any coin"**
361
+ Endpoints: `/segments/{segmentId}/bias-history`, `/position-metrics/coin/{coin}/segment/{segmentId}`
362
+ Poll bias data, detect when cohorts split (e.g., Smart Money long, Exit Liquidity short). Pull coin-level metrics to find which coins drive the divergence.
363
+
364
+ **"Mean-reversion alert when a cohort's bias hits an extreme and reverses"**
365
+ Endpoints: `/segments/{segmentId}/bias-history`
366
+ Track bias time series, define extremes (> 0.7 or < -0.7), fire alert when pullback starts.
367
+
368
+ **"Contrarian signal: go opposite of Exit Liquidity and Giga-Rekt"**
369
+ Endpoints: `/segments/{segmentId}/bias-history`, `/position-metrics/coin/{coin}/segment/12`, `/position-metrics/coin/{coin}/segment/15`
370
+ When Exit Liquidity (12) and Giga-Rekt (15) are heavily positioned one way, flag the opposite direction as a potential trade.
371
+
372
+ ### Order Flow
373
+
374
+ **"Map BTC orders by price level and type. Show where stops, TPs, and limits cluster."**
375
+ Endpoints: `/orders/5m-snapshots/latest?coin=BTC`
376
+ Group orders into price buckets, count by type, visualize as a bar chart relative to current price.
377
+
378
+ ### Liquidation
379
+
380
+ **"Liquidation risk monitor across all coins, ranked and auto-refreshing"**
381
+ Endpoints: `/{segmentId}/assets/liquidation-risk`, `/position-metrics/coin/{coin}`
382
+ Rank by risk score, pull OI for top 5 riskiest, color-code severity, refresh every 5 minutes.
383
+
384
+ ### Leaderboard
385
+
386
+ **"Watchlist from today's top 25 traders. Alert me when they open new positions."**
387
+ Endpoints: `/leaderboards/perp-pnl?rankBy=pnlDay&limit=25`, `/wallets`
388
+ Fetch leaderboard, look up wallets, poll for changes every 5 minutes.
389
+
390
+ ### Backtesting
391
+
392
+ **"Backtest: how did Smart Money positioning on BTC predict price moves over the last 4 weeks?"**
393
+ Endpoints: `/position-metrics/coin/BTC/segment/9`
394
+ Use per-coin cohort metrics (available ~4 weeks back). Correlate Smart Money net exposure changes with subsequent BTC price movement. Report hit rate and average return per signal. Note: cohort bias (`/segments/{segmentId}/bias-history`) only has 12 hours of history and cannot be used for multi-day backtests.
395
+
396
+ **"Compare all 8 PnL cohorts as predictors of BTC direction over the last month"**
397
+ Endpoints: `/position-metrics/coin/BTC/segment/{segmentId}` (for each ID 8-15)
398
+ For each cohort, pull 4 weeks of positioning data. Correlate exposure changes with subsequent price moves. Rank cohorts by predictive accuracy.
399
+
400
+ ### Market Regime
401
+
402
+ **"Is the market in risk-on or risk-off mode right now based on cohort behavior?"**
403
+ Endpoints: `/segments/{segmentId}/bias-history`, `/state/summary`, `/{segmentId}/assets/liquidation-risk`
404
+ Risk-on signals: Smart Money and Money Printer net long, low liquidation risk, rising OI. Risk-off: defensive cohorts reducing exposure, high liq risk, falling OI. Classify current regime and show supporting data.
405
+
406
+ **"Daily market regime report: combine cohort bias, OI, and liquidation risk into one summary"**
407
+ Endpoints: `/segments/{segmentId}/bias-history`, `/position-metrics/general`, `/{segmentId}/assets/liquidation-risk`, `/state/summary`
408
+ Pull all four data sources. Classify as risk-on, risk-off, or neutral. Show the 3 strongest supporting signals and 1 contradicting signal. Output as a clean summary.
409
+
410
+ ### Multi-Endpoint
411
+
412
+ **"Coin screener ranking assets by smart money conviction, order flow health, and liquidation risk"**
413
+ Endpoints: `/position-metrics/coin/{coin}/segment/9`, `/orders/5m-snapshots/latest`, `/{segmentId}/assets/liquidation-risk`, `/state/summary`
414
+
415
+ ---
416
+
417
+ ## Troubleshooting
418
+
419
+ | Problem | Solution |
420
+ |---------|----------|
421
+ | 401 Unauthorized | Check JWT token is valid, included as `Bearer <token>` |
422
+ | Empty fills | `start` and `end` must be within the same 24-hour period |
423
+ | Empty order snapshots | Timestamp must be after `2026-01-19T11:05:00Z` and on a 5-minute boundary |
424
+ | Dates not working | Use ISO 8601: `2026-02-25T00:00:00.000Z`. Not epoch milliseconds. |
425
+ | Leaderboard error | `rankBy` must be `pnlAllTime`/`pnlMonth`/`pnlWeek`/`pnlDay`. `limit` must be 25/50/100. |
426
+ | Empty cohort history | `/segments/{segmentId}/bias-history` has limited history. Use `/position-metrics/coin/{coin}/segment/{id}` for longer lookbacks (up to ~4 weeks). |
427
+ | Stale data | Most data refreshes every ~5 minutes. State/summary updates may take up to 15-17 minutes. Wait for next cycle. |
428
+ | No more pages | `cursor` is `null` in the response. You've fetched everything. |
429
+
430
+ ## Links
431
+
432
+ - Dashboard & API Key: https://app.coinmarketman.com/hypertracker/api-dashboard?utm_source=skill&utm_medium=ai&utm_campaign=skill-launch
433
+ - Docs: https://docs.coinmarketman.com
434
+ - OpenAPI Spec: `GET /api/external-json`