{"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/update-email-preferences","slug":"/api-reference/update-email-preferences","pageMetadata":{"title":"Update Email Preferences","description":"Bulk-upsert opt-in matrix rows for the current user. Returns the\nfull resulting matrix so the frontend can swap state without a\nfollow-up GET.","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/integrations/email/preferences","href":"/api-reference/update-email-preferences","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Bulk-upsert opt-in matrix rows for the current user. Returns the\\nfull resulting matrix so the frontend can swap state without a\\nfollow-up GET.\"\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":"Update Email Preferences","description":"Bulk-upsert opt-in matrix rows for the current user. Returns the\nfull resulting matrix so the frontend can swap state without a\nfollow-up GET.","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/integrations/email/preferences","href":"/api-reference/update-email-preferences","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Update Email Preferences","description":"Bulk-upsert opt-in matrix rows for the current user. Returns the\nfull resulting matrix so the frontend can swap state without a\nfollow-up GET.","operationId":"update_email_preferences_v1_integrations_email_preferences_put","parameters":["6e91ce33-a253-40de-828f-4b1d625532a1","85745757-fe27-45b6-8775-833117232ced"],"requestBody":"fd4dd1fc-f049-415a-b5d6-e68880fd3e10","responses":{"200":"d0b2fdd5-f103-4a80-931c-da2f0ed5a368","401":"41a3c350-fc54-4ad8-b2e2-737a1607c652","403":"229e54f8-a2f5-4707-8cab-2637eae1c446","404":"985e8318-e7e4-4bc5-950b-08738e76b881","422":"02a65877-8cf8-4771-97a6-4e8b56a47b5d","429":"886b5b85-0c67-42ec-90fe-5e299530bb8c"},"method":"put","type":"path","servers":["431ff564-91e2-4aad-b4f5-293c93a4432c","4c86d600-7a98-4c1b-9524-2b542282e88b"],"security":["8d5875e9-074a-47bc-b0fb-aaeb46778b14"],"path":"/v1/integrations/email/preferences","baseUrlOptions":["https://api.polysimulator.com","https://staging-api.polysimulator.com"],"title":"Update Email Preferences","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"6e91ce33-a253-40de-828f-4b1d625532a1":{"name":"db","in":"query","required":false,"schema":{"title":"Db"}},"85745757-fe27-45b6-8775-833117232ced":{"name":"authorization","in":"header","required":false,"schema":{"oneOf":[{"type":"string","title":"Authorization","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"Authorization","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"preferences":{"additionalProperties":{"type":"boolean","uniqueKey":"preferences.additionalProperties","typeLabel":"boolean"},"type":"object","title":"Preferences","isRequired":true,"uniqueKey":"preferences","typeLabel":"Preferences · object"}},"type":"object","required":["preferences"],"title":"EmailPreferencesMatrixUpdate","description":"Bulk-update body for the per-event-type opt-in matrix.\n\nBody shape: ``{\"event_type\": bool, ...}``. Unknown event types are\nsilently ignored (forward-compat: client can post a superset).","uniqueKey":"","typeLabel":"EmailPreferencesMatrixUpdate · object"},"examples":{"Example":{"title":"Example","value":{"preferences":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"d0b2fdd5-f103-4a80-931c-da2f0ed5a368":{"description":"Successful Response","content":{"application/json":{"schema":{}}},"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-RateLimit-Limit-Per-Second":{"description":"Requests permitted per second for this key's tier.","schema":{"type":"string"}},"X-RateLimit-Remaining-Per-Second":{"description":"Requests remaining in the current one-second window.","schema":{"type":"string"}},"X-RateLimit-Tier":{"description":"Rate-limit tier name applied to this request (free, pro, ...).","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-Polysim-RateLimit-Limit-Per-Second":{"description":"Alias of X-RateLimit-Limit-Per-Second.","schema":{"type":"string"}},"X-Polysim-RateLimit-Remaining-Per-Second":{"description":"Alias of X-RateLimit-Remaining-Per-Second.","schema":{"type":"string"}},"X-Polysim-RateLimit-Tier":{"description":"Alias of X-RateLimit-Tier (tier name applied to this request).","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"},"41a3c350-fc54-4ad8-b2e2-737a1607c652":{"description":"Missing or invalid API key.","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"},"229e54f8-a2f5-4707-8cab-2637eae1c446":{"description":"Insufficient permission or access restricted.","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"},"985e8318-e7e4-4bc5-950b-08738e76b881":{"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"},"02a65877-8cf8-4771-97a6-4e8b56a47b5d":{"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"},"886b5b85-0c67-42ec-90fe-5e299530bb8c":{"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":{"8d5875e9-074a-47bc-b0fb-aaeb46778b14":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Issue from /v1/keys (or admin-issued for enterprise tier).","scopes":[],"schemeName":"ApiKeyAuth"}}},"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"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Issue from /v1/keys (or admin-issued for enterprise tier).","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"X-API-Key","type":"string","description":"Issue from /v1/keys (or admin-issued for enterprise tier).","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"X-API-Key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"polysimulator","siteName":"PolySimulator","title":"Update Email Preferences - PolySimulator","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T00:12:36.433Z","originalFileLocation":"api-reference/update-email-preferences.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=\"Bulk-upsert opt-in matrix rows for the current user. Returns the full resulting matrix so the frontend can swap state without a follow-up GET.\">\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=\"Update Email Preferences - PolySimulator\">\u003cmeta data-mint-head property=\"og:description\" content=\"Bulk-upsert opt-in matrix rows for the current user. Returns the full resulting matrix so the frontend can swap state without a follow-up GET.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"PolySimulator\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.polysimulator.com/api-reference/update-email-preferences\">\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=API+Reference\u0026amp;title=Update+Email+Preferences\u0026amp;description=Bulk-upsert+opt-in+matrix+rows+for+the+current+user.+Returns+the%0Afull+resulting+matrix+so+the+frontend+can+swap+state+without+a%0Afollow-up+GET.\u0026amp;theme=836fae47dd9286134dc806ca\u0026amp;signature=4bc6758e9215af7771c0a0e87be91c41af1a7c430fcb2038f8f35d0e16fe5657\">\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=\"Update Email Preferences - PolySimulator\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Bulk-upsert opt-in matrix rows for the current user. Returns the full resulting matrix so the frontend can swap state without a follow-up GET.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://polysimulator.mintlify.app/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Update+Email+Preferences\u0026amp;description=Bulk-upsert+opt-in+matrix+rows+for+the+current+user.+Returns+the%0Afull+resulting+matrix+so+the+frontend+can+swap+state+without+a%0Afollow-up+GET.\u0026amp;theme=836fae47dd9286134dc806ca\u0026amp;signature=4bc6758e9215af7771c0a0e87be91c41af1a7c430fcb2038f8f35d0e16fe5657\">\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/update-email-preferences\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/update-email-preferences.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/update-email-preferences#webpage\",\"url\":\"https://docs.polysimulator.com/api-reference/update-email-preferences\",\"name\":\"Update Email Preferences\",\"description\":\"Bulk-upsert opt-in matrix rows for the current user. Returns the full resulting matrix so the frontend can swap state without a follow-up GET.\",\"dateModified\":\"2026-10-23T00:12:36.433Z\",\"isPartOf\":{\"@id\":\"https://docs.polysimulator.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.polysimulator.com/api-reference/update-email-preferences#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.polysimulator.com/api-reference/update-email-preferences#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.polysimulator.com/api-reference/health/health-check\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API Reference\",\"item\":\"https://docs.polysimulator.com/api-reference/list-updown-intervals\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Update Email Preferences\",\"item\":\"https://docs.polysimulator.com/api-reference/update-email-preferences\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.polysimulator.com/api-reference/update-email-preferences#apireference\",\"headline\":\"Update Email Preferences\",\"name\":\"Update Email Preferences\",\"description\":\"Bulk-upsert opt-in matrix rows for the current user. Returns the full resulting matrix so the frontend can swap state without a follow-up GET.\",\"url\":\"https://docs.polysimulator.com/api-reference/update-email-preferences\",\"mainEntityOfPage\":{\"@id\":\"https://docs.polysimulator.com/api-reference/update-email-preferences#webpage\"},\"dateModified\":\"2026-10-23T00:12:36.433Z\",\"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","description":"Return the user's effective per-event-type email opt-in matrix.\n\nEvery supported event type is present in the response, with the\neffective state (explicit row, or channel-level default). Also\nincludes the email-of-record so the frontend can show what address\ndeliveries land at without echoing it back into form state.","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","description":"Send a test ``system_notice`` email to the user's email-of-record.\n\nMirrors the existing ``/me/email/test`` endpoint — exposed under the\nTB-5 ``/v1/integrations/email/*`` namespace for API symmetry. Bypasses\nthe queue for immediate, exactly-once feedback.","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","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).","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":"Update Email Preferences - 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"]}