---
title: "Get a trader's settled picks"
method: GET
path: "/traders/{traderId}/picks"
tags: ["Records"]
---

# Get a trader's settled picks

`GET /traders/{traderId}/picks`

## Request

- Base URL: `https://arena-predictions.com/api/v1`
- URL: `https://arena-predictions.com/api/v1/traders/{traderId}/picks`
- Auth: HTTP bearer

Settled picks (won, lost or void), newest opened first, drawn from the trader's 100 most recent picks that the public can see. Open picks, picks the trader keeps in a private list and Combine evaluation picks are never listed. For players, a settled parlay leg stays hidden while another leg of that parlay is open. Picks closed early by selling are not settlements, so they are left out too. No exchange ticker, market title, entry price or live price appears: marketLabel is Arena's own label from the universal ticker.

## Path parameters

- `traderId` string, required

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

One page of settled picks.

- PickList
  - `picks` Pick[], required
    - `pickId` string, uuid, required
    - `side` 'yes' | 'no', required: The side the pick holds. With an instrumentId it is the side of that instrument: yes means the outcome marketLabel names happens. Without one it is the side of the underlying market, which a key does not name.
    - `result` 'won' | 'lost' | 'void', required: void is a push or a cancelled market.
    - `stakeDollars` number, nullable, required: The stake, where the result alone fixes it: a lost pick loses its whole stake. Null for won and void picks, because next to the P&L a won pick's stake would give away the entry price, which a key does not carry.
    - `pnlDollars` number, required: Profit or loss in paper dollars. 0 for a void pick.
    - `openedAt` string, date-time, required: RFC 3339, UTC, second precision.
    - `closedAt` string, date-time, nullable, required: RFC 3339, UTC, second precision.
    - `instrumentId` string, nullable, required: Arena's universal ticker id when the pick's market maps to an Arena instrument, else null. Opaque: store it, never parse it.
    - `marketLabel` string, nullable, required: Arena's own label for the instrument's YES outcome, built from team codes: KC ML, KC -3.5 (KC win by more than 3.5), Over 44.5. Null when Arena has not labelled the market. Today Arena labels NFL full-game moneylines, spreads and totals.
    - `marketLabelReason` 'no_arena_label': Present only when marketLabel is null.
    - `placedPrivate` boolean: Only on the key owner's own picks (portfolio:read): the pick was placed while the account was private.
    - `shown` boolean: Only on the key owner's own picks: others can see this pick right now.
  - `nextCursor` string, nullable, required: Pass back as cursor for the next page. Null on the last page.
  - `private` true: Present for a private account, whose pick list is always empty.
  - `note` string
  - `mode` 'paper', required

## Other responses

- `400`: invalid_request: limit is not an integer from 1 to 100, or cursor is malformed.
- `401`: Missing, malformed, unknown, revoked or expired key. Carries a WWW-Authenticate: Bearer challenge.
- `403`: insufficient_scope: the key does not carry records:read.
- `404`: trader_not_found: no trader has that id or display name.
- `429`: rate_limited (over the plan's minute limit) or quota_exceeded (over the month). Only while the limits are enforced; until then requests are counted and the headers set, and nothing is refused. error.retryAfterSeconds equals Retry-After.
- `503`: The key could not be verified, or the records could not be read, right now. Retry after the Retry-After seconds.

---

[API](https://skmtc.dev/arena-predictions/apis/arena-api.md) · [All operations](https://skmtc.dev/arena-predictions/apis/arena-api/llms.txt) · [OpenAPI document](https://skmtc.dev/arena-predictions/apis/arena-api/revisions/9d89d166dae6?raw)
