Use this public ledger to check that a settled pick matches its recorded commitment. The hash covers the pick identity, market, backed side, price, and kickoff using sha256(canonical_json(payload) || nonce). Read commitment_version to choose the correct payload format.The payload and nonce become available after settlement. No API key or subscription is required, and every caller sees the same fields for an entry’s state.The ledger retains commitments for withdrawn picks. Removing a recommendation from current picks or the archive does not change its identity, proof bytes, or provider-owned settlement. A settled entry’s withdrawal_reason says whether the site withdrew it.For results and the running hit rate, use Pick of the Day archive.
The ledger has one entry per published pick, sorted by date and publication order, oldest first. Read state before processing an entry because each state has different fields.
state
What the entry carries
sealed
A pick that has not settled yet: commitment_hash, commitment_algo, sealed_at, and permalink. kickoff is omitted while the entry is sealed. There is no nonce, no payload, no side, and no price, because the hash alone reveals none of them.
opened
A settled pick: every sealed field plus kickoff, commitment_nonce, payload, outcome, withdrawal_reason, resolved_at, matchup, and category. This is the only state you can verify.
uncommitted
A pick that was published before commitments existed or reached kickoff unsealed has pre_commitment: true, no hash, and no nonce. Pending entries omit matchup, category, and withdrawal_reason, and their payload is null. After settlement, payload can disclose the market, side, and price, without making a proof claim.
Sealed entries omit the public kickoff field to avoid identifying an unresolved game. Opened entries retain kickoff and the original proof payload; historical commitment bytes do not change. Pending uncommitted entries also omit matchup and category.
Check commitment_version before verifying a committed entry. Version 1 uses the original payload with pick_rank. Version 2 replaces that field with the decimal-string pick_id and adds the integer version: 2.The version 2 payload has exactly 9 keys: backed_price, condition_id, kickoff, pick_date, pick_id, pick_outcome_index, pick_outcome_label, platform, and version. Historical version 1 payloads retain their exact bytes and hashes, and an uncommitted entry claims no commitment version. Refuse an unknown or missing committed-entry version instead of guessing its payload shape.To fetch one published entry by its stable identity, use Get a Pick of the Day ledger entry.
The pick’s stable positive decimal-string identity, present in every state.
publication_order
The publication order within the date. It does not rank pick quality.
is_free_selection
The explicit free-selection designation.
supersedes_pick_id
Deprecated. Always null.
commitment_version
The payload contract for a committed entry: 1 or 2. It is absent on uncommitted entries.
commitment_hash
Lowercase hex, with no 0x prefix. It is safe to publish the moment a pick releases, because without the nonce it cannot be inverted.
commitment_algo
The exact construction the hash was taken with, stated in the response so a verifier never has to guess the serialization.
sealed_at
When the hash was frozen. It is always strictly before kickoff: a seal written after the game started would be a backdated proof, so it is never written.
resolved_at
When outcome was last written to a settled value, or null when that instant is unknown. It can move under an unchanged commitment_hash when a corrected market re-maps a pick that had already settled.
withdrawal_reason
On a settled entry, provider_game_cancelled when the site withdrew the pick because Polymarket marked its game Cancelled, published_after_kickoff when the pick was published at or after its game started (a suspended match that resumed later included), or null when the pick counts. published_after_kickoff can appear on an entry that already settled, so read the field on every poll. A withdrawn pick keeps its commitment and real outcome here, but the site’s record leaves it out of every count and money figure. It is not part of the hashed payload.
selected_by
On every entry, sealed included: auto when the selection algorithm chose the pick, manual for one of the 102 picks an operator chose from June 23 to October 15, 2026. No pick has been chosen by hand since. It is outside the hashed payload, so it changes no commitment_hash.
Counts over the same set of entries, computed in the pass that builds the list. uncommitted_count can only stop growing, because no pick is ever sealed after the fact.
Take the bytes of the payload object exactly as you received them. Do not reserialize it.
Append commitment_nonce, decoded from hex.
Take the SHA-256 of that concatenation. It equals commitment_hash.
The payload is canonical JSON, served byte for byte as it was hashed. Its keys are sorted by UTF-8 byte value, it carries no insignificant whitespace, its decimals are strings at full stored precision, and its timestamps are whole-second UTC with a literal Z.
A 500 with error.codeinternal_error means one entry failed a consistency check, so the whole ledger is refused rather than served incomplete. A 503 with Retry-After means the database was unavailable; retry after that many seconds.
The backed side of a live pick. A pick payload has little entropy, so publishing the nonce before the game would hand out the side.
A commitment written after kickoff. A pick that reached kickoff unsealed stays uncommitted for good.
The outcome inside the hash. The commitment deliberately covers the pick, not the result, which is why a corrected market can move resolved_at while commitment_hash stays the same.
Anything formatted for display. An entry changes only when the pick does, so a rewrite of the archive’s wording can never look like a broken proof.
Save the response’s ETag and send it in If-None-Match on your next request. If the ledger has not changed, the server returns 304 Not Modified with no body.
Opt into strict query-name validation. The default is compatible: unknown names are ignored and reported in X-Query-Ignored. With strict, an unknown name returns 400 bad_request with error.reason unknown_query_parameter before the handler runs, including when its percent escape is incomplete.
The commitment ledger: every published pick, ascending, in the state its commitment is actually in. The counts are derived from entries in the same pass that builds it.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"0xinsider API","colors":{"primary":"#000000","light":"#000000","dark":"#ffffff"},"logo":{"light":"https://mintcdn.com/0xinsider/D5OLZi_kq06wJPfv/logo/light.svg?fit=max\u0026auto=format\u0026n=D5OLZi_kq06wJPfv\u0026q=85\u0026s=5a737b3d5f5bace7059eb57500f3c8ef","dark":"https://mintcdn.com/0xinsider/D5OLZi_kq06wJPfv/logo/dark.svg?fit=max\u0026auto=format\u0026n=D5OLZi_kq06wJPfv\u0026q=85\u0026s=2039a645e8826fe146e6cd8e15498ca5"},"favicon":"https://mintcdn.com/0xinsider/D5OLZi_kq06wJPfv/favicon.svg?fit=max\u0026auto=format\u0026n=D5OLZi_kq06wJPfv\u0026q=85\u0026s=06727454da2da854b5cdd4a0b06075fb","api":{"openapi":"api-reference/openapi.json"},"navbar":{"links":[{"href":"mailto:support@0xinsider.com","label":"Support"}],"primary":{"type":"button","label":"Get API key","href":"https://0xinsider.com/developers"}},"footer":{"socials":{"x":"https://x.com/0xinsiderdotcom","github":"https://github.com/0xinsider","linkedin":"https://linkedin.com/company/0xinsider-com"}},"seo":{"metatags":{"msvalidate.01":"46E18D97E322917120999977418630DE"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"markdown":{"schema":false,"instructions":["The Markdown of an API reference page leaves out the OpenAPI schema.","Every object an endpoint returns or a webhook carries, with each field's type, presence and meaning, is on https://docs.0xinsider.com/api-reference/objects.md.","The full OpenAPI 3.1 spec names each operation's and each webhook's exact parameters, request body and response schema: https://docs.0xinsider.com/api-reference/openapi.json."]},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Terminal","icon":"chart-line","href":"https://0xinsider.com"},{"anchor":"Product changelog","icon":"list","href":"https://0xinsider.com/changelog"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"0xinsider","hasAudioNarration":false,"actualSubdomain":"0xinsider","customDomains":["docs.0xinsider.com"],"gitSource":{"type":"github","owner":"0xinsider","repo":"docs.0xinsider.com","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeb3b6c1f0e0ab891cd4ff7","collectionId":"78315c6b-fd38-46da-9d61-0bd96a960a61","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeb3b6c1f0e0ab891cd4ff7"},"feedback":{"thumbs":true,"edits":false,"issues":false},"entitlements":{},"buildId":"6aeb3b6c1f0e0ab891cd4ff7","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"API reference","count":126},{"language":"default","tag":"Traders","count":26},{"language":"default","tag":"Documentation","count":24},{"language":"default","tag":"Webhook events","count":16},{"language":"default","tag":"Changelog","count":16},{"language":"default","tag":"API updates","count":16},{"language":"default","tag":"Webhooks","count":15},{"language":"default","tag":"Markets","count":15},{"language":"default","tag":"Older entries","count":15},{"language":"default","tag":"Whale trades","count":10}]},"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":"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":"llms-txt-v2","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":"vite-origin","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":"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":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":"[data-active],[data-active] a,[role=\"tab\"],[class*=\"playground\"] button,[class*=\"try-it\"],.bg-primary-dark,a[class*=\"anchor\"],a[class*=\"group\"],li a,nav a{transition:color 150ms ease, background-color 150ms ease, border-color 150ms ease, opacity 150ms ease, transform 150ms ease}[class*=\"badge\"],[data-testid*=\"badge\"]{--tw-bg-opacity: 1 !important}:root{--primary: 0 0 0;--primary-light: 0 0 0;--primary-dark: 0 0 0;--primary-foreground: 255 255 255}.dark{--primary-light: 255 255 255;--primary-dark: 255 255 255}.dark .bg-primary-dark~* .text-white,.dark .bg-primary-dark~* svg,.dark .bg-primary-dark~svg{color:#000000!important}.dark [data-active=\"true\"],.dark [data-active=\"true\"] a{color:#ffffff!important}[data-active=\"true\"],[data-active=\"true\"] a{color:#000000!important}.dark [class*=\"GET\"],.dark [class*=\"get\"]{background-color:rgba(255, 255, 255, 0.15)!important;color:#ffffff!important}[class*=\"GET\"],[class*=\"get\"]{background-color:rgba(0, 0, 0, 0.08)!important;color:#000000!important}.dark [class*=\"POST\"],.dark [class*=\"post\"]{background-color:rgba(255, 255, 255, 0.15)!important;color:#ffffff!important}[class*=\"POST\"],[class*=\"post\"]{background-color:rgba(0, 0, 0, 0.08)!important;color:#000000!important}.dark [class*=\"PUT\"],.dark [class*=\"put\"]{background-color:rgba(255, 255, 255, 0.15)!important;color:#ffffff!important}[class*=\"PUT\"],[class*=\"put\"]{background-color:rgba(0, 0, 0, 0.08)!important;color:#000000!important}.dark [class*=\"DELETE\"],.dark [class*=\"delete\"]{background-color:rgba(255, 255, 255, 0.15)!important;color:#ffffff!important}[class*=\"DELETE\"],[class*=\"delete\"]{background-color:rgba(0, 0, 0, 0.08)!important;color:#000000!important}.dark [class*=\"playground\"] button,.dark [class*=\"try-it\"]{background-color:#ffffff!important;color:#000000!important}[class*=\"playground\"] button,[class*=\"try-it\"]{background-color:#000000!important;color:#ffffff!important}.dark [role=\"tab\"][aria-selected=\"true\"],.dark [role=\"tab\"][data-state=\"active\"]{border-color:#ffffff!important;color:#ffffff!important}[role=\"tab\"][aria-selected=\"true\"],[role=\"tab\"][data-state=\"active\"]{border-color:#000000!important;color:#000000!important}"}],"page":{"pagePath":"api-reference/endpoint/get-pick-of-the-day-ledger","slug":"/api-reference/endpoint/get-pick-of-the-day-ledger","pageMetadata":{"title":"Pick of the Day ledger","description":"Read pick commitments and revealed payloads to verify that a settled pick is unchanged.","openapi":"GET /api/v1/pick-of-the-day/ledger","href":"/api-reference/endpoint/get-pick-of-the-day-ledger"},"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: \"Read pick commitments and revealed payloads to verify that a settled pick is unchanged.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Use this public ledger to check that a settled pick matches its recorded commitment. The hash covers the pick identity, market, backed side, price, and kickoff using `,_jsx(_components.code,{children:`sha256(canonical_json(payload) || nonce)`}),`. Read `,_jsx(_components.code,{children:`commitment_version`}),` to choose the correct payload format.`]}),`\n`,_jsx(_components.p,{children:`The payload and nonce become available after settlement. No API key or subscription is required, and every caller sees the same fields for an entry’s state.`}),`\n`,_jsxs(_components.p,{children:[`The ledger retains commitments for withdrawn picks. Removing a recommendation from current picks or the archive does not change its identity, proof bytes, or provider-owned settlement. A settled entry’s `,_jsx(_components.code,{children:`withdrawal_reason`}),` says whether the site withdrew it.`]}),`\n`,_jsxs(_components.p,{children:[`For results and the running hit rate, use `,_jsx(_components.a,{href:`/api-reference/endpoint/get-pick-of-the-day-archive`,children:`Pick of the Day archive`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`the-three-states`,children:`The three states`}),`\n`,_jsxs(_components.p,{children:[`The ledger has one entry per published pick, sorted by date and publication order, oldest first. Read `,_jsx(_components.code,{children:`state`}),` before processing an entry because each state has different fields.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:_jsx(_components.code,{children:`state`})}),_jsx(_components.th,{children:`What the entry carries`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`sealed`})}),_jsxs(_components.td,{children:[`A pick that has not settled yet: `,_jsx(_components.code,{children:`commitment_hash`}),`, `,_jsx(_components.code,{children:`commitment_algo`}),`, `,_jsx(_components.code,{children:`sealed_at`}),`, and `,_jsx(_components.code,{children:`permalink`}),`. `,_jsx(_components.code,{children:`kickoff`}),` is omitted while the entry is sealed. There is no nonce, no payload, no side, and no price, because the hash alone reveals none of them.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`opened`})}),_jsxs(_components.td,{children:[`A settled pick: every sealed field plus `,_jsx(_components.code,{children:`kickoff`}),`, `,_jsx(_components.code,{children:`commitment_nonce`}),`, `,_jsx(_components.code,{children:`payload`}),`, `,_jsx(_components.code,{children:`outcome`}),`, `,_jsx(_components.code,{children:`withdrawal_reason`}),`, `,_jsx(_components.code,{children:`resolved_at`}),`, `,_jsx(_components.code,{children:`matchup`}),`, and `,_jsx(_components.code,{children:`category`}),`. This is the only state you can verify.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`uncommitted`})}),_jsxs(_components.td,{children:[`A pick that was published before commitments existed or reached kickoff unsealed has `,_jsx(_components.code,{children:`pre_commitment: true`}),`, no hash, and no nonce. Pending entries omit `,_jsx(_components.code,{children:`matchup`}),`, `,_jsx(_components.code,{children:`category`}),`, and `,_jsx(_components.code,{children:`withdrawal_reason`}),`, and their `,_jsx(_components.code,{children:`payload`}),` is `,_jsx(_components.code,{children:`null`}),`. After settlement, `,_jsx(_components.code,{children:`payload`}),` can disclose the market, side, and price, without making a proof claim.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Sealed entries omit the public `,_jsx(_components.code,{children:`kickoff`}),` field to avoid identifying an unresolved game. Opened entries retain kickoff and the original proof payload; historical commitment bytes do not change. Pending `,_jsx(_components.code,{children:`uncommitted`}),` entries also omit `,_jsx(_components.code,{children:`matchup`}),` and `,_jsx(_components.code,{children:`category`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`commitment-versions`,children:`Commitment versions`}),`\n`,_jsxs(_components.p,{children:[`Check `,_jsx(_components.code,{children:`commitment_version`}),` before verifying a committed entry. Version `,_jsx(_components.code,{children:`1`}),` uses the original payload with `,_jsx(_components.code,{children:`pick_rank`}),`. Version `,_jsx(_components.code,{children:`2`}),` replaces that field with the decimal-string `,_jsx(_components.code,{children:`pick_id`}),` and adds the integer `,_jsx(_components.code,{children:`version: 2`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`The version `,_jsx(_components.code,{children:`2`}),` payload has exactly 9 keys: `,_jsx(_components.code,{children:`backed_price`}),`, `,_jsx(_components.code,{children:`condition_id`}),`, `,_jsx(_components.code,{children:`kickoff`}),`, `,_jsx(_components.code,{children:`pick_date`}),`, `,_jsx(_components.code,{children:`pick_id`}),`, `,_jsx(_components.code,{children:`pick_outcome_index`}),`, `,_jsx(_components.code,{children:`pick_outcome_label`}),`, `,_jsx(_components.code,{children:`platform`}),`, and `,_jsx(_components.code,{children:`version`}),`. Historical version `,_jsx(_components.code,{children:`1`}),` payloads retain their exact bytes and hashes, and an `,_jsx(_components.code,{children:`uncommitted`}),` entry claims no commitment version. Refuse an unknown or missing committed-entry version instead of guessing its payload shape.`]}),`\n`,_jsxs(_components.p,{children:[`To fetch one published entry by its stable identity, use `,_jsx(_components.a,{href:`/api-reference/endpoint/get-pick-of-the-day-ledger-entry`,children:`Get a Pick of the Day ledger entry`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`key-response-fields`,children:`Key response fields`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`pick_id`})}),_jsx(_components.td,{children:`The pick’s stable positive decimal-string identity, present in every state.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`publication_order`})}),_jsx(_components.td,{children:`The publication order within the date. It does not rank pick quality.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`is_free_selection`})}),_jsx(_components.td,{children:`The explicit free-selection designation.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`supersedes_pick_id`})}),_jsxs(_components.td,{children:[`Deprecated. Always `,_jsx(_components.code,{children:`null`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`commitment_version`})}),_jsxs(_components.td,{children:[`The payload contract for a committed entry: `,_jsx(_components.code,{children:`1`}),` or `,_jsx(_components.code,{children:`2`}),`. It is absent on `,_jsx(_components.code,{children:`uncommitted`}),` entries.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`commitment_hash`})}),_jsxs(_components.td,{children:[`Lowercase hex, with no `,_jsx(_components.code,{children:`0x`}),` prefix. It is safe to publish the moment a pick releases, because without the nonce it cannot be inverted.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`commitment_algo`})}),_jsx(_components.td,{children:`The exact construction the hash was taken with, stated in the response so a verifier never has to guess the serialization.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`sealed_at`})}),_jsx(_components.td,{children:`When the hash was frozen. It is always strictly before kickoff: a seal written after the game started would be a backdated proof, so it is never written.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`resolved_at`})}),_jsxs(_components.td,{children:[`When `,_jsx(_components.code,{children:`outcome`}),` was last written to a settled value, or `,_jsx(_components.code,{children:`null`}),` when that instant is unknown. It can move under an unchanged `,_jsx(_components.code,{children:`commitment_hash`}),` when a corrected market re-maps a pick that had already settled.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`withdrawal_reason`})}),_jsxs(_components.td,{children:[`On a settled entry, `,_jsx(_components.code,{children:`provider_game_cancelled`}),` when the site withdrew the pick because Polymarket marked its game Cancelled, `,_jsx(_components.code,{children:`published_after_kickoff`}),` when the pick was published at or after its game started (a suspended match that resumed later included), or `,_jsx(_components.code,{children:`null`}),` when the pick counts. `,_jsx(_components.code,{children:`published_after_kickoff`}),` can appear on an entry that already settled, so read the field on every poll. A withdrawn pick keeps its commitment and real outcome here, but the site’s record leaves it out of every count and money figure. It is not part of the hashed `,_jsx(_components.code,{children:`payload`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`selected_by`})}),_jsxs(_components.td,{children:[`On every entry, `,_jsx(_components.code,{children:`sealed`}),` included: `,_jsx(_components.code,{children:`auto`}),` when the selection algorithm chose the pick, `,_jsx(_components.code,{children:`manual`}),` for one of the 102 picks an operator chose from June 23 to October 15, 2026. No pick has been chosen by hand since. It is outside the hashed `,_jsx(_components.code,{children:`payload`}),`, so it changes no `,_jsx(_components.code,{children:`commitment_hash`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`entry_count`}),`, `,_jsx(_components.code,{children:`sealed_count`}),`, `,_jsx(_components.code,{children:`opened_count`}),`, `,_jsx(_components.code,{children:`uncommitted_count`})]}),_jsxs(_components.td,{children:[`Counts over the same set of entries, computed in the pass that builds the list. `,_jsx(_components.code,{children:`uncommitted_count`}),` can only stop growing, because no pick is ever sealed after the fact.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`verify-an-opened-entry`,children:`Verify an opened entry`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Take the bytes of the `,_jsx(_components.code,{children:`payload`}),` object exactly as you received them. Do not reserialize it.`]}),`\n`,_jsxs(_components.li,{children:[`Append `,_jsx(_components.code,{children:`commitment_nonce`}),`, decoded from hex.`]}),`\n`,_jsxs(_components.li,{children:[`Take the SHA-256 of that concatenation. It equals `,_jsx(_components.code,{children:`commitment_hash`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The payload is canonical JSON, served byte for byte as it was hashed. Its keys are sorted by UTF-8 byte value, it carries no insignificant whitespace, its decimals are strings at full stored precision, and its timestamps are whole-second UTC with a literal `,_jsx(_components.code,{children:`Z`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`errors`,children:`Errors`}),`\n`,_jsxs(_components.p,{children:[`A `,_jsx(_components.code,{children:`500`}),` with `,_jsx(_components.code,{children:`error.code`}),` `,_jsx(_components.code,{children:`internal_error`}),` means one entry failed a consistency check, so the whole ledger is refused rather than served incomplete. A `,_jsx(_components.code,{children:`503`}),` with `,_jsx(_components.code,{children:`Retry-After`}),` means the database was unavailable; retry after that many seconds.`]}),`\n`,_jsx(Heading,{level:`2`,id:`example`,children:`Example`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.0xinsider.com/api/v1/pick-of-the-day/ledger\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`what-it-does-not-return`,children:`What it does not return`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The backed side of a live pick. A pick payload has little entropy, so publishing the nonce before the game would hand out the side.`}),`\n`,_jsxs(_components.li,{children:[`A commitment written after kickoff. A pick that reached kickoff unsealed stays `,_jsx(_components.code,{children:`uncommitted`}),` for good.`]}),`\n`,_jsxs(_components.li,{children:[`The outcome inside the hash. The commitment deliberately covers the pick, not the result, which is why a corrected market can move `,_jsx(_components.code,{children:`resolved_at`}),` while `,_jsx(_components.code,{children:`commitment_hash`}),` stays the same.`]}),`\n`,_jsx(_components.li,{children:`Anything formatted for display. An entry changes only when the pick does, so a rewrite of the archive’s wording can never look like a broken proof.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`caching`,children:`Caching`}),`\n`,_jsxs(_components.p,{children:[`Save the response’s `,_jsx(_components.code,{children:`ETag`}),` and send it in `,_jsx(_components.code,{children:`If-None-Match`}),` on your next request. If the ledger has not changed, the server returns `,_jsx(_components.code,{children:`304 Not Modified`}),` with no body.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Pick of the Day ledger","description":"Read pick commitments and revealed payloads to verify that a settled pick is unchanged.","openapi":"GET /api/v1/pick-of-the-day/ledger","href":"/api-reference/endpoint/get-pick-of-the-day-ledger"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"The three states","slug":"the-three-states","depth":2,"children":[]},{"title":"Commitment versions","slug":"commitment-versions","depth":2,"children":[]},{"title":"Key response fields","slug":"key-response-fields","depth":2,"children":[]},{"title":"Verify an opened entry","slug":"verify-an-opened-entry","depth":2,"children":[]},{"title":"Errors","slug":"errors","depth":2,"children":[]},{"title":"Example","slug":"example","depth":2,"children":[]},{"title":"What it does not return","slug":"what-it-does-not-return","depth":2,"children":[]},{"title":"Caching","slug":"caching","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/0xinsider/97b0167e20d57d7f/changelog-anchors.js"],"openApiReferenceData":{"operation":{"operationId":"getPickOfTheDayLedger","summary":"Get the Pick of the Day commitment ledger","description":"Read pick commitments and revealed payloads to verify that a settled pick is unchanged.","tags":["Pick of the Day"],"security":[],"parameters":["5dadf1f2-5b4d-4efc-911a-5c28231c5644","c5485d97-df7c-4ab9-a7a1-11663e8fd534"],"responses":{"200":"60a14e68-12f6-44f2-b1c4-2a00a31016f5","304":"7ceec95b-70ff-4ce1-ad44-a85d16d9714f","408":"99e4ee9d-d527-40a7-abdb-7d7c1aa674a6","429":"142f3df4-255a-4751-b6a4-658dc72b915e","500":"dc70dddd-695c-4475-aa37-793fc008318b","503":"e2196959-6cea-413f-b9aa-4ebdbc870021"},"x-codeSamples":[{"lang":"curl","label":"cURL","source":"curl -sS 'https://api.0xinsider.com/api/v1/pick-of-the-day/ledger'"}],"x-latency-budget":{"milliseconds":250,"measurement":"response-ready","requirement":"engineering-budget"},"method":"get","type":"path","servers":["3c54bf91-5931-4abe-827d-b3a31ddf4885","155f76df-7ffd-4940-8c22-066e4ccb34a9"],"path":"/api/v1/pick-of-the-day/ledger","baseUrlOptions":["https://api.0xinsider.com","https://0xinsider.com/sandbox"],"title":"Get the Pick of the Day commitment ledger","codeSamples":[{"label":"cURL","lang":"curl","source":"curl -sS 'https://api.0xinsider.com/api/v1/pick-of-the-day/ledger'"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"5dadf1f2-5b4d-4efc-911a-5c28231c5644":{"name":"X-Query-Validation","in":"header","required":false,"description":"Opt into strict query-name validation. The default is compatible: unknown names are ignored and reported in X-Query-Ignored. With strict, an unknown name returns 400 bad_request with error.reason unknown_query_parameter before the handler runs, including when its percent escape is incomplete.","schema":{"type":"string","enum":["strict"],"isRequired":false,"description":"Opt into strict query-name validation. The default is compatible: unknown names are ignored and reported in X-Query-Ignored. With strict, an unknown name returns 400 bad_request with error.reason unknown_query_parameter before the handler runs, including when its percent escape is incomplete.","uniqueKey":"","typeLabel":"enum\u003cstring>"}},"c5485d97-df7c-4ab9-a7a1-11663e8fd534":{"name":"If-None-Match","in":"header","required":false,"description":"Conditional GET validator from a previous ETag. Matching values return 304 Not Modified with an empty body.","schema":{"type":"string","isRequired":false,"description":"Conditional GET validator from a previous ETag. Matching values return 304 Not Modified with an empty body.","uniqueKey":"","typeLabel":"string"}}},"responses":{"60a14e68-12f6-44f2-b1c4-2a00a31016f5":{"description":"Pick of the Day commitment ledger","headers":{"X-Query-Ignored":{"description":"Comma-separated, percent-encoded query names the operation did not publish and therefore ignored in compatible mode. Names are sorted and de-duplicated.","schema":{"type":"string"}},"X-Effective-Query":{"description":"Normalized, percent-encoded query string containing only the recognized names and values applied by the operation. Query names and values use form-urlencoded decoding, where + is a space. Repeated names are retained and sorted by name. A limit outside the operation's published minimum..maximum is reported as the clamped value the page used, so the header states the page size served rather than the one requested.","schema":{"type":"string"}},"ETag":{"description":"Stable validator for the current Pick of the Day ledger payload. Re-send it via If-None-Match for conditional GETs.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Request limit of the budget this request was counted against, for its current window: the API key's per-minute sliding window on an authenticated call, at its plan's limit (100 requests on Pro, 200 on Max); the control-plane bucket GET /api/v1/me and GET /api/v1/usage share, the same on every plan, on a 429 from either; and the per-IP budget on a public route, on a refused credential (401, 402, 403, 423), and on a remote MCP message other than tools/call, none of which reaches the per-key limiter. Standard RateLimit header spelling.","schema":{"type":"integer","example":100}},"RateLimit-Remaining":{"description":"Requests remaining in that budget's current window after this response. Standard RateLimit header spelling.","schema":{"type":"integer","example":84}},"RateLimit-Reset":{"description":"Seconds until that budget's current window resets. Standard RateLimit header spelling.","schema":{"type":"integer","example":42}},"X-RateLimit-Limit":{"description":"Request limit of the budget this request was counted against, for its current window: the API key's per-minute sliding window on an authenticated call, at its plan's limit (100 requests on Pro, 200 on Max); the control-plane bucket GET /api/v1/me and GET /api/v1/usage share, the same on every plan, on a 429 from either; and the per-IP budget on a public route, on a refused credential (401, 402, 403, 423), and on a remote MCP message other than tools/call.","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Requests remaining in that budget's current window after this response.","schema":{"type":"integer","example":84}},"X-RateLimit-Reset":{"description":"Unix timestamp when that budget's current window resets.","schema":{"type":"integer","example":1710772860}},"X-Request-Id":{"description":"Server-generated request identifier for support and tracing. On every /api/v1 response, including 304, 408, CORS preflights and every error, and always equal to meta.request_id in the body. It is the key of the request's usage accounting row and of every log line the request emitted, so quote either form to support. A client-supplied X-Request-Id request header is ignored: the value is never adopted or echoed.","schema":{"type":"string","example":"req_550e8400"}},"X-Usage-Accounting":{"description":"Usage-record persistence for a protected V1 handler response. persisted: confirmed row; failed: write failed; unknown: completion could not be confirmed. Independent of handler success; do not replay successful mutations to repair accounting. Absent before accounting admission and on public routes. The zero-cost /api/v1/usage route also omits it.","schema":{"type":"string","enum":["persisted","failed","unknown"]}},"Server-Timing":{"description":"Processing time in milliseconds, for example api;dur=12.345. Includes API authentication, quota admission, handler work and response construction. Excludes network transit and streamed body or export-file transfer. The engineering budget is strictly below 250 ms; this header reports observations, not a latency guarantee or a new timeout.","schema":{"type":"string"},"example":"api;dur=12.345"}},"content":{"application/json":{"schema":{"type":"object","required":["object","data","meta"],"properties":{"object":{"type":"string","const":"pick_of_the_day_ledger","isRequired":true,"uniqueKey":"object","typeLabel":"string"},"data":{"type":"object","description":"The commitment ledger: every published pick, ascending, in the state its commitment is actually in. The counts are derived from entries in the same pass that builds it.","required":["entries","entry_count","sealed_count","opened_count","uncommitted_count"],"properties":{"entries":{"type":"array","description":"One entry per published (pick_date, pick_rank), ascending by pick_date then pick_rank.","items":{"oneOf":[{"type":"object","description":"One ledger entry. Read `state` to know which shape you have; the three are disjoint.","required":["state","pick_date","pick_rank","commitment_hash","commitment_algo","sealed_at","permalink","pick_id","publication_order","is_free_selection","supersedes_pick_id","commitment_version","selected_by"],"properties":{"state":{"type":"string","const":"sealed","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.state","typeLabel":"string"},"pick_date":{"type":"string","format":"date","description":"ET product day the pick belongs to (YYYY-MM-DD).","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.pick_date","typeLabel":"string\u003cdate>"},"pick_rank":{"type":"integer","description":"Deprecated compatibility daily release slot; use pick_id for identity and publication_order for scheduling.","deprecated":true,"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.pick_rank","typeLabel":"integer"},"commitment_hash":{"type":"string","description":"sha256(canonical_json(payload) || nonce), lowercase hex, no 0x prefix. Publishable the moment the pick releases: without the nonce it is not invertible.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.commitment_hash","typeLabel":"string"},"commitment_algo":{"type":"string","const":"sha256(canonical_json(payload)||nonce)","description":"The construction the hash was taken with, stated in the response so a verifier never has to guess the serialization.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.commitment_algo","typeLabel":"string"},"sealed_at":{"type":"string","format":"date-time","description":"When the hash was frozen. Always strictly before kickoff: a pick that reaches kickoff unsealed stays unsealed forever, because a seal written after the game started would be a backdated proof.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.sealed_at","typeLabel":"string\u003cdate-time>"},"permalink":{"type":"string","format":"uri","description":"The pick's stable public page, `https://0xinsider.com/pick-of-the-day/picks/{pick_id}`.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.permalink","typeLabel":"string\u003curi>"},"pick_id":{"type":"string","pattern":"^[1-9][0-9]*$","description":"Stable pick row identity as decimal text. Never use a quality rank as identity.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.pick_id","typeLabel":"string"},"publication_order":{"type":"integer","description":"Compatibility release slot. No quality claim; historic scheduling order is retained.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.publication_order","typeLabel":"integer"},"is_free_selection":{"type":"boolean","description":"Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.is_free_selection","typeLabel":"boolean"},"supersedes_pick_id":{"oneOf":[{"deprecated":true,"type":"string","pattern":"^[1-9][0-9]*$","description":"Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.supersedes_pick_id.oneOf.0","typeLabel":"string"},{"deprecated":true,"type":"null","pattern":"^[1-9][0-9]*$","description":"Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.supersedes_pick_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.supersedes_pick_id","typeLabel":"string | null"},"commitment_version":{"type":"integer","enum":[1,2],"description":"Explicit proof provenance: 1 retains historic eight-field canonical JSON; 2 binds stable pick_id and version without pick_rank.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.commitment_version","typeLabel":"enum\u003cinteger>"},"selected_by":{"type":"string","enum":["auto","manual"],"description":"How the pick was chosen: auto by the selection algorithm, manual by an operator (102 published picks from 2026-06-23 to 2026-10-15; none since). Outside the hashed payload, so it moves no commitment.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.0.selected_by","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.entries.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One ledger entry. Read `state` to know which shape you have; the three are disjoint.","required":["state","pick_date","pick_rank","commitment_hash","commitment_nonce","commitment_algo","sealed_at","resolved_at","kickoff","payload","outcome","withdrawal_reason","matchup","category","permalink","pick_id","publication_order","is_free_selection","supersedes_pick_id","commitment_version","selected_by"],"properties":{"state":{"type":"string","const":"opened","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.state","typeLabel":"string"},"pick_date":{"type":"string","format":"date","description":"ET product day the pick belongs to (YYYY-MM-DD).","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.pick_date","typeLabel":"string\u003cdate>"},"pick_rank":{"type":"integer","description":"Deprecated compatibility daily release slot; use pick_id for identity and publication_order for scheduling.","deprecated":true,"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.pick_rank","typeLabel":"integer"},"commitment_hash":{"type":"string","description":"sha256(canonical_json(payload) || nonce), lowercase hex, no 0x prefix. Publishable the moment the pick releases: without the nonce it is not invertible.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.commitment_hash","typeLabel":"string"},"commitment_nonce":{"type":"string","description":"The 32-byte nonce the hash was taken over, lowercase hex, no 0x prefix. Secret while the pick is live: a pick payload is low entropy, so a published nonce on a live pick would hand out the backed side.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.commitment_nonce","typeLabel":"string"},"commitment_algo":{"type":"string","const":"sha256(canonical_json(payload)||nonce)","description":"The construction the hash was taken with, stated in the response so a verifier never has to guess the serialization.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.commitment_algo","typeLabel":"string"},"sealed_at":{"type":"string","format":"date-time","description":"When the hash was frozen. Always strictly before kickoff: a pick that reaches kickoff unsealed stays unsealed forever, because a seal written after the game started would be a backdated proof.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.sealed_at","typeLabel":"string\u003cdate-time>"},"resolved_at":{"oneOf":[{"type":"string","format":"date-time","description":"When outcome was LAST written to a settled value, or null when that instant is unknown. It moves with a corrected market re-mapping an already-settled pick, while commitment_hash stays untouched -- which is how a mirror that keeps history sees a correction.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.resolved_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When outcome was LAST written to a settled value, or null when that instant is unknown. It moves with a corrected market re-mapping an already-settled pick, while commitment_hash stays untouched -- which is how a mirror that keeps history sees a correction.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.resolved_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.resolved_at","typeLabel":"string\u003cdate-time> | null"},"kickoff":{"type":"string","format":"date-time","description":"The frozen provider kickoff in the canonical payload form: whole seconds, UTC, literal Z. This exact string reappears inside payload.kickoff when the pick opens.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.kickoff","typeLabel":"string\u003cdate-time>"},"payload":{"oneOf":[{"type":"object","description":"Select using the entry commitment_version, never implicit payload shape. All historic v1 hashes remain unchanged.","required":["backed_price","condition_id","kickoff","pick_date","pick_outcome_index","pick_outcome_label","pick_rank","platform"],"properties":{"backed_price":{"type":"string","description":"Frozen pre-game price of the backed side, 0..1, as the plain decimal text of the stored NUMERIC at full stored precision, trailing zeros included. A string, never a number: a float round-trip would change the bytes and break the hash. Deliberately not normalized -- 0.545000 stays \"0.545000\".","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.0.backed_price","typeLabel":"string"},"condition_id":{"type":"string","description":"Provider condition id of the backed market.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.0.condition_id","typeLabel":"string"},"kickoff":{"type":"string","format":"date-time","description":"Frozen provider kickoff, whole seconds, UTC, literal Z. Fixed precision, never a shortest-lossless rendering.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.0.kickoff","typeLabel":"string\u003cdate-time>"},"pick_date":{"type":"string","format":"date","description":"ET product day (YYYY-MM-DD).","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.0.pick_date","typeLabel":"string\u003cdate>"},"pick_outcome_index":{"type":"integer","enum":[0,1],"description":"Index of the backed outcome within the market.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.0.pick_outcome_index","typeLabel":"enum\u003cinteger>"},"pick_outcome_label":{"type":"string","description":"Frozen display label of the backed outcome.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.0.pick_outcome_label","typeLabel":"string"},"pick_rank":{"type":"integer","description":"1-based daily slot.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.0.pick_rank","typeLabel":"integer"},"platform":{"type":"string","enum":["polymarket"],"description":"Provider platform. Always polymarket.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.0.platform","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.0","typeLabel":"object"},{"type":"object","description":"Select using the entry commitment_version, never implicit payload shape. All historic v1 hashes remain unchanged.","required":["backed_price","condition_id","kickoff","pick_date","pick_outcome_index","pick_outcome_label","platform","pick_id","version"],"properties":{"backed_price":{"type":"string","description":"Frozen pre-game price of the backed side, 0..1, as the plain decimal text of the stored NUMERIC at full stored precision, trailing zeros included. A string, never a number: a float round-trip would change the bytes and break the hash. Deliberately not normalized -- 0.545000 stays \"0.545000\".","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.1.backed_price","typeLabel":"string"},"condition_id":{"type":"string","description":"Provider condition id of the backed market.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.1.condition_id","typeLabel":"string"},"kickoff":{"type":"string","format":"date-time","description":"Frozen provider kickoff, whole seconds, UTC, literal Z. Fixed precision, never a shortest-lossless rendering.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.1.kickoff","typeLabel":"string\u003cdate-time>"},"pick_date":{"type":"string","format":"date","description":"ET product day (YYYY-MM-DD).","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.1.pick_date","typeLabel":"string\u003cdate>"},"pick_outcome_index":{"type":"integer","enum":[0,1],"description":"Index of the backed outcome within the market.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.1.pick_outcome_index","typeLabel":"enum\u003cinteger>"},"pick_outcome_label":{"type":"string","description":"Frozen display label of the backed outcome.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.1.pick_outcome_label","typeLabel":"string"},"platform":{"type":"string","enum":["polymarket"],"description":"Provider platform. Always polymarket.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.1.platform","typeLabel":"enum\u003cstring>"},"pick_id":{"type":"string","pattern":"^[1-9][0-9]*$","description":"Stable pick row identity as decimal text. Never use a quality rank as identity.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.1.pick_id","typeLabel":"string"},"version":{"type":"integer","const":2,"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.1.version","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.payload","typeLabel":"object"},"outcome":{"type":"string","enum":["win","loss","void"],"description":"How the pick settled. Never pending: a pending pick is a sealed entry.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.outcome","typeLabel":"enum\u003cstring>"},"withdrawal_reason":{"oneOf":[{"type":"string","enum":["provider_game_cancelled","published_after_kickoff",null],"description":"Why the site withdrew this pick from its track record, or null when the pick counts. provider_game_cancelled: Polymarket marked the game Cancelled while the pick was pending. published_after_kickoff: the pick was published at or after its game started, including a suspended match that resumed later, so it was never a pre-game pick; this can be set after the pick settled. A withdrawn pick keeps its commitment and its real outcome here, but the site's record leaves it out of every count and money figure. Not part of the hashed payload, so it never moves commitment_hash.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.withdrawal_reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["provider_game_cancelled","published_after_kickoff",null],"description":"Why the site withdrew this pick from its track record, or null when the pick counts. provider_game_cancelled: Polymarket marked the game Cancelled while the pick was pending. published_after_kickoff: the pick was published at or after its game started, including a suspended match that resumed later, so it was never a pre-game pick; this can be set after the pick settled. A withdrawn pick keeps its commitment and its real outcome here, but the site's record leaves it out of every count and money figure. Not part of the hashed payload, so it never moves commitment_hash.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.withdrawal_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.withdrawal_reason","typeLabel":"enum\u003cstring> | null"},"matchup":{"type":"string","description":"Frozen matchup, for a reader.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.matchup","typeLabel":"string"},"category":{"type":"string","description":"Frozen canonical sport bucket (for example Basketball or MMA), not the exact public league identity; the archive owns that.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.category","typeLabel":"string"},"permalink":{"type":"string","format":"uri","description":"The pick's stable public page, `https://0xinsider.com/pick-of-the-day/picks/{pick_id}`.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.permalink","typeLabel":"string\u003curi>"},"pick_id":{"type":"string","pattern":"^[1-9][0-9]*$","description":"Stable pick row identity as decimal text. Never use a quality rank as identity.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.pick_id","typeLabel":"string"},"publication_order":{"type":"integer","description":"Compatibility release slot. No quality claim; historic scheduling order is retained.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.publication_order","typeLabel":"integer"},"is_free_selection":{"type":"boolean","description":"Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.is_free_selection","typeLabel":"boolean"},"supersedes_pick_id":{"oneOf":[{"deprecated":true,"type":"string","pattern":"^[1-9][0-9]*$","description":"Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.supersedes_pick_id.oneOf.0","typeLabel":"string"},{"deprecated":true,"type":"null","pattern":"^[1-9][0-9]*$","description":"Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.supersedes_pick_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.supersedes_pick_id","typeLabel":"string | null"},"commitment_version":{"type":"integer","enum":[1,2],"description":"Explicit proof provenance: 1 retains historic eight-field canonical JSON; 2 binds stable pick_id and version without pick_rank.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.commitment_version","typeLabel":"enum\u003cinteger>"},"selected_by":{"type":"string","enum":["auto","manual"],"description":"How the pick was chosen: auto by the selection algorithm, manual by an operator (102 published picks from 2026-06-23 to 2026-10-15; none since). Outside the hashed payload, so it moves no commitment.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.1.selected_by","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.entries.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"One ledger entry. Read `state` to know which shape you have; the three are disjoint.","required":["state","pick_date","pick_rank","pre_commitment","outcome","resolved_at","payload","permalink","pick_id","publication_order","is_free_selection","supersedes_pick_id","selected_by"],"properties":{"state":{"type":"string","const":"uncommitted","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.state","typeLabel":"string"},"pick_date":{"type":"string","format":"date","description":"ET product day the pick belongs to (YYYY-MM-DD).","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.pick_date","typeLabel":"string\u003cdate>"},"pick_rank":{"type":"integer","description":"Deprecated compatibility daily release slot; use pick_id for identity and publication_order for scheduling.","deprecated":true,"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.pick_rank","typeLabel":"integer"},"pre_commitment":{"type":"boolean","const":true,"description":"Always true: this pick has no commitment and never will.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.pre_commitment","typeLabel":"boolean"},"outcome":{"type":"string","enum":["pending","win","loss","void"],"description":"How the pick settled, or pending.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.outcome","typeLabel":"enum\u003cstring>"},"resolved_at":{"oneOf":[{"type":"string","format":"date-time","description":"When outcome was LAST written to a settled value, or null when that instant is unknown. It moves with a corrected market re-mapping an already-settled pick, while commitment_hash stays untouched -- which is how a mirror that keeps history sees a correction.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.resolved_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When outcome was LAST written to a settled value, or null when that instant is unknown. It moves with a corrected market re-mapping an already-settled pick, while commitment_hash stays untouched -- which is how a mirror that keeps history sees a correction.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.resolved_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.resolved_at","typeLabel":"string\u003cdate-time> | null"},"payload":{"oneOf":[{"type":"object","description":"The pick's market, side and price once it has settled; null while it is pending, and null for a settled pick whose stored row lacks one of these columns. Not hashed: nothing was committed over these values, which is what pre_commitment: true says.","required":["backed_price","condition_id","kickoff","pick_date","pick_outcome_index","pick_outcome_label","pick_rank","platform"],"properties":{"backed_price":{"type":"string","description":"Frozen pre-game price of the backed side, 0..1, as the plain decimal text of the stored NUMERIC at full stored precision, trailing zeros included -- rendered exactly as the commitment payload renders it.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.payload.oneOf.0.backed_price","typeLabel":"string"},"condition_id":{"type":"string","description":"Provider condition id of the backed market.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.payload.oneOf.0.condition_id","typeLabel":"string"},"kickoff":{"oneOf":[{"type":"string","format":"date-time","description":"Frozen provider kickoff, UTC, literal Z; null when no kickoff was frozen. Whole seconds render exactly as the commitment payload does; a sub-second instant keeps its fraction rather than being truncated, since nothing here is hashed.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.payload.oneOf.0.kickoff.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Frozen provider kickoff, UTC, literal Z; null when no kickoff was frozen. Whole seconds render exactly as the commitment payload does; a sub-second instant keeps its fraction rather than being truncated, since nothing here is hashed.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.payload.oneOf.0.kickoff.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.payload.oneOf.0.kickoff","typeLabel":"string\u003cdate-time> | null"},"pick_date":{"type":"string","format":"date","description":"ET product day (YYYY-MM-DD).","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.payload.oneOf.0.pick_date","typeLabel":"string\u003cdate>"},"pick_outcome_index":{"type":"integer","enum":[0,1],"description":"Index of the backed outcome within the market.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.payload.oneOf.0.pick_outcome_index","typeLabel":"enum\u003cinteger>"},"pick_outcome_label":{"type":"string","description":"Frozen display label of the backed outcome.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.payload.oneOf.0.pick_outcome_label","typeLabel":"string"},"pick_rank":{"type":"integer","description":"1-based daily slot.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.payload.oneOf.0.pick_rank","typeLabel":"integer"},"platform":{"type":"string","enum":["polymarket"],"description":"Provider platform. Always polymarket.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.payload.oneOf.0.platform","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.payload.oneOf.0","typeLabel":"object"},{"type":"null","description":"The pick's market, side and price once it has settled; null while it is pending, and null for a settled pick whose stored row lacks one of these columns. Not hashed: nothing was committed over these values, which is what pre_commitment: true says.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.payload.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.payload","typeLabel":"object | null"},"permalink":{"type":"string","format":"uri","description":"The pick's stable public page, `https://0xinsider.com/pick-of-the-day/picks/{pick_id}`.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.permalink","typeLabel":"string\u003curi>"},"pick_id":{"type":"string","pattern":"^[1-9][0-9]*$","description":"Stable pick row identity as decimal text. Never use a quality rank as identity.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.pick_id","typeLabel":"string"},"publication_order":{"type":"integer","description":"Compatibility release slot. No quality claim; historic scheduling order is retained.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.publication_order","typeLabel":"integer"},"is_free_selection":{"type":"boolean","description":"Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.is_free_selection","typeLabel":"boolean"},"supersedes_pick_id":{"oneOf":[{"deprecated":true,"type":"string","pattern":"^[1-9][0-9]*$","description":"Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.supersedes_pick_id.oneOf.0","typeLabel":"string"},{"deprecated":true,"type":"null","pattern":"^[1-9][0-9]*$","description":"Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.supersedes_pick_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.supersedes_pick_id","typeLabel":"string | null"},"selected_by":{"type":"string","enum":["auto","manual"],"description":"How the pick was chosen: auto by the selection algorithm, manual by an operator (102 published picks from 2026-06-23 to 2026-10-15; none since). Outside the hashed payload, so it moves no commitment.","isRequired":true,"uniqueKey":"data.entries.items.[INDEX].oneOf.2.selected_by","typeLabel":"enum\u003cstring>"},"withdrawal_reason":{"oneOf":[{"type":"string","enum":["provider_game_cancelled","published_after_kickoff",null],"description":"Omitted while the pick is pending; once it settles, why the site withdrew it from its track record, or null when the pick counts. provider_game_cancelled: Polymarket marked the game Cancelled while the pick was pending. published_after_kickoff: the pick was published at or after its game started, including a suspended match that resumed later, so it was never a pre-game pick; this can be set after the pick settled. A withdrawn pick stays here with its real outcome, but the site's record leaves it out of every count and money figure.","uniqueKey":"data.entries.items.[INDEX].oneOf.2.withdrawal_reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["provider_game_cancelled","published_after_kickoff",null],"description":"Omitted while the pick is pending; once it settles, why the site withdrew it from its track record, or null when the pick counts. provider_game_cancelled: Polymarket marked the game Cancelled while the pick was pending. published_after_kickoff: the pick was published at or after its game started, including a suspended match that resumed later, so it was never a pre-game pick; this can be set after the pick settled. A withdrawn pick stays here with its real outcome, but the site's record leaves it out of every count and money figure.","uniqueKey":"data.entries.items.[INDEX].oneOf.2.withdrawal_reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.entries.items.[INDEX].oneOf.2.withdrawal_reason","typeLabel":"enum\u003cstring> | null"},"matchup":{"type":"string","description":"Frozen matchup, for a reader.","uniqueKey":"data.entries.items.[INDEX].oneOf.2.matchup","typeLabel":"string"},"category":{"type":"string","description":"Frozen canonical sport bucket (for example Basketball or MMA), not the exact public league identity; the archive owns that.","uniqueKey":"data.entries.items.[INDEX].oneOf.2.category","typeLabel":"string"}},"uniqueKey":"data.entries.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"data.entries.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.entries","typeLabel":"object[]"},"entry_count":{"type":"integer","description":"Number of entries, all states included.","isRequired":true,"uniqueKey":"data.entry_count","typeLabel":"integer"},"sealed_count":{"type":"integer","description":"Entries committed to and not yet settled.","isRequired":true,"uniqueKey":"data.sealed_count","typeLabel":"integer"},"opened_count":{"type":"integer","description":"Entries committed to and verifiable now.","isRequired":true,"uniqueKey":"data.opened_count","typeLabel":"integer"},"uncommitted_count":{"type":"integer","description":"Entries carrying no commitment, so provable by nothing: the honest size of the unprovable part of the record. It only stops growing; no pick is ever retro-sealed.","isRequired":true,"uniqueKey":"data.uncommitted_count","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"},"meta":{"type":"object","required":["request_id","cached","cost"],"properties":{"request_id":{"type":"string","description":"Unique request ID (req_ prefix). The same value as the X-Request-Id response header, the request's usage accounting row and its log lines.","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"meta.cached","typeLabel":"boolean"},"cost":{"type":"integer","description":"Advisory request weight (relative compute cost). 1 for simple reads; higher for heavier endpoints. Not a credit/price.","isRequired":true,"uniqueKey":"meta.cost","typeLabel":"integer"},"cache_age_s":{"type":"integer","description":"Cache age in seconds. Omitted when the response was not cached, and also when it was cached but its age cannot be established (an entry stored before its cache carried a computed instant). Never a placeholder: an unknown age is reported as no value rather than as the cache TTL.","uniqueKey":"meta.cache_age_s","typeLabel":"integer"},"ranking_generation":{"type":"integer","description":"Committed PostgreSQL-owned leaderboard generation for the returned rows and cursor. Present on GET /api/v1/leaderboard; omitted on endpoints that do not read this ranking.","uniqueKey":"meta.ranking_generation","typeLabel":"integer"},"ranking_as_of":{"type":"string","format":"date-time","description":"Authoritative RFC3339 timestamp from cache_generations.updated_at for ranking_generation. It is read in the same repeatable-read snapshot as the leaderboard rows and is not request time, cache write time, or row insertion order.","uniqueKey":"meta.ranking_as_of","typeLabel":"string\u003cdate-time>"},"directional_source":{"type":"string","enum":["live","degraded"],"description":"Directional evidence provenance for Edge Hunter signals collections. The default board carries this provenance in data.directional_source and omits this optional meta field.","uniqueKey":"meta.directional_source","typeLabel":"enum\u003cstring>"},"ranking_source":{"type":"string","enum":["live","db_only"],"description":"Ranking evidence provenance for Edge Hunter signals collections. The default board carries this clock/provenance in data.ranking_source and omits this optional meta field.","uniqueKey":"meta.ranking_source","typeLabel":"enum\u003cstring>"},"category_skill_source":{"type":"string","enum":["live","partial","degraded","unavailable"],"description":"Whole filtered snapshot category-evidence status before pagination. Operational live always remains partial source coverage.","uniqueKey":"meta.category_skill_source","typeLabel":"enum\u003cstring>"},"category_skill_model_version":{"type":"string","uniqueKey":"meta.category_skill_model_version","typeLabel":"string"},"category_skill_taxonomy_version":{"type":"string","uniqueKey":"meta.category_skill_taxonomy_version","typeLabel":"string"},"category_skill_platform":{"type":"string","const":"polymarket","uniqueKey":"meta.category_skill_platform","typeLabel":"string"},"category_skill_scope":{"type":"string","const":"observed_goldsky_primary_taker_fill","uniqueKey":"meta.category_skill_scope","typeLabel":"string"},"category_skill_source_coverage":{"type":"string","enum":["partial_whale_threshold_fills","graded_wallet_fills"],"uniqueKey":"meta.category_skill_source_coverage","typeLabel":"enum\u003cstring>"},"category_skill_observation_started_at":{"type":"string","format":"date-time","uniqueKey":"meta.category_skill_observation_started_at","typeLabel":"string\u003cdate-time>"},"category_skill_model_operationally_degraded":{"type":"boolean","description":"Whole-model operational readiness captured with the category model snapshot. Present on category-enriched responses even when the filtered signal list is empty. When true, category_skill_source is degraded and Edge Hunter signals uses the shorter degraded cache TTL.","uniqueKey":"meta.category_skill_model_operationally_degraded","typeLabel":"boolean"},"category_skill_status_counts":{"type":"object","required":["live","insufficient","stale","unknown","degraded"],"properties":{"live":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.live","typeLabel":"integer"},"insufficient":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.insufficient","typeLabel":"integer"},"stale":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.stale","typeLabel":"integer"},"unknown":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.unknown","typeLabel":"integer"},"degraded":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.degraded","typeLabel":"integer"}},"uniqueKey":"meta.category_skill_status_counts","typeLabel":"object"},"category_skill_base_payload_hash":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"SHA-256 of the funded signal membership/order/rank/cursor vector immediately before category-skill enrichment. Edge Hunter signals view only.","uniqueKey":"meta.category_skill_base_payload_hash","typeLabel":"string"},"category_skill_enriched_base_payload_hash":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"Independent SHA-256 recomputation over the same base fields immediately after category-skill enrichment. Equality with category_skill_base_payload_hash proves category-skill enrichment did not change funded inputs. Edge Hunter signals view only.","uniqueKey":"meta.category_skill_enriched_base_payload_hash","typeLabel":"string"}},"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"success":{"title":"success","value":{"object":"pick_of_the_day_ledger","data":{"entries":[{"state":"uncommitted","pick_date":"2026-06-22","pick_rank":1,"pre_commitment":true,"outcome":"win","withdrawal_reason":null,"matchup":"Spain vs. France","category":"Soccer","resolved_at":null,"permalink":"https://0xinsider.com/pick-of-the-day/picks/1","payload":{"backed_price":"0.6100","condition_id":"0xabc1230000000000000000000000000000000abc7f7f7f7f7f7f7f7f7f7f7f7f","kickoff":"2026-06-22T19:00:00Z","pick_date":"2026-06-22","pick_outcome_index":0,"pick_outcome_label":"Spain","pick_rank":1,"platform":"polymarket"},"pick_id":"1000","publication_order":1,"is_free_selection":true,"selected_by":"auto","supersedes_pick_id":null},{"state":"opened","pick_date":"2026-09-20","pick_rank":1,"commitment_hash":"44d18fa5e2aa3a2bf3c971dcc9317c8ccbdfd5480a4773b6d8ffd5fbeeea84dc","commitment_nonce":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","commitment_algo":"sha256(canonical_json(payload)||nonce)","sealed_at":"2026-09-20T17:00:04.318271Z","resolved_at":"2026-09-21T02:41:09.552310Z","kickoff":"2026-09-20T23:05:00Z","payload":{"backed_price":"0.545000","condition_id":"0xabc","kickoff":"2026-09-20T23:05:00Z","pick_date":"2026-09-20","pick_outcome_index":1,"pick_outcome_label":"Lakers","pick_rank":1,"platform":"polymarket"},"outcome":"win","withdrawal_reason":null,"matchup":"Lakers vs. Warriors","category":"Basketball","permalink":"https://0xinsider.com/pick-of-the-day/picks/350","pick_id":"1001","publication_order":1,"is_free_selection":true,"selected_by":"auto","supersedes_pick_id":null,"commitment_version":1}],"entry_count":2,"sealed_count":0,"opened_count":1,"uncommitted_count":1},"meta":{"request_id":"req_example","cached":false,"cost":1}}}},"exampleType":"examples"}},"exampleType":"examples"},"7ceec95b-70ff-4ce1-ad44-a85d16d9714f":{"description":"Not Modified. Returned when If-None-Match matches the current Pick of the Day ledger payload.","headers":{"X-Query-Ignored":{"description":"Comma-separated, percent-encoded query names the operation did not publish and therefore ignored in compatible mode. Names are sorted and de-duplicated.","schema":{"type":"string"}},"X-Effective-Query":{"description":"Normalized, percent-encoded query string containing only the recognized names and values applied by the operation. Query names and values use form-urlencoded decoding, where + is a space. Repeated names are retained and sorted by name. A limit outside the operation's published minimum..maximum is reported as the clamped value the page used, so the header states the page size served rather than the one requested.","schema":{"type":"string"}},"ETag":{"description":"Validator for the unchanged Pick of the Day ledger payload.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Request limit of the budget this request was counted against, for its current window: the API key's per-minute sliding window on an authenticated call, at its plan's limit (100 requests on Pro, 200 on Max); the control-plane bucket GET /api/v1/me and GET /api/v1/usage share, the same on every plan, on a 429 from either; and the per-IP budget on a public route, on a refused credential (401, 402, 403, 423), and on a remote MCP message other than tools/call, none of which reaches the per-key limiter. Standard RateLimit header spelling.","schema":{"type":"integer","example":100}},"RateLimit-Remaining":{"description":"Requests remaining in that budget's current window after this response. Standard RateLimit header spelling.","schema":{"type":"integer","example":84}},"RateLimit-Reset":{"description":"Seconds until that budget's current window resets. Standard RateLimit header spelling.","schema":{"type":"integer","example":42}},"X-RateLimit-Limit":{"description":"Request limit of the budget this request was counted against, for its current window: the API key's per-minute sliding window on an authenticated call, at its plan's limit (100 requests on Pro, 200 on Max); the control-plane bucket GET /api/v1/me and GET /api/v1/usage share, the same on every plan, on a 429 from either; and the per-IP budget on a public route, on a refused credential (401, 402, 403, 423), and on a remote MCP message other than tools/call.","schema":{"type":"integer","example":100}},"X-RateLimit-Remaining":{"description":"Requests remaining in that budget's current window after this response.","schema":{"type":"integer","example":84}},"X-RateLimit-Reset":{"description":"Unix timestamp when that budget's current window resets.","schema":{"type":"integer","example":1710772860}},"X-Request-Id":{"description":"Server-generated request identifier for support and tracing. On every /api/v1 response, including 304, 408, CORS preflights and every error, and always equal to meta.request_id in the body. It is the key of the request's usage accounting row and of every log line the request emitted, so quote either form to support. A client-supplied X-Request-Id request header is ignored: the value is never adopted or echoed.","schema":{"type":"string","example":"req_550e8400"}},"X-Usage-Accounting":{"description":"Usage-record persistence for a protected V1 handler response. persisted: confirmed row; failed: write failed; unknown: completion could not be confirmed. Independent of handler success; do not replay successful mutations to repair accounting. Absent before accounting admission and on public routes. The zero-cost /api/v1/usage route also omits it.","schema":{"type":"string","enum":["persisted","failed","unknown"]}},"Server-Timing":{"description":"Processing time in milliseconds, for example api;dur=12.345. Includes API authentication, quota admission, handler work and response construction. Excludes network transit and streamed body or export-file transfer. The engineering budget is strictly below 250 ms; this header reports observations, not a latency guarantee or a new timeout.","schema":{"type":"string"},"example":"api;dur=12.345"}},"x-empty-body":true,"content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"99e4ee9d-d527-40a7-abdb-7d7c1aa674a6":{"description":"The handler did not answer inside the server's 30-second timeout. error.code is request_timeout. On GET and HEAD the response carries Retry-After and error.retry_at; on a mutation it carries neither, because the request may have completed on the server: check its state before repeating it, and reuse its Idempotency-Key.","content":{"application/json":{"schema":{"type":"object","required":["object","error","meta"],"properties":{"object":{"type":"string","const":"error","isRequired":true,"uniqueKey":"object","typeLabel":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"FROZEN: an existing value never changes meaning. request_timeout (408, #16146) was added the way insufficient_scope was: the handler did not answer inside the server's 30-second timeout. Retry-After and retry_at ride on it only for a safe method (GET, HEAD); a timed-out mutation may have completed, so check its state and reuse its Idempotency-Key.","enum":["bad_request","invalid_api_key","subscription_required","forbidden","insufficient_scope","not_found","account_locked","rate_limited","rate_limit_unavailable","internal_error","request_timeout","endpoint_retired"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"retry_at":{"type":"string","format":"date-time","description":"The recommended next request instant (RFC3339), always in the future. Present on every retryable error: `pick_not_released`, `rate_limited`, `rate_limit_unavailable`, and `read_model_warming`. Omitted otherwise. The absolute twin of `Retry-After`; prefer the header for the sleep duration. For `pick_not_released`, the earliest of the next scheduled release, the next automatic selector attempt, the operating-window start, or about 60 seconds. See that response.","uniqueKey":"error.retry_at","typeLabel":"string\u003cdate-time>"},"freshness":{"type":"object","required":["max_age_s","data_quality_status"],"properties":{"max_age_s":{"type":"integer","format":"int64","minimum":0,"description":"The caller's requested whole-response freshness ceiling in seconds.","isRequired":true,"uniqueKey":"error.freshness.max_age_s","typeLabel":"integer\u003cint64>"},"data_quality_status":{"type":"string","enum":["fresh","stale","partial","unknown","untracked","unavailable"],"description":"The trader body's whole-response data-quality status. Only fresh or stale can satisfy max_age_s: the ceiling replaces each writer's own budget, so a stale body inside it is answered.","isRequired":true,"uniqueKey":"error.freshness.data_quality_status","typeLabel":"enum\u003cstring>"},"actual_age_s":{"type":"integer","format":"int64","minimum":0,"description":"Age in seconds of the oldest stored data_quality.as_of clock, when one is available.","uniqueKey":"error.freshness.actual_age_s","typeLabel":"integer\u003cint64>"},"as_of":{"type":"string","format":"date-time","description":"The oldest stored data-quality clock used to calculate actual_age_s, when one is available.","uniqueKey":"error.freshness.as_of","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"error.freshness","typeLabel":"object"},"billing_url":{"type":"string","format":"uri","description":"Where a person clears this 402 (#32592): pays the overdue invoice (reason payment_overdue) or reactivates the plan (reason subscription_inactive). Present on every 402 subscription_required, omitted on every other error. The message names the same URL; link this field instead of parsing the message.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"},"reason":{"type":"string","enum":["cursor_expired","unknown_endpoint","pick_not_released","trader_not_tracked","market_out_of_scope","read_model_warming","database_unavailable","request_accounting_unavailable","idempotency_in_progress","webhook_delivery_in_progress","webhook_secret_rotation_not_prepared","webhook_secret_rotation_overlap_active","sandbox_api_key","api_key_in_query","subscription_inactive","payment_overdue","monthly_quota_exceeded","invalid_query","unknown_query_parameter","invalid_path","invalid_body","unsupported_media_type","payload_too_large","method_not_allowed","ip_rate_limited","ip_throttled","cold_read_limited","export_expired","freshness_ceiling_unsatisfied","max_plan_required","endpoint_retired"],"description":"ADDITIVE (#7209). The specific, actionable cause behind `code`, when there is one more specific than the code itself. `code` keeps its published values, so existing clients are unaffected; new clients branch on `reason`. Omitted when the code already says everything we know. pick_not_released: no Pick of the Day is published for the current product day; schedule one request against retry_at instead of polling. unknown_endpoint: the PATH is not a route on this API -- read GET /api/v1, do not retry. trader_not_tracked: the wallet is real and the URL is right, but the trader is not on the warm sync tier (the wallets we sync most often) -- stop asking for this wallet. market_out_of_scope (404 not_found, #27303): the market or event is real and the URL is right, but 0xinsider serves sports and esports markets only -- stop asking for this market; neither a retry nor another URL for it can succeed. cursor_expired: pagination went stale mid-walk -- re-request the first page and continue. read_model_warming: the requested endpoint cannot serve its read model yet; exact causes are endpoint-specific and can include a cold or contended refresh or a dependency that prevented refresh. database_unavailable: the API's database or its connection pool is temporarily unreachable (a connection-class failure, not a query fault); code stays rate_limit_unavailable, nothing is rate-limited, retry after Retry-After / retry_at. idempotency_in_progress: retain the exact Idempotency-Key and request body, then retry shortly. webhook_delivery_in_progress: retry the URL or signing-secret configuration change after the destination's active request completes. request_accounting_unavailable: accounting capacity is unavailable before the handler executes; retry after Retry-After / retry_at. sandbox_api_key: the credential is a sandbox key (oxi_sk_test_) from POST /api/v1/agents/register, which only the sandbox server accepts -- call the sandbox base URL with it, or get a live key or OAuth access token; do not retry it here. api_key_in_query: the key was sent as a ?token= query parameter, which no route reads because URLs land in logs and history; the key itself was not checked -- resend it as Authorization: Bearer. subscription_inactive: the key is valid but the account's Pro subscription has lapsed (402 subscription_required); permanent until a person reactivates at https://0xinsider.com/billing, which the message names -- stop retrying on a schedule and surface the link. The key owner is emailed once per lapse. payment_overdue (402 subscription_required, #32592): the key is valid and the account still has its plan, but its latest subscription invoice is unpaid (Stripe past_due or unpaid), so paid access is paused; permanent until a person pays at billing_url (https://0xinsider.com/billing) -- stop retrying on a schedule and surface the link. The key works again the moment the invoice is paid. GET /api/v1/me and GET /api/v1/usage keep answering. monthly_quota_exceeded: the account has used the requests its plan includes for the UTC calendar month (429 rate_limited); retry_at and Retry-After name the first of next month, the only retry that can succeed, and the message names https://0xinsider.com/developers, where pay as you go for requests over the quota is turned on. The X-Monthly-Quota-Limit, X-Monthly-Quota-Remaining and X-Monthly-Quota-Reset headers on every authenticated response say how close the account is. invalid_query, invalid_path, invalid_body (400 bad_request, #16146): a query parameter, a path segment or the JSON body did not parse or does not fit the route's schema, so no handler ran; param names the field when the parser named one (a query key, a path segment, a JSON path such as traders[0], or body); fix the request, never retry it as sent. unsupported_media_type (415 bad_request, param content-type): send the body with Content-Type: application/json. payload_too_large (413 bad_request, param body): the body is over 1048576 bytes. method_not_allowed (405 bad_request): the path is a route but not with this method; the Allow header names the methods it serves. ip_rate_limited (429 rate_limited, #16380): the per-address budget every caller behind one IP shares, counted before authentication, is spent; not the key's own window, and the RateLimit-* headers describe that bucket. ip_throttled (429 rate_limited): the address is in a cooldown after sustained over-limit traffic; Retry-After is minutes to days, and a request before it does not shorten the cooldown. cold_read_limited (429 rate_limited, #28752): the account has used its share of cold reads on GET /api/v1/market/{condition_id}/holders, requests for a market whose roster is not cached, each of which walks Polymarket (6 a minute, in bursts of up to 400); not the per-minute window, so a cached market still answers, and the next cold read is admitted at Retry-After. max_plan_required (403 forbidden, #23085): the key is valid and its account is on Pro, but the route is part of Max (GET /api/v1/edge-hunter); every Pro route keeps working with the same key, so do not disable it. The message names https://0xinsider.com/pricing, where the account upgrades; a retry never clears it. endpoint_retired (410): this legacy sports endpoint no longer serves data. Migrate to GET /api/v1/edge-hunter; retrying the retired path cannot succeed.","uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","required":["request_id","cached","cost"],"properties":{"request_id":{"type":"string","description":"Unique request ID (req_ prefix). The same value as the X-Request-Id response header, the request's usage accounting row and its log lines.","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"meta.cached","typeLabel":"boolean"},"cost":{"type":"integer","description":"Advisory request weight (relative compute cost). 1 for simple reads; higher for heavier endpoints. Not a credit/price.","isRequired":true,"uniqueKey":"meta.cost","typeLabel":"integer"},"cache_age_s":{"type":"integer","description":"Cache age in seconds. Omitted when the response was not cached, and also when it was cached but its age cannot be established (an entry stored before its cache carried a computed instant). Never a placeholder: an unknown age is reported as no value rather than as the cache TTL.","uniqueKey":"meta.cache_age_s","typeLabel":"integer"},"ranking_generation":{"type":"integer","description":"Committed PostgreSQL-owned leaderboard generation for the returned rows and cursor. Present on GET /api/v1/leaderboard; omitted on endpoints that do not read this ranking.","uniqueKey":"meta.ranking_generation","typeLabel":"integer"},"ranking_as_of":{"type":"string","format":"date-time","description":"Authoritative RFC3339 timestamp from cache_generations.updated_at for ranking_generation. It is read in the same repeatable-read snapshot as the leaderboard rows and is not request time, cache write time, or row insertion order.","uniqueKey":"meta.ranking_as_of","typeLabel":"string\u003cdate-time>"},"directional_source":{"type":"string","enum":["live","degraded"],"description":"Directional evidence provenance for Edge Hunter signals collections. The default board carries this provenance in data.directional_source and omits this optional meta field.","uniqueKey":"meta.directional_source","typeLabel":"enum\u003cstring>"},"ranking_source":{"type":"string","enum":["live","db_only"],"description":"Ranking evidence provenance for Edge Hunter signals collections. The default board carries this clock/provenance in data.ranking_source and omits this optional meta field.","uniqueKey":"meta.ranking_source","typeLabel":"enum\u003cstring>"},"category_skill_source":{"type":"string","enum":["live","partial","degraded","unavailable"],"description":"Whole filtered snapshot category-evidence status before pagination. Operational live always remains partial source coverage.","uniqueKey":"meta.category_skill_source","typeLabel":"enum\u003cstring>"},"category_skill_model_version":{"type":"string","uniqueKey":"meta.category_skill_model_version","typeLabel":"string"},"category_skill_taxonomy_version":{"type":"string","uniqueKey":"meta.category_skill_taxonomy_version","typeLabel":"string"},"category_skill_platform":{"type":"string","const":"polymarket","uniqueKey":"meta.category_skill_platform","typeLabel":"string"},"category_skill_scope":{"type":"string","const":"observed_goldsky_primary_taker_fill","uniqueKey":"meta.category_skill_scope","typeLabel":"string"},"category_skill_source_coverage":{"type":"string","enum":["partial_whale_threshold_fills","graded_wallet_fills"],"uniqueKey":"meta.category_skill_source_coverage","typeLabel":"enum\u003cstring>"},"category_skill_observation_started_at":{"type":"string","format":"date-time","uniqueKey":"meta.category_skill_observation_started_at","typeLabel":"string\u003cdate-time>"},"category_skill_model_operationally_degraded":{"type":"boolean","description":"Whole-model operational readiness captured with the category model snapshot. Present on category-enriched responses even when the filtered signal list is empty. When true, category_skill_source is degraded and Edge Hunter signals uses the shorter degraded cache TTL.","uniqueKey":"meta.category_skill_model_operationally_degraded","typeLabel":"boolean"},"category_skill_status_counts":{"type":"object","required":["live","insufficient","stale","unknown","degraded"],"properties":{"live":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.live","typeLabel":"integer"},"insufficient":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.insufficient","typeLabel":"integer"},"stale":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.stale","typeLabel":"integer"},"unknown":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.unknown","typeLabel":"integer"},"degraded":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.degraded","typeLabel":"integer"}},"uniqueKey":"meta.category_skill_status_counts","typeLabel":"object"},"category_skill_base_payload_hash":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"SHA-256 of the funded signal membership/order/rank/cursor vector immediately before category-skill enrichment. Edge Hunter signals view only.","uniqueKey":"meta.category_skill_base_payload_hash","typeLabel":"string"},"category_skill_enriched_base_payload_hash":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"Independent SHA-256 recomputation over the same base fields immediately after category-skill enrichment. Equality with category_skill_base_payload_hash proves category-skill enrichment did not change funded inputs. Edge Hunter signals view only.","uniqueKey":"meta.category_skill_enriched_base_payload_hash","typeLabel":"string"}},"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","error":{"code":"bad_request","message":"\u003cstring>","doc_url":"\u003cstring>","param":"\u003cstring>","retry_at":"2023-11-07T05:31:56Z","freshness":{"max_age_s":1,"data_quality_status":"fresh","actual_age_s":1,"as_of":"2023-11-07T05:31:56Z"},"billing_url":"\u003cstring>","reason":"cursor_expired"},"meta":{"request_id":"\u003cstring>","cached":true,"cost":123,"cache_age_s":123,"ranking_generation":123,"ranking_as_of":"2023-11-07T05:31:56Z","directional_source":"live","ranking_source":"live","category_skill_source":"live","category_skill_model_version":"\u003cstring>","category_skill_taxonomy_version":"\u003cstring>","category_skill_platform":"polymarket","category_skill_scope":"observed_goldsky_primary_taker_fill","category_skill_source_coverage":"partial_whale_threshold_fills","category_skill_observation_started_at":"2023-11-07T05:31:56Z","category_skill_model_operationally_degraded":true,"category_skill_status_counts":{"live":1,"insufficient":1,"stale":1,"unknown":1,"degraded":1},"category_skill_base_payload_hash":"\u003cstring>","category_skill_enriched_base_payload_hash":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"142f3df4-255a-4751-b6a4-658dc72b915e":{"description":"Rate limit exceeded. Three independent budgets. (1) 100 requests/minute per user on Pro, 200 on Max (sliding window), on every authenticated route; RateLimit-Limit reports the caller's. On the remote MCP endpoint /api/v1/mcp only tools/call is counted: initialize, ping, tools/list, notifications, and the GET, HEAD and DELETE the endpoint answers 405 spend no per-minute request, no monthly quota and no pay-as-you-go usage, with or without a key. (2) On the BATCH routes only: 2500 batch item units/minute per user on Pro, 5000 on Max, reserved before any item is executed. A batch with N requested items costs N item units, including duplicate and invalid items. 2500 = 100 requests x 25 items per batch on Pro, 5000 = 200 x 25 on Max, which is the most item work a key can buy through the request limiter at all: a caller may spend their plan's entire request minute on full 25-item batches without the item budget being what stops them. The REQUEST budget is the effective ceiling, and batching is never the more expensive choice. The item budget can still deny at a sliding-window boundary (both counters carry the previous window forward with a floor, and the item counter runs 25x the request counter), so honor a 429 from either. Over-quota batches return 429 with Retry-After plus RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset before any item work is done. (3) The monthly quota: Pro includes 500,000 and Max includes 2,000,000 authenticated requests per UTC calendar month. Over the plan's included requests: with pay as you go on, the excess bills at USD 0.20 per 1,000 on a monthly invoice, up to four times the included allowance (2,000,000 requests for Pro); without it, from October 1, 2026, the next request answers 429 rate_limited with error.reason monthly_quota_exceeded and a Retry-After to the month's reset. Pay-as-you-go accounts receive the same refusal at their ceiling. A refused request is not counted. X-Monthly-Quota-Limit, X-Monthly-Quota-Remaining, and X-Monthly-Quota-Reset (unix seconds, the first of next month) are on every response a route answers for a counted request, on the monthly-quota 429, and on GET /api/v1/me and GET /api/v1/usage, which read the month without spending it. Any other refusal or failure before the route runs, such as a per-minute 429 or a 401, carries none, nor does a remote MCP message other than tools/call. (4) The per-address budget: 1200 requests/minute per IP, shared by every caller behind one address and counted before authentication, on every route. A 429 from it carries error.reason ip_rate_limited and describes that bucket in RateLimit-*; a throttled address (sustained over-limit traffic) carries error.reason ip_throttled with a Retry-After of minutes to days, and a request before it does not shorten the cooldown. Every 429 is the standard error envelope with meta.request_id equal to X-Request-Id.","headers":{"Retry-After":{"description":"Seconds until rate limit resets.","schema":{"type":"integer"}},"RateLimit-Limit":{"description":"Request limit of the budget this request was counted against, for its current window: the API key's per-minute sliding window on an authenticated call, at its plan's limit (100 requests on Pro, 200 on Max); the control-plane bucket GET /api/v1/me and GET /api/v1/usage share, the same on every plan, on a 429 from either; and the per-IP budget on a public route, on a refused credential (401, 402, 403, 423), and on a remote MCP message other than tools/call, none of which reaches the per-key limiter. Standard RateLimit header spelling.","schema":{"type":"integer","example":100}},"RateLimit-Remaining":{"description":"Requests remaining in that budget's current window after this response. Standard RateLimit header spelling.","schema":{"type":"integer","example":84}},"RateLimit-Reset":{"description":"Seconds until that budget's current window resets. Standard RateLimit header spelling.","schema":{"type":"integer","example":42}},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}},"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["object","error","meta"],"properties":{"object":{"type":"string","const":"error","isRequired":true,"uniqueKey":"object","typeLabel":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"FROZEN: an existing value never changes meaning. request_timeout (408, #16146) was added the way insufficient_scope was: the handler did not answer inside the server's 30-second timeout. Retry-After and retry_at ride on it only for a safe method (GET, HEAD); a timed-out mutation may have completed, so check its state and reuse its Idempotency-Key.","enum":["bad_request","invalid_api_key","subscription_required","forbidden","insufficient_scope","not_found","account_locked","rate_limited","rate_limit_unavailable","internal_error","request_timeout","endpoint_retired"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"retry_at":{"type":"string","format":"date-time","description":"The recommended next request instant (RFC3339), always in the future. Present on every retryable error: `pick_not_released`, `rate_limited`, `rate_limit_unavailable`, and `read_model_warming`. Omitted otherwise. The absolute twin of `Retry-After`; prefer the header for the sleep duration. For `pick_not_released`, the earliest of the next scheduled release, the next automatic selector attempt, the operating-window start, or about 60 seconds. See that response.","uniqueKey":"error.retry_at","typeLabel":"string\u003cdate-time>"},"freshness":{"type":"object","required":["max_age_s","data_quality_status"],"properties":{"max_age_s":{"type":"integer","format":"int64","minimum":0,"description":"The caller's requested whole-response freshness ceiling in seconds.","isRequired":true,"uniqueKey":"error.freshness.max_age_s","typeLabel":"integer\u003cint64>"},"data_quality_status":{"type":"string","enum":["fresh","stale","partial","unknown","untracked","unavailable"],"description":"The trader body's whole-response data-quality status. Only fresh or stale can satisfy max_age_s: the ceiling replaces each writer's own budget, so a stale body inside it is answered.","isRequired":true,"uniqueKey":"error.freshness.data_quality_status","typeLabel":"enum\u003cstring>"},"actual_age_s":{"type":"integer","format":"int64","minimum":0,"description":"Age in seconds of the oldest stored data_quality.as_of clock, when one is available.","uniqueKey":"error.freshness.actual_age_s","typeLabel":"integer\u003cint64>"},"as_of":{"type":"string","format":"date-time","description":"The oldest stored data-quality clock used to calculate actual_age_s, when one is available.","uniqueKey":"error.freshness.as_of","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"error.freshness","typeLabel":"object"},"billing_url":{"type":"string","format":"uri","description":"Where a person clears this 402 (#32592): pays the overdue invoice (reason payment_overdue) or reactivates the plan (reason subscription_inactive). Present on every 402 subscription_required, omitted on every other error. The message names the same URL; link this field instead of parsing the message.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"},"reason":{"type":"string","enum":["cursor_expired","unknown_endpoint","pick_not_released","trader_not_tracked","market_out_of_scope","read_model_warming","database_unavailable","request_accounting_unavailable","idempotency_in_progress","webhook_delivery_in_progress","webhook_secret_rotation_not_prepared","webhook_secret_rotation_overlap_active","sandbox_api_key","api_key_in_query","subscription_inactive","payment_overdue","monthly_quota_exceeded","invalid_query","unknown_query_parameter","invalid_path","invalid_body","unsupported_media_type","payload_too_large","method_not_allowed","ip_rate_limited","ip_throttled","cold_read_limited","export_expired","freshness_ceiling_unsatisfied","max_plan_required","endpoint_retired"],"description":"ADDITIVE (#7209). The specific, actionable cause behind `code`, when there is one more specific than the code itself. `code` keeps its published values, so existing clients are unaffected; new clients branch on `reason`. Omitted when the code already says everything we know. pick_not_released: no Pick of the Day is published for the current product day; schedule one request against retry_at instead of polling. unknown_endpoint: the PATH is not a route on this API -- read GET /api/v1, do not retry. trader_not_tracked: the wallet is real and the URL is right, but the trader is not on the warm sync tier (the wallets we sync most often) -- stop asking for this wallet. market_out_of_scope (404 not_found, #27303): the market or event is real and the URL is right, but 0xinsider serves sports and esports markets only -- stop asking for this market; neither a retry nor another URL for it can succeed. cursor_expired: pagination went stale mid-walk -- re-request the first page and continue. read_model_warming: the requested endpoint cannot serve its read model yet; exact causes are endpoint-specific and can include a cold or contended refresh or a dependency that prevented refresh. database_unavailable: the API's database or its connection pool is temporarily unreachable (a connection-class failure, not a query fault); code stays rate_limit_unavailable, nothing is rate-limited, retry after Retry-After / retry_at. idempotency_in_progress: retain the exact Idempotency-Key and request body, then retry shortly. webhook_delivery_in_progress: retry the URL or signing-secret configuration change after the destination's active request completes. request_accounting_unavailable: accounting capacity is unavailable before the handler executes; retry after Retry-After / retry_at. sandbox_api_key: the credential is a sandbox key (oxi_sk_test_) from POST /api/v1/agents/register, which only the sandbox server accepts -- call the sandbox base URL with it, or get a live key or OAuth access token; do not retry it here. api_key_in_query: the key was sent as a ?token= query parameter, which no route reads because URLs land in logs and history; the key itself was not checked -- resend it as Authorization: Bearer. subscription_inactive: the key is valid but the account's Pro subscription has lapsed (402 subscription_required); permanent until a person reactivates at https://0xinsider.com/billing, which the message names -- stop retrying on a schedule and surface the link. The key owner is emailed once per lapse. payment_overdue (402 subscription_required, #32592): the key is valid and the account still has its plan, but its latest subscription invoice is unpaid (Stripe past_due or unpaid), so paid access is paused; permanent until a person pays at billing_url (https://0xinsider.com/billing) -- stop retrying on a schedule and surface the link. The key works again the moment the invoice is paid. GET /api/v1/me and GET /api/v1/usage keep answering. monthly_quota_exceeded: the account has used the requests its plan includes for the UTC calendar month (429 rate_limited); retry_at and Retry-After name the first of next month, the only retry that can succeed, and the message names https://0xinsider.com/developers, where pay as you go for requests over the quota is turned on. The X-Monthly-Quota-Limit, X-Monthly-Quota-Remaining and X-Monthly-Quota-Reset headers on every authenticated response say how close the account is. invalid_query, invalid_path, invalid_body (400 bad_request, #16146): a query parameter, a path segment or the JSON body did not parse or does not fit the route's schema, so no handler ran; param names the field when the parser named one (a query key, a path segment, a JSON path such as traders[0], or body); fix the request, never retry it as sent. unsupported_media_type (415 bad_request, param content-type): send the body with Content-Type: application/json. payload_too_large (413 bad_request, param body): the body is over 1048576 bytes. method_not_allowed (405 bad_request): the path is a route but not with this method; the Allow header names the methods it serves. ip_rate_limited (429 rate_limited, #16380): the per-address budget every caller behind one IP shares, counted before authentication, is spent; not the key's own window, and the RateLimit-* headers describe that bucket. ip_throttled (429 rate_limited): the address is in a cooldown after sustained over-limit traffic; Retry-After is minutes to days, and a request before it does not shorten the cooldown. cold_read_limited (429 rate_limited, #28752): the account has used its share of cold reads on GET /api/v1/market/{condition_id}/holders, requests for a market whose roster is not cached, each of which walks Polymarket (6 a minute, in bursts of up to 400); not the per-minute window, so a cached market still answers, and the next cold read is admitted at Retry-After. max_plan_required (403 forbidden, #23085): the key is valid and its account is on Pro, but the route is part of Max (GET /api/v1/edge-hunter); every Pro route keeps working with the same key, so do not disable it. The message names https://0xinsider.com/pricing, where the account upgrades; a retry never clears it. endpoint_retired (410): this legacy sports endpoint no longer serves data. Migrate to GET /api/v1/edge-hunter; retrying the retired path cannot succeed.","uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","required":["request_id","cached","cost"],"properties":{"request_id":{"type":"string","description":"Unique request ID (req_ prefix). The same value as the X-Request-Id response header, the request's usage accounting row and its log lines.","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"meta.cached","typeLabel":"boolean"},"cost":{"type":"integer","description":"Advisory request weight (relative compute cost). 1 for simple reads; higher for heavier endpoints. Not a credit/price.","isRequired":true,"uniqueKey":"meta.cost","typeLabel":"integer"},"cache_age_s":{"type":"integer","description":"Cache age in seconds. Omitted when the response was not cached, and also when it was cached but its age cannot be established (an entry stored before its cache carried a computed instant). Never a placeholder: an unknown age is reported as no value rather than as the cache TTL.","uniqueKey":"meta.cache_age_s","typeLabel":"integer"},"ranking_generation":{"type":"integer","description":"Committed PostgreSQL-owned leaderboard generation for the returned rows and cursor. Present on GET /api/v1/leaderboard; omitted on endpoints that do not read this ranking.","uniqueKey":"meta.ranking_generation","typeLabel":"integer"},"ranking_as_of":{"type":"string","format":"date-time","description":"Authoritative RFC3339 timestamp from cache_generations.updated_at for ranking_generation. It is read in the same repeatable-read snapshot as the leaderboard rows and is not request time, cache write time, or row insertion order.","uniqueKey":"meta.ranking_as_of","typeLabel":"string\u003cdate-time>"},"directional_source":{"type":"string","enum":["live","degraded"],"description":"Directional evidence provenance for Edge Hunter signals collections. The default board carries this provenance in data.directional_source and omits this optional meta field.","uniqueKey":"meta.directional_source","typeLabel":"enum\u003cstring>"},"ranking_source":{"type":"string","enum":["live","db_only"],"description":"Ranking evidence provenance for Edge Hunter signals collections. The default board carries this clock/provenance in data.ranking_source and omits this optional meta field.","uniqueKey":"meta.ranking_source","typeLabel":"enum\u003cstring>"},"category_skill_source":{"type":"string","enum":["live","partial","degraded","unavailable"],"description":"Whole filtered snapshot category-evidence status before pagination. Operational live always remains partial source coverage.","uniqueKey":"meta.category_skill_source","typeLabel":"enum\u003cstring>"},"category_skill_model_version":{"type":"string","uniqueKey":"meta.category_skill_model_version","typeLabel":"string"},"category_skill_taxonomy_version":{"type":"string","uniqueKey":"meta.category_skill_taxonomy_version","typeLabel":"string"},"category_skill_platform":{"type":"string","const":"polymarket","uniqueKey":"meta.category_skill_platform","typeLabel":"string"},"category_skill_scope":{"type":"string","const":"observed_goldsky_primary_taker_fill","uniqueKey":"meta.category_skill_scope","typeLabel":"string"},"category_skill_source_coverage":{"type":"string","enum":["partial_whale_threshold_fills","graded_wallet_fills"],"uniqueKey":"meta.category_skill_source_coverage","typeLabel":"enum\u003cstring>"},"category_skill_observation_started_at":{"type":"string","format":"date-time","uniqueKey":"meta.category_skill_observation_started_at","typeLabel":"string\u003cdate-time>"},"category_skill_model_operationally_degraded":{"type":"boolean","description":"Whole-model operational readiness captured with the category model snapshot. Present on category-enriched responses even when the filtered signal list is empty. When true, category_skill_source is degraded and Edge Hunter signals uses the shorter degraded cache TTL.","uniqueKey":"meta.category_skill_model_operationally_degraded","typeLabel":"boolean"},"category_skill_status_counts":{"type":"object","required":["live","insufficient","stale","unknown","degraded"],"properties":{"live":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.live","typeLabel":"integer"},"insufficient":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.insufficient","typeLabel":"integer"},"stale":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.stale","typeLabel":"integer"},"unknown":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.unknown","typeLabel":"integer"},"degraded":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.degraded","typeLabel":"integer"}},"uniqueKey":"meta.category_skill_status_counts","typeLabel":"object"},"category_skill_base_payload_hash":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"SHA-256 of the funded signal membership/order/rank/cursor vector immediately before category-skill enrichment. Edge Hunter signals view only.","uniqueKey":"meta.category_skill_base_payload_hash","typeLabel":"string"},"category_skill_enriched_base_payload_hash":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"Independent SHA-256 recomputation over the same base fields immediately after category-skill enrichment. Equality with category_skill_base_payload_hash proves category-skill enrichment did not change funded inputs. Edge Hunter signals view only.","uniqueKey":"meta.category_skill_enriched_base_payload_hash","typeLabel":"string"}},"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","error":{"code":"bad_request","message":"\u003cstring>","doc_url":"\u003cstring>","param":"\u003cstring>","retry_at":"2023-11-07T05:31:56Z","freshness":{"max_age_s":1,"data_quality_status":"fresh","actual_age_s":1,"as_of":"2023-11-07T05:31:56Z"},"billing_url":"\u003cstring>","reason":"cursor_expired"},"meta":{"request_id":"\u003cstring>","cached":true,"cost":123,"cache_age_s":123,"ranking_generation":123,"ranking_as_of":"2023-11-07T05:31:56Z","directional_source":"live","ranking_source":"live","category_skill_source":"live","category_skill_model_version":"\u003cstring>","category_skill_taxonomy_version":"\u003cstring>","category_skill_platform":"polymarket","category_skill_scope":"observed_goldsky_primary_taker_fill","category_skill_source_coverage":"partial_whale_threshold_fills","category_skill_observation_started_at":"2023-11-07T05:31:56Z","category_skill_model_operationally_degraded":true,"category_skill_status_counts":{"live":1,"insufficient":1,"stale":1,"unknown":1,"degraded":1},"category_skill_base_payload_hash":"\u003cstring>","category_skill_enriched_base_payload_hash":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"dc70dddd-695c-4475-aa37-793fc008318b":{"description":"Integrity refusal: a ledger row failed a consistency check, for example a pending pick that arrived carrying a column that must stay withheld until it settles. The whole response is refused and the row logged, rather than publishing a partial or unsafe record; the body carries a generic message. A database connection failure answers 503 instead.","content":{"application/json":{"schema":{"type":"object","required":["object","error","meta"],"properties":{"object":{"type":"string","const":"error","isRequired":true,"uniqueKey":"object","typeLabel":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"FROZEN: an existing value never changes meaning. request_timeout (408, #16146) was added the way insufficient_scope was: the handler did not answer inside the server's 30-second timeout. Retry-After and retry_at ride on it only for a safe method (GET, HEAD); a timed-out mutation may have completed, so check its state and reuse its Idempotency-Key.","enum":["bad_request","invalid_api_key","subscription_required","forbidden","insufficient_scope","not_found","account_locked","rate_limited","rate_limit_unavailable","internal_error","request_timeout","endpoint_retired"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"retry_at":{"type":"string","format":"date-time","description":"The recommended next request instant (RFC3339), always in the future. Present on every retryable error: `pick_not_released`, `rate_limited`, `rate_limit_unavailable`, and `read_model_warming`. Omitted otherwise. The absolute twin of `Retry-After`; prefer the header for the sleep duration. For `pick_not_released`, the earliest of the next scheduled release, the next automatic selector attempt, the operating-window start, or about 60 seconds. See that response.","uniqueKey":"error.retry_at","typeLabel":"string\u003cdate-time>"},"freshness":{"type":"object","required":["max_age_s","data_quality_status"],"properties":{"max_age_s":{"type":"integer","format":"int64","minimum":0,"description":"The caller's requested whole-response freshness ceiling in seconds.","isRequired":true,"uniqueKey":"error.freshness.max_age_s","typeLabel":"integer\u003cint64>"},"data_quality_status":{"type":"string","enum":["fresh","stale","partial","unknown","untracked","unavailable"],"description":"The trader body's whole-response data-quality status. Only fresh or stale can satisfy max_age_s: the ceiling replaces each writer's own budget, so a stale body inside it is answered.","isRequired":true,"uniqueKey":"error.freshness.data_quality_status","typeLabel":"enum\u003cstring>"},"actual_age_s":{"type":"integer","format":"int64","minimum":0,"description":"Age in seconds of the oldest stored data_quality.as_of clock, when one is available.","uniqueKey":"error.freshness.actual_age_s","typeLabel":"integer\u003cint64>"},"as_of":{"type":"string","format":"date-time","description":"The oldest stored data-quality clock used to calculate actual_age_s, when one is available.","uniqueKey":"error.freshness.as_of","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"error.freshness","typeLabel":"object"},"billing_url":{"type":"string","format":"uri","description":"Where a person clears this 402 (#32592): pays the overdue invoice (reason payment_overdue) or reactivates the plan (reason subscription_inactive). Present on every 402 subscription_required, omitted on every other error. The message names the same URL; link this field instead of parsing the message.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"},"reason":{"type":"string","enum":["cursor_expired","unknown_endpoint","pick_not_released","trader_not_tracked","market_out_of_scope","read_model_warming","database_unavailable","request_accounting_unavailable","idempotency_in_progress","webhook_delivery_in_progress","webhook_secret_rotation_not_prepared","webhook_secret_rotation_overlap_active","sandbox_api_key","api_key_in_query","subscription_inactive","payment_overdue","monthly_quota_exceeded","invalid_query","unknown_query_parameter","invalid_path","invalid_body","unsupported_media_type","payload_too_large","method_not_allowed","ip_rate_limited","ip_throttled","cold_read_limited","export_expired","freshness_ceiling_unsatisfied","max_plan_required","endpoint_retired"],"description":"ADDITIVE (#7209). The specific, actionable cause behind `code`, when there is one more specific than the code itself. `code` keeps its published values, so existing clients are unaffected; new clients branch on `reason`. Omitted when the code already says everything we know. pick_not_released: no Pick of the Day is published for the current product day; schedule one request against retry_at instead of polling. unknown_endpoint: the PATH is not a route on this API -- read GET /api/v1, do not retry. trader_not_tracked: the wallet is real and the URL is right, but the trader is not on the warm sync tier (the wallets we sync most often) -- stop asking for this wallet. market_out_of_scope (404 not_found, #27303): the market or event is real and the URL is right, but 0xinsider serves sports and esports markets only -- stop asking for this market; neither a retry nor another URL for it can succeed. cursor_expired: pagination went stale mid-walk -- re-request the first page and continue. read_model_warming: the requested endpoint cannot serve its read model yet; exact causes are endpoint-specific and can include a cold or contended refresh or a dependency that prevented refresh. database_unavailable: the API's database or its connection pool is temporarily unreachable (a connection-class failure, not a query fault); code stays rate_limit_unavailable, nothing is rate-limited, retry after Retry-After / retry_at. idempotency_in_progress: retain the exact Idempotency-Key and request body, then retry shortly. webhook_delivery_in_progress: retry the URL or signing-secret configuration change after the destination's active request completes. request_accounting_unavailable: accounting capacity is unavailable before the handler executes; retry after Retry-After / retry_at. sandbox_api_key: the credential is a sandbox key (oxi_sk_test_) from POST /api/v1/agents/register, which only the sandbox server accepts -- call the sandbox base URL with it, or get a live key or OAuth access token; do not retry it here. api_key_in_query: the key was sent as a ?token= query parameter, which no route reads because URLs land in logs and history; the key itself was not checked -- resend it as Authorization: Bearer. subscription_inactive: the key is valid but the account's Pro subscription has lapsed (402 subscription_required); permanent until a person reactivates at https://0xinsider.com/billing, which the message names -- stop retrying on a schedule and surface the link. The key owner is emailed once per lapse. payment_overdue (402 subscription_required, #32592): the key is valid and the account still has its plan, but its latest subscription invoice is unpaid (Stripe past_due or unpaid), so paid access is paused; permanent until a person pays at billing_url (https://0xinsider.com/billing) -- stop retrying on a schedule and surface the link. The key works again the moment the invoice is paid. GET /api/v1/me and GET /api/v1/usage keep answering. monthly_quota_exceeded: the account has used the requests its plan includes for the UTC calendar month (429 rate_limited); retry_at and Retry-After name the first of next month, the only retry that can succeed, and the message names https://0xinsider.com/developers, where pay as you go for requests over the quota is turned on. The X-Monthly-Quota-Limit, X-Monthly-Quota-Remaining and X-Monthly-Quota-Reset headers on every authenticated response say how close the account is. invalid_query, invalid_path, invalid_body (400 bad_request, #16146): a query parameter, a path segment or the JSON body did not parse or does not fit the route's schema, so no handler ran; param names the field when the parser named one (a query key, a path segment, a JSON path such as traders[0], or body); fix the request, never retry it as sent. unsupported_media_type (415 bad_request, param content-type): send the body with Content-Type: application/json. payload_too_large (413 bad_request, param body): the body is over 1048576 bytes. method_not_allowed (405 bad_request): the path is a route but not with this method; the Allow header names the methods it serves. ip_rate_limited (429 rate_limited, #16380): the per-address budget every caller behind one IP shares, counted before authentication, is spent; not the key's own window, and the RateLimit-* headers describe that bucket. ip_throttled (429 rate_limited): the address is in a cooldown after sustained over-limit traffic; Retry-After is minutes to days, and a request before it does not shorten the cooldown. cold_read_limited (429 rate_limited, #28752): the account has used its share of cold reads on GET /api/v1/market/{condition_id}/holders, requests for a market whose roster is not cached, each of which walks Polymarket (6 a minute, in bursts of up to 400); not the per-minute window, so a cached market still answers, and the next cold read is admitted at Retry-After. max_plan_required (403 forbidden, #23085): the key is valid and its account is on Pro, but the route is part of Max (GET /api/v1/edge-hunter); every Pro route keeps working with the same key, so do not disable it. The message names https://0xinsider.com/pricing, where the account upgrades; a retry never clears it. endpoint_retired (410): this legacy sports endpoint no longer serves data. Migrate to GET /api/v1/edge-hunter; retrying the retired path cannot succeed.","uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","required":["request_id","cached","cost"],"properties":{"request_id":{"type":"string","description":"Unique request ID (req_ prefix). The same value as the X-Request-Id response header, the request's usage accounting row and its log lines.","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"meta.cached","typeLabel":"boolean"},"cost":{"type":"integer","description":"Advisory request weight (relative compute cost). 1 for simple reads; higher for heavier endpoints. Not a credit/price.","isRequired":true,"uniqueKey":"meta.cost","typeLabel":"integer"},"cache_age_s":{"type":"integer","description":"Cache age in seconds. Omitted when the response was not cached, and also when it was cached but its age cannot be established (an entry stored before its cache carried a computed instant). Never a placeholder: an unknown age is reported as no value rather than as the cache TTL.","uniqueKey":"meta.cache_age_s","typeLabel":"integer"},"ranking_generation":{"type":"integer","description":"Committed PostgreSQL-owned leaderboard generation for the returned rows and cursor. Present on GET /api/v1/leaderboard; omitted on endpoints that do not read this ranking.","uniqueKey":"meta.ranking_generation","typeLabel":"integer"},"ranking_as_of":{"type":"string","format":"date-time","description":"Authoritative RFC3339 timestamp from cache_generations.updated_at for ranking_generation. It is read in the same repeatable-read snapshot as the leaderboard rows and is not request time, cache write time, or row insertion order.","uniqueKey":"meta.ranking_as_of","typeLabel":"string\u003cdate-time>"},"directional_source":{"type":"string","enum":["live","degraded"],"description":"Directional evidence provenance for Edge Hunter signals collections. The default board carries this provenance in data.directional_source and omits this optional meta field.","uniqueKey":"meta.directional_source","typeLabel":"enum\u003cstring>"},"ranking_source":{"type":"string","enum":["live","db_only"],"description":"Ranking evidence provenance for Edge Hunter signals collections. The default board carries this clock/provenance in data.ranking_source and omits this optional meta field.","uniqueKey":"meta.ranking_source","typeLabel":"enum\u003cstring>"},"category_skill_source":{"type":"string","enum":["live","partial","degraded","unavailable"],"description":"Whole filtered snapshot category-evidence status before pagination. Operational live always remains partial source coverage.","uniqueKey":"meta.category_skill_source","typeLabel":"enum\u003cstring>"},"category_skill_model_version":{"type":"string","uniqueKey":"meta.category_skill_model_version","typeLabel":"string"},"category_skill_taxonomy_version":{"type":"string","uniqueKey":"meta.category_skill_taxonomy_version","typeLabel":"string"},"category_skill_platform":{"type":"string","const":"polymarket","uniqueKey":"meta.category_skill_platform","typeLabel":"string"},"category_skill_scope":{"type":"string","const":"observed_goldsky_primary_taker_fill","uniqueKey":"meta.category_skill_scope","typeLabel":"string"},"category_skill_source_coverage":{"type":"string","enum":["partial_whale_threshold_fills","graded_wallet_fills"],"uniqueKey":"meta.category_skill_source_coverage","typeLabel":"enum\u003cstring>"},"category_skill_observation_started_at":{"type":"string","format":"date-time","uniqueKey":"meta.category_skill_observation_started_at","typeLabel":"string\u003cdate-time>"},"category_skill_model_operationally_degraded":{"type":"boolean","description":"Whole-model operational readiness captured with the category model snapshot. Present on category-enriched responses even when the filtered signal list is empty. When true, category_skill_source is degraded and Edge Hunter signals uses the shorter degraded cache TTL.","uniqueKey":"meta.category_skill_model_operationally_degraded","typeLabel":"boolean"},"category_skill_status_counts":{"type":"object","required":["live","insufficient","stale","unknown","degraded"],"properties":{"live":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.live","typeLabel":"integer"},"insufficient":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.insufficient","typeLabel":"integer"},"stale":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.stale","typeLabel":"integer"},"unknown":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.unknown","typeLabel":"integer"},"degraded":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.degraded","typeLabel":"integer"}},"uniqueKey":"meta.category_skill_status_counts","typeLabel":"object"},"category_skill_base_payload_hash":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"SHA-256 of the funded signal membership/order/rank/cursor vector immediately before category-skill enrichment. Edge Hunter signals view only.","uniqueKey":"meta.category_skill_base_payload_hash","typeLabel":"string"},"category_skill_enriched_base_payload_hash":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"Independent SHA-256 recomputation over the same base fields immediately after category-skill enrichment. Equality with category_skill_base_payload_hash proves category-skill enrichment did not change funded inputs. Edge Hunter signals view only.","uniqueKey":"meta.category_skill_enriched_base_payload_hash","typeLabel":"string"}},"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","error":{"code":"bad_request","message":"\u003cstring>","doc_url":"\u003cstring>","param":"\u003cstring>","retry_at":"2023-11-07T05:31:56Z","freshness":{"max_age_s":1,"data_quality_status":"fresh","actual_age_s":1,"as_of":"2023-11-07T05:31:56Z"},"billing_url":"\u003cstring>","reason":"cursor_expired"},"meta":{"request_id":"\u003cstring>","cached":true,"cost":123,"cache_age_s":123,"ranking_generation":123,"ranking_as_of":"2023-11-07T05:31:56Z","directional_source":"live","ranking_source":"live","category_skill_source":"live","category_skill_model_version":"\u003cstring>","category_skill_taxonomy_version":"\u003cstring>","category_skill_platform":"polymarket","category_skill_scope":"observed_goldsky_primary_taker_fill","category_skill_source_coverage":"partial_whale_threshold_fills","category_skill_observation_started_at":"2023-11-07T05:31:56Z","category_skill_model_operationally_degraded":true,"category_skill_status_counts":{"live":1,"insufficient":1,"stale":1,"unknown":1,"degraded":1},"category_skill_base_payload_hash":"\u003cstring>","category_skill_enriched_base_payload_hash":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"e2196959-6cea-413f-b9aa-4ebdbc870021":{"description":"Redis-backed authenticated rate limiter unavailable; retry after the per-process outage cooldown","headers":{"Retry-After":{"description":"Seconds until the middleware will probe the Redis-backed rate limiter again.","schema":{"type":"integer"}},"X-Request-Id":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["object","error","meta"],"properties":{"object":{"type":"string","const":"error","isRequired":true,"uniqueKey":"object","typeLabel":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"FROZEN: an existing value never changes meaning. request_timeout (408, #16146) was added the way insufficient_scope was: the handler did not answer inside the server's 30-second timeout. Retry-After and retry_at ride on it only for a safe method (GET, HEAD); a timed-out mutation may have completed, so check its state and reuse its Idempotency-Key.","enum":["bad_request","invalid_api_key","subscription_required","forbidden","insufficient_scope","not_found","account_locked","rate_limited","rate_limit_unavailable","internal_error","request_timeout","endpoint_retired"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"},"retry_at":{"type":"string","format":"date-time","description":"The recommended next request instant (RFC3339), always in the future. Present on every retryable error: `pick_not_released`, `rate_limited`, `rate_limit_unavailable`, and `read_model_warming`. Omitted otherwise. The absolute twin of `Retry-After`; prefer the header for the sleep duration. For `pick_not_released`, the earliest of the next scheduled release, the next automatic selector attempt, the operating-window start, or about 60 seconds. See that response.","uniqueKey":"error.retry_at","typeLabel":"string\u003cdate-time>"},"freshness":{"type":"object","required":["max_age_s","data_quality_status"],"properties":{"max_age_s":{"type":"integer","format":"int64","minimum":0,"description":"The caller's requested whole-response freshness ceiling in seconds.","isRequired":true,"uniqueKey":"error.freshness.max_age_s","typeLabel":"integer\u003cint64>"},"data_quality_status":{"type":"string","enum":["fresh","stale","partial","unknown","untracked","unavailable"],"description":"The trader body's whole-response data-quality status. Only fresh or stale can satisfy max_age_s: the ceiling replaces each writer's own budget, so a stale body inside it is answered.","isRequired":true,"uniqueKey":"error.freshness.data_quality_status","typeLabel":"enum\u003cstring>"},"actual_age_s":{"type":"integer","format":"int64","minimum":0,"description":"Age in seconds of the oldest stored data_quality.as_of clock, when one is available.","uniqueKey":"error.freshness.actual_age_s","typeLabel":"integer\u003cint64>"},"as_of":{"type":"string","format":"date-time","description":"The oldest stored data-quality clock used to calculate actual_age_s, when one is available.","uniqueKey":"error.freshness.as_of","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"error.freshness","typeLabel":"object"},"billing_url":{"type":"string","format":"uri","description":"Where a person clears this 402 (#32592): pays the overdue invoice (reason payment_overdue) or reactivates the plan (reason subscription_inactive). Present on every 402 subscription_required, omitted on every other error. The message names the same URL; link this field instead of parsing the message.","uniqueKey":"error.billing_url","typeLabel":"string\u003curi>"},"reason":{"type":"string","enum":["cursor_expired","unknown_endpoint","pick_not_released","trader_not_tracked","market_out_of_scope","read_model_warming","database_unavailable","request_accounting_unavailable","idempotency_in_progress","webhook_delivery_in_progress","webhook_secret_rotation_not_prepared","webhook_secret_rotation_overlap_active","sandbox_api_key","api_key_in_query","subscription_inactive","payment_overdue","monthly_quota_exceeded","invalid_query","unknown_query_parameter","invalid_path","invalid_body","unsupported_media_type","payload_too_large","method_not_allowed","ip_rate_limited","ip_throttled","cold_read_limited","export_expired","freshness_ceiling_unsatisfied","max_plan_required","endpoint_retired"],"description":"ADDITIVE (#7209). The specific, actionable cause behind `code`, when there is one more specific than the code itself. `code` keeps its published values, so existing clients are unaffected; new clients branch on `reason`. Omitted when the code already says everything we know. pick_not_released: no Pick of the Day is published for the current product day; schedule one request against retry_at instead of polling. unknown_endpoint: the PATH is not a route on this API -- read GET /api/v1, do not retry. trader_not_tracked: the wallet is real and the URL is right, but the trader is not on the warm sync tier (the wallets we sync most often) -- stop asking for this wallet. market_out_of_scope (404 not_found, #27303): the market or event is real and the URL is right, but 0xinsider serves sports and esports markets only -- stop asking for this market; neither a retry nor another URL for it can succeed. cursor_expired: pagination went stale mid-walk -- re-request the first page and continue. read_model_warming: the requested endpoint cannot serve its read model yet; exact causes are endpoint-specific and can include a cold or contended refresh or a dependency that prevented refresh. database_unavailable: the API's database or its connection pool is temporarily unreachable (a connection-class failure, not a query fault); code stays rate_limit_unavailable, nothing is rate-limited, retry after Retry-After / retry_at. idempotency_in_progress: retain the exact Idempotency-Key and request body, then retry shortly. webhook_delivery_in_progress: retry the URL or signing-secret configuration change after the destination's active request completes. request_accounting_unavailable: accounting capacity is unavailable before the handler executes; retry after Retry-After / retry_at. sandbox_api_key: the credential is a sandbox key (oxi_sk_test_) from POST /api/v1/agents/register, which only the sandbox server accepts -- call the sandbox base URL with it, or get a live key or OAuth access token; do not retry it here. api_key_in_query: the key was sent as a ?token= query parameter, which no route reads because URLs land in logs and history; the key itself was not checked -- resend it as Authorization: Bearer. subscription_inactive: the key is valid but the account's Pro subscription has lapsed (402 subscription_required); permanent until a person reactivates at https://0xinsider.com/billing, which the message names -- stop retrying on a schedule and surface the link. The key owner is emailed once per lapse. payment_overdue (402 subscription_required, #32592): the key is valid and the account still has its plan, but its latest subscription invoice is unpaid (Stripe past_due or unpaid), so paid access is paused; permanent until a person pays at billing_url (https://0xinsider.com/billing) -- stop retrying on a schedule and surface the link. The key works again the moment the invoice is paid. GET /api/v1/me and GET /api/v1/usage keep answering. monthly_quota_exceeded: the account has used the requests its plan includes for the UTC calendar month (429 rate_limited); retry_at and Retry-After name the first of next month, the only retry that can succeed, and the message names https://0xinsider.com/developers, where pay as you go for requests over the quota is turned on. The X-Monthly-Quota-Limit, X-Monthly-Quota-Remaining and X-Monthly-Quota-Reset headers on every authenticated response say how close the account is. invalid_query, invalid_path, invalid_body (400 bad_request, #16146): a query parameter, a path segment or the JSON body did not parse or does not fit the route's schema, so no handler ran; param names the field when the parser named one (a query key, a path segment, a JSON path such as traders[0], or body); fix the request, never retry it as sent. unsupported_media_type (415 bad_request, param content-type): send the body with Content-Type: application/json. payload_too_large (413 bad_request, param body): the body is over 1048576 bytes. method_not_allowed (405 bad_request): the path is a route but not with this method; the Allow header names the methods it serves. ip_rate_limited (429 rate_limited, #16380): the per-address budget every caller behind one IP shares, counted before authentication, is spent; not the key's own window, and the RateLimit-* headers describe that bucket. ip_throttled (429 rate_limited): the address is in a cooldown after sustained over-limit traffic; Retry-After is minutes to days, and a request before it does not shorten the cooldown. cold_read_limited (429 rate_limited, #28752): the account has used its share of cold reads on GET /api/v1/market/{condition_id}/holders, requests for a market whose roster is not cached, each of which walks Polymarket (6 a minute, in bursts of up to 400); not the per-minute window, so a cached market still answers, and the next cold read is admitted at Retry-After. max_plan_required (403 forbidden, #23085): the key is valid and its account is on Pro, but the route is part of Max (GET /api/v1/edge-hunter); every Pro route keeps working with the same key, so do not disable it. The message names https://0xinsider.com/pricing, where the account upgrades; a retry never clears it. endpoint_retired (410): this legacy sports endpoint no longer serves data. Migrate to GET /api/v1/edge-hunter; retrying the retired path cannot succeed.","uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","required":["request_id","cached","cost"],"properties":{"request_id":{"type":"string","description":"Unique request ID (req_ prefix). The same value as the X-Request-Id response header, the request's usage accounting row and its log lines.","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string"},"cached":{"type":"boolean","isRequired":true,"uniqueKey":"meta.cached","typeLabel":"boolean"},"cost":{"type":"integer","description":"Advisory request weight (relative compute cost). 1 for simple reads; higher for heavier endpoints. Not a credit/price.","isRequired":true,"uniqueKey":"meta.cost","typeLabel":"integer"},"cache_age_s":{"type":"integer","description":"Cache age in seconds. Omitted when the response was not cached, and also when it was cached but its age cannot be established (an entry stored before its cache carried a computed instant). Never a placeholder: an unknown age is reported as no value rather than as the cache TTL.","uniqueKey":"meta.cache_age_s","typeLabel":"integer"},"ranking_generation":{"type":"integer","description":"Committed PostgreSQL-owned leaderboard generation for the returned rows and cursor. Present on GET /api/v1/leaderboard; omitted on endpoints that do not read this ranking.","uniqueKey":"meta.ranking_generation","typeLabel":"integer"},"ranking_as_of":{"type":"string","format":"date-time","description":"Authoritative RFC3339 timestamp from cache_generations.updated_at for ranking_generation. It is read in the same repeatable-read snapshot as the leaderboard rows and is not request time, cache write time, or row insertion order.","uniqueKey":"meta.ranking_as_of","typeLabel":"string\u003cdate-time>"},"directional_source":{"type":"string","enum":["live","degraded"],"description":"Directional evidence provenance for Edge Hunter signals collections. The default board carries this provenance in data.directional_source and omits this optional meta field.","uniqueKey":"meta.directional_source","typeLabel":"enum\u003cstring>"},"ranking_source":{"type":"string","enum":["live","db_only"],"description":"Ranking evidence provenance for Edge Hunter signals collections. The default board carries this clock/provenance in data.ranking_source and omits this optional meta field.","uniqueKey":"meta.ranking_source","typeLabel":"enum\u003cstring>"},"category_skill_source":{"type":"string","enum":["live","partial","degraded","unavailable"],"description":"Whole filtered snapshot category-evidence status before pagination. Operational live always remains partial source coverage.","uniqueKey":"meta.category_skill_source","typeLabel":"enum\u003cstring>"},"category_skill_model_version":{"type":"string","uniqueKey":"meta.category_skill_model_version","typeLabel":"string"},"category_skill_taxonomy_version":{"type":"string","uniqueKey":"meta.category_skill_taxonomy_version","typeLabel":"string"},"category_skill_platform":{"type":"string","const":"polymarket","uniqueKey":"meta.category_skill_platform","typeLabel":"string"},"category_skill_scope":{"type":"string","const":"observed_goldsky_primary_taker_fill","uniqueKey":"meta.category_skill_scope","typeLabel":"string"},"category_skill_source_coverage":{"type":"string","enum":["partial_whale_threshold_fills","graded_wallet_fills"],"uniqueKey":"meta.category_skill_source_coverage","typeLabel":"enum\u003cstring>"},"category_skill_observation_started_at":{"type":"string","format":"date-time","uniqueKey":"meta.category_skill_observation_started_at","typeLabel":"string\u003cdate-time>"},"category_skill_model_operationally_degraded":{"type":"boolean","description":"Whole-model operational readiness captured with the category model snapshot. Present on category-enriched responses even when the filtered signal list is empty. When true, category_skill_source is degraded and Edge Hunter signals uses the shorter degraded cache TTL.","uniqueKey":"meta.category_skill_model_operationally_degraded","typeLabel":"boolean"},"category_skill_status_counts":{"type":"object","required":["live","insufficient","stale","unknown","degraded"],"properties":{"live":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.live","typeLabel":"integer"},"insufficient":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.insufficient","typeLabel":"integer"},"stale":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.stale","typeLabel":"integer"},"unknown":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.unknown","typeLabel":"integer"},"degraded":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"meta.category_skill_status_counts.degraded","typeLabel":"integer"}},"uniqueKey":"meta.category_skill_status_counts","typeLabel":"object"},"category_skill_base_payload_hash":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"SHA-256 of the funded signal membership/order/rank/cursor vector immediately before category-skill enrichment. Edge Hunter signals view only.","uniqueKey":"meta.category_skill_base_payload_hash","typeLabel":"string"},"category_skill_enriched_base_payload_hash":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"Independent SHA-256 recomputation over the same base fields immediately after category-skill enrichment. Equality with category_skill_base_payload_hash proves category-skill enrichment did not change funded inputs. Edge Hunter signals view only.","uniqueKey":"meta.category_skill_enriched_base_payload_hash","typeLabel":"string"}},"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","error":{"code":"bad_request","message":"\u003cstring>","doc_url":"\u003cstring>","param":"\u003cstring>","retry_at":"2023-11-07T05:31:56Z","freshness":{"max_age_s":1,"data_quality_status":"fresh","actual_age_s":1,"as_of":"2023-11-07T05:31:56Z"},"billing_url":"\u003cstring>","reason":"cursor_expired"},"meta":{"request_id":"\u003cstring>","cached":true,"cost":123,"cache_age_s":123,"ranking_generation":123,"ranking_as_of":"2023-11-07T05:31:56Z","directional_source":"live","ranking_source":"live","category_skill_source":"live","category_skill_model_version":"\u003cstring>","category_skill_taxonomy_version":"\u003cstring>","category_skill_platform":"polymarket","category_skill_scope":"observed_goldsky_primary_taker_fill","category_skill_source_coverage":"partial_whale_threshold_fills","category_skill_observation_started_at":"2023-11-07T05:31:56Z","category_skill_model_operationally_degraded":true,"category_skill_status_counts":{"live":1,"insufficient":1,"stale":1,"unknown":1,"degraded":1},"category_skill_base_payload_hash":"\u003cstring>","category_skill_enriched_base_payload_hash":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{},"servers":{"3c54bf91-5931-4abe-827d-b3a31ddf4885":{"url":"https://api.0xinsider.com","description":"Production (live data). Authenticate with a live key (oxi_sk_live_...); requires an active Pro subscription. A sandbox key (oxi_sk_test_...) is answered with 401 invalid_api_key and error.reason sandbox_api_key."},"155f76df-7ffd-4940-8c22-066e4ccb34a9":{"url":"https://0xinsider.com/sandbox","description":"Sandbox. No credential required and no production data: every documented operation answers with its documented example or a deterministic sample of its response schema. GET /api/v1/stream is the one exclusion and answers 400 there, because a Server-Sent Events stream is a live connection rather than a body. Add ?sandbox_status=\u003ccode> to receive one of the error responses the operation documents (for example 429 with Retry-After). Documented query parameters and JSON request bodies are checked against this document, the two context.md routes answer 200 text/markdown, GET /api/v1/trader/{address}/export/download answers its 302 with a Location the sandbox serves itself rather than an object store, and nothing is stored between requests. A sandbox key (oxi_sk_test_..., issued with no account by POST https://api.0xinsider.com/api/v1/agents/register) is optional: on an operation that requires a credential, a well-formed key is answered with X-Oxi-Sandbox-Key: valid and a malformed one with 401 invalid_api_key."}}},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"0xinsider","siteName":"0xinsider API","title":"Pick of the Day ledger - 0xinsider API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T02:49:37.372Z","originalFileLocation":"api-reference/endpoint/get-pick-of-the-day-ledger.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;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=\"system\"}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=\"Read pick commitments and revealed payloads to verify that a settled pick is unchanged.\">\u003cmeta data-mint-head name=\"application-name\" content=\"0xinsider 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/0xinsider/iPhECHy4zq6L0ogA/_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/0xinsider/iPhECHy4zq6L0ogA/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/0xinsider/iPhECHy4zq6L0ogA/_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/0xinsider/iPhECHy4zq6L0ogA/_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/0xinsider/iPhECHy4zq6L0ogA/_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/0xinsider/iPhECHy4zq6L0ogA/_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/0xinsider/iPhECHy4zq6L0ogA/_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/0xinsider/iPhECHy4zq6L0ogA/_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/0xinsider/iPhECHy4zq6L0ogA/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Pick of the Day ledger - 0xinsider API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Read pick commitments and revealed payloads to verify that a settled pick is unchanged.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"0xinsider API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.0xinsider.com/api-reference/endpoint/get-pick-of-the-day-ledger\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://0xinsider.mintlify.site/_mintlify/api/og/v2?division=Pick+of+the+Day\u0026amp;title=Pick+of+the+Day+ledger\u0026amp;description=Read+pick+commitments+and+revealed+payloads+to+verify+that+a+settled+pick+is+unchanged.\u0026amp;theme=f60be7b65c9764d9e284b0d8\u0026amp;signature=6dd46a8aaebd9f6e15f7c91eb94b79000646286eeaa662a71d01cad8b09abc23\">\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=\"Pick of the Day ledger - 0xinsider API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Read pick commitments and revealed payloads to verify that a settled pick is unchanged.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://0xinsider.mintlify.site/_mintlify/api/og/v2?division=Pick+of+the+Day\u0026amp;title=Pick+of+the+Day+ledger\u0026amp;description=Read+pick+commitments+and+revealed+payloads+to+verify+that+a+settled+pick+is+unchanged.\u0026amp;theme=f60be7b65c9764d9e284b0d8\u0026amp;signature=6dd46a8aaebd9f6e15f7c91eb94b79000646286eeaa662a71d01cad8b09abc23\">\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/0xinsider/iPhECHy4zq6L0ogA/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"0xinsider API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003cmeta data-mint-head name=\"msvalidate.01\" content=\"46E18D97E322917120999977418630DE\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.0xinsider.com/api-reference/endpoint/get-pick-of-the-day-ledger\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/endpoint/get-pick-of-the-day-ledger.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.0xinsider.com/#organization\",\"name\":\"0xinsider API\",\"url\":\"https://docs.0xinsider.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/0xinsider/D5OLZi_kq06wJPfv/logo/light.svg?fit=max\u0026auto=format\u0026n=D5OLZi_kq06wJPfv\u0026q=85\u0026s=5a737b3d5f5bace7059eb57500f3c8ef\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.0xinsider.com#website\",\"name\":\"0xinsider API\",\"url\":\"https://docs.0xinsider.com\",\"publisher\":{\"@id\":\"https://docs.0xinsider.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.0xinsider.com/api-reference/endpoint/get-pick-of-the-day-ledger#webpage\",\"url\":\"https://docs.0xinsider.com/api-reference/endpoint/get-pick-of-the-day-ledger\",\"name\":\"Pick of the Day ledger\",\"description\":\"Read pick commitments and revealed payloads to verify that a settled pick is unchanged.\",\"dateModified\":\"2026-11-04T02:49:37.372Z\",\"isPartOf\":{\"@id\":\"https://docs.0xinsider.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.0xinsider.com/api-reference/endpoint/get-pick-of-the-day-ledger#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.0xinsider.com/api-reference/endpoint/get-pick-of-the-day-ledger#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Pick of the Day\",\"item\":\"https://docs.0xinsider.com/api-reference/endpoint/get-pick-of-the-day\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pick of the Day ledger\",\"item\":\"https://docs.0xinsider.com/api-reference/endpoint/get-pick-of-the-day-ledger\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.0xinsider.com/api-reference/endpoint/get-pick-of-the-day-ledger#apireference\",\"headline\":\"Pick of the Day ledger\",\"name\":\"Pick of the Day ledger\",\"description\":\"Read pick commitments and revealed payloads to verify that a settled pick is unchanged.\",\"url\":\"https://docs.0xinsider.com/api-reference/endpoint/get-pick-of-the-day-ledger\",\"mainEntityOfPage\":{\"@id\":\"https://docs.0xinsider.com/api-reference/endpoint/get-pick-of-the-day-ledger#webpage\"},\"dateModified\":\"2026-11-04T02:49:37.372Z\",\"publisher\":{\"@id\":\"https://docs.0xinsider.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.0xinsider.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"0xinsider API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"0xinsider API","nav":{"global":{"anchors":[{"anchor":"Terminal","icon":"chart-line","href":"https://0xinsider.com"},{"anchor":"Product changelog","icon":"list","href":"https://0xinsider.com/changelog"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"0xinsider API reference","sidebarTitle":"Overview","href":"/api-reference/introduction"}]},{"group":"Edge Hunter","pages":[{"title":"Edge Hunter","sidebarTitle":"Edge Hunter","openapi":"GET /api/v1/edge-hunter","href":"/api-reference/endpoint/get-edge-hunter"}]},{"group":"Objects","pages":[{"title":"Objects","href":"/api-reference/objects"}]},{"group":"Discovery","pages":[{"title":"API discovery","openapi":"GET /api/v1","href":"/api-reference/endpoint/get-api-discovery"},{"title":"Register an agent","openapi":"POST /api/v1/agents/register","href":"/api-reference/endpoint/register-agent"},{"title":"Coverage","openapi":"GET /api/v1/coverage","href":"/api-reference/endpoint/get-coverage"},{"title":"Platforms (deprecated)","openapi":"GET /api/v1/platforms","href":"/api-reference/endpoint/get-platforms"},{"title":"OpenAPI spec","openapi":"GET /api/v1/openapi.json","href":"/api-reference/endpoint/redirect-api-openapi-spec"}]},{"group":"Traders","pages":[{"title":"Trader","openapi":"GET /api/v1/trader/{address}","href":"/api-reference/endpoint/get-trader"},{"title":"Trader context","openapi":"GET /api/v1/trader/{address}/context","href":"/api-reference/endpoint/get-trader-context"},{"title":"Trader context as Markdown","openapi":"GET /api/v1/trader/{address}/context.md","href":"/api-reference/endpoint/get-trader-context-markdown"},{"title":"Trader category records","openapi":"GET /api/v1/trader/{address}/categories","href":"/api-reference/endpoint/get-trader-category-records"},{"title":"Trader grade at a past time","openapi":"GET /api/v1/trader/{address}/grade-at","href":"/api-reference/endpoint/get-trader-grade-at"},{"title":"Trader closing line value","openapi":"GET /api/v1/trader/{address}/clv","href":"/api-reference/endpoint/get-trader-clv"},{"title":"Batch traders","openapi":"POST /api/v1/traders/batch","href":"/api-reference/endpoint/batch-get-traders"},{"title":"Trader P\u0026L","openapi":"GET /api/v1/trader/{address}/pnl","href":"/api-reference/endpoint/get-trader-pnl"},{"title":"Position timeline","openapi":"GET /api/v1/trader/{address}/position-timeline","href":"/api-reference/endpoint/get-position-timeline"},{"title":"Position timeline by trader","openapi":"GET /api/v1/traders/{trader}/position-timeline","href":"/api-reference/endpoint/get-trader-position-timeline"},{"title":"Large positions","openapi":"GET /api/v1/large-positions","href":"/api-reference/endpoint/list-large-positions"},{"title":"Trader export snapshot","openapi":"GET /api/v1/trader/{address}/export","href":"/api-reference/endpoint/get-trader-export-snapshot"},{"title":"Submit a whale dataset","openapi":"POST /api/v1/datasets/whale-trades","href":"/api-reference/endpoint/submit-whale-dataset"},{"title":"Read a whale dataset job","openapi":"GET /api/v1/datasets/whale-trades/{job_id}","href":"/api-reference/endpoint/get-whale-dataset-status"},{"title":"Download a whale dataset","openapi":"GET /api/v1/datasets/whale-trades/{job_id}/download","href":"/api-reference/endpoint/download-whale-dataset"},{"title":"Cancel a whale dataset job","openapi":"POST /api/v1/datasets/whale-trades/{job_id}/cancel","href":"/api-reference/endpoint/cancel-whale-dataset"},{"title":"Submit a trader export","openapi":"POST /api/v1/trader/{address}/export","href":"/api-reference/endpoint/submit-trader-export"},{"title":"Trader export status","openapi":"GET /api/v1/trader/{address}/export/status","href":"/api-reference/endpoint/get-trader-export-status"},{"title":"Download a trader export","openapi":"GET /api/v1/trader/{address}/export/download","href":"/api-reference/endpoint/download-trader-export"},{"title":"Cancel a trader export","openapi":"POST /api/v1/trader/{address}/export/cancel","href":"/api-reference/endpoint/cancel-trader-export"},{"title":"Leaderboard","openapi":"GET /api/v1/leaderboard","href":"/api-reference/endpoint/get-leaderboard"},{"title":"Trending wallets","openapi":"GET /api/v1/leaderboard/trending","href":"/api-reference/endpoint/list-trending-wallets"},{"title":"Leaderboard leagues","openapi":"GET /api/v1/leaderboard/leagues","href":"/api-reference/endpoint/list-leaderboard-leagues"},{"title":"Sport leaderboard","openapi":"GET /api/v1/leaderboard/sports/{sport}","href":"/api-reference/endpoint/get-sport-leaderboard"},{"title":"Category leaderboard","openapi":"GET /api/v1/leaderboard/categories/{slug}","href":"/api-reference/endpoint/get-category-leaderboard"},{"title":"Category leaders","openapi":"GET /api/v1/leaderboard/categories","href":"/api-reference/endpoint/list-category-leaders"}]},{"group":"Positions","pages":[{"title":"Positions","openapi":"GET /api/v1/positions","href":"/api-reference/endpoint/get-positions"}]},{"group":"Combos","pages":[{"title":"Combo fills","openapi":"GET /api/v1/combos/fills","href":"/api-reference/endpoint/list-combo-fills"},{"title":"Combos summary","openapi":"GET /api/v1/combos/summary","href":"/api-reference/endpoint/get-combos-summary"},{"title":"Combo","openapi":"GET /api/v1/combos/{condition_id}","href":"/api-reference/endpoint/get-combo"}]},{"group":"Games","pages":[{"title":"List games","openapi":"GET /api/v1/games","href":"/api-reference/endpoint/list-games"},{"title":"Game","openapi":"GET /api/v1/games/{event_slug}","href":"/api-reference/endpoint/get-game"},{"title":"List game markets","openapi":"GET /api/v1/games/{event_slug}/markets","href":"/api-reference/endpoint/list-game-markets"},{"title":"Game sharp money","openapi":"GET /api/v1/games/{event_slug}/sharp-money","href":"/api-reference/endpoint/get-game-sharp-money"},{"title":"Game trades","openapi":"GET /api/v1/games/{event_slug}/trades","href":"/api-reference/endpoint/list-game-trades"},{"title":"Game holders","openapi":"GET /api/v1/games/{event_slug}/holders","href":"/api-reference/endpoint/get-game-holders"}]},{"group":"Markets","pages":[{"title":"Search markets","openapi":"GET /api/v1/markets/search","href":"/api-reference/endpoint/search-markets"},{"title":"Explore markets","openapi":"GET /api/v1/markets/explore","href":"/api-reference/endpoint/explore-markets"},{"title":"Sharp money flows","openapi":"GET /api/v1/markets/sharp-money-flows","href":"/api-reference/endpoint/sharp-money-flows"},{"title":"Smart money flows","openapi":"GET /api/v1/markets/smart-money-flows","href":"/api-reference/endpoint/smart-money-flows"},{"title":"Market flow","openapi":"GET /api/v1/market/{condition_id}/flow","href":"/api-reference/endpoint/get-market-flow"},{"title":"Batch market flow","openapi":"POST /api/v1/markets/flow/batch","href":"/api-reference/endpoint/batch-get-market-flow"},{"title":"Market intel (deprecated)","openapi":"GET /api/v1/market/{condition_id}/intel","href":"/api-reference/endpoint/get-market-intel"},{"title":"Batch market intel (deprecated)","openapi":"POST /api/v1/markets/intel/batch","href":"/api-reference/endpoint/batch-get-market-intel"},{"title":"Market snapshot","openapi":"GET /api/v1/market/{condition_id}/snapshot","href":"/api-reference/endpoint/get-market-snapshot"},{"title":"Market context as Markdown","openapi":"GET /api/v1/market/{condition_id}/context.md","href":"/api-reference/endpoint/get-market-context-markdown"},{"title":"Market holders","openapi":"GET /api/v1/market/{condition_id}/holders","href":"/api-reference/endpoint/get-market-holders"},{"title":"Market top holders","openapi":"GET /api/v1/market/{condition_id}/top-holders","href":"/api-reference/endpoint/get-market-top-holders"},{"title":"Market closing line","openapi":"GET /api/v1/market/{condition_id}/close","href":"/api-reference/endpoint/get-market-close"},{"title":"Market candles","openapi":"GET /api/v1/market/{condition_id}/candles","href":"/api-reference/endpoint/get-market-candles"},{"title":"Market wallets in and out","openapi":"GET /api/v1/market/{condition_id}/wallets-in-out","href":"/api-reference/endpoint/get-market-wallets-in-out"}]},{"group":"Content","pages":[{"title":"Search content","openapi":"GET /api/v1/content/search","href":"/api-reference/endpoint/search-content"}]},{"group":"Pick of the Day","pages":[{"title":"Pick of the Day","openapi":"GET /api/v1/pick-of-the-day","href":"/api-reference/endpoint/get-pick-of-the-day"},{"title":"Pick of the Day archive","openapi":"GET /api/v1/pick-of-the-day/archive","href":"/api-reference/endpoint/get-pick-of-the-day-archive"},{"title":"Pick of the Day stats","description":"Get the Pick of the Day track record broken down by sport, league, month, price, and market type.","openapi":"GET /api/v1/pick-of-the-day/stats","href":"/api-reference/endpoint/get-pick-of-the-day-stats"},{"title":"Pick of the Day ledger","openapi":"GET /api/v1/pick-of-the-day/ledger","href":"/api-reference/endpoint/get-pick-of-the-day-ledger"},{"title":"Pick of the Day ledger entry","description":"Read one pick's commitment, proof state, and revealed payload using its pick ID.","openapi":"GET /api/v1/pick-of-the-day/ledger/{pick_id}","href":"/api-reference/endpoint/get-pick-of-the-day-ledger-entry"}]},{"group":"Whale trades","pages":[{"title":"Large trades","openapi":"GET /api/v1/large-trades","href":"/api-reference/endpoint/get-large-trades"},{"title":"Large trade","openapi":"GET /api/v1/large-trades/{id}","href":"/api-reference/endpoint/get-large-trade"},{"title":"Large trades history","openapi":"GET /api/v1/large-trades/history","href":"/api-reference/endpoint/get-large-trades-history"},{"title":"Counterparty executions","openapi":"GET /api/v1/large-trades/{id}/counterparties/executions","href":"/api-reference/endpoint/get-large-trade-counterparty-executions"},{"title":"Counterparty makers","openapi":"GET /api/v1/large-trades/{id}/counterparties/executions/{execution_id}/makers","href":"/api-reference/endpoint/get-large-trade-counterparty-makers"},{"title":"Whale trades (deprecated)","openapi":"GET /api/v1/whale-trades","href":"/api-reference/endpoint/get-whale-trades"},{"title":"Whale trade (deprecated)","openapi":"GET /api/v1/whale-trades/{id}","href":"/api-reference/endpoint/get-whale-trade"},{"title":"Whale trades history (deprecated)","openapi":"GET /api/v1/whale-trades/history","href":"/api-reference/endpoint/get-whale-trades-history"},{"title":"Counterparty executions (deprecated)","openapi":"GET /api/v1/whale-trades/{id}/counterparties/executions","href":"/api-reference/endpoint/get-whale-trade-counterparty-executions"},{"title":"Counterparty makers (deprecated)","openapi":"GET /api/v1/whale-trades/{id}/counterparties/executions/{execution_id}/makers","href":"/api-reference/endpoint/get-whale-trade-counterparty-makers"}]},{"group":"Suspicious trades","pages":[{"title":"Suspicious trades","openapi":"GET /api/v1/suspicious-trades","href":"/api-reference/endpoint/get-suspicious-trades"},{"title":"Suspicious trade","openapi":"GET /api/v1/suspicious-trades/{id}","href":"/api-reference/endpoint/get-suspicious-trade"},{"title":"Insider Radar","openapi":"GET /api/v1/insider-radar","href":"/api-reference/endpoint/get-insider-radar"},{"title":"Insider Radar flag","openapi":"GET /api/v1/insider-radar/{id}","href":"/api-reference/endpoint/get-insider-radar-flag"}]},{"group":"Events","pages":[{"title":"Event replay","openapi":"GET /api/v1/events/feed/since","href":"/api-reference/endpoint/get-event-replay-since"}]},{"group":"Streaming","pages":[{"title":"Stream","openapi":"GET /api/v1/stream","href":"/api-reference/endpoint/get-stream"}]},{"group":"Usage","pages":[{"title":"Account identity","openapi":"GET /api/v1/me","href":"/api-reference/endpoint/get-account-identity"},{"title":"Usage","openapi":"GET /api/v1/usage","href":"/api-reference/endpoint/get-usage"}]},{"group":"Webhooks","pages":[{"title":"Webhooks","openapi":"GET /api/v1/webhooks","href":"/api-reference/endpoint/list-webhooks"},{"title":"Webhook events","openapi":"GET /api/v1/webhooks/events","href":"/api-reference/endpoint/list-webhook-events"},{"title":"Create a webhook","openapi":"POST /api/v1/webhooks","href":"/api-reference/endpoint/create-webhook"},{"title":"Webhook","openapi":"GET /api/v1/webhooks/{id}","href":"/api-reference/endpoint/get-webhook"},{"title":"Update a webhook","openapi":"PATCH /api/v1/webhooks/{id}","href":"/api-reference/endpoint/update-webhook"},{"title":"Delete a webhook","openapi":"DELETE /api/v1/webhooks/{id}","href":"/api-reference/endpoint/delete-webhook"},{"title":"Verify a webhook","openapi":"POST /api/v1/webhooks/{id}/verify","href":"/api-reference/endpoint/verify-webhook"},{"title":"Start webhook verification","openapi":"POST /api/v1/webhooks/{id}/verification-attempts","href":"/api-reference/endpoint/create-webhook-verification-attempt"},{"title":"Get webhook verification","openapi":"GET /api/v1/webhooks/{id}/verification-attempts/{attempt_id}","href":"/api-reference/endpoint/get-webhook-verification-attempt"},{"title":"Rotate a webhook secret","openapi":"POST /api/v1/webhooks/{id}/rotate-secret","href":"/api-reference/endpoint/rotate-webhook-secret"},{"title":"Prepare a staged webhook secret","openapi":"POST /api/v1/webhooks/{id}/rotate-secret/prepare","href":"/api-reference/endpoint/prepare-webhook-secret"},{"title":"Activate a staged webhook secret","openapi":"POST /api/v1/webhooks/{id}/rotate-secret/activate","href":"/api-reference/endpoint/activate-webhook-secret"},{"title":"Retire a staged webhook secret","openapi":"POST /api/v1/webhooks/{id}/rotate-secret/retire","href":"/api-reference/endpoint/retire-webhook-secret"},{"title":"Webhook deliveries","openapi":"GET /api/v1/webhooks/{id}/deliveries","href":"/api-reference/endpoint/list-webhook-deliveries"},{"title":"Redeliver a webhook delivery","openapi":"POST /api/v1/webhooks/{id}/deliveries/{delivery_id}/redeliver","href":"/api-reference/endpoint/redeliver-webhook-delivery"}]},{"group":"Webhook events","pages":[{"title":"large_trade_inserted_v2","openapi":"api-reference/openapi.json webhook large_trade_inserted_v2","href":"/api-reference/webhooks/large-trade-inserted-v2"},{"title":"large_trades_inserted","openapi":"api-reference/openapi.json webhook large_trades_inserted","href":"/api-reference/webhooks/large-trades-inserted"},{"title":"whale_trades_inserted","openapi":"api-reference/openapi.json webhook whale_trades_inserted","href":"/api-reference/webhooks/whale-trades-inserted"},{"title":"live_sports_updated","openapi":"api-reference/openapi.json webhook live_sports_updated","href":"/api-reference/webhooks/live-sports-updated"},{"title":"trader_synced","openapi":"api-reference/openapi.json webhook trader_synced","href":"/api-reference/webhooks/trader-synced"},{"title":"whale_trader_synced","openapi":"api-reference/openapi.json webhook whale_trader_synced","href":"/api-reference/webhooks/whale-trader-synced"},{"title":"large_positions_updated","openapi":"api-reference/openapi.json webhook large_positions_updated","href":"/api-reference/webhooks/large-positions-updated"},{"title":"wallet_grade_changed","openapi":"api-reference/openapi.json webhook wallet_grade_changed","href":"/api-reference/webhooks/wallet-grade-changed"},{"title":"suspicious_trade_flagged","openapi":"api-reference/openapi.json webhook suspicious_trade_flagged","href":"/api-reference/webhooks/suspicious-trade-flagged"},{"title":"insider_radar_flag_raised","openapi":"api-reference/openapi.json webhook insider_radar_flag_raised","href":"/api-reference/webhooks/insider-radar-flag-raised"},{"title":"sharp_money_flow_detected","openapi":"api-reference/openapi.json webhook sharp_money_flow_detected","href":"/api-reference/webhooks/sharp-money-flow-detected"},{"title":"smart_money_flow_detected","openapi":"api-reference/openapi.json webhook smart_money_flow_detected","href":"/api-reference/webhooks/smart-money-flow-detected"},{"title":"export_job_ready","openapi":"api-reference/openapi.json webhook export_job_ready","href":"/api-reference/webhooks/export-job-ready"},{"title":"export_job_failed","openapi":"api-reference/openapi.json webhook export_job_failed","href":"/api-reference/webhooks/export-job-failed"},{"title":"export_job_expired","openapi":"api-reference/openapi.json webhook export_job_expired","href":"/api-reference/webhooks/export-job-expired"},{"title":"export_job_cancelled","openapi":"api-reference/openapi.json webhook export_job_cancelled","href":"/api-reference/webhooks/export-job-cancelled"}]},{"group":"Reports","pages":[{"title":"Reports","openapi":"GET /api/v1/reports","href":"/api-reference/endpoint/get-reports"},{"title":"Daily report snapshot","openapi":"GET /api/v1/reports/daily","href":"/api-reference/endpoint/get-daily-report-snapshot"},{"title":"Weekly report snapshot","openapi":"GET /api/v1/reports/weekly","href":"/api-reference/endpoint/get-weekly-report-snapshot"},{"title":"Monthly report snapshot","openapi":"GET /api/v1/reports/monthly","href":"/api-reference/endpoint/get-monthly-report-snapshot"},{"title":"Resolution report","openapi":"GET /api/v1/reports/resolutions","href":"/api-reference/endpoint/get-resolution-report"}]},{"group":"System","pages":[{"title":"Health","openapi":"GET /api/v1/health","href":"/api-reference/endpoint/health"},{"title":"Remote MCP","sidebarTitle":"Remote MCP","openapi":"POST /api/v1/mcp","href":"/api-reference/endpoint/remote-mcp"},{"title":"Remote MCP GET","sidebarTitle":"Remote MCP GET","openapi":"GET /api/v1/mcp","href":"/api-reference/endpoint/remote-mcp-stream"}]},{"group":"Retired endpoints","pages":[{"title":"Sports edge signals (retired)","openapi":"GET /api/v1/sports-edge-signals","href":"/api-reference/endpoint/get-sports-edge-signals"},{"title":"Sports edge observations (retired)","openapi":"GET /api/v1/sports-edge-observations","href":"/api-reference/endpoint/get-sports-edge-observations"},{"title":"Pre-game sides (retired)","openapi":"GET /api/v1/sports/pre-game-sides","href":"/api-reference/endpoint/get-pre-game-sides"},{"title":"Pre-game side observations (retired)","openapi":"GET /api/v1/sports/pre-game-side-observations","href":"/api-reference/endpoint/get-pre-game-side-observations"}]}]},{"tab":"Recipes","pages":[{"title":"Recipes","href":"/recipes/copy-trade"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Pick of the Day ledger - 0xinsider API","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Myd8dsju.js","utils-C2HkQgW0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-8rSppmTv.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B6MjiCFm.js","snippetPresets-DwrSAONL.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-1-a5UQKQ.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C541m7wZ.js","shallow-CWELCZ77.js","getApiPlaygroundDisplay-CTo5Zn03.js","CodeSnippet-D--dzvnl.js","CodeSnippets-DM3cXEDh.js","Page-CxAy5y67.js","getPastedJson-C-VECgcL.js","icon-BPq2-Mg3.js","MethodPill-D9J5cUHd.js","DuplicateIcon-BqHaxUnD.js","createIcon-CIbcZHp9.js","DynamicMarkdown-BKiHAm_d.js","SectionHeading-DstQXt3H.js","axios-vUo_bRtp.js","Markdown-CpxgzsKA.js","clsx-C5EfhVm0.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CJ9Oly2E.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Mk6P3qvh.js"]}