A trader’s Ed25519-signed track record over the last 90 days, exactly as Arena signed it for the keyed audience: record is the envelope, never reshaped, so a saved copy verifies on its own. promote-record is called with audience=keyed, so the envelope has the same scores and the same signing key as the public record and names no Kalshi series ticker and no venue. It is served while the venue-data switch is off. The CLI’s arena record, hosted MCP verify (get_track_record with verify: true) and the Python SDK’s track_record() still read the public envelope, which names series. To check this envelope: take record without its signature field and write the rest in RFC 8785 (JCS) form as UTF-8 bytes; their SHA-256 in hex is record.signature.payload_sha256, and record.signature.sig (base64url) is an Ed25519 signature over those same bytes, not over the hash, by the key record.key_id from keysUrl. A private account answers 200 with private: true and record null, and a public account whose earlier trades are still hidden answers numbersShown: false and record null.
Authorization: Bearer arena_sk_... (the x-arena-key header is accepted too). Keys are made in Settings (https://arena-predictions.com/settings#api-keys) or with arena keys create, shown once, stored hashed.
Scopes
records:read
Path Parameters
traderId
string
required
A trader's user id (uuid) or display name. Names match exactly, ignoring case.
Minimum string length: 2
Response
The signed record, or record null while numbersShown is false.
traderId
string<uuid> | null
required
Null for someone else's private account.
displayName
string | null
required
private
boolean
required
True: the account is private, and record is null.
numbersShown
boolean
required
Others see the account's numbers, as on Trader. False while private, and while public if any earlier trade is still hidden; record is null whenever this is false.
record
object | null
required
The signed envelope exactly as Arena signed it (type arena.track_record, version, issuer, key_id, issued_at, record, signature). Nothing inside it is renamed or reshaped, so a saved copy verifies on its own. record.record carries status (eligible, not_eligible or blocked), window, gates, track_record (scores, P&L in points, which equal paper dollars, and the Kalshi series counted), definitions and a disclosure. Null while numbersShown is false.
Show child attributes
keysUrl
string<uri>
required
Arena's published signing keys. Verify against these, never a key a record names.
verify
string
required
How to check the signature, step by step.
mode
string
required
Allowed value: "paper"
note
string
Present while record is null: why there is none.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Arena API","description":"HTTP API reference for Arena Predictions paper trading.","colors":{"primary":"#0A0A0A","light":"#EDEDED","dark":"#52525B"},"favicon":"https://mintcdn.com/arena-1ec6bfd3/QxV7kpIQlR3N5xtX/images/favicon.png?fit=max\u0026auto=format\u0026n=QxV7kpIQlR3N5xtX\u0026q=85\u0026s=aa928d2479792f64aacee8186098149b","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","python","javascript"]}},"appearance":{"default":"dark","strict":true},"navbar":{"links":[{"href":"https://arena-predictions.com/support","label":"Support"},{"href":"https://arena-predictions.com","label":"arena-predictions.com"}],"primary":{"type":"button","label":"Get an API key","href":"https://arena-predictions.com/settings#api-keys"}},"footer":{"links":[{"header":"Arena","items":[{"label":"Website","href":"https://arena-predictions.com"},{"label":"Terms","href":"https://arena-predictions.com/terms"},{"label":"Support","href":"https://arena-predictions.com/support"}]},{"header":"Agent kit","items":[{"label":"CLI","href":"https://arena-predictions.com/docs/cli"},{"label":"Agents","href":"https://arena-predictions.com/agents"},{"label":"GitHub","href":"https://github.com/ZBGC/arena-agent-kit"}]},{"header":"Specification","items":[{"label":"openapi.json","href":"https://arena-predictions.com/api/v1/openapi.json"},{"label":"llms.txt","href":"https://arena-predictions.com/llms.txt"}]}]},"seo":{"metatags":{"canonical":"https://docs.arena-predictions.com","og:image":"https://docs.arena-predictions.com/images/og.png","og:image:alt":"Arena API docs: paper trading for prediction markets at live prices","twitter:image":"https://docs.arena-predictions.com/images/og.png","twitter:image:alt":"Arena API docs: paper trading for prediction markets at live prices"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"arena-1ec6bfd3","hasAudioNarration":false,"actualSubdomain":"arena-1ec6bfd3","customDomains":["docs.arena-predictions.com"],"gitSource":{"type":"github","owner":"zbgc","repo":"arena-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ad12102c02d2785c64df1e1","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"API docs","count":45},{"language":"default","tag":"API reference","count":32},{"language":"default","tag":"Markets","count":12},{"language":"default","tag":"Records","count":5},{"language":"default","tag":"Conventions","count":4},{"language":"default","tag":"API keys","count":4},{"language":"default","tag":"Portfolio","count":4},{"language":"default","tag":"CLI","count":3},{"language":"default","tag":"Trading","count":3},{"language":"default","tag":"Getting started","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/records/get-a-traders-signed-track-record","slug":"/api-reference/records/get-a-traders-signed-track-record","pageMetadata":{"title":"Get a trader's signed track record","description":"A trader's Ed25519-signed track record over the last 90 days, exactly as Arena signed it for the keyed audience: record is the envelope, never reshaped, so a saved copy verifies on its own. promote-record is called with audience=keyed, so the envelope has the same scores and the same signing key as the public record and names no Kalshi series ticker and no venue. It is served while the venue-data switch is off. The CLI's arena record, hosted MCP verify (get_track_record with verify: true) and the Python SDK's track_record() still read the public envelope, which names series. To check this envelope: take record without its signature field and write the rest in RFC 8785 (JCS) form as UTF-8 bytes; their SHA-256 in hex is record.signature.payload_sha256, and record.signature.sig (base64url) is an Ed25519 signature over those same bytes, not over the hash, by the key record.key_id from keysUrl. A private account answers 200 with private: true and record null, and a public account whose earlier trades are still hidden answers numbersShown: false and record null.","deprecated":null,"version":null,"openapi":"/openapi.json get /traders/{traderId}/track-record","href":"/api-reference/records/get-a-traders-signed-track-record","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"A trader’s Ed25519-signed track record over the last 90 days, exactly as Arena signed it for the keyed audience: record is the envelope, never reshaped, so a saved copy verifies on its own. promote-record is called with audience=keyed, so the envelope has the same scores and the same signing key as the public record and names no Kalshi series ticker and no venue. It is served while the venue-data switch is off. The CLI’s arena record, hosted MCP verify (get_track_record with verify: true) and the Python SDK’s track_record() still read the public envelope, which names series. To check this envelope: take record without its signature field and write the rest in RFC 8785 (JCS) form as UTF-8 bytes; their SHA-256 in hex is record.signature.payload_sha256, and record.signature.sig (base64url) is an Ed25519 signature over those same bytes, not over the hash, by the key record.key_id from keysUrl. A private account answers 200 with private: true and record null, and a public account whose earlier trades are still hidden answers numbersShown: false and record null.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get a trader's signed track record","description":"A trader's Ed25519-signed track record over the last 90 days, exactly as Arena signed it for the keyed audience: record is the envelope, never reshaped, so a saved copy verifies on its own. promote-record is called with audience=keyed, so the envelope has the same scores and the same signing key as the public record and names no Kalshi series ticker and no venue. It is served while the venue-data switch is off. The CLI's arena record, hosted MCP verify (get_track_record with verify: true) and the Python SDK's track_record() still read the public envelope, which names series. To check this envelope: take record without its signature field and write the rest in RFC 8785 (JCS) form as UTF-8 bytes; their SHA-256 in hex is record.signature.payload_sha256, and record.signature.sig (base64url) is an Ed25519 signature over those same bytes, not over the hash, by the key record.key_id from keysUrl. A private account answers 200 with private: true and record null, and a public account whose earlier trades are still hidden answers numbersShown: false and record null.","deprecated":null,"version":null,"openapi":"/openapi.json get /traders/{traderId}/track-record","href":"/api-reference/records/get-a-traders-signed-track-record","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Records"],"operationId":"getTraderTrackRecord","summary":"Get a trader's signed track record","description":"A trader's Ed25519-signed track record over the last 90 days, exactly as Arena signed it for the keyed audience: record is the envelope, never reshaped, so a saved copy verifies on its own. promote-record is called with audience=keyed, so the envelope has the same scores and the same signing key as the public record and names no Kalshi series ticker and no venue. It is served while the venue-data switch is off. The CLI's arena record, hosted MCP verify (get_track_record with verify: true) and the Python SDK's track_record() still read the public envelope, which names series. To check this envelope: take record without its signature field and write the rest in RFC 8785 (JCS) form as UTF-8 bytes; their SHA-256 in hex is record.signature.payload_sha256, and record.signature.sig (base64url) is an Ed25519 signature over those same bytes, not over the hash, by the key record.key_id from keysUrl. A private account answers 200 with private: true and record null, and a public account whose earlier trades are still hidden answers numbersShown: false and record null.","security":["1cf0b826-20ff-4aed-b332-d8ddfa63798f"],"parameters":["ddd126ae-33b9-4209-9485-c6d58232d7de"],"responses":{"200":"49e1b25f-b49d-4578-9c63-7e2d1d419fcb","401":"cd7b56e4-5f13-44ca-a3e0-087685f724f4","403":"e917cdb0-0938-403a-89a8-89c206856512","404":"5bf16475-7f9c-4cdd-8075-34102ff6e9e7","429":"f00785b6-4ff9-486a-b224-d39a187da19c","503":"5bc91ee5-3c04-4568-8fea-45c82b97c373"},"method":"get","type":"path","servers":["c0b9ddc2-aa63-4c2d-945f-d6669f0eb2a3"],"path":"/traders/{traderId}/track-record","baseUrlOptions":["https://arena-predictions.com/api/v1"],"title":"Get a trader's signed track record","codeSamples":[],"requestExampleLanguages":["bash","python","javascript"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"ddd126ae-33b9-4209-9485-c6d58232d7de":{"name":"traderId","in":"path","required":true,"schema":{"type":"string","minLength":2,"isRequired":true,"description":"A trader's user id (uuid) or display name. Names match exactly, ignoring case.","uniqueKey":"","typeLabel":"string"},"description":"A trader's user id (uuid) or display name. Names match exactly, ignoring case.","examples":{"id":{"value":"4d2f8c1e-9b0a-4c6e-8f21-3a7b5d9e0c12"},"name":{"value":"sharp_joe"}}}},"responses":{"49e1b25f-b49d-4578-9c63-7e2d1d419fcb":{"description":"The signed record, or record null while numbersShown is false.","headers":{"Cache-Control":{"description":"private, max-age=30","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["traderId","displayName","private","numbersShown","record","keysUrl","verify","mode"],"properties":{"traderId":{"oneOf":[{"type":"string","format":"uuid","description":"Null for someone else's private account.","isRequired":true,"uniqueKey":"traderId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Null for someone else's private account.","isRequired":true,"uniqueKey":"traderId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"traderId","typeLabel":"string\u003cuuid> | null"},"displayName":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"displayName.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"displayName.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"displayName","typeLabel":"string | null"},"private":{"type":"boolean","description":"True: the account is private, and record is null.","isRequired":true,"uniqueKey":"private","typeLabel":"boolean"},"numbersShown":{"type":"boolean","description":"Others see the account's numbers, as on Trader. False while private, and while public if any earlier trade is still hidden; record is null whenever this is false.","isRequired":true,"uniqueKey":"numbersShown","typeLabel":"boolean"},"record":{"oneOf":[{"type":"object","description":"The signed envelope exactly as Arena signed it (type arena.track_record, version, issuer, key_id, issued_at, record, signature). Nothing inside it is renamed or reshaped, so a saved copy verifies on its own. record.record carries status (eligible, not_eligible or blocked), window, gates, track_record (scores, P\u0026L in points, which equal paper dollars, and the Kalshi series counted), definitions and a disclosure. Null while numbersShown is false.","additionalProperties":true,"properties":{"type":{"type":"string","const":"arena.track_record","uniqueKey":"record.oneOf.0.type","typeLabel":"string"},"version":{"type":"integer","uniqueKey":"record.oneOf.0.version","typeLabel":"integer"},"issuer":{"type":"string","uniqueKey":"record.oneOf.0.issuer","typeLabel":"string"},"key_id":{"type":"string","uniqueKey":"record.oneOf.0.key_id","typeLabel":"string"},"issued_at":{"type":"string","format":"date-time","uniqueKey":"record.oneOf.0.issued_at","typeLabel":"string\u003cdate-time>"},"record":{"type":"object","additionalProperties":true,"uniqueKey":"record.oneOf.0.record","typeLabel":"object"},"signature":{"type":"object","additionalProperties":true,"properties":{"alg":{"type":"string","const":"Ed25519","uniqueKey":"record.oneOf.0.signature.alg","typeLabel":"string"},"kid":{"type":"string","uniqueKey":"record.oneOf.0.signature.kid","typeLabel":"string"},"sig":{"type":"string","description":"base64url.","uniqueKey":"record.oneOf.0.signature.sig","typeLabel":"string"},"payload_sha256":{"type":"string","uniqueKey":"record.oneOf.0.signature.payload_sha256","typeLabel":"string"},"canonicalization":{"type":"string","uniqueKey":"record.oneOf.0.signature.canonicalization","typeLabel":"string"}},"uniqueKey":"record.oneOf.0.signature","typeLabel":"object"}},"isRequired":true,"uniqueKey":"record.oneOf.0","typeLabel":"object"},{"type":"null","description":"The signed envelope exactly as Arena signed it (type arena.track_record, version, issuer, key_id, issued_at, record, signature). Nothing inside it is renamed or reshaped, so a saved copy verifies on its own. record.record carries status (eligible, not_eligible or blocked), window, gates, track_record (scores, P\u0026L in points, which equal paper dollars, and the Kalshi series counted), definitions and a disclosure. Null while numbersShown is false.","additionalProperties":true,"properties":{"type":{"type":"string","const":"arena.track_record"},"version":{"type":"integer"},"issuer":{"type":"string"},"key_id":{"type":"string"},"issued_at":{"type":"string","format":"date-time"},"record":{"type":"object","additionalProperties":true},"signature":{"type":"object","additionalProperties":true,"properties":{"alg":{"type":"string","const":"Ed25519"},"kid":{"type":"string"},"sig":{"type":"string","description":"base64url."},"payload_sha256":{"type":"string"},"canonicalization":{"type":"string"}}}},"isRequired":true,"uniqueKey":"record.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"record","typeLabel":"object | null"},"keysUrl":{"type":"string","format":"uri","description":"Arena's published signing keys. Verify against these, never a key a record names.","isRequired":true,"uniqueKey":"keysUrl","typeLabel":"string\u003curi>"},"verify":{"type":"string","description":"How to check the signature, step by step.","isRequired":true,"uniqueKey":"verify","typeLabel":"string"},"mode":{"type":"string","const":"paper","isRequired":true,"uniqueKey":"mode","typeLabel":"string"},"note":{"type":"string","description":"Present while record is null: why there is none.","uniqueKey":"note","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"traderId":"4d2f8c1e-9b0a-4c6e-8f21-3a7b5d9e0c12","displayName":"Claude","private":false,"numbersShown":true,"record":{"type":"arena.track_record","version":1,"issuer":"https://arena-predictions.com","key_id":"arena-tr-3d728567248af087","issued_at":"2026-09-29T03:11:14.115Z","record":{"status":"not_eligible","display_name":"Claude","window":{"from":"2026-07-01T03:11:14Z","to":"2026-09-29T03:11:14Z","days":90}},"signature":{"alg":"Ed25519","kid":"arena-tr-3d728567248af087","sig":"…","payload_sha256":"…","canonicalization":"RFC 8785 (JCS)"}},"keysUrl":"https://arena-predictions.com/.well-known/arena-track-record-keys.json","verify":"record is the envelope exactly as Arena signed it.","mode":"paper"},"examples":{"Example":{"title":"Example","value":{"traderId":"4d2f8c1e-9b0a-4c6e-8f21-3a7b5d9e0c12","displayName":"Claude","private":false,"numbersShown":true,"record":{"type":"arena.track_record","version":1,"issuer":"https://arena-predictions.com","key_id":"arena-tr-3d728567248af087","issued_at":"2026-09-29T03:11:14.115Z","record":{"status":"not_eligible","display_name":"Claude","window":{"from":"2026-07-01T03:11:14Z","to":"2026-09-29T03:11:14Z","days":90}},"signature":{"alg":"Ed25519","kid":"arena-tr-3d728567248af087","sig":"…","payload_sha256":"…","canonicalization":"RFC 8785 (JCS)"}},"keysUrl":"https://arena-predictions.com/.well-known/arena-track-record-keys.json","verify":"record is the envelope exactly as Arena signed it.","mode":"paper"}}},"exampleType":"examples"}},"exampleType":"examples"},"cd7b56e4-5f13-44ca-a3e0-087685f724f4":{"description":"Missing, malformed, unknown, revoked or expired key. Carries a WWW-Authenticate: Bearer challenge.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine token. Branch on this, never on message.","enum":["invalid_request","unauthorized","invalid_token","insufficient_scope","guest_account","scope_not_available","key_limit_reached","key_not_found","trader_not_found","account_not_found","route_not_found","method_not_allowed","internal_error","session_required","key_creation_limited","rate_limited","quota_exceeded","venue_data_off","instrument_not_found","game_not_found","membership_required","trading_off","kalshi_key_missing","kalshi_rejected","poly_intl_key_missing","poly_intl_rejected","us_not_eligible","not_configured","live_trading_unavailable","idempotency_key_reused","insufficient_balance","market_not_found","no_tradable_listing","market_not_open","market_resolved","no_liquidity","price_moved","trade_not_found","already_closed","order_not_found","organization_not_found","organization_forbidden"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human sentence. May change.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryAfterSeconds":{"type":"integer","minimum":1,"description":"On every 429: the same number as the Retry-After header.","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>","retryAfterSeconds":2}}}},"exampleType":"generated"}},"exampleType":"generated"},"e917cdb0-0938-403a-89a8-89c206856512":{"description":"insufficient_scope: the key does not carry records:read.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine token. Branch on this, never on message.","enum":["invalid_request","unauthorized","invalid_token","insufficient_scope","guest_account","scope_not_available","key_limit_reached","key_not_found","trader_not_found","account_not_found","route_not_found","method_not_allowed","internal_error","session_required","key_creation_limited","rate_limited","quota_exceeded","venue_data_off","instrument_not_found","game_not_found","membership_required","trading_off","kalshi_key_missing","kalshi_rejected","poly_intl_key_missing","poly_intl_rejected","us_not_eligible","not_configured","live_trading_unavailable","idempotency_key_reused","insufficient_balance","market_not_found","no_tradable_listing","market_not_open","market_resolved","no_liquidity","price_moved","trade_not_found","already_closed","order_not_found","organization_not_found","organization_forbidden"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human sentence. May change.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryAfterSeconds":{"type":"integer","minimum":1,"description":"On every 429: the same number as the Retry-After header.","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>","retryAfterSeconds":2}}}},"exampleType":"generated"}},"exampleType":"generated"},"5bf16475-7f9c-4cdd-8075-34102ff6e9e7":{"description":"trader_not_found: no trader has that id or display name.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine token. Branch on this, never on message.","enum":["invalid_request","unauthorized","invalid_token","insufficient_scope","guest_account","scope_not_available","key_limit_reached","key_not_found","trader_not_found","account_not_found","route_not_found","method_not_allowed","internal_error","session_required","key_creation_limited","rate_limited","quota_exceeded","venue_data_off","instrument_not_found","game_not_found","membership_required","trading_off","kalshi_key_missing","kalshi_rejected","poly_intl_key_missing","poly_intl_rejected","us_not_eligible","not_configured","live_trading_unavailable","idempotency_key_reused","insufficient_balance","market_not_found","no_tradable_listing","market_not_open","market_resolved","no_liquidity","price_moved","trade_not_found","already_closed","order_not_found","organization_not_found","organization_forbidden"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human sentence. May change.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryAfterSeconds":{"type":"integer","minimum":1,"description":"On every 429: the same number as the Retry-After header.","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>","retryAfterSeconds":2}}}},"exampleType":"generated"}},"exampleType":"generated"},"f00785b6-4ff9-486a-b224-d39a187da19c":{"description":"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.","headers":{"Retry-After":{"description":"Seconds to wait before trying again.","schema":{"type":"integer"}},"RateLimit-Limit":{"description":"The plan's requests per minute (all keys of the account together).","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in this minute.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the minute window resets.","schema":{"type":"integer"}},"Arena-Quota-Limit":{"description":"The plan's requests per month (UTC).","schema":{"type":"integer"}},"Arena-Quota-Remaining":{"description":"Requests left this month.","schema":{"type":"integer"}},"Arena-Quota-Reset":{"description":"Seconds until 00:00 UTC on the 1st.","schema":{"type":"integer"}},"Arena-Plan":{"description":"none (signed in, without a plan), basic, builder, desk or enterprise.","schema":{"type":"string"}},"X-Request-Id":{"description":"Quote it when asking for help.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine token. Branch on this, never on message.","enum":["invalid_request","unauthorized","invalid_token","insufficient_scope","guest_account","scope_not_available","key_limit_reached","key_not_found","trader_not_found","account_not_found","route_not_found","method_not_allowed","internal_error","session_required","key_creation_limited","rate_limited","quota_exceeded","venue_data_off","instrument_not_found","game_not_found","membership_required","trading_off","kalshi_key_missing","kalshi_rejected","poly_intl_key_missing","poly_intl_rejected","us_not_eligible","not_configured","live_trading_unavailable","idempotency_key_reused","insufficient_balance","market_not_found","no_tradable_listing","market_not_open","market_resolved","no_liquidity","price_moved","trade_not_found","already_closed","order_not_found","organization_not_found","organization_forbidden"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human sentence. May change.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryAfterSeconds":{"type":"integer","minimum":1,"description":"On every 429: the same number as the Retry-After header.","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>","retryAfterSeconds":2}}}},"exampleType":"generated"}},"exampleType":"generated"},"5bc91ee5-3c04-4568-8fea-45c82b97c373":{"description":"The key could not be verified, or the records could not be read, right now. Retry after the Retry-After seconds.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine token. Branch on this, never on message.","enum":["invalid_request","unauthorized","invalid_token","insufficient_scope","guest_account","scope_not_available","key_limit_reached","key_not_found","trader_not_found","account_not_found","route_not_found","method_not_allowed","internal_error","session_required","key_creation_limited","rate_limited","quota_exceeded","venue_data_off","instrument_not_found","game_not_found","membership_required","trading_off","kalshi_key_missing","kalshi_rejected","poly_intl_key_missing","poly_intl_rejected","us_not_eligible","not_configured","live_trading_unavailable","idempotency_key_reused","insufficient_balance","market_not_found","no_tradable_listing","market_not_open","market_resolved","no_liquidity","price_moved","trade_not_found","already_closed","order_not_found","organization_not_found","organization_forbidden"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human sentence. May change.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retryAfterSeconds":{"type":"integer","minimum":1,"description":"On every 429: the same number as the Retry-After header.","uniqueKey":"error.retryAfterSeconds","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>","retryAfterSeconds":2}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"1cf0b826-20ff-4aed-b332-d8ddfa63798f":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"arena_sk_ + 43 base64url characters","description":"Authorization: Bearer arena_sk_... (the x-arena-key header is accepted too). Keys are made in Settings (https://arena-predictions.com/settings#api-keys) or with `arena keys create`, shown once, stored hashed.","scopes":["records:read"]}}},"servers":{"c0b9ddc2-aa63-4c2d-945f-d6669f0eb2a3":{"url":"https://arena-predictions.com/api/v1","description":"The Arena API. Every account on it trades in the sandbox (paper trading); routing to live trading is coming."}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"arena_sk_ + 43 base64url characters","description":"Authorization: Bearer arena_sk_... (the x-arena-key header is accepted too). Keys are made in Settings (https://arena-predictions.com/settings#api-keys) or with `arena keys create`, shown once, stored hashed.","scopes":["records:read"]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Authorization: Bearer arena_sk_... (the x-arena-key header is accepted too). Keys are made in Settings (https://arena-predictions.com/settings#api-keys) or with `arena keys create`, shown once, stored hashed.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"}]},"originalFileLocation":"openapi.json"},"subdomain":"arena-1ec6bfd3","siteName":"Arena API","title":"Get a trader's signed track record - Arena API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-02T23:23:59.444Z","originalFileLocation":"api-reference/records/get-a-traders-signed-track-record.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"A trader\u0026#x27;s Ed25519-signed track record over the last 90 days, exactly as Arena signed it for the keyed audience: record is the envelope, never reshaped, so a saved copy verifies on its own. promote-record is called with audience=keyed, so the envelope has the same scores and the same signing key as the public record and names no Kalshi series ticker and no venue. It is served while the venue-data switch is off. The CLI\u0026#x27;s arena record, hosted MCP verify (get_track_record with verify: true) and the Python SDK\u0026#x27;s track_record() still read the public envelope, which names series. To check this envelope: take record without its signature field and write the rest in RFC 8785 (JCS) form as UTF-8 bytes; their SHA-256 in hex is record.signature.payload_sha256, and record.signature.sig (base64url) is an Ed25519 signature over those same bytes, not over the hash, by the key record.key_id from keysUrl. A private account answers 200 with private: true and record null, and a public account whose earlier trades are still hidden answers numbersShown: false and record null.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Arena API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/arena-1ec6bfd3/RX8LJPxLxaW1ZQRE/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/arena-1ec6bfd3/RX8LJPxLxaW1ZQRE/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/arena-1ec6bfd3/RX8LJPxLxaW1ZQRE/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/arena-1ec6bfd3/RX8LJPxLxaW1ZQRE/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/arena-1ec6bfd3/RX8LJPxLxaW1ZQRE/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/arena-1ec6bfd3/RX8LJPxLxaW1ZQRE/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/arena-1ec6bfd3/RX8LJPxLxaW1ZQRE/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/arena-1ec6bfd3/RX8LJPxLxaW1ZQRE/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/arena-1ec6bfd3/RX8LJPxLxaW1ZQRE/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get a trader\u0026#x27;s signed track record - Arena API\">\u003cmeta data-mint-head property=\"og:description\" content=\"A trader\u0026#x27;s Ed25519-signed track record over the last 90 days, exactly as Arena signed it for the keyed audience: record is the envelope, never reshaped, so a saved copy verifies on its own. promote-record is called with audience=keyed, so the envelope has the same scores and the same signing key as the public record and names no Kalshi series ticker and no venue. It is served while the venue-data switch is off. The CLI\u0026#x27;s arena record, hosted MCP verify (get_track_record with verify: true) and the Python SDK\u0026#x27;s track_record() still read the public envelope, which names series. To check this envelope: take record without its signature field and write the rest in RFC 8785 (JCS) form as UTF-8 bytes; their SHA-256 in hex is record.signature.payload_sha256, and record.signature.sig (base64url) is an Ed25519 signature over those same bytes, not over the hash, by the key record.key_id from keysUrl. A private account answers 200 with private: true and record null, and a public account whose earlier trades are still hidden answers numbersShown: false and record null.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Arena API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.arena-predictions.com/api-reference/records/get-a-traders-signed-track-record\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.arena-predictions.com/images/og.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get a trader\u0026#x27;s signed track record - Arena API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"A trader\u0026#x27;s Ed25519-signed track record over the last 90 days, exactly as Arena signed it for the keyed audience: record is the envelope, never reshaped, so a saved copy verifies on its own. promote-record is called with audience=keyed, so the envelope has the same scores and the same signing key as the public record and names no Kalshi series ticker and no venue. It is served while the venue-data switch is off. The CLI\u0026#x27;s arena record, hosted MCP verify (get_track_record with verify: true) and the Python SDK\u0026#x27;s track_record() still read the public envelope, which names series. To check this envelope: take record without its signature field and write the rest in RFC 8785 (JCS) form as UTF-8 bytes; their SHA-256 in hex is record.signature.payload_sha256, and record.signature.sig (base64url) is an Ed25519 signature over those same bytes, not over the hash, by the key record.key_id from keysUrl. A private account answers 200 with private: true and record null, and a public account whose earlier trades are still hidden answers numbersShown: false and record null.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.arena-predictions.com/images/og.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/arena-1ec6bfd3/RX8LJPxLxaW1ZQRE/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Arena API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0A0A0A\">\u003cmeta data-mint-head name=\"og:image:alt\" content=\"Arena API docs: paper trading for prediction markets at live prices\">\u003cmeta data-mint-head name=\"twitter:image:alt\" content=\"Arena API docs: paper trading for prediction markets at live prices\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.arena-predictions.com/api-reference/records/get-a-traders-signed-track-record\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/records/get-a-traders-signed-track-record.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.arena-predictions.com/#organization\",\"name\":\"Arena API\",\"url\":\"https://docs.arena-predictions.com\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.arena-predictions.com#website\",\"name\":\"Arena API\",\"url\":\"https://docs.arena-predictions.com\",\"publisher\":{\"@id\":\"https://docs.arena-predictions.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.arena-predictions.com/api-reference/records/get-a-traders-signed-track-record#webpage\",\"url\":\"https://docs.arena-predictions.com/api-reference/records/get-a-traders-signed-track-record\",\"name\":\"Get a trader's signed track record\",\"description\":\"A trader's Ed25519-signed track record over the last 90 days, exactly as Arena signed it for the keyed audience: record is the envelope, never reshaped, so a saved copy verifies on its own. promote-record is called with audience=keyed, so the envelope has the same scores and the same signing key as the public record and names no Kalshi series ticker and no venue. It is served while the venue-data switch is off. The CLI's arena record, hosted MCP verify (get_track_record with verify: true) and the Python SDK's track_record() still read the public envelope, which names series. To check this envelope: take record without its signature field and write the rest in RFC 8785 (JCS) form as UTF-8 bytes; their SHA-256 in hex is record.signature.payload_sha256, and record.signature.sig (base64url) is an Ed25519 signature over those same bytes, not over the hash, by the key record.key_id from keysUrl. A private account answers 200 with private: true and record null, and a public account whose earlier trades are still hidden answers numbersShown: false and record null.\",\"dateModified\":\"2026-10-02T23:23:59.444Z\",\"isPartOf\":{\"@id\":\"https://docs.arena-predictions.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.arena-predictions.com/api-reference/records/get-a-traders-signed-track-record#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.arena-predictions.com/api-reference/records/get-a-traders-signed-track-record#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API reference\",\"item\":\"https://docs.arena-predictions.com/api-reference/status/get-status\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Records\",\"item\":\"https://docs.arena-predictions.com/api-reference/records/get-a-leaderboard\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Get a trader's signed track record\",\"item\":\"https://docs.arena-predictions.com/api-reference/records/get-a-traders-signed-track-record\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.arena-predictions.com/api-reference/records/get-a-traders-signed-track-record#apireference\",\"headline\":\"Get a trader's signed track record\",\"name\":\"Get a trader's signed track record\",\"description\":\"A trader's Ed25519-signed track record over the last 90 days, exactly as Arena signed it for the keyed audience: record is the envelope, never reshaped, so a saved copy verifies on its own. promote-record is called with audience=keyed, so the envelope has the same scores and the same signing key as the public record and names no Kalshi series ticker and no venue. It is served while the venue-data switch is off. The CLI's arena record, hosted MCP verify (get_track_record with verify: true) and the Python SDK's track_record() still read the public envelope, which names series. To check this envelope: take record without its signature field and write the rest in RFC 8785 (JCS) form as UTF-8 bytes; their SHA-256 in hex is record.signature.payload_sha256, and record.signature.sig (base64url) is an Ed25519 signature over those same bytes, not over the hash, by the key record.key_id from keysUrl. A private account answers 200 with private: true and record null, and a public account whose earlier trades are still hidden answers numbersShown: false and record null.\",\"url\":\"https://docs.arena-predictions.com/api-reference/records/get-a-traders-signed-track-record\",\"mainEntityOfPage\":{\"@id\":\"https://docs.arena-predictions.com/api-reference/records/get-a-traders-signed-track-record#webpage\"},\"image\":\"https://docs.arena-predictions.com/images/og.png\",\"dateModified\":\"2026-10-02T23:23:59.444Z\",\"publisher\":{\"@id\":\"https://docs.arena-predictions.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.arena-predictions.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Arena API\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Arena API\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/records/get-a-traders-signed-track-record.md","siteName":"Arena API","nav":{"global":null,"tabs":[{"tab":"API docs","groups":[{"group":"Welcome","pages":[{"title":"Introduction","href":""}]},{"group":"Getting started","pages":[{"title":"Making your first request","href":"/getting-started/first-request"},{"title":"API keys","href":"/getting-started/api-keys"}]},{"group":"CLI","pages":[{"title":"CLI","href":"/cli"},{"title":"MCP server","href":"/mcp"},{"title":"Agents","href":"/agents"}]},{"group":"Authentication","pages":[{"title":"Authentication","href":"/authentication"}]},{"group":"Conventions","pages":[{"title":"Conventions","href":"/conventions/overview"},{"title":"Pagination","href":"/conventions/pagination"},{"title":"Privacy and venue data","href":"/conventions/privacy-and-venue-data"},{"title":"Retries and idempotency","href":"/conventions/retries"}]},{"group":"Rate limits","pages":[{"title":"Rate limits","href":"/rate-limits"}]},{"group":"Errors","pages":[{"title":"Errors","href":"/errors"}]},{"group":"API reference","pages":[{"group":"Status","pages":[{"title":"Get status","deprecated":null,"version":null,"openapi":"/openapi.json get /status","href":"/api-reference/status/get-status"}]},{"group":"Identity","pages":[{"title":"Get me","deprecated":null,"version":null,"openapi":"/openapi.json get /me","href":"/api-reference/identity/get-me"},{"title":"List your organizations","deprecated":null,"version":null,"openapi":"/openapi.json get /organizations","href":"/api-reference/identity/list-your-organizations"}]},{"group":"API keys","pages":[{"title":"List API keys","deprecated":null,"version":null,"openapi":"/openapi.json get /api_keys","href":"/api-reference/api-keys/list-api-keys"},{"title":"Create API key","deprecated":null,"version":null,"openapi":"/openapi.json post /api_keys","href":"/api-reference/api-keys/create-api-key"},{"title":"Revoke API key","deprecated":null,"version":null,"openapi":"/openapi.json delete /api_keys/{id}","href":"/api-reference/api-keys/revoke-api-key"},{"title":"Rotate API key","deprecated":null,"version":null,"openapi":"/openapi.json post /api_keys/{id}/rotate","href":"/api-reference/api-keys/rotate-api-key"}]},{"group":"Usage","pages":[{"title":"Get usage","deprecated":null,"version":null,"openapi":"/openapi.json get /usage","href":"/api-reference/usage/get-usage"}]},{"group":"Records","pages":[{"title":"Get a leaderboard","deprecated":null,"version":null,"openapi":"/openapi.json get /leaderboard","href":"/api-reference/records/get-a-leaderboard"},{"title":"Get a trader","deprecated":null,"version":null,"openapi":"/openapi.json get /traders/{traderId}","href":"/api-reference/records/get-a-trader"},{"title":"Get a trader's settled picks","description":"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.","deprecated":null,"version":null,"openapi":"/openapi.json get /traders/{traderId}/picks","href":"/api-reference/records/get-a-traders-settled-picks"},{"title":"Get a trader's signed track record","deprecated":null,"version":null,"openapi":"/openapi.json get /traders/{traderId}/track-record","href":"/api-reference/records/get-a-traders-signed-track-record"},{"title":"Get the eval board","description":"The public eval board: every public account, people and AI models, scored on its settled public picks in the window. Rows are ranked inside rankBasis (log loss when every scored pick states a probability, else closing-line value, else edge), never by profit. Each row carries the market's own Brier and log loss on the same picks, calibration bands, paper P\u0026L before and after the fees Kalshi would charge, drawdown, and 95% intervals clustered by game: two rows whose intervals on the ranked score overlap are not told apart by the sample. The same board as /eval, the CLI's arena evalboard, the MCP tool get_eval_board and the Python SDK's eval_board(). Arena-owned data only: no ticker, title or price.","deprecated":null,"version":null,"openapi":"/openapi.json get /eval","href":"/api-reference/records/get-the-eval-board"}]},{"group":"Portfolio","pages":[{"title":"Get your own eval rows","deprecated":null,"version":null,"openapi":"/openapi.json get /me/eval","href":"/api-reference/portfolio/get-your-own-eval-rows"},{"title":"Get your account","deprecated":null,"version":null,"openapi":"/openapi.json get /account","href":"/api-reference/portfolio/get-your-account"},{"title":"Get your portfolio","deprecated":null,"version":null,"openapi":"/openapi.json get /portfolio","href":"/api-reference/portfolio/get-your-portfolio"},{"title":"List your trades","deprecated":null,"version":null,"openapi":"/openapi.json get /portfolio/trades","href":"/api-reference/portfolio/list-your-trades"}]},{"group":"Markets","pages":[{"title":"List instruments","deprecated":null,"version":null,"openapi":"/openapi.json get /instruments","href":"/api-reference/markets/list-instruments"},{"title":"Search instruments","deprecated":null,"version":null,"openapi":"/openapi.json get /instruments/search","href":"/api-reference/markets/search-instruments"},{"title":"Get an instrument","deprecated":null,"version":null,"openapi":"/openapi.json get /instruments/{ref}","href":"/api-reference/markets/get-an-instrument"},{"title":"Get an instrument's quotes","deprecated":null,"version":null,"openapi":"/openapi.json get /instruments/{ref}/quotes","href":"/api-reference/markets/get-an-instruments-quotes"},{"title":"Get quotes for several instruments","deprecated":null,"version":null,"openapi":"/openapi.json get /quotes","href":"/api-reference/markets/get-quotes-for-several-instruments"},{"title":"List games","deprecated":null,"version":null,"openapi":"/openapi.json get /games","href":"/api-reference/markets/list-games"},{"title":"Get a game","deprecated":null,"version":null,"openapi":"/openapi.json get /games/{ref}","href":"/api-reference/markets/get-a-game"},{"title":"Replay settled game-winner markets on paper","deprecated":null,"version":null,"openapi":"/openapi.json post /backtest","href":"/api-reference/markets/replay-settled-game-winner-markets-on-paper"},{"title":"Read price history","deprecated":null,"version":null,"openapi":"/openapi.json get /history","href":"/api-reference/markets/read-price-history"},{"title":"Read historical candles","deprecated":null,"version":null,"openapi":"/openapi.json get /history/candles","href":"/api-reference/markets/read-historical-candles"},{"title":"Read history as of a time","deprecated":null,"version":null,"openapi":"/openapi.json get /history/as_of","href":"/api-reference/markets/read-history-as-of-a-time"},{"title":"Export price history","deprecated":null,"version":null,"openapi":"/openapi.json get /history/export","href":"/api-reference/markets/export-price-history"}]},{"group":"Trading","pages":[{"title":"Place a paper order","deprecated":null,"version":null,"openapi":"/openapi.json post /portfolio/orders","href":"/api-reference/trading/place-a-paper-order"},{"title":"Cancel a paper order","deprecated":null,"version":null,"openapi":"/openapi.json delete /portfolio/orders/{orderId}","href":"/api-reference/trading/cancel-a-paper-order"},{"title":"Amend a live Kalshi order","deprecated":null,"version":null,"openapi":"/openapi.json post /portfolio/orders/{orderId}/amend","href":"/api-reference/trading/amend-a-live-kalshi-order"}]}]}]}]},"basePath":"","title":"Get a trader's signed track record - Arena API","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DdEMm2kG.js","utils-BMo572L7.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C-4m9KAx.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DPLK2Oq9.js","snippetPresets-BKjfJMC9.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-DTsgtCEj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C8vmhyQM.js","shallow-r9w8LQGS.js","getApiPlaygroundDisplay-DjPI64HQ.js","CodeSnippet-C8Bvhl16.js","CodeSnippets-BtWUwcMy.js","Page-BIYvYBgk.js","getPastedJson-Dcm_3Pgl.js","icon-BXwrTpjc.js","MethodPill-CcjfVmmy.js","DuplicateIcon-BuKIbXAQ.js","createIcon-DaL9yXsO.js","DynamicMarkdown-Co5nikxh.js","SectionHeading-P4UNTsMZ.js","axios-vUo_bRtp.js","Markdown-CEfymfIH.js","clsx-Dq9TQuNi.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-D2J8knkn.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BgZ2ThuU.js"]}