Live per-market PnL for a (wallet, market) pair
Live "hover" PnL for a single wallet on a single market, sourced from a fast real-time pipeline — quick regardless of how far back the wallet's earliest trade goes. Returns one row per token held on the contract (e.g. YES + NO for a binary market) plus aggregate totals across those tokens. Only providers on this pipeline are supported: polymarket, opinion, predictfun; kalshi and hyperliquid are rejected with 400 and must use /pnl/{user_id}. When the underlying pipeline is disabled (e.g. while a backfill is ramping), the endpoint returns a well-formed zero/empty payload (tokens: [], all totals 0.0) instead of erroring, matching the "no data" state the frontend already renders gracefully. For API-key callers, the requested provider must additionally have its API access enabled.
Request
- Base URLhttps://data.kairos.trade
- AuthAPI key in header X-Client-Id and API key in header X-Api-Key and API key in header X-Api-Secret
Path parameters
MV-pipeline provider id. kalshi, hyperliquid, and any other registered-but-non-MV provider are rejected with 400.
Wallet address (opaque string; trimmed, length-checked — not format-validated at this layer).
Market/condition (contract) id.
Response
Per-token PnL rows and aggregate totals for the wallet on this market. Returns an empty/zeroed payload (not a 404) when the underlying PnL pipeline is disabled.
Example response
{
"provider_id": "polymarket",
"wallet_address": "0x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b",
"contract_id": "0xabc123condition",
"tokens": [
{
"token_id": "10723948572...4",
"outcome": "YES",
"balance": 150,
"avg_entry_price": 0.42,
"cost_basis_usd": 63,
"mark_price": 0.55,
"position_value_usd": 82.5,
"unrealized_pnl_usd": 19.5
}
],
"total_unrealized_pnl_usd": 19.5,
"total_position_value_usd": 82.5
}Changes
No recorded changes to this operation across all 1 revision of this API.