Body: [{token_id}, ...] (PM-compat) or{items: [{token_id}, ...]} (legacy wrapped form). Returns one
full OrderBookSnapshot per token (PM-compat shape including
market, asset_id, hash, tick_size, neg_risk,
last_trade_price). Tokens with no book are omitted from the
response (rather than returning empty snapshots — saves SDK-side
filtering).
A single blank/whitespace token_id among otherwise valid ids
rejects the whole batch with 400 INVALID_TOKEN_ID.
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"PolySimulator","description":"Virtual prediction market trading API — practice with real Polymarket data and simulated money.","colors":{"primary":"#00d26a","light":"#e6fff2","dark":"#0a0f1c"},"logo":{"light":"https://mintcdn.com/polysimulator/g3hLzzd62nMdIToN/logo/polysim-light.svg?fit=max\u0026auto=format\u0026n=g3hLzzd62nMdIToN\u0026q=85\u0026s=510d6e93b34b84b254f2ff702c7f2f11","dark":"https://mintcdn.com/polysimulator/g3hLzzd62nMdIToN/logo/polysim-dark.svg?fit=max\u0026auto=format\u0026n=g3hLzzd62nMdIToN\u0026q=85\u0026s=66470ef617df21d00b93aa5818ac88cb","href":"https://polysimulator.com"},"favicon":"https://mintcdn.com/polysimulator/G-TcC615M002Bemd/favicon.svg?fit=max\u0026auto=format\u0026n=G-TcC615M002Bemd\u0026q=85\u0026s=ea27fd1461a89daeb2375031fae575e4","api":{"playground":{}},"navbar":{"links":[{"href":"https://polysimulator.com/markets","label":"Dashboard"},{"href":"https://github.com/Bavariance/polysimulator-docs","label":"GitHub"}],"primary":{"type":"button","label":"Get API Key","href":"https://polysimulator.com/profile"}},"footer":{"socials":{"github":"https://github.com/Bavariance/polysimulator-docs","x":"https://x.com/PolySimulatorHQ"},"links":[{"header":"Product","items":[{"label":"Markets","href":"https://polysimulator.com/markets"},{"label":"Leaderboard","href":"https://polysimulator.com/leaderboard"}]},{"header":"Developers","items":[{"label":"API Reference","href":"/api-reference"},{"label":"GitHub","href":"https://github.com/Bavariance/polysimulator-docs"}]}]},"seo":{},"errors":{"404":{"redirect":true,"title":"Page Not Found","description":"The page you're looking for doesn't exist. Check the sidebar or search for what you need."}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"polysimulator","hasAudioNarration":false,"actualSubdomain":"polysimulator","customDomains":["docs.polysimulator.com"],"gitSource":{"type":"github","owner":"bavariance","repo":"polysimulator","deployBranch":"staging","contentDirectory":"docs-site","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae2b3c3997fc3d7b2d0f62d","collectionId":"6b44fd4c-86e3-4a78-9943-6cdf1f9efdc4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae2b3c3997fc3d7b2d0f62d"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{},"buildId":"6aeb280a245c712a705a482d","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Reference","count":146},{"language":"default","tag":"Endpoints","count":135},{"language":"default","tag":"Documentation","count":46},{"language":"default","tag":"CLOB Read (Public)","count":17},{"language":"default","tag":"Market Data","count":13},{"language":"default","tag":"Simulation","count":13},{"language":"default","tag":"Account","count":13},{"language":"default","tag":"API Keys","count":9},{"language":"default","tag":"CLOB Compat","count":9},{"language":"default","tag":"Developer Webhooks","count":9}]},"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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/clob-read-public/post-books-batch","slug":"/api-reference/clob-read-public/post-books-batch","pageMetadata":{"title":"Post Books Batch","description":"Polymarket-compat ``POST /books``.\n\nBody: ``[{token_id}, ...]`` (PM-compat) **or**\n``{items: [{token_id}, ...]}`` (legacy wrapped form). Returns one\nfull ``OrderBookSnapshot`` per token (PM-compat shape including\n``market``, ``asset_id``, ``hash``, ``tick_size``, ``neg_risk``,\n``last_trade_price``). Tokens with no book are omitted from the\nresponse (rather than returning empty snapshots — saves SDK-side\nfiltering).\n\nA single blank/whitespace ``token_id`` among otherwise valid ids\nrejects the whole batch with 400 ``INVALID_TOKEN_ID``.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/books","href":"/api-reference/clob-read-public/post-books-batch","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Polymarket-compat \", _jsx(_components.code, {\n children: \"POST /books\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Body: \", _jsx(_components.code, {\n children: \"[{token_id}, ...]\"\n }), \" (PM-compat) \", _jsx(_components.strong, {\n children: \"or\"\n }), \"\\n\", _jsx(_components.code, {\n children: \"{items: [{token_id}, ...]}\"\n }), \" (legacy wrapped form). Returns one\\nfull \", _jsx(_components.code, {\n children: \"OrderBookSnapshot\"\n }), \" per token (PM-compat shape including\\n\", _jsx(_components.code, {\n children: \"market\"\n }), \", \", _jsx(_components.code, {\n children: \"asset_id\"\n }), \", \", _jsx(_components.code, {\n children: \"hash\"\n }), \", \", _jsx(_components.code, {\n children: \"tick_size\"\n }), \", \", _jsx(_components.code, {\n children: \"neg_risk\"\n }), \",\\n\", _jsx(_components.code, {\n children: \"last_trade_price\"\n }), \"). Tokens with no book are omitted from the\\nresponse (rather than returning empty snapshots — saves SDK-side\\nfiltering).\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A single blank/whitespace \", _jsx(_components.code, {\n children: \"token_id\"\n }), \" among otherwise valid ids\\nrejects the whole batch with 400 \", _jsx(_components.code, {\n children: \"INVALID_TOKEN_ID\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Post Books Batch","description":"Polymarket-compat ``POST /books``.\n\nBody: ``[{token_id}, ...]`` (PM-compat) **or**\n``{items: [{token_id}, ...]}`` (legacy wrapped form). Returns one\nfull ``OrderBookSnapshot`` per token (PM-compat shape including\n``market``, ``asset_id``, ``hash``, ``tick_size``, ``neg_risk``,\n``last_trade_price``). Tokens with no book are omitted from the\nresponse (rather than returning empty snapshots — saves SDK-side\nfiltering).\n\nA single blank/whitespace ``token_id`` among otherwise valid ids\nrejects the whole batch with 400 ``INVALID_TOKEN_ID``.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/books","href":"/api-reference/clob-read-public/post-books-batch","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["CLOB Read (Public)","CLOB Read (Public)"],"summary":"Post Books Batch","description":"Polymarket-compat ``POST /books``.\n\nBody: ``[{token_id}, ...]`` (PM-compat) **or**\n``{items: [{token_id}, ...]}`` (legacy wrapped form). Returns one\nfull ``OrderBookSnapshot`` per token (PM-compat shape including\n``market``, ``asset_id``, ``hash``, ``tick_size``, ``neg_risk``,\n``last_trade_price``). Tokens with no book are omitted from the\nresponse (rather than returning empty snapshots — saves SDK-side\nfiltering).\n\nA single blank/whitespace ``token_id`` among otherwise valid ids\nrejects the whole batch with 400 ``INVALID_TOKEN_ID``.","operationId":"getBooks","requestBody":"d6fdf910-c26f-4354-a3ed-19349a23dcdc","responses":{"200":"29ee723a-8c09-4743-be34-d26bf97d2d74","400":"68af85c5-0e75-469e-90b0-fc4b2826bc06","404":"0da72555-eef1-44e6-a7ac-35f362be61f8","422":"253a9db8-31a5-4b98-b204-358f7b61285b","429":"03dad95d-32fe-4009-8448-756567dc8a6f"},"security":[],"method":"post","type":"path","servers":["431ff564-91e2-4aad-b4f5-293c93a4432c","4c86d600-7a98-4c1b-9524-2b542282e88b"],"path":"/v1/books","baseUrlOptions":["https://api.polysimulator.com","https://staging-api.polysimulator.com"],"title":"Post Books Batch","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"BatchTokenIdsRequest","required":["items"],"properties":{"items":{"items":{"properties":{"token_id":{"type":"string","title":"Token Id","isRequired":true,"uniqueKey":"oneOf.0.\\items.items.[INDEX].token_id","typeLabel":"string"}},"type":"object","required":["token_id"],"title":"TokenIdRequest","uniqueKey":"oneOf.0.\\items.items.[INDEX]","typeLabel":"TokenIdRequest · object"},"type":"array","title":"Items","isRequired":true,"uniqueKey":"oneOf.0.\\items","typeLabel":"TokenIdRequest · object[]"}},"uniqueKey":"oneOf.0","typeLabel":"BatchTokenIdsRequest · object"},{"type":"array","items":{"properties":{"token_id":{"type":"string","title":"Token Id","isRequired":true,"uniqueKey":"oneOf.1.items.[INDEX].token_id","typeLabel":"string"}},"type":"object","required":["token_id"],"title":"TokenIdRequest","uniqueKey":"oneOf.1.items.[INDEX]","typeLabel":"TokenIdRequest · object"},"title":"Body","uniqueKey":"oneOf.1","typeLabel":"TokenIdRequest · object[]"}],"uniqueKey":"","typeLabel":"BatchTokenIdsRequest · object | TokenIdRequest · object[]"},"examples":{"Example":{"title":"Example","value":{"items":[{"token_id":"\u003cstring>"}]}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"29ee723a-8c09-4743-be34-d26bf97d2d74":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"properties":{"token_id":{"type":"string","title":"Token Id","isRequired":true,"uniqueKey":"items.[INDEX].token_id","typeLabel":"string"},"bids":{"items":{"properties":{"price":{"type":"string","title":"Price","isRequired":true,"uniqueKey":"items.[INDEX].bids.items.[INDEX].price","typeLabel":"string"},"size":{"type":"string","title":"Size","isRequired":true,"uniqueKey":"items.[INDEX].bids.items.[INDEX].size","typeLabel":"string"}},"type":"object","required":["price","size"],"title":"BookLevel","uniqueKey":"items.[INDEX].bids.items.[INDEX]","typeLabel":"BookLevel · object"},"type":"array","title":"Bids","default":[],"uniqueKey":"items.[INDEX].bids","typeLabel":"BookLevel · object[]"},"asks":{"items":{"properties":{"price":{"type":"string","title":"Price","isRequired":true,"uniqueKey":"items.[INDEX].asks.items.[INDEX].price","typeLabel":"string"},"size":{"type":"string","title":"Size","isRequired":true,"uniqueKey":"items.[INDEX].asks.items.[INDEX].size","typeLabel":"string"}},"type":"object","required":["price","size"],"title":"BookLevel","uniqueKey":"items.[INDEX].asks.items.[INDEX]","typeLabel":"BookLevel · object"},"type":"array","title":"Asks","default":[],"uniqueKey":"items.[INDEX].asks","typeLabel":"BookLevel · object[]"},"timestamp":{"oneOf":[{"type":"string","title":"Timestamp","uniqueKey":"items.[INDEX].timestamp.oneOf.0","typeLabel":"string"},{"type":"null","title":"Timestamp","uniqueKey":"items.[INDEX].timestamp.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].timestamp","typeLabel":"string | null"},"market":{"oneOf":[{"type":"string","title":"Market","uniqueKey":"items.[INDEX].market.oneOf.0","typeLabel":"string"},{"type":"null","title":"Market","uniqueKey":"items.[INDEX].market.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].market","typeLabel":"string | null"},"asset_id":{"oneOf":[{"type":"string","title":"Asset Id","uniqueKey":"items.[INDEX].asset_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Asset Id","uniqueKey":"items.[INDEX].asset_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].asset_id","typeLabel":"string | null"},"hash":{"oneOf":[{"type":"string","title":"Hash","uniqueKey":"items.[INDEX].hash.oneOf.0","typeLabel":"string"},{"type":"null","title":"Hash","uniqueKey":"items.[INDEX].hash.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].hash","typeLabel":"string | null"},"min_order_size":{"oneOf":[{"type":"string","title":"Min Order Size","uniqueKey":"items.[INDEX].min_order_size.oneOf.0","typeLabel":"string"},{"type":"null","title":"Min Order Size","uniqueKey":"items.[INDEX].min_order_size.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].min_order_size","typeLabel":"string | null"},"tick_size":{"oneOf":[{"type":"string","title":"Tick Size","uniqueKey":"items.[INDEX].tick_size.oneOf.0","typeLabel":"string"},{"type":"null","title":"Tick Size","uniqueKey":"items.[INDEX].tick_size.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].tick_size","typeLabel":"string | null"},"neg_risk":{"oneOf":[{"type":"boolean","title":"Neg Risk","uniqueKey":"items.[INDEX].neg_risk.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Neg Risk","uniqueKey":"items.[INDEX].neg_risk.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].neg_risk","typeLabel":"boolean | null"},"last_trade_price":{"oneOf":[{"type":"string","title":"Last Trade Price","uniqueKey":"items.[INDEX].last_trade_price.oneOf.0","typeLabel":"string"},{"type":"null","title":"Last Trade Price","uniqueKey":"items.[INDEX].last_trade_price.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].last_trade_price","typeLabel":"string | null"},"spread":{"oneOf":[{"type":"string","title":"Spread","uniqueKey":"items.[INDEX].spread.oneOf.0","typeLabel":"string"},{"type":"null","title":"Spread","uniqueKey":"items.[INDEX].spread.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].spread","typeLabel":"string | null"},"mid":{"oneOf":[{"type":"string","title":"Mid","uniqueKey":"items.[INDEX].mid.oneOf.0","typeLabel":"string"},{"type":"null","title":"Mid","uniqueKey":"items.[INDEX].mid.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].mid","typeLabel":"string | null"},"stale":{"oneOf":[{"type":"boolean","title":"Stale","uniqueKey":"items.[INDEX].stale.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Stale","uniqueKey":"items.[INDEX].stale.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].stale","typeLabel":"boolean | null"}},"type":"object","required":["token_id"],"title":"OrderBookSnapshot","description":"Polymarket-compat ``OrderBookSummary``.\n\nThe PM-CLOB ``GET /book`` response carries metadata fields\n(``market``, ``asset_id``, ``hash``, ``timestamp``,\n``min_order_size``, ``tick_size``, ``neg_risk``,\n``last_trade_price``) that SDK consumers ported from Polymarket\nclients depend on — particularly ``tick_size`` for client-side\nprice quantization and ``neg_risk`` for routing through the\ncorrect contract. Pre-this-PR the response was a Polysimulator\nminimum (``token_id``, ``bids``, ``asks``, ``spread``, ``mid``)\nthat would silently break PM-ported SDKs at parse time.\n\nThe legacy fields (``spread``, ``mid``) are kept for back-compat\nwith existing Polysimulator SDK consumers who relied on them.\nPolymarket's actual ``/book`` doesn't return either; they're\nPolysimulator extensions and documented as such.","uniqueKey":"items.[INDEX]","typeLabel":"OrderBookSnapshot · object"},"type":"array","title":"Response Getbooks","uniqueKey":"","typeLabel":"OrderBookSnapshot · object[]"},"examples":{"Example":{"title":"Example","value":[{"token_id":"\u003cstring>","bids":[],"asks":[],"timestamp":"\u003cstring>","market":"\u003cstring>","asset_id":"\u003cstring>","hash":"\u003cstring>","min_order_size":"\u003cstring>","tick_size":"\u003cstring>","neg_risk":true,"last_trade_price":"\u003cstring>","spread":"\u003cstring>","mid":"\u003cstring>","stale":true}]}},"exampleType":"generated"}},"headers":{"X-RateLimit-Limit":{"description":"Requests permitted in the current minute window for this key's tier.","schema":{"type":"string"}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current minute window.","schema":{"type":"string"}},"X-RateLimit-Reset":{"description":"Unix-seconds timestamp when the current minute window resets.","schema":{"type":"string"}},"X-Polysim-RateLimit-Limit":{"description":"Alias of X-RateLimit-Limit (requests per minute for this tier).","schema":{"type":"string"}},"X-Polysim-RateLimit-Remaining":{"description":"Alias of X-RateLimit-Remaining (requests remaining this minute).","schema":{"type":"string"}},"X-Polysim-RateLimit-Reset":{"description":"Alias of X-RateLimit-Reset (minute-window reset, unix seconds).","schema":{"type":"string"}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"},"68af85c5-0e75-469e-90b0-fc4b2826bc06":{"description":"Any blank ``token_id`` in the batch — ``{\"error\": \"Invalid token id\"}`` (PM's message verbatim; X-Polysim-Code: INVALID_TOKEN_ID). The whole request is rejected; remaining ids are not processed.","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","description":"Stable machine-readable error code; also returned in X-Polysim-Code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"oneOf":[{"type":"string","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Additional context populated for verbose responses.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Additional context populated for verbose responses.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"}},"type":"object","required":["error"],"title":"ApiError","description":"Structured error response for all API v1 endpoints.\n\n``error`` is the stable machine-readable code and ``message`` is human\nprose. SDK consumers must branch on ``error`` (or the identical\n``X-Polysim-Code`` header), never on ``message``. Diagnostic ``details``\nand the in-body ``request_id`` are added only when callers opt in with\n``X-Polysim-Verbose: true``; ``X-Request-Id`` is always present.","uniqueKey":"","typeLabel":"ApiError · object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","details":{},"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Polysim-Code":{"description":"Stable short code identifying the error class. SDK consumers should branch on this header rather than the body text. Domain codes (INVALID_KEY, MARKET_NOT_FOUND, RATE_LIMIT_EXCEEDED, …) are preferred; HTTP_\u003cstatus> fallbacks ship when no domain code applies. The full list is mirrored in /llms.txt under ‘Error Format’.","schema":{"type":"string","enum":["INVALID_KEY","MISSING_API_KEY","INSUFFICIENT_PERMISSION","INSUFFICIENT_BALANCE","MARKET_CLOSED","INVALID_ORDER_MIN_TICK_SIZE","MARKET_NOT_FOUND","ORDER_NOT_FOUND","RATE_LIMIT_EXCEEDED","BOOK_UNAVAILABLE","INVALID_TOKEN_ID","VALIDATION_FAILED","UPGRADE_REQUIRED","ACCESS_RESTRICTED","COHORT_FULL","AUTH_STATE_INCOMPLETE","INTERNAL_ERROR","TOKEN_NOT_FOUND","INVALID_CURSOR","UPSTREAM_UNAVAILABLE","UNSUPPORTED_ORDER_TYPE","DUPLICATE_CLIENT_ORDER_ID","ORDER_EXECUTION_FAILED","DEADLINE_OVERSHOT_BUT_PERSISTED","PERSISTENCE_UNKNOWN","INVALID_BODY","INVALID_SOURCE","CLOSED_BETA","API_PRO_COMING_SOON","TIER_KEY_LIMIT_EXCEEDED","INVALID_REQUEST","INVALID_WINDOW","BACKTEST_MONTHLY_CAP","BACKTEST_MARKET_CAP","BACKTEST_WINDOW_CAP","SIMULATION_HOURS_EXCEEDED","METERING_UNAVAILABLE","JOB_STORE_UNAVAILABLE","CONDITION_HOUR_NOT_COVERED","ARCHIVE_UNAVAILABLE","ARCHIVE_NOT_FOUND","UNIVERSE_EXCLUDED","IDEMPOTENCY_KEY_REUSE","IDEMPOTENCY_CONFLICT_PENDING","NOT_FOUND","HTTP_400","HTTP_401","HTTP_403","HTTP_404","HTTP_409","HTTP_422","HTTP_429","HTTP_500","HTTP_502","HTTP_503"]}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"},"0da72555-eef1-44e6-a7ac-35f362be61f8":{"description":"Resource not found (market / order / token).","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","description":"Stable machine-readable error code; also returned in X-Polysim-Code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"oneOf":[{"type":"string","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Additional context populated for verbose responses.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Additional context populated for verbose responses.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"}},"type":"object","required":["error"],"title":"ApiError","description":"Structured error response for all API v1 endpoints.\n\n``error`` is the stable machine-readable code and ``message`` is human\nprose. SDK consumers must branch on ``error`` (or the identical\n``X-Polysim-Code`` header), never on ``message``. Diagnostic ``details``\nand the in-body ``request_id`` are added only when callers opt in with\n``X-Polysim-Verbose: true``; ``X-Request-Id`` is always present.","uniqueKey":"","typeLabel":"ApiError · object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","details":{},"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Polysim-Code":{"description":"Stable short code identifying the error class. SDK consumers should branch on this header rather than the body text. Domain codes (INVALID_KEY, MARKET_NOT_FOUND, RATE_LIMIT_EXCEEDED, …) are preferred; HTTP_\u003cstatus> fallbacks ship when no domain code applies. The full list is mirrored in /llms.txt under ‘Error Format’.","schema":{"type":"string","enum":["INVALID_KEY","MISSING_API_KEY","INSUFFICIENT_PERMISSION","INSUFFICIENT_BALANCE","MARKET_CLOSED","INVALID_ORDER_MIN_TICK_SIZE","MARKET_NOT_FOUND","ORDER_NOT_FOUND","RATE_LIMIT_EXCEEDED","BOOK_UNAVAILABLE","INVALID_TOKEN_ID","VALIDATION_FAILED","UPGRADE_REQUIRED","ACCESS_RESTRICTED","COHORT_FULL","AUTH_STATE_INCOMPLETE","INTERNAL_ERROR","TOKEN_NOT_FOUND","INVALID_CURSOR","UPSTREAM_UNAVAILABLE","UNSUPPORTED_ORDER_TYPE","DUPLICATE_CLIENT_ORDER_ID","ORDER_EXECUTION_FAILED","DEADLINE_OVERSHOT_BUT_PERSISTED","PERSISTENCE_UNKNOWN","INVALID_BODY","INVALID_SOURCE","CLOSED_BETA","API_PRO_COMING_SOON","TIER_KEY_LIMIT_EXCEEDED","INVALID_REQUEST","INVALID_WINDOW","BACKTEST_MONTHLY_CAP","BACKTEST_MARKET_CAP","BACKTEST_WINDOW_CAP","SIMULATION_HOURS_EXCEEDED","METERING_UNAVAILABLE","JOB_STORE_UNAVAILABLE","CONDITION_HOUR_NOT_COVERED","ARCHIVE_UNAVAILABLE","ARCHIVE_NOT_FOUND","UNIVERSE_EXCLUDED","IDEMPOTENCY_KEY_REUSE","IDEMPOTENCY_CONFLICT_PENDING","NOT_FOUND","HTTP_400","HTTP_401","HTTP_403","HTTP_404","HTTP_409","HTTP_422","HTTP_429","HTTP_500","HTTP_502","HTTP_503"]}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"},"253a9db8-31a5-4b98-b204-358f7b61285b":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","description":"Stable machine-readable error code; also returned in X-Polysim-Code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"oneOf":[{"type":"string","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Additional context populated for verbose responses.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Additional context populated for verbose responses.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"}},"type":"object","required":["error"],"title":"ApiError","description":"Structured error response for all API v1 endpoints.\n\n``error`` is the stable machine-readable code and ``message`` is human\nprose. SDK consumers must branch on ``error`` (or the identical\n``X-Polysim-Code`` header), never on ``message``. Diagnostic ``details``\nand the in-body ``request_id`` are added only when callers opt in with\n``X-Polysim-Verbose: true``; ``X-Request-Id`` is always present.","uniqueKey":"","typeLabel":"ApiError · object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","details":{},"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Polysim-Code":{"description":"Stable short code identifying the error class. SDK consumers should branch on this header rather than the body text. Domain codes (INVALID_KEY, MARKET_NOT_FOUND, RATE_LIMIT_EXCEEDED, …) are preferred; HTTP_\u003cstatus> fallbacks ship when no domain code applies. The full list is mirrored in /llms.txt under ‘Error Format’.","schema":{"type":"string","enum":["INVALID_KEY","MISSING_API_KEY","INSUFFICIENT_PERMISSION","INSUFFICIENT_BALANCE","MARKET_CLOSED","INVALID_ORDER_MIN_TICK_SIZE","MARKET_NOT_FOUND","ORDER_NOT_FOUND","RATE_LIMIT_EXCEEDED","BOOK_UNAVAILABLE","INVALID_TOKEN_ID","VALIDATION_FAILED","UPGRADE_REQUIRED","ACCESS_RESTRICTED","COHORT_FULL","AUTH_STATE_INCOMPLETE","INTERNAL_ERROR","TOKEN_NOT_FOUND","INVALID_CURSOR","UPSTREAM_UNAVAILABLE","UNSUPPORTED_ORDER_TYPE","DUPLICATE_CLIENT_ORDER_ID","ORDER_EXECUTION_FAILED","DEADLINE_OVERSHOT_BUT_PERSISTED","PERSISTENCE_UNKNOWN","INVALID_BODY","INVALID_SOURCE","CLOSED_BETA","API_PRO_COMING_SOON","TIER_KEY_LIMIT_EXCEEDED","INVALID_REQUEST","INVALID_WINDOW","BACKTEST_MONTHLY_CAP","BACKTEST_MARKET_CAP","BACKTEST_WINDOW_CAP","SIMULATION_HOURS_EXCEEDED","METERING_UNAVAILABLE","JOB_STORE_UNAVAILABLE","CONDITION_HOUR_NOT_COVERED","ARCHIVE_UNAVAILABLE","ARCHIVE_NOT_FOUND","UNIVERSE_EXCLUDED","IDEMPOTENCY_KEY_REUSE","IDEMPOTENCY_CONFLICT_PENDING","NOT_FOUND","HTTP_400","HTTP_401","HTTP_403","HTTP_404","HTTP_409","HTTP_422","HTTP_429","HTTP_500","HTTP_502","HTTP_503"]}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"},"03dad95d-32fe-4009-8448-756567dc8a6f":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","description":"Stable machine-readable error code; also returned in X-Polysim-Code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"oneOf":[{"type":"string","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","description":"Human-readable error description. Never branch on this value.","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Additional context populated for verbose responses.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Additional context populated for verbose responses.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Support correlation id; always returned in X-Request-Id.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"}},"type":"object","required":["error"],"title":"ApiError","description":"Structured error response for all API v1 endpoints.\n\n``error`` is the stable machine-readable code and ``message`` is human\nprose. SDK consumers must branch on ``error`` (or the identical\n``X-Polysim-Code`` header), never on ``message``. Diagnostic ``details``\nand the in-body ``request_id`` are added only when callers opt in with\n``X-Polysim-Verbose: true``; ``X-Request-Id`` is always present.","uniqueKey":"","typeLabel":"ApiError · object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>","details":{},"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"X-Polysim-Code":{"description":"Stable short code identifying the error class. SDK consumers should branch on this header rather than the body text. Domain codes (INVALID_KEY, MARKET_NOT_FOUND, RATE_LIMIT_EXCEEDED, …) are preferred; HTTP_\u003cstatus> fallbacks ship when no domain code applies. The full list is mirrored in /llms.txt under ‘Error Format’.","schema":{"type":"string","enum":["INVALID_KEY","MISSING_API_KEY","INSUFFICIENT_PERMISSION","INSUFFICIENT_BALANCE","MARKET_CLOSED","INVALID_ORDER_MIN_TICK_SIZE","MARKET_NOT_FOUND","ORDER_NOT_FOUND","RATE_LIMIT_EXCEEDED","BOOK_UNAVAILABLE","INVALID_TOKEN_ID","VALIDATION_FAILED","UPGRADE_REQUIRED","ACCESS_RESTRICTED","COHORT_FULL","AUTH_STATE_INCOMPLETE","INTERNAL_ERROR","TOKEN_NOT_FOUND","INVALID_CURSOR","UPSTREAM_UNAVAILABLE","UNSUPPORTED_ORDER_TYPE","DUPLICATE_CLIENT_ORDER_ID","ORDER_EXECUTION_FAILED","DEADLINE_OVERSHOT_BUT_PERSISTED","PERSISTENCE_UNKNOWN","INVALID_BODY","INVALID_SOURCE","CLOSED_BETA","API_PRO_COMING_SOON","TIER_KEY_LIMIT_EXCEEDED","INVALID_REQUEST","INVALID_WINDOW","BACKTEST_MONTHLY_CAP","BACKTEST_MARKET_CAP","BACKTEST_WINDOW_CAP","SIMULATION_HOURS_EXCEEDED","METERING_UNAVAILABLE","JOB_STORE_UNAVAILABLE","CONDITION_HOUR_NOT_COVERED","ARCHIVE_UNAVAILABLE","ARCHIVE_NOT_FOUND","UNIVERSE_EXCLUDED","IDEMPOTENCY_KEY_REUSE","IDEMPOTENCY_CONFLICT_PENDING","NOT_FOUND","HTTP_400","HTTP_401","HTTP_403","HTTP_404","HTTP_409","HTTP_422","HTTP_429","HTTP_500","HTTP_502","HTTP_503"]}},"X-Request-Id":{"description":"Request id for log correlation. Echoes the caller's ``X-Request-Id`` when supplied, otherwise a server-minted UUID. Stamped on every response (success and error).","schema":{"type":"string"}}},"exampleType":"generated"}},"security":{},"servers":{"431ff564-91e2-4aad-b4f5-293c93a4432c":{"url":"https://api.polysimulator.com","description":"Production"},"4c86d600-7a98-4c1b-9524-2b542282e88b":{"url":"https://staging-api.polysimulator.com","description":"Staging"}}},"originalFileLocation":"openapi.json"},"subdomain":"polysimulator","siteName":"PolySimulator","title":"Post Books Batch - PolySimulator","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T00:12:35.274Z","originalFileLocation":"api-reference/clob-read-public/post-books-batch.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=\"Polymarket-compat POST /books. Body: [{token_id}, ...] (PM-compat) or {items: [{token_id}, ...]} (legacy wrapped form). Returns one full OrderBookSnapshot per token (PM-compat shape including market, asset_id, hash, tick_size, neg_risk, last_trade_price). Tokens with no book are omitted from the response (rather than returning empty snapshots — saves SDK-side filtering). A single blank/whitespace token_id among otherwise valid ids rejects the whole batch with 400 INVALID_TOKEN_ID.\">\u003cmeta data-mint-head name=\"application-name\" content=\"PolySimulator\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_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/polysimulator/Z7O8VINNN1g3IFN9/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Post Books Batch - PolySimulator\">\u003cmeta data-mint-head property=\"og:description\" content=\"Polymarket-compat POST /books. Body: [{token_id}, ...] (PM-compat) or {items: [{token_id}, ...]} (legacy wrapped form). Returns one full OrderBookSnapshot per token (PM-compat shape including market, asset_id, hash, tick_size, neg_risk, last_trade_price). Tokens with no book are omitted from the response (rather than returning empty snapshots — saves SDK-side filtering). A single blank/whitespace token_id among otherwise valid ids rejects the whole batch with 400 INVALID_TOKEN_ID.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"PolySimulator\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.polysimulator.com/api-reference/clob-read-public/post-books-batch\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://polysimulator.mintlify.app/_mintlify/api/og/v2?division=CLOB+Read+%28Public%29\u0026amp;title=Post+Books+Batch\u0026amp;description=Polymarket-compat+%60%60POST+%2Fbooks%60%60.%0A%0ABody%3A+%60%60%5B%7Btoken_id%7D%2C+...%5D%60%60+%28PM-compat%29+**or**%0A%60%60%7Bitems%3A+%5B%7Btoken_id%7D%2C+...%5D%7D%60%60+%28legacy+wrapped+form%29.+Returns+one%0Afull+%60%60Orde\u0026amp;theme=836fae47dd9286134dc806ca\u0026amp;signature=4b0c6a61736aef2a79752239561cac654f065597a95c4ecb3f44d74948c810c5\">\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=\"Post Books Batch - PolySimulator\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Polymarket-compat POST /books. Body: [{token_id}, ...] (PM-compat) or {items: [{token_id}, ...]} (legacy wrapped form). Returns one full OrderBookSnapshot per token (PM-compat shape including market, asset_id, hash, tick_size, neg_risk, last_trade_price). Tokens with no book are omitted from the response (rather than returning empty snapshots — saves SDK-side filtering). A single blank/whitespace token_id among otherwise valid ids rejects the whole batch with 400 INVALID_TOKEN_ID.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://polysimulator.mintlify.app/_mintlify/api/og/v2?division=CLOB+Read+%28Public%29\u0026amp;title=Post+Books+Batch\u0026amp;description=Polymarket-compat+%60%60POST+%2Fbooks%60%60.%0A%0ABody%3A+%60%60%5B%7Btoken_id%7D%2C+...%5D%60%60+%28PM-compat%29+**or**%0A%60%60%7Bitems%3A+%5B%7Btoken_id%7D%2C+...%5D%7D%60%60+%28legacy+wrapped+form%29.+Returns+one%0Afull+%60%60Orde\u0026amp;theme=836fae47dd9286134dc806ca\u0026amp;signature=4b0c6a61736aef2a79752239561cac654f065597a95c4ecb3f44d74948c810c5\">\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/polysimulator/Z7O8VINNN1g3IFN9/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"PolySimulator\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00d26a\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.polysimulator.com/api-reference/clob-read-public/post-books-batch\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/clob-read-public/post-books-batch.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.polysimulator.com/#organization\",\"name\":\"PolySimulator\",\"url\":\"https://docs.polysimulator.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/polysimulator/g3hLzzd62nMdIToN/logo/polysim-light.svg?fit=max\u0026auto=format\u0026n=g3hLzzd62nMdIToN\u0026q=85\u0026s=510d6e93b34b84b254f2ff702c7f2f11\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.polysimulator.com#website\",\"name\":\"PolySimulator\",\"url\":\"https://docs.polysimulator.com\",\"publisher\":{\"@id\":\"https://docs.polysimulator.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.polysimulator.com/api-reference/clob-read-public/post-books-batch#webpage\",\"url\":\"https://docs.polysimulator.com/api-reference/clob-read-public/post-books-batch\",\"name\":\"Post Books Batch\",\"description\":\"Polymarket-compat POST /books. Body: [{token_id}, ...] (PM-compat) or {items: [{token_id}, ...]} (legacy wrapped form). Returns one full OrderBookSnapshot per token (PM-compat shape including market, asset_id, hash, tick_size, neg_risk, last_trade_price). Tokens with no book are omitted from the response (rather than returning empty snapshots — saves SDK-side filtering). A single blank/whitespace token_id among otherwise valid ids rejects the whole batch with 400 INVALID_TOKEN_ID.\",\"dateModified\":\"2026-10-23T00:12:35.274Z\",\"isPartOf\":{\"@id\":\"https://docs.polysimulator.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.polysimulator.com/api-reference/clob-read-public/post-books-batch#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.polysimulator.com/api-reference/clob-read-public/post-books-batch#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.polysimulator.com/api-reference/health/health-check\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CLOB Read (Public)\",\"item\":\"https://docs.polysimulator.com/api-reference/clob-read-public/get-price\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Post Books Batch\",\"item\":\"https://docs.polysimulator.com/api-reference/clob-read-public/post-books-batch\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.polysimulator.com/api-reference/clob-read-public/post-books-batch#apireference\",\"headline\":\"Post Books Batch\",\"name\":\"Post Books Batch\",\"description\":\"Polymarket-compat POST /books. Body: [{token_id}, ...] (PM-compat) or {items: [{token_id}, ...]} (legacy wrapped form). Returns one full OrderBookSnapshot per token (PM-compat shape including market, asset_id, hash, tick_size, neg_risk, last_trade_price). Tokens with no book are omitted from the response (rather than returning empty snapshots — saves SDK-side filtering). A single blank/whitespace token_id among otherwise valid ids rejects the whole batch with 400 INVALID_TOKEN_ID.\",\"url\":\"https://docs.polysimulator.com/api-reference/clob-read-public/post-books-batch\",\"mainEntityOfPage\":{\"@id\":\"https://docs.polysimulator.com/api-reference/clob-read-public/post-books-batch#webpage\"},\"dateModified\":\"2026-10-23T00:12:35.274Z\",\"publisher\":{\"@id\":\"https://docs.polysimulator.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.polysimulator.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"PolySimulator\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"PolySimulator","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":"book","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","icon":"square-terminal","groups":[{"group":"Overview","icon":"book-open","pages":[{"title":"API Reference","sidebarTitle":"Overview","href":"/api-reference/overview"}]},{"group":"Endpoints","icon":"code","pages":[{"group":"Health","pages":[{"title":"Health Check","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/health","href":"/api-reference/health/health-check"},{"title":"Liveness Check","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/health/live","href":"/api-reference/health/liveness-check"},{"title":"Readiness Check","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/health/ready","href":"/api-reference/health/readiness-check"},{"title":"System Status","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/status","href":"/api-reference/health/system-status"},{"title":"Get Api Me","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/me","href":"/api-reference/health/get-api-me"},{"title":"Version Check","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/version","href":"/api-reference/health/version-check"}]},{"group":"Market Data","pages":[{"title":"List markets (bare array; opt-in PM-shape envelope).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets","href":"/api-reference/market-data/list-markets-bare-array;-opt-in-pm-shape-envelope"},{"title":"Get Market","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/{condition_id}","href":"/api-reference/market-data/get-market"},{"title":"Get Market By Slug","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/by-slug/{slug}","href":"/api-reference/market-data/get-market-by-slug"},{"title":"Get Order Book","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/{condition_id}/book","href":"/api-reference/market-data/get-order-book"},{"title":"Batch Prices","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/prices/batch","href":"/api-reference/market-data/batch-prices"},{"title":"Get Candles","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/{condition_id}/candles","href":"/api-reference/market-data/get-candles"}]},{"group":"API Reference","pages":[{"title":"List Updown Intervals","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/updown/intervals","href":"/api-reference/list-updown-intervals"},{"title":"List Up Or Down Markets","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/updown","href":"/api-reference/list-up-or-down-markets"},{"title":"Get Market Series Siblings","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets/{condition_id}/series-siblings","href":"/api-reference/get-market-series-siblings"},{"title":"Get Archive Price History Endpoint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/prices-history/archive","href":"/api-reference/get-archive-price-history-endpoint"},{"title":"List Email Preferences","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/integrations/email/preferences","href":"/api-reference/list-email-preferences"},{"title":"Update Email Preferences","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/integrations/email/preferences","href":"/api-reference/update-email-preferences"},{"title":"Integrations Email Test","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/integrations/email/test","href":"/api-reference/integrations-email-test"},{"title":"Email Unsubscribe","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/email/unsubscribe","href":"/api-reference/email-unsubscribe"},{"title":"Email Unsubscribe Post","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/email/unsubscribe","href":"/api-reference/email-unsubscribe-post"},{"title":"Preview Alert","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/preview/alert","href":"/api-reference/preview-alert"}]},{"group":"CLOB Read (Public)","pages":[{"title":"Get Price","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/price","href":"/api-reference/clob-read-public/get-price"},{"title":"Get Prices Batch","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/prices","href":"/api-reference/clob-read-public/get-prices-batch"},{"title":"Get Midpoint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/midpoint","href":"/api-reference/clob-read-public/get-midpoint"},{"title":"Get Spread","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spread","href":"/api-reference/clob-read-public/get-spread"},{"title":"Get Book By Token","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/book","href":"/api-reference/clob-read-public/get-book-by-token"},{"title":"Get Clob Book By Path","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/clob/book/{token_id}","href":"/api-reference/clob-read-public/get-clob-book-by-path"},{"title":"Price history (PM wire shape — {history: [{t, p}]}).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/prices-history","href":"/api-reference/clob-read-public/price-history-pm-wire-shape-—-]"},{"title":"Get Server Time","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/time","href":"/api-reference/clob-read-public/get-server-time"},{"title":"Get Last Trade Price","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/last-trade-price","href":"/api-reference/clob-read-public/get-last-trade-price"},{"title":"Get Tick Size Query","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/tick-size","href":"/api-reference/clob-read-public/get-tick-size-query"},{"title":"Get Tick Size","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/tick-size/{token_id}","href":"/api-reference/clob-read-public/get-tick-size"},{"title":"Get Neg Risk Query","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/neg-risk","href":"/api-reference/clob-read-public/get-neg-risk-query"},{"title":"Get Neg Risk","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/neg-risk/{token_id}","href":"/api-reference/clob-read-public/get-neg-risk"},{"title":"Get Market By Token","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/markets-by-token/{token_id}","href":"/api-reference/clob-read-public/get-market-by-token"},{"title":"Post Midpoints Batch","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/midpoints","href":"/api-reference/clob-read-public/post-midpoints-batch"},{"title":"Post Spreads Batch","description":"Polymarket-compat ``POST /spreads``.\n\nBody: ``[{token_id}, {token_id}, ...]`` (PM-compat) **or**\n``{items: [{token_id}, ...]}`` (legacy wrapped form). Returns\n``{token_id: spread_string}``.\n\nA single blank/whitespace ``token_id`` among otherwise valid ids\nrejects the whole batch with 400 ``INVALID_TOKEN_ID``.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/spreads","href":"/api-reference/clob-read-public/post-spreads-batch"},{"title":"Post Books Batch","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/books","href":"/api-reference/clob-read-public/post-books-batch"}]},{"group":"Events","pages":[{"title":"List events with their markets (event-first shape).","description":"List events with their child markets and live prices.\n\nThin delegate to the legacy ``GET /events`` handler in\n``app.main.list_events``. The legacy path stays the implementation\nsurface — this wrapper exists so SDK consumers can discover the\nevents feed via the v1 OpenAPI schema instead of having to know\nabout the root-mounted ``/events`` route.\n\nResponse shape:\n ``{ events: [...], total: int, limit: int, offset: int,\n cache_source: str, has_sports: bool, message?: str }``\n\nOn a cold poller cache, the legacy handler returns a 503 with\n``Retry-After: 5``; this wrapper passes that response through\nunchanged so SDK retry logic stays uniform.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/events","href":"/api-reference/events/list-events-with-their-markets-event-first-shape"}]},{"group":"Trading","pages":[{"title":"List user orders (Polysimulator-shape — see also: /v1/data/orders for PM-shape).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/orders","href":"/api-reference/trading/list-user-orders-polysimulator-shape-—-see-also:-v1dataorders-for-pm-shape"},{"title":"Place Order Dispatcher","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/orders","href":"/api-reference/trading/place-order-dispatcher"},{"title":"Batch Orders","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/orders/batch","href":"/api-reference/trading/batch-orders"},{"title":"Get a single order by ID (polysim-shape row).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/orders/{order_id}","href":"/api-reference/trading/get-a-single-order-by-id-polysim-shape-row"},{"title":"Cancel Order","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/orders/{order_id}","href":"/api-reference/trading/cancel-order"},{"title":"Clob Order","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/clob/order","href":"/api-reference/trading/clob-order"},{"title":"Cancel all pending limit orders (canonical verb).","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/cancel-all","href":"/api-reference/trading/cancel-all-pending-limit-orders-canonical-verb"},{"title":"Cancel all pending limit orders (legacy DELETE alias).","deprecated":true,"version":null,"openapi":"/openapi.json delete /v1/cancel-all","href":"/api-reference/trading/cancel-all-pending-limit-orders-legacy-delete-alias"},{"title":"Cancel Market Orders","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/cancel-market-orders","href":"/api-reference/trading/cancel-market-orders"}]},{"group":"CLOB Compat","pages":[{"title":"Polymarket-compat bulk-cancel by id list.","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/orders","href":"/api-reference/clob-compat/polymarket-compat-bulk-cancel-by-id-list"},{"title":"List user orders (Polymarket-shape — recommended for SDK clients).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/data/orders","href":"/api-reference/clob-compat/list-user-orders-polymarket-shape-—-recommended-for-sdk-clients"},{"title":"Polymarket-compat single-order lookup (legacy top-level path).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/order/{order_id}","href":"/api-reference/clob-compat/polymarket-compat-single-order-lookup-legacy-top-level-path"},{"title":"Polymarket-compat single-order lookup (PM-shape /data/ path).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/data/order/{order_id}","href":"/api-reference/clob-compat/polymarket-compat-single-order-lookup-pm-shape-data-path"},{"title":"Polymarket-compat single order placement.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/order","href":"/api-reference/clob-compat/polymarket-compat-single-order-placement"},{"title":"Polymarket-compat single-order cancel (body-payload).","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/order","href":"/api-reference/clob-compat/polymarket-compat-single-order-cancel-body-payload"},{"title":"Get trade fee rate (PM-compat base_fee + polysim fee_rate_bps)","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/fee-rate","href":"/api-reference/clob-compat/get-trade-fee-rate-pm-compat-base_fee-+-polysim-fee_rate_bps"},{"title":"Get USDC + conditional-token balance/allowance (PM keys — paper trading: huge)","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/balance-allowance","href":"/api-reference/clob-compat/get-usdc-+-conditional-token-balanceallowance-pm-keys-—-paper-trading:-huge"},{"title":"List user trades (PM-compat — reads from filled orders).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/data/trades","href":"/api-reference/clob-compat/list-user-trades-pm-compat-—-reads-from-filled-orders"}]},{"group":"Account","pages":[{"title":"Get Balance","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/balance","href":"/api-reference/account/get-balance"},{"title":"Get Positions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/positions","href":"/api-reference/account/get-positions"},{"title":"Get Portfolio","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/portfolio","href":"/api-reference/account/get-portfolio"},{"title":"Get Trade History","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/history","href":"/api-reference/account/get-trade-history"},{"title":"Get Equity Curve","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/equity","href":"/api-reference/account/get-equity-curve"},{"title":"Reset Api Balance","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/account/reset-api-balance","href":"/api-reference/account/reset-api-balance"},{"title":"Get Entitlements","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/me/entitlements","href":"/api-reference/account/get-entitlements"},{"title":"List Settlements","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/settlements","href":"/api-reference/account/list-settlements"},{"title":"Create Wallet Auth Challenge","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/auth/wallet/challenge","href":"/api-reference/account/create-wallet-auth-challenge"},{"title":"Verify Wallet Auth Challenge","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/auth/wallet/verify","href":"/api-reference/account/verify-wallet-auth-challenge"},{"title":"Logout Wallet Session","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/auth/wallet/logout","href":"/api-reference/account/logout-wallet-session"},{"title":"List My Wallet Identities","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/me/wallet-identities","href":"/api-reference/account/list-my-wallet-identities"},{"title":"Update My Wallet Identity Visibility","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/me/wallet-identities/{identity_id}/visibility","href":"/api-reference/account/update-my-wallet-identity-visibility"}]},{"group":"Profile Analysis","pages":[{"title":"Full profile analysis for LLM/MCP consumption","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/account/profile-analysis","href":"/api-reference/profile-analysis/full-profile-analysis-for-llmmcp-consumption"}]},{"group":"API Keys","pages":[{"title":"List Keys","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/keys","href":"/api-reference/api-keys/list-keys"},{"title":"Create Key","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/keys","href":"/api-reference/api-keys/create-key"},{"title":"Bootstrap first API key via Bearer JWT (advanced / headless)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/keys/bootstrap","href":"/api-reference/api-keys/bootstrap-first-api-key-via-bearer-jwt-advanced-headless"},{"title":"Revoke Key","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/keys/{key_id}","href":"/api-reference/api-keys/revoke-key"},{"title":"Rename Key","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/keys/{key_id}","href":"/api-reference/api-keys/rename-key"},{"title":"Rotate an API key with a zero-downtime overlap window","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/keys/{key_id}/rotate","href":"/api-reference/api-keys/rotate-an-api-key-with-a-zero-downtime-overlap-window"},{"title":"List Tiers","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/keys/tiers","href":"/api-reference/api-keys/list-tiers"},{"title":"Get Key Usage","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/keys/usage","href":"/api-reference/api-keys/get-key-usage"},{"title":"Get Ws Token","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/keys/ws-token","href":"/api-reference/api-keys/get-ws-token"}]},{"group":"Wallets","pages":[{"title":"List My Wallets","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/me/wallets","href":"/api-reference/wallets/list-my-wallets"},{"title":"Create Wallet","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/me/wallets","href":"/api-reference/wallets/create-wallet"},{"title":"Get Wallet","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/me/wallets/{wallet_id}","href":"/api-reference/wallets/get-wallet"},{"title":"Archive Wallet","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/me/wallets/{wallet_id}","href":"/api-reference/wallets/archive-wallet"},{"title":"Patch Wallet","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/me/wallets/{wallet_id}","href":"/api-reference/wallets/patch-wallet"},{"title":"Reset Wallet","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/me/wallets/{wallet_id}/reset","href":"/api-reference/wallets/reset-wallet"}]},{"group":"Export","pages":[{"title":"Export Trades Csv","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/export/trades.csv","href":"/api-reference/export/export-trades-csv"},{"title":"Export Positions Csv","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/export/positions.csv","href":"/api-reference/export/export-positions-csv"},{"title":"Export Settlements Csv","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/export/settlements.csv","href":"/api-reference/export/export-settlements-csv"}]},{"group":"WebSocket","pages":[{"title":"Ws Prices Upgrade Hint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/ws/prices","href":"/api-reference/websocket/ws-prices-upgrade-hint"},{"title":"Ws Executions Upgrade Hint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/ws/executions","href":"/api-reference/websocket/ws-executions-upgrade-hint"}]},{"group":"WebSocket (PM-compat)","pages":[{"title":"Ws Market Upgrade Hint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/ws/market","href":"/api-reference/websocket-pm-compat/ws-market-upgrade-hint"},{"title":"Ws User Upgrade Hint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/ws/user","href":"/api-reference/websocket-pm-compat/ws-user-upgrade-hint"}]},{"group":"Status","pages":[{"title":"Status Uptime","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/status/uptime","href":"/api-reference/status/status-uptime"}]},{"group":"Heartbeats","pages":[{"title":"Heartbeat dead-man's-switch — auto-cancel orders on missed pings.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/heartbeats","href":"/api-reference/heartbeats/heartbeat-dead-mans-switch-—-auto-cancel-orders-on-missed-pings"}]},{"group":"Football","pages":[{"title":"Football Fixtures","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/fixtures","href":"/api-reference/football/football-fixtures"},{"title":"Football Match","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/match/{match_id}","href":"/api-reference/football/football-match"},{"title":"Football Standings","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/standings","href":"/api-reference/football/football-standings"},{"title":"Football Bracket","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/bracket","href":"/api-reference/football/football-bracket"},{"title":"Football H2H","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/h2h","href":"/api-reference/football/football-h2h"},{"title":"Football Scorers","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/scorers","href":"/api-reference/football/football-scorers"},{"title":"Football Squads","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/squads","href":"/api-reference/football/football-squads"},{"title":"Football Api Lineups","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/lineups","href":"/api-reference/football/football-api-lineups"},{"title":"Football Api Injuries","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/football/injuries","href":"/api-reference/football/football-api-injuries"}]},{"group":"Simulation","pages":[{"title":"Simulate Fill","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/simulation/fill","href":"/api-reference/simulation/simulate-fill"},{"title":"Get Archive Coverage","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/coverage","href":"/api-reference/simulation/get-archive-coverage"},{"title":"List Fill Models","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/fill-models","href":"/api-reference/simulation/list-fill-models"},{"title":"Replay Book","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/book","href":"/api-reference/simulation/replay-book"},{"title":"List Backtests","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/backtests","href":"/api-reference/simulation/list-backtests"},{"title":"Create Backtest","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/simulation/backtests","href":"/api-reference/simulation/create-backtest"},{"title":"Get Backtest","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/backtests/{job_id}","href":"/api-reference/simulation/get-backtest"},{"title":"Cancel Backtest","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/simulation/backtests/{job_id}","href":"/api-reference/simulation/cancel-backtest"},{"title":"List Backtest Trades","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/backtests/{job_id}/trades","href":"/api-reference/simulation/list-backtest-trades"},{"title":"Get Backtest Equity","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/backtests/{job_id}/equity","href":"/api-reference/simulation/get-backtest-equity"},{"title":"Create Export","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/simulation/exports","href":"/api-reference/simulation/create-export"},{"title":"Get Simulation Quota","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/simulation/quota","href":"/api-reference/simulation/get-simulation-quota"}]},{"group":"Developer Webhooks","pages":[{"title":"List Event Types","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/developer/webhooks/event-types","href":"/api-reference/developer-webhooks/list-event-types"},{"title":"List Endpoints","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/developer/webhooks","href":"/api-reference/developer-webhooks/list-endpoints"},{"title":"Create Endpoint","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/developer/webhooks","href":"/api-reference/developer-webhooks/create-endpoint"},{"title":"Get Endpoint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/developer/webhooks/{endpoint_id}","href":"/api-reference/developer-webhooks/get-endpoint"},{"title":"Delete Endpoint","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/developer/webhooks/{endpoint_id}","href":"/api-reference/developer-webhooks/delete-endpoint"},{"title":"Update Endpoint","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/developer/webhooks/{endpoint_id}","href":"/api-reference/developer-webhooks/update-endpoint"},{"title":"Rotate Secret","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/developer/webhooks/{endpoint_id}/rotate-secret","href":"/api-reference/developer-webhooks/rotate-secret"},{"title":"Test Endpoint","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/developer/webhooks/{endpoint_id}/test","href":"/api-reference/developer-webhooks/test-endpoint"},{"title":"List Deliveries","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/developer/webhooks/{endpoint_id}/deliveries","href":"/api-reference/developer-webhooks/list-deliveries"}]},{"group":"Billing","pages":[{"title":"Create Checkout","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/billing/checkout","href":"/api-reference/billing/create-checkout"},{"title":"Create Portal","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/billing/portal","href":"/api-reference/billing/create-portal"},{"title":"Get Subscription","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/billing/subscription","href":"/api-reference/billing/get-subscription"},{"title":"List Billing Plans","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/billing/plans","href":"/api-reference/billing/list-billing-plans"},{"title":"Create Topup Checkout","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/billing/topup/checkout","href":"/api-reference/billing/create-topup-checkout"}]},{"group":"Integrations","pages":[{"title":"Discord List","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/integrations/discord","href":"/api-reference/integrations/discord-list"},{"title":"Discord Create","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/integrations/discord","href":"/api-reference/integrations/discord-create"},{"title":"Discord Delete","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/integrations/discord/{subscription_id}","href":"/api-reference/integrations/discord-delete"},{"title":"Discord Test","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/integrations/discord/{subscription_id}/test","href":"/api-reference/integrations/discord-test"}]}]}]}]},"basePath":"","title":"Post Books Batch - PolySimulator","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-BAvA99GL.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}