Portfolio Tracker
Log bets, auto-grade them from vault results, and track running P&L with CLV attribution. Your portfolio sits on top of the same grading engine that powers /results. Quant tier ($299/mo).
Read your portfolio
GET/v7/{sport}/portfolio
| Param | Type | Required | Description |
|---|---|---|---|
| sport | path | Yes | Sport slug. |
| from | date | — | Range start, YYYY-MM-DD. |
| to | date | — | Range end, inclusive. |
| status | string | — | open, settled, or all (default). |
| limit | int | — | 1-500, default 50. |
| cursor | string | — | Pagination cursor from next_cursor. |
cURLGET
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v7/cs2/portfolio?status=settled&from=2026-10-01"
200 · live (trimmed)
{
"available": true,
"sport": "cs2",
"total": 1,
"summary": {
"total_bets": 87,
"settled": 74,
"open": 13,
"win_rate": 0.581,
"roi_pct": 6.3,
"avg_clv_pct": 2.8
},
"bets": [
{
"bet_id": "kr_bet_c4e8a012f7b3d519",
"kr_match_id": "kr_cs2_aurora-gaming-vs-betboom-team-05-10-2026",
"market": "match_winner",
"selection": "Aurora Gaming",
"book": "pinnacle",
"entry_decimal": 2.45,
"stake": 100,
"status": "settled",
"grade": "hit",
"pnl": 145,
"clv_pct": 5.2,
"placed_at": "2026-10-05T13:45:00Z",
"graded_at": "2026-10-05T17:30:00Z"
}
]
}Log a bet
GET/v7/{sport}/portfolio/track
POST a bet to log it. The body carries kr_match_id, market, selection, book, entry_decimal and stake. The bet auto-grades when the match settles in the vault.
Portfolio grading uses the same engine as /results. A pending grade says why: pending_reason: match_not_in_vault until the match is stored.
