GET /v1/trader/{proxy}/positions
Open/closed positions for a trader. Paid feature (metrics_full).
Open/closed positions for a trader. Paid feature (metrics_full).
API key: Authorization: Bearer pk_live_… (mint at polyrank.app/api-keys)
In: header
Path Parameters
Query Parameters
Case-insensitive text search over the market title and the named outcome, applied before pagination (1-100 characters).
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/trader/string/positions"{ "rows": [ { "outcome_token_id": "string", "condition_id": "string", "is_combo": true, "market_title": "string", "market_slug": "string", "outcome_side": "YES", "outcome_name": "string", "shares_held": 0, "avg_cost": 0, "cost_basis": 0, "current_mid": 0, "current_value": 0, "realized_pnl": 0, "unrealized_pnl": 0, "total_pnl": 0, "pct_return": 0, "buy_cost_usdc": 0, "resolved": true, "winner_outcome": "YES", "status": "OPEN", "redeemable": true, "resolved_at": "string", "last_activity_at": "string", "freshness": { "as_of": "string", "age_seconds": 0, "class": "live", "source": "string" } } ], "total": -9007199254740991, "live_marks": { "mode": "off", "stale": -9007199254740991, "refreshed": -9007199254740991, "deferred": -9007199254740991, "fetch_ms": -9007199254740991 }}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}{ "error": "string", "message": "string", "feature": "string", "field": "string", "plan": "string", "retry_after_sec": 0, "retry_after_seconds": 0, "reason": "string", "issues": [ null ], "trace_id": "string"}GET /v1/trader/{proxy}/pnl_curve GET
Daily cumulative P&L from FIFO position lifecycle. Paid feature (metrics_full).
GET /v1/trader/{proxy}/return-distribution GET
Resolved-position return distribution over EVERY resolved position (P1-25). Buckets come from the shared RETURN_BUCKETS vocabulary; positions with a non-positive cost basis are reported separately rather than bucketed.