curl --request GET \
--url https://arena-predictions.com/api/v1/traders/{traderId}/picks \
--header 'Authorization: Bearer <token>'import requests
url = "https://arena-predictions.com/api/v1/traders/{traderId}/picks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://arena-predictions.com/api/v1/traders/{traderId}/picks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"picks": [
{
"pickId": "6f1c2a3b-4d5e-4f60-8a71-b2c3d4e5f607",
"side": "yes",
"result": "won",
"stakeDollars": null,
"pnlDollars": 3.7,
"openedAt": "2026-09-21T16:58:02Z",
"closedAt": "2026-09-21T20:31:44Z",
"instrumentId": "ins_0123456789AB",
"marketLabel": "KC -3.5"
},
{
"pickId": "7a1c2a3b-4d5e-4f60-8a71-b2c3d4e5f608",
"side": "no",
"result": "lost",
"stakeDollars": 6.3,
"pnlDollars": -6.3,
"openedAt": "2026-09-20T01:12:40Z",
"closedAt": "2026-09-20T04:05:09Z",
"instrumentId": null,
"marketLabel": null,
"marketLabelReason": "no_arena_label"
}
],
"nextCursor": null,
"mode": "paper"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"retryAfterSeconds": 2
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"retryAfterSeconds": 2
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"retryAfterSeconds": 2
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"retryAfterSeconds": 2
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"retryAfterSeconds": 2
}
}Get a trader's settled picks
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.
curl --request GET \
--url https://arena-predictions.com/api/v1/traders/{traderId}/picks \
--header 'Authorization: Bearer <token>'import requests
url = "https://arena-predictions.com/api/v1/traders/{traderId}/picks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://arena-predictions.com/api/v1/traders/{traderId}/picks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"picks": [
{
"pickId": "6f1c2a3b-4d5e-4f60-8a71-b2c3d4e5f607",
"side": "yes",
"result": "won",
"stakeDollars": null,
"pnlDollars": 3.7,
"openedAt": "2026-09-21T16:58:02Z",
"closedAt": "2026-09-21T20:31:44Z",
"instrumentId": "ins_0123456789AB",
"marketLabel": "KC -3.5"
},
{
"pickId": "7a1c2a3b-4d5e-4f60-8a71-b2c3d4e5f608",
"side": "no",
"result": "lost",
"stakeDollars": 6.3,
"pnlDollars": -6.3,
"openedAt": "2026-09-20T01:12:40Z",
"closedAt": "2026-09-20T04:05:09Z",
"instrumentId": null,
"marketLabel": null,
"marketLabelReason": "no_arena_label"
}
],
"nextCursor": null,
"mode": "paper"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"retryAfterSeconds": 2
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"retryAfterSeconds": 2
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"retryAfterSeconds": 2
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"retryAfterSeconds": 2
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"retryAfterSeconds": 2
}
}Authorizations
Authorization: Bearer arena_sk_... (the x-arena-key header is accepted too). Keys are created at /docs, shown once, stored hashed.
Path Parameters
A trader's user id (uuid) or display name. Names match exactly, ignoring case.
2Query Parameters
Rows per page, 1 to 100. Default 20. Anything else is a 400 invalid_request.
1 <= x <= 100The nextCursor of the previous page. Opaque.
Response
One page of settled picks.