Closed candles for one market, price kind and interval, newest first across every page. The candle still forming is never included. A page has no gaps: one candle for every interval it spans. Follow nextCursor back in time until it is null. ByInstrument starts from the latest closed candle; ByInstrumentBefore starts from the candles that end at or before before. The market’s candles entry says which of these it supports (list, listBefore); paging past the first page needs listBefore. 422 NotSupported for an unknown market, or a price kind, interval or variant the market does not list. No API key needed.
nextCursor from the previous page; omit for the first page. Only valid with the same query: same variant and filters.
Response
Successful result
One page of results; the server sets the page size. Send nextCursor as cursor for the next page. Pages are read live, so items can change while you page.
Pass as cursor to get the next page; null on the last page.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Plurex Docs","colors":{"primary":"#ba54f5","light":"#16C99D","dark":"#0C9473"},"logo":{"light":"https://mintcdn.com/plurex/55zZlLmLoaaEFioa/logo/light.svg?fit=max\u0026auto=format\u0026n=55zZlLmLoaaEFioa\u0026q=85\u0026s=e150115596b050b7a538e6f784ec2f44","dark":"https://mintcdn.com/plurex/55zZlLmLoaaEFioa/logo/dark.svg?fit=max\u0026auto=format\u0026n=55zZlLmLoaaEFioa\u0026q=85\u0026s=50700e3bf45d56130284da4e11ac0267"},"favicon":"https://mintcdn.com/plurex/55zZlLmLoaaEFioa/favicon.svg?fit=max\u0026auto=format\u0026n=55zZlLmLoaaEFioa\u0026q=85\u0026s=b75896d74b2a1f4042f455cecc2be909","navbar":{"links":[{"href":"https://support.plurex.io/portal/en/newticket","label":"Support"}],"primary":{"type":"button","label":"Platform","href":"https://platform.plurex.io"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"plurex","hasAudioNarration":false,"actualSubdomain":"plurex","customDomains":["docs.plurex.io"],"gitSource":{"type":"github","owner":"plurex","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21eb11c210dbcccbc16b12","collectionId":"afa252a4-3ec4-476e-93b7-ea2060a48e25","schemaVersion":"v2"},"entitlements":{},"buildId":"6ade44ffd2e4fef472e0ac58","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"API reference","count":46},{"language":"default","tag":"Trading","count":22},{"language":"default","tag":"Documentation","count":22},{"language":"default","tag":"Market data","count":10},{"language":"default","tag":"Orders","count":9},{"language":"default","tag":"Paper trading","count":8},{"language":"default","tag":"Accounts","count":6},{"language":"default","tag":"Prices and market statistics","count":5},{"language":"default","tag":"Concepts","count":5},{"language":"default","tag":"Leverage and position mode","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"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":"editor-v7-file-tree","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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"byok-sep-25","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":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/platform/venues/list-candles","slug":"/api-reference/platform/venues/list-candles","pageMetadata":{"title":"List candles","description":"Closed candles for one market, price kind and interval, newest first across every page. The candle still forming is never included. A page has no gaps: one candle for every interval it spans. Follow nextCursor back in time until it is null. ByInstrument starts from the latest closed candle; ByInstrumentBefore starts from the candles that end at or before `before`. The market's candles entry says which of these it supports (list, listBefore); paging past the first page needs listBefore. 422 NotSupported for an unknown market, or a price kind, interval or variant the market does not list. No API key needed.","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/ListCandles","href":"/api-reference/platform/venues/list-candles"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Closed candles for one market, price kind and interval, newest first across every page. The candle still forming is never included. A page has no gaps: one candle for every interval it spans. Follow nextCursor back in time until it is null. ByInstrument starts from the latest closed candle; ByInstrumentBefore starts from the candles that end at or before \", _jsx(_components.code, {\n children: \"before\"\n }), \". The market’s candles entry says which of these it supports (list, listBefore); paging past the first page needs listBefore. 422 NotSupported for an unknown market, or a price kind, interval or variant the market does not list. No API key needed.\"]\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":"List candles","description":"Closed candles for one market, price kind and interval, newest first across every page. The candle still forming is never included. A page has no gaps: one candle for every interval it spans. Follow nextCursor back in time until it is null. ByInstrument starts from the latest closed candle; ByInstrumentBefore starts from the candles that end at or before `before`. The market's candles entry says which of these it supports (list, listBefore); paging past the first page needs listBefore. 422 NotSupported for an unknown market, or a price kind, interval or variant the market does not list. No API key needed.","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/ListCandles","href":"/api-reference/platform/venues/list-candles"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"venuesListCandles","summary":"List candles","description":"Closed candles for one market, price kind and interval, newest first across every page. The candle still forming is never included. A page has no gaps: one candle for every interval it spans. Follow nextCursor back in time until it is null. ByInstrument starts from the latest closed candle; ByInstrumentBefore starts from the candles that end at or before `before`. The market's candles entry says which of these it supports (list, listBefore); paging past the first page needs listBefore. 422 NotSupported for an unknown market, or a price kind, interval or variant the market does not list. No API key needed.","tags":["candles","public","optional","paged"],"security":[],"requestBody":"e4a8ac2d-205c-4e7a-9222-8dde76b68e8c","responses":{"200":"04fd3a35-286a-40d9-9b92-f02837e47ffe","400":"c08e6d2d-a328-438f-8ac2-e6815418ef04","404":"8b514de8-d630-4cab-a4ea-ab00fe08c007","415":"3cc2baa8-ce3b-49b5-8a79-aeb80ab95e93","422":"f60502c2-0b37-45d3-ae11-4fa452ea51d7","429":"4d23e6c1-5209-4154-8ed9-ea3625ec66e3","500":"66aa6c2d-e178-4df4-9d84-2b4d9290abb2","502":"cf798c20-3b0b-45f4-ab39-029d6e93006f","503":"93ccae3c-99c1-4c14-8d6b-b3d5d6d37305","504":"621fbc9a-b3e0-4a17-9811-fc7cb56b3ecf"},"method":"post","type":"path","servers":["7bdeb600-191f-4ab2-ae0b-ca8270458bcb"],"path":"/api/v1/venues/query/ListCandles","baseUrlOptions":["https://api.plurex.io"],"title":"List candles","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"venueId":{"type":"string","isRequired":true,"uniqueKey":"venueId","typeLabel":"string"},"priceKind":{"type":"string","enum":["Traded","Mark","Index"],"description":"What the venue reports a price to be. Kinds are never relabelled or derived from one another.","isRequired":true,"uniqueKey":"priceKind","typeLabel":"enum\u003cstring>"},"interval":{"type":"string","enum":["Minute1","Minute3","Minute5","Minute15","Minute30","Hour1","Hour2","Hour4","Hour6","Hour12","Day1"],"description":"Candle length. Candles are aligned to whole multiples of it from the Unix epoch, in UTC.","isRequired":true,"uniqueKey":"interval","typeLabel":"enum\u003cstring>"},"query":{"oneOf":[{"type":"object","required":["type","instrument"],"properties":{"instrument":{"oneOf":[{"type":"object","description":"An instrument, identified by its fields rather than a venue symbol: type, base, quote, and expiry, strike and right where they apply. type takes the InstrumentType values; unknown types are rejected. Market summaries also give its canonical symbol.","required":["type","base","quote","expiry"],"properties":{"base":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.0.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.0.quote","typeLabel":"string"},"expiry":{"type":"string","format":"date","description":"Contract expiry date (YYYY-MM-DD).","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.0.expiry","typeLabel":"string\u003cdate>"},"type":{"type":"string","enum":["Future"],"isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.0","typeLabel":"object"},{"type":"object","description":"An instrument, identified by its fields rather than a venue symbol: type, base, quote, and expiry, strike and right where they apply. type takes the InstrumentType values; unknown types are rejected. Market summaries also give its canonical symbol.","required":["type","base","quote","expiry"],"properties":{"base":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.1.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.1.quote","typeLabel":"string"},"expiry":{"type":"string","format":"date","description":"Contract expiry date (YYYY-MM-DD).","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.1.expiry","typeLabel":"string\u003cdate>"},"type":{"type":"string","enum":["FutureInv"],"isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.1","typeLabel":"object"},{"type":"object","description":"An instrument, identified by its fields rather than a venue symbol: type, base, quote, and expiry, strike and right where they apply. type takes the InstrumentType values; unknown types are rejected. Market summaries also give its canonical symbol.","required":["type","base","quote","expiry","strike","right"],"properties":{"base":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.2.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.2.quote","typeLabel":"string"},"expiry":{"type":"string","format":"date","description":"Contract expiry date (YYYY-MM-DD).","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.2.expiry","typeLabel":"string\u003cdate>"},"strike":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)(?:\\.[0-9]*[1-9])?$","description":"Positive strike price in the quote asset, in canonical form so identity is exact; a plain decimal with no exponent and no trailing fractional zeros (50000, not 50000.0 or 5E4).","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.2.strike","typeLabel":"string"},"right":{"type":"string","enum":["Call","Put"],"isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.2.right","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["Option"],"isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.2","typeLabel":"object"},{"type":"object","description":"An instrument, identified by its fields rather than a venue symbol: type, base, quote, and expiry, strike and right where they apply. type takes the InstrumentType values; unknown types are rejected. Market summaries also give its canonical symbol.","required":["type","base","quote"],"properties":{"base":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.3.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.3.quote","typeLabel":"string"},"type":{"type":"string","enum":["Perp"],"isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.3","typeLabel":"object"},{"type":"object","description":"An instrument, identified by its fields rather than a venue symbol: type, base, quote, and expiry, strike and right where they apply. type takes the InstrumentType values; unknown types are rejected. Market summaries also give its canonical symbol.","required":["type","base","quote"],"properties":{"base":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.4.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.4.quote","typeLabel":"string"},"type":{"type":"string","enum":["PerpInv"],"isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.4.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.4","typeLabel":"object"},{"type":"object","description":"An instrument, identified by its fields rather than a venue symbol: type, base, quote, and expiry, strike and right where they apply. type takes the InstrumentType values; unknown types are rejected. Market summaries also give its canonical symbol.","required":["type","base","quote"],"properties":{"base":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.5.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.5.quote","typeLabel":"string"},"type":{"type":"string","enum":["Spot"],"isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.5.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.0.instrument.oneOf.5","typeLabel":"object"}],"isRequired":true,"uniqueKey":"query.oneOf.0.instrument","typeLabel":"object"},"type":{"type":"string","enum":["ByInstrument"],"isRequired":true,"uniqueKey":"query.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","instrument","before"],"properties":{"instrument":{"oneOf":[{"type":"object","description":"An instrument, identified by its fields rather than a venue symbol: type, base, quote, and expiry, strike and right where they apply. type takes the InstrumentType values; unknown types are rejected. Market summaries also give its canonical symbol.","required":["type","base","quote","expiry"],"properties":{"base":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.0.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.0.quote","typeLabel":"string"},"expiry":{"type":"string","format":"date","description":"Contract expiry date (YYYY-MM-DD).","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.0.expiry","typeLabel":"string\u003cdate>"},"type":{"type":"string","enum":["Future"],"isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.0","typeLabel":"object"},{"type":"object","description":"An instrument, identified by its fields rather than a venue symbol: type, base, quote, and expiry, strike and right where they apply. type takes the InstrumentType values; unknown types are rejected. Market summaries also give its canonical symbol.","required":["type","base","quote","expiry"],"properties":{"base":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.1.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.1.quote","typeLabel":"string"},"expiry":{"type":"string","format":"date","description":"Contract expiry date (YYYY-MM-DD).","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.1.expiry","typeLabel":"string\u003cdate>"},"type":{"type":"string","enum":["FutureInv"],"isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.1","typeLabel":"object"},{"type":"object","description":"An instrument, identified by its fields rather than a venue symbol: type, base, quote, and expiry, strike and right where they apply. type takes the InstrumentType values; unknown types are rejected. Market summaries also give its canonical symbol.","required":["type","base","quote","expiry","strike","right"],"properties":{"base":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.2.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.2.quote","typeLabel":"string"},"expiry":{"type":"string","format":"date","description":"Contract expiry date (YYYY-MM-DD).","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.2.expiry","typeLabel":"string\u003cdate>"},"strike":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)(?:\\.[0-9]*[1-9])?$","description":"Positive strike price in the quote asset, in canonical form so identity is exact; a plain decimal with no exponent and no trailing fractional zeros (50000, not 50000.0 or 5E4).","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.2.strike","typeLabel":"string"},"right":{"type":"string","enum":["Call","Put"],"isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.2.right","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["Option"],"isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.2","typeLabel":"object"},{"type":"object","description":"An instrument, identified by its fields rather than a venue symbol: type, base, quote, and expiry, strike and right where they apply. type takes the InstrumentType values; unknown types are rejected. Market summaries also give its canonical symbol.","required":["type","base","quote"],"properties":{"base":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.3.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.3.quote","typeLabel":"string"},"type":{"type":"string","enum":["Perp"],"isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.3","typeLabel":"object"},{"type":"object","description":"An instrument, identified by its fields rather than a venue symbol: type, base, quote, and expiry, strike and right where they apply. type takes the InstrumentType values; unknown types are rejected. Market summaries also give its canonical symbol.","required":["type","base","quote"],"properties":{"base":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.4.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.4.quote","typeLabel":"string"},"type":{"type":"string","enum":["PerpInv"],"isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.4.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.4","typeLabel":"object"},{"type":"object","description":"An instrument, identified by its fields rather than a venue symbol: type, base, quote, and expiry, strike and right where they apply. type takes the InstrumentType values; unknown types are rejected. Market summaries also give its canonical symbol.","required":["type","base","quote"],"properties":{"base":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.5.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.5.quote","typeLabel":"string"},"type":{"type":"string","enum":["Spot"],"isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.5.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.1.instrument.oneOf.5","typeLabel":"object"}],"isRequired":true,"uniqueKey":"query.oneOf.1.instrument","typeLabel":"object"},"before":{"type":"string","format":"date-time","description":"Only candles that end at or before this time.","isRequired":true,"uniqueKey":"query.oneOf.1.before","typeLabel":"string\u003cdate-time>"},"type":{"type":"string","enum":["ByInstrumentBefore"],"isRequired":true,"uniqueKey":"query.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"query.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"query","typeLabel":"object"},"cursor":{"oneOf":[{"type":"string","description":"nextCursor from the previous page; omit for the first page. Only valid with the same query: same variant and filters.","uniqueKey":"cursor.oneOf.0","typeLabel":"string"},{"type":"null","description":"nextCursor from the previous page; omit for the first page. Only valid with the same query: same variant and filters.","uniqueKey":"cursor.oneOf.1","typeLabel":"null"}],"uniqueKey":"cursor","typeLabel":"string | null"}},"required":["venueId","priceKind","interval","query"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"venueId":"\u003cstring>","query":{"instrument":{"base":"\u003cstring>","quote":"\u003cstring>","expiry":"2023-12-25","type":"Future"},"type":"ByInstrument"},"cursor":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"04fd3a35-286a-40d9-9b92-f02837e47ffe":{"description":"Successful result","content":{"application/json":{"schema":{"type":"object","description":"One page of results; the server sets the page size. Send nextCursor as cursor for the next page. Pages are read live, so items can change while you page.","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","format":"date-time","description":"Inclusive.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].startAt","typeLabel":"string\u003cdate-time>"},"endAt":{"type":"string","format":"date-time","description":"Exclusive.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].endAt","typeLabel":"string\u003cdate-time>"},"open":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$","description":"An exact decimal number encoded as a string. No binary floating-point rounding.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].open","typeLabel":"string"},"high":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$","description":"An exact decimal number encoded as a string. No binary floating-point rounding.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].high","typeLabel":"string"},"low":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$","description":"An exact decimal number encoded as a string. No binary floating-point rounding.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].low","typeLabel":"string"},"close":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$","description":"An exact decimal number encoded as a string. No binary floating-point rounding.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].close","typeLabel":"string"},"volume":{"oneOf":[{"type":"object","description":"Traded volume; null when the venue does not report it.","required":["asset","value"],"properties":{"asset":{"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].volume.oneOf.0.asset","typeLabel":"string"},"value":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$","description":"An exact decimal number encoded as a string. No binary floating-point rounding.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].volume.oneOf.0.value","typeLabel":"string"}},"isRequired":true,"uniqueKey":"\\items.items.[INDEX].volume.oneOf.0","typeLabel":"object"},{"type":"null","description":"Traded volume; null when the venue does not report it.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].volume.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].volume","typeLabel":"object | null"},"turnover":{"oneOf":[{"type":"object","description":"Traded turnover; null when the venue does not report it.","required":["asset","value"],"properties":{"asset":{"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].turnover.oneOf.0.asset","typeLabel":"string"},"value":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$","description":"An exact decimal number encoded as a string. No binary floating-point rounding.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].turnover.oneOf.0.value","typeLabel":"string"}},"isRequired":true,"uniqueKey":"\\items.items.[INDEX].turnover.oneOf.0","typeLabel":"object"},{"type":"null","description":"Traded turnover; null when the venue does not report it.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].turnover.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].turnover","typeLabel":"object | null"}},"required":["startAt","endAt","open","high","low","close","volume","turnover"],"description":"OHLC for [startAt, endAt).","uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"\\items","typeLabel":"object[]"},"nextCursor":{"oneOf":[{"type":"string","description":"Pass as cursor to get the next page; null on the last page.","isRequired":true,"uniqueKey":"nextCursor.oneOf.0","typeLabel":"string"},{"type":"null","description":"Pass as cursor to get the next page; null on the last page.","isRequired":true,"uniqueKey":"nextCursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"nextCursor","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"items":[{"startAt":"2023-11-07T05:31:56Z","endAt":"2023-11-07T05:31:56Z","open":"\u003cstring>","high":"\u003cstring>","low":"\u003cstring>","close":"\u003cstring>","volume":{"asset":"\u003cstring>","value":"\u003cstring>"},"turnover":{"asset":"\u003cstring>","value":"\u003cstring>"}}],"nextCursor":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"c08e6d2d-a328-438f-8ac2-e6815418ef04":{"description":"400 BadRequest; code is InvalidRequest.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","enum":["InvalidRequest","Unauthenticated","Forbidden","AccountNotFound","OrderNotFound","NotFound","MethodNotAllowed","DuplicateClientOrderId","OrderAlreadyClosed","Conflict","UnsupportedMediaType","InsufficientFunds","InvalidProviderCredentials","AccountLimit","NotSupported","Rejected","RateLimited","UnexpectedError","CancelAllFailed","UpstreamFailure","Unavailable","UpstreamTimeout"],"description":"Stable error reason. The HTTP status for each code is fixed: InvalidRequest (400): Malformed JSON, wrong types, unknown fields or enum values, or invalid values.; Unauthenticated (401): Missing or invalid API key headers.; Forbidden (403): Authenticated, but without access to the account or operation.; AccountNotFound (404): The accountId does not exist.; OrderNotFound (404): The account exists, but the order identifier does not.; NotFound (404): Unknown path, host or venue.; MethodNotAllowed (405): The path exists but only accepts POST.; DuplicateClientOrderId (409): An order with this clientOrderId already exists.; OrderAlreadyClosed (409): The order is already filled, cancelled or rejected.; Conflict (409): A unique value (for example an account name) is already used.; UnsupportedMediaType (415): The request is not Content-Type application/json.; InsufficientFunds (422): The account cannot fund the order.; InvalidProviderCredentials (422): The provider rejected the account credentials.; AccountLimit (422): An account or subscription limit was reached.; NotSupported (422): The host does not support this operation, variant or instrument.; Rejected (422): The host or validation rejected the command.; RateLimited (429): The provider rate limited the request.; UnexpectedError (500): Unexpected server failure.; CancelAllFailed (502): At least one sub-cancel failed; reconcile with ListOpenOrders.; UpstreamFailure (502): The provider failed or returned an unusable response.; Unavailable (503): The service or provider is temporarily unavailable.; UpstreamTimeout (504): The provider did not respond in time. New codes may be added; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"oneOf":[{"type":"string","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"string"},{"type":"null","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error","typeLabel":"string | null"}},"required":["code","message","error"],"description":"Every error has this shape, at every HTTP status, including unknown paths (404 NotFound) and wrong methods (405 MethodNotAllowed). code is the specific reason. Each operation describes when to retry and how to check the outcome; an error alone does not prove a command had no effect.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"InvalidRequest","message":"\u003cstring>","error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"8b514de8-d630-4cab-a4ea-ab00fe08c007":{"description":"404 NotFound; code is AccountNotFound, OrderNotFound or NotFound.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","enum":["InvalidRequest","Unauthenticated","Forbidden","AccountNotFound","OrderNotFound","NotFound","MethodNotAllowed","DuplicateClientOrderId","OrderAlreadyClosed","Conflict","UnsupportedMediaType","InsufficientFunds","InvalidProviderCredentials","AccountLimit","NotSupported","Rejected","RateLimited","UnexpectedError","CancelAllFailed","UpstreamFailure","Unavailable","UpstreamTimeout"],"description":"Stable error reason. The HTTP status for each code is fixed: InvalidRequest (400): Malformed JSON, wrong types, unknown fields or enum values, or invalid values.; Unauthenticated (401): Missing or invalid API key headers.; Forbidden (403): Authenticated, but without access to the account or operation.; AccountNotFound (404): The accountId does not exist.; OrderNotFound (404): The account exists, but the order identifier does not.; NotFound (404): Unknown path, host or venue.; MethodNotAllowed (405): The path exists but only accepts POST.; DuplicateClientOrderId (409): An order with this clientOrderId already exists.; OrderAlreadyClosed (409): The order is already filled, cancelled or rejected.; Conflict (409): A unique value (for example an account name) is already used.; UnsupportedMediaType (415): The request is not Content-Type application/json.; InsufficientFunds (422): The account cannot fund the order.; InvalidProviderCredentials (422): The provider rejected the account credentials.; AccountLimit (422): An account or subscription limit was reached.; NotSupported (422): The host does not support this operation, variant or instrument.; Rejected (422): The host or validation rejected the command.; RateLimited (429): The provider rate limited the request.; UnexpectedError (500): Unexpected server failure.; CancelAllFailed (502): At least one sub-cancel failed; reconcile with ListOpenOrders.; UpstreamFailure (502): The provider failed or returned an unusable response.; Unavailable (503): The service or provider is temporarily unavailable.; UpstreamTimeout (504): The provider did not respond in time. New codes may be added; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"oneOf":[{"type":"string","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"string"},{"type":"null","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error","typeLabel":"string | null"}},"required":["code","message","error"],"description":"Every error has this shape, at every HTTP status, including unknown paths (404 NotFound) and wrong methods (405 MethodNotAllowed). code is the specific reason. Each operation describes when to retry and how to check the outcome; an error alone does not prove a command had no effect.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"InvalidRequest","message":"\u003cstring>","error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"3cc2baa8-ce3b-49b5-8a79-aeb80ab95e93":{"description":"415 UnsupportedMediaType; code is UnsupportedMediaType.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","enum":["InvalidRequest","Unauthenticated","Forbidden","AccountNotFound","OrderNotFound","NotFound","MethodNotAllowed","DuplicateClientOrderId","OrderAlreadyClosed","Conflict","UnsupportedMediaType","InsufficientFunds","InvalidProviderCredentials","AccountLimit","NotSupported","Rejected","RateLimited","UnexpectedError","CancelAllFailed","UpstreamFailure","Unavailable","UpstreamTimeout"],"description":"Stable error reason. The HTTP status for each code is fixed: InvalidRequest (400): Malformed JSON, wrong types, unknown fields or enum values, or invalid values.; Unauthenticated (401): Missing or invalid API key headers.; Forbidden (403): Authenticated, but without access to the account or operation.; AccountNotFound (404): The accountId does not exist.; OrderNotFound (404): The account exists, but the order identifier does not.; NotFound (404): Unknown path, host or venue.; MethodNotAllowed (405): The path exists but only accepts POST.; DuplicateClientOrderId (409): An order with this clientOrderId already exists.; OrderAlreadyClosed (409): The order is already filled, cancelled or rejected.; Conflict (409): A unique value (for example an account name) is already used.; UnsupportedMediaType (415): The request is not Content-Type application/json.; InsufficientFunds (422): The account cannot fund the order.; InvalidProviderCredentials (422): The provider rejected the account credentials.; AccountLimit (422): An account or subscription limit was reached.; NotSupported (422): The host does not support this operation, variant or instrument.; Rejected (422): The host or validation rejected the command.; RateLimited (429): The provider rate limited the request.; UnexpectedError (500): Unexpected server failure.; CancelAllFailed (502): At least one sub-cancel failed; reconcile with ListOpenOrders.; UpstreamFailure (502): The provider failed or returned an unusable response.; Unavailable (503): The service or provider is temporarily unavailable.; UpstreamTimeout (504): The provider did not respond in time. New codes may be added; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"oneOf":[{"type":"string","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"string"},{"type":"null","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error","typeLabel":"string | null"}},"required":["code","message","error"],"description":"Every error has this shape, at every HTTP status, including unknown paths (404 NotFound) and wrong methods (405 MethodNotAllowed). code is the specific reason. Each operation describes when to retry and how to check the outcome; an error alone does not prove a command had no effect.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"InvalidRequest","message":"\u003cstring>","error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"f60502c2-0b37-45d3-ae11-4fa452ea51d7":{"description":"422 Rejected; code is InsufficientFunds, InvalidProviderCredentials, AccountLimit, NotSupported or Rejected.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","enum":["InvalidRequest","Unauthenticated","Forbidden","AccountNotFound","OrderNotFound","NotFound","MethodNotAllowed","DuplicateClientOrderId","OrderAlreadyClosed","Conflict","UnsupportedMediaType","InsufficientFunds","InvalidProviderCredentials","AccountLimit","NotSupported","Rejected","RateLimited","UnexpectedError","CancelAllFailed","UpstreamFailure","Unavailable","UpstreamTimeout"],"description":"Stable error reason. The HTTP status for each code is fixed: InvalidRequest (400): Malformed JSON, wrong types, unknown fields or enum values, or invalid values.; Unauthenticated (401): Missing or invalid API key headers.; Forbidden (403): Authenticated, but without access to the account or operation.; AccountNotFound (404): The accountId does not exist.; OrderNotFound (404): The account exists, but the order identifier does not.; NotFound (404): Unknown path, host or venue.; MethodNotAllowed (405): The path exists but only accepts POST.; DuplicateClientOrderId (409): An order with this clientOrderId already exists.; OrderAlreadyClosed (409): The order is already filled, cancelled or rejected.; Conflict (409): A unique value (for example an account name) is already used.; UnsupportedMediaType (415): The request is not Content-Type application/json.; InsufficientFunds (422): The account cannot fund the order.; InvalidProviderCredentials (422): The provider rejected the account credentials.; AccountLimit (422): An account or subscription limit was reached.; NotSupported (422): The host does not support this operation, variant or instrument.; Rejected (422): The host or validation rejected the command.; RateLimited (429): The provider rate limited the request.; UnexpectedError (500): Unexpected server failure.; CancelAllFailed (502): At least one sub-cancel failed; reconcile with ListOpenOrders.; UpstreamFailure (502): The provider failed or returned an unusable response.; Unavailable (503): The service or provider is temporarily unavailable.; UpstreamTimeout (504): The provider did not respond in time. New codes may be added; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"oneOf":[{"type":"string","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"string"},{"type":"null","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error","typeLabel":"string | null"}},"required":["code","message","error"],"description":"Every error has this shape, at every HTTP status, including unknown paths (404 NotFound) and wrong methods (405 MethodNotAllowed). code is the specific reason. Each operation describes when to retry and how to check the outcome; an error alone does not prove a command had no effect.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"InvalidRequest","message":"\u003cstring>","error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"4d23e6c1-5209-4154-8ed9-ea3625ec66e3":{"description":"429 RateLimited; code is RateLimited.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","enum":["InvalidRequest","Unauthenticated","Forbidden","AccountNotFound","OrderNotFound","NotFound","MethodNotAllowed","DuplicateClientOrderId","OrderAlreadyClosed","Conflict","UnsupportedMediaType","InsufficientFunds","InvalidProviderCredentials","AccountLimit","NotSupported","Rejected","RateLimited","UnexpectedError","CancelAllFailed","UpstreamFailure","Unavailable","UpstreamTimeout"],"description":"Stable error reason. The HTTP status for each code is fixed: InvalidRequest (400): Malformed JSON, wrong types, unknown fields or enum values, or invalid values.; Unauthenticated (401): Missing or invalid API key headers.; Forbidden (403): Authenticated, but without access to the account or operation.; AccountNotFound (404): The accountId does not exist.; OrderNotFound (404): The account exists, but the order identifier does not.; NotFound (404): Unknown path, host or venue.; MethodNotAllowed (405): The path exists but only accepts POST.; DuplicateClientOrderId (409): An order with this clientOrderId already exists.; OrderAlreadyClosed (409): The order is already filled, cancelled or rejected.; Conflict (409): A unique value (for example an account name) is already used.; UnsupportedMediaType (415): The request is not Content-Type application/json.; InsufficientFunds (422): The account cannot fund the order.; InvalidProviderCredentials (422): The provider rejected the account credentials.; AccountLimit (422): An account or subscription limit was reached.; NotSupported (422): The host does not support this operation, variant or instrument.; Rejected (422): The host or validation rejected the command.; RateLimited (429): The provider rate limited the request.; UnexpectedError (500): Unexpected server failure.; CancelAllFailed (502): At least one sub-cancel failed; reconcile with ListOpenOrders.; UpstreamFailure (502): The provider failed or returned an unusable response.; Unavailable (503): The service or provider is temporarily unavailable.; UpstreamTimeout (504): The provider did not respond in time. New codes may be added; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"oneOf":[{"type":"string","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"string"},{"type":"null","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error","typeLabel":"string | null"}},"required":["code","message","error"],"description":"Every error has this shape, at every HTTP status, including unknown paths (404 NotFound) and wrong methods (405 MethodNotAllowed). code is the specific reason. Each operation describes when to retry and how to check the outcome; an error alone does not prove a command had no effect.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"InvalidRequest","message":"\u003cstring>","error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"66aa6c2d-e178-4df4-9d84-2b4d9290abb2":{"description":"500 UnexpectedError; code is UnexpectedError.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","enum":["InvalidRequest","Unauthenticated","Forbidden","AccountNotFound","OrderNotFound","NotFound","MethodNotAllowed","DuplicateClientOrderId","OrderAlreadyClosed","Conflict","UnsupportedMediaType","InsufficientFunds","InvalidProviderCredentials","AccountLimit","NotSupported","Rejected","RateLimited","UnexpectedError","CancelAllFailed","UpstreamFailure","Unavailable","UpstreamTimeout"],"description":"Stable error reason. The HTTP status for each code is fixed: InvalidRequest (400): Malformed JSON, wrong types, unknown fields or enum values, or invalid values.; Unauthenticated (401): Missing or invalid API key headers.; Forbidden (403): Authenticated, but without access to the account or operation.; AccountNotFound (404): The accountId does not exist.; OrderNotFound (404): The account exists, but the order identifier does not.; NotFound (404): Unknown path, host or venue.; MethodNotAllowed (405): The path exists but only accepts POST.; DuplicateClientOrderId (409): An order with this clientOrderId already exists.; OrderAlreadyClosed (409): The order is already filled, cancelled or rejected.; Conflict (409): A unique value (for example an account name) is already used.; UnsupportedMediaType (415): The request is not Content-Type application/json.; InsufficientFunds (422): The account cannot fund the order.; InvalidProviderCredentials (422): The provider rejected the account credentials.; AccountLimit (422): An account or subscription limit was reached.; NotSupported (422): The host does not support this operation, variant or instrument.; Rejected (422): The host or validation rejected the command.; RateLimited (429): The provider rate limited the request.; UnexpectedError (500): Unexpected server failure.; CancelAllFailed (502): At least one sub-cancel failed; reconcile with ListOpenOrders.; UpstreamFailure (502): The provider failed or returned an unusable response.; Unavailable (503): The service or provider is temporarily unavailable.; UpstreamTimeout (504): The provider did not respond in time. New codes may be added; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"oneOf":[{"type":"string","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"string"},{"type":"null","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error","typeLabel":"string | null"}},"required":["code","message","error"],"description":"Every error has this shape, at every HTTP status, including unknown paths (404 NotFound) and wrong methods (405 MethodNotAllowed). code is the specific reason. Each operation describes when to retry and how to check the outcome; an error alone does not prove a command had no effect.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"InvalidRequest","message":"\u003cstring>","error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"cf798c20-3b0b-45f4-ab39-029d6e93006f":{"description":"502 UpstreamFailure; code is UpstreamFailure or CancelAllFailed.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","enum":["InvalidRequest","Unauthenticated","Forbidden","AccountNotFound","OrderNotFound","NotFound","MethodNotAllowed","DuplicateClientOrderId","OrderAlreadyClosed","Conflict","UnsupportedMediaType","InsufficientFunds","InvalidProviderCredentials","AccountLimit","NotSupported","Rejected","RateLimited","UnexpectedError","CancelAllFailed","UpstreamFailure","Unavailable","UpstreamTimeout"],"description":"Stable error reason. The HTTP status for each code is fixed: InvalidRequest (400): Malformed JSON, wrong types, unknown fields or enum values, or invalid values.; Unauthenticated (401): Missing or invalid API key headers.; Forbidden (403): Authenticated, but without access to the account or operation.; AccountNotFound (404): The accountId does not exist.; OrderNotFound (404): The account exists, but the order identifier does not.; NotFound (404): Unknown path, host or venue.; MethodNotAllowed (405): The path exists but only accepts POST.; DuplicateClientOrderId (409): An order with this clientOrderId already exists.; OrderAlreadyClosed (409): The order is already filled, cancelled or rejected.; Conflict (409): A unique value (for example an account name) is already used.; UnsupportedMediaType (415): The request is not Content-Type application/json.; InsufficientFunds (422): The account cannot fund the order.; InvalidProviderCredentials (422): The provider rejected the account credentials.; AccountLimit (422): An account or subscription limit was reached.; NotSupported (422): The host does not support this operation, variant or instrument.; Rejected (422): The host or validation rejected the command.; RateLimited (429): The provider rate limited the request.; UnexpectedError (500): Unexpected server failure.; CancelAllFailed (502): At least one sub-cancel failed; reconcile with ListOpenOrders.; UpstreamFailure (502): The provider failed or returned an unusable response.; Unavailable (503): The service or provider is temporarily unavailable.; UpstreamTimeout (504): The provider did not respond in time. New codes may be added; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"oneOf":[{"type":"string","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"string"},{"type":"null","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error","typeLabel":"string | null"}},"required":["code","message","error"],"description":"Every error has this shape, at every HTTP status, including unknown paths (404 NotFound) and wrong methods (405 MethodNotAllowed). code is the specific reason. Each operation describes when to retry and how to check the outcome; an error alone does not prove a command had no effect.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"InvalidRequest","message":"\u003cstring>","error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"93ccae3c-99c1-4c14-8d6b-b3d5d6d37305":{"description":"503 Unavailable; code is Unavailable.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","enum":["InvalidRequest","Unauthenticated","Forbidden","AccountNotFound","OrderNotFound","NotFound","MethodNotAllowed","DuplicateClientOrderId","OrderAlreadyClosed","Conflict","UnsupportedMediaType","InsufficientFunds","InvalidProviderCredentials","AccountLimit","NotSupported","Rejected","RateLimited","UnexpectedError","CancelAllFailed","UpstreamFailure","Unavailable","UpstreamTimeout"],"description":"Stable error reason. The HTTP status for each code is fixed: InvalidRequest (400): Malformed JSON, wrong types, unknown fields or enum values, or invalid values.; Unauthenticated (401): Missing or invalid API key headers.; Forbidden (403): Authenticated, but without access to the account or operation.; AccountNotFound (404): The accountId does not exist.; OrderNotFound (404): The account exists, but the order identifier does not.; NotFound (404): Unknown path, host or venue.; MethodNotAllowed (405): The path exists but only accepts POST.; DuplicateClientOrderId (409): An order with this clientOrderId already exists.; OrderAlreadyClosed (409): The order is already filled, cancelled or rejected.; Conflict (409): A unique value (for example an account name) is already used.; UnsupportedMediaType (415): The request is not Content-Type application/json.; InsufficientFunds (422): The account cannot fund the order.; InvalidProviderCredentials (422): The provider rejected the account credentials.; AccountLimit (422): An account or subscription limit was reached.; NotSupported (422): The host does not support this operation, variant or instrument.; Rejected (422): The host or validation rejected the command.; RateLimited (429): The provider rate limited the request.; UnexpectedError (500): Unexpected server failure.; CancelAllFailed (502): At least one sub-cancel failed; reconcile with ListOpenOrders.; UpstreamFailure (502): The provider failed or returned an unusable response.; Unavailable (503): The service or provider is temporarily unavailable.; UpstreamTimeout (504): The provider did not respond in time. New codes may be added; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"oneOf":[{"type":"string","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"string"},{"type":"null","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error","typeLabel":"string | null"}},"required":["code","message","error"],"description":"Every error has this shape, at every HTTP status, including unknown paths (404 NotFound) and wrong methods (405 MethodNotAllowed). code is the specific reason. Each operation describes when to retry and how to check the outcome; an error alone does not prove a command had no effect.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"InvalidRequest","message":"\u003cstring>","error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"621fbc9a-b3e0-4a17-9811-fc7cb56b3ecf":{"description":"504 UpstreamTimeout; code is UpstreamTimeout.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","enum":["InvalidRequest","Unauthenticated","Forbidden","AccountNotFound","OrderNotFound","NotFound","MethodNotAllowed","DuplicateClientOrderId","OrderAlreadyClosed","Conflict","UnsupportedMediaType","InsufficientFunds","InvalidProviderCredentials","AccountLimit","NotSupported","Rejected","RateLimited","UnexpectedError","CancelAllFailed","UpstreamFailure","Unavailable","UpstreamTimeout"],"description":"Stable error reason. The HTTP status for each code is fixed: InvalidRequest (400): Malformed JSON, wrong types, unknown fields or enum values, or invalid values.; Unauthenticated (401): Missing or invalid API key headers.; Forbidden (403): Authenticated, but without access to the account or operation.; AccountNotFound (404): The accountId does not exist.; OrderNotFound (404): The account exists, but the order identifier does not.; NotFound (404): Unknown path, host or venue.; MethodNotAllowed (405): The path exists but only accepts POST.; DuplicateClientOrderId (409): An order with this clientOrderId already exists.; OrderAlreadyClosed (409): The order is already filled, cancelled or rejected.; Conflict (409): A unique value (for example an account name) is already used.; UnsupportedMediaType (415): The request is not Content-Type application/json.; InsufficientFunds (422): The account cannot fund the order.; InvalidProviderCredentials (422): The provider rejected the account credentials.; AccountLimit (422): An account or subscription limit was reached.; NotSupported (422): The host does not support this operation, variant or instrument.; Rejected (422): The host or validation rejected the command.; RateLimited (429): The provider rate limited the request.; UnexpectedError (500): Unexpected server failure.; CancelAllFailed (502): At least one sub-cancel failed; reconcile with ListOpenOrders.; UpstreamFailure (502): The provider failed or returned an unusable response.; Unavailable (503): The service or provider is temporarily unavailable.; UpstreamTimeout (504): The provider did not respond in time. New codes may be added; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error":{"oneOf":[{"type":"string","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"string"},{"type":"null","description":"Reserved for structured detail; currently always null.","isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error","typeLabel":"string | null"}},"required":["code","message","error"],"description":"Every error has this shape, at every HTTP status, including unknown paths (404 NotFound) and wrong methods (405 MethodNotAllowed). code is the specific reason. Each operation describes when to retry and how to check the outcome; an error alone does not prove a command had no effect.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"InvalidRequest","message":"\u003cstring>","error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{},"servers":{"7bdeb600-191f-4ab2-ae0b-ca8270458bcb":{"url":"https://api.plurex.io"}}},"originalFileLocation":"api-reference/platform/plurex-platform-api.yaml"},"subdomain":"plurex","siteName":"Plurex Docs","title":"List candles - Plurex Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-25T18:05:59.188Z","originalFileLocation":"api-reference/platform/venues/list-candles.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=\"Closed candles for one market, price kind and interval, newest first across every page. The candle still forming is never included. A page has no gaps: one candle for every interval it spans. Follow nextCursor back in time until it is null. ByInstrument starts from the latest closed candle; ByInstrumentBefore starts from the candles that end at or before before. The market\u0026#x27;s candles entry says which of these it supports (list, listBefore); paging past the first page needs listBefore. 422 NotSupported for an unknown market, or a price kind, interval or variant the market does not list. No API key needed.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Plurex Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/plurex/xiN9lOeJgzOgEDZE/_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/plurex/xiN9lOeJgzOgEDZE/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/plurex/xiN9lOeJgzOgEDZE/_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/plurex/xiN9lOeJgzOgEDZE/_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/plurex/xiN9lOeJgzOgEDZE/_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/plurex/xiN9lOeJgzOgEDZE/_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/plurex/xiN9lOeJgzOgEDZE/_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/plurex/xiN9lOeJgzOgEDZE/_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/plurex/xiN9lOeJgzOgEDZE/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"List candles - Plurex Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Closed candles for one market, price kind and interval, newest first across every page. The candle still forming is never included. A page has no gaps: one candle for every interval it spans. Follow nextCursor back in time until it is null. ByInstrument starts from the latest closed candle; ByInstrumentBefore starts from the candles that end at or before before. The market\u0026#x27;s candles entry says which of these it supports (list, listBefore); paging past the first page needs listBefore. 422 NotSupported for an unknown market, or a price kind, interval or variant the market does not list. No API key needed.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Plurex Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.plurex.io/api-reference/platform/venues/list-candles\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://plurex.mintlify.app/_mintlify/api/og/v2?division=Candles\u0026amp;title=List+candles\u0026amp;description=Closed+candles+for+one+market%2C+price+kind+and+interval%2C+newest+first+across+every+page.+The+candle+still+forming+is+never+included.+A+page+has+no+gaps%3A+one+cand\u0026amp;theme=1267ba68e08c08afc9c8746c\u0026amp;signature=bc9b10310c882178446e83411b2931751609761d0759a5c502b4f07de5e09d11\">\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=\"List candles - Plurex Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Closed candles for one market, price kind and interval, newest first across every page. The candle still forming is never included. A page has no gaps: one candle for every interval it spans. Follow nextCursor back in time until it is null. ByInstrument starts from the latest closed candle; ByInstrumentBefore starts from the candles that end at or before before. The market\u0026#x27;s candles entry says which of these it supports (list, listBefore); paging past the first page needs listBefore. 422 NotSupported for an unknown market, or a price kind, interval or variant the market does not list. No API key needed.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://plurex.mintlify.app/_mintlify/api/og/v2?division=Candles\u0026amp;title=List+candles\u0026amp;description=Closed+candles+for+one+market%2C+price+kind+and+interval%2C+newest+first+across+every+page.+The+candle+still+forming+is+never+included.+A+page+has+no+gaps%3A+one+cand\u0026amp;theme=1267ba68e08c08afc9c8746c\u0026amp;signature=bc9b10310c882178446e83411b2931751609761d0759a5c502b4f07de5e09d11\">\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/plurex/xiN9lOeJgzOgEDZE/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Plurex Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ba54f5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.plurex.io/api-reference/platform/venues/list-candles\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/platform/venues/list-candles.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.plurex.io/#organization\",\"name\":\"Plurex Docs\",\"url\":\"https://docs.plurex.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/plurex/55zZlLmLoaaEFioa/logo/light.svg?fit=max\u0026auto=format\u0026n=55zZlLmLoaaEFioa\u0026q=85\u0026s=e150115596b050b7a538e6f784ec2f44\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.plurex.io#website\",\"name\":\"Plurex Docs\",\"url\":\"https://docs.plurex.io\",\"publisher\":{\"@id\":\"https://docs.plurex.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.plurex.io/api-reference/platform/venues/list-candles#webpage\",\"url\":\"https://docs.plurex.io/api-reference/platform/venues/list-candles\",\"name\":\"List candles\",\"description\":\"Closed candles for one market, price kind and interval, newest first across every page. The candle still forming is never included. A page has no gaps: one candle for every interval it spans. Follow nextCursor back in time until it is null. ByInstrument starts from the latest closed candle; ByInstrumentBefore starts from the candles that end at or before before. The market's candles entry says which of these it supports (list, listBefore); paging past the first page needs listBefore. 422 NotSupported for an unknown market, or a price kind, interval or variant the market does not list. No API key needed.\",\"dateModified\":\"2026-10-25T18:05:59.188Z\",\"isPartOf\":{\"@id\":\"https://docs.plurex.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.plurex.io/api-reference/platform/venues/list-candles#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.plurex.io/api-reference/platform/venues/list-candles#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Market data\",\"item\":\"https://docs.plurex.io/api-reference/platform/venues/list\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"List candles\",\"item\":\"https://docs.plurex.io/api-reference/platform/venues/list-candles\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.plurex.io/api-reference/platform/venues/list-candles#apireference\",\"headline\":\"List candles\",\"name\":\"List candles\",\"description\":\"Closed candles for one market, price kind and interval, newest first across every page. The candle still forming is never included. A page has no gaps: one candle for every interval it spans. Follow nextCursor back in time until it is null. ByInstrument starts from the latest closed candle; ByInstrumentBefore starts from the candles that end at or before before. The market's candles entry says which of these it supports (list, listBefore); paging past the first page needs listBefore. 422 NotSupported for an unknown market, or a price kind, interval or variant the market does not list. No API key needed.\",\"url\":\"https://docs.plurex.io/api-reference/platform/venues/list-candles\",\"mainEntityOfPage\":{\"@id\":\"https://docs.plurex.io/api-reference/platform/venues/list-candles#webpage\"},\"dateModified\":\"2026-10-25T18:05:59.188Z\",\"publisher\":{\"@id\":\"https://docs.plurex.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.plurex.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Plurex Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Plurex Docs","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API reference","groups":[{"group":"Getting started","pages":[{"title":"Platform API","href":"/api-reference/platform/overview"},{"title":"API conventions","href":"/api-reference/platform/conventions"},{"title":"Errors","href":"/api-reference/platform/errors"}]},{"group":"Market data","pages":[{"group":"Venues and markets","pages":[{"title":"List venues","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/List","href":"/api-reference/platform/venues/list"},{"title":"List venue markets","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/ListMarkets","href":"/api-reference/platform/venues/list-markets"}]},{"group":"Order books","pages":[{"title":"Get order book","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/GetOrderBook","href":"/api-reference/platform/venues/get-order-book"}]},{"group":"Public trades","pages":[{"title":"Get recent trades","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/GetRecentTrades","href":"/api-reference/platform/venues/get-recent-trades"}]},{"group":"Prices and market statistics","pages":[{"title":"Get prices","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/GetPrices","href":"/api-reference/platform/venues/get-prices"},{"title":"Get best quotes","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/GetBestQuotes","href":"/api-reference/platform/venues/get-best-quotes"},{"title":"Get market statistics","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/GetMarketStatistics","href":"/api-reference/platform/venues/get-market-statistics"},{"title":"Get indicative fundings","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/GetIndicativeFundings","href":"/api-reference/platform/venues/get-indicative-fundings"},{"title":"Get open interests","description":"The current open interest for each derivative. One result per requested instrument, in request order. An instrument without a value comes back as an Unavailable result with its error code, so one instrument cannot fail the batch. Served from Plurex's live feed for the market when one is running, otherwise fetched from the venue. No API key needed.","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/GetOpenInterests","href":"/api-reference/platform/venues/get-open-interests"}]},{"group":"Candles","pages":[{"title":"List candles","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/ListCandles","href":"/api-reference/platform/venues/list-candles"}]}]},{"group":"Trading","pages":[{"group":"Hosts and markets","pages":[{"title":"List hosts","description":"Lists every host, real and paper, with the operations it supports. No API key needed.","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/List","href":"/api-reference/platform/hosts/list"},{"title":"List host markets","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/ListMarkets","href":"/api-reference/platform/hosts/list-markets"}]},{"group":"Orders","pages":[{"title":"Get an order","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/GetOrder","href":"/api-reference/platform/hosts/get-order"},{"title":"Get orders","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/GetOrders","href":"/api-reference/platform/hosts/get-orders"},{"title":"List open orders","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/ListOpenOrders","href":"/api-reference/platform/hosts/list-orders"},{"title":"List closed orders","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/ListClosedOrders","href":"/api-reference/platform/hosts/list-closed-orders"},{"title":"Submit an order","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/command/SubmitOrder","href":"/api-reference/platform/hosts/submit-order"},{"title":"Cancel an order","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/command/CancelOrder","href":"/api-reference/platform/hosts/cancel-order"},{"title":"Cancel orders","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/command/CancelOrders","href":"/api-reference/platform/hosts/cancel-orders"},{"title":"Cancel all orders","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/command/CancelAllOrders","href":"/api-reference/platform/hosts/cancel-all-orders"},{"title":"Stream account orders","asyncapi":"api-reference/platform/plurex-platform-async-api.yaml hostsSubscribeToAccountOrders","href":"/api-reference/platform/hosts/subscribe-to-account-orders"}]},{"group":"Fills","pages":[{"title":"List fills","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/ListFills","href":"/api-reference/platform/hosts/list-fills"}]},{"group":"Balances and positions","pages":[{"title":"List wallets","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/ListWallets","href":"/api-reference/platform/hosts/list-wallets"},{"title":"List open positions","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/ListOpenPositions","href":"/api-reference/platform/hosts/list-positions"},{"title":"List margin states","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/ListAccountMarginStates","href":"/api-reference/platform/hosts/list-margin-states"},{"title":"Get market account state","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/GetAccountMarketState","href":"/api-reference/platform/hosts/get-market-state"}]},{"group":"Leverage and position mode","pages":[{"title":"Get market leverage","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/GetMarketLeverage","href":"/api-reference/platform/hosts/get-leverage"},{"title":"Get market position mode","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/GetMarketPositionMode","href":"/api-reference/platform/hosts/get-position-mode"},{"title":"Set market leverage","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/command/SetMarketLeverage","href":"/api-reference/platform/hosts/set-leverage"},{"title":"Set market position mode","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/command/SetMarketPositionMode","href":"/api-reference/platform/hosts/set-position-mode"}]},{"group":"Transactions","pages":[{"title":"List account transactions","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/query/ListTransactions","href":"/api-reference/platform/hosts/list-transactions"},{"title":"Stream account transactions","asyncapi":"api-reference/platform/plurex-platform-async-api.yaml hostsSubscribeToAccountTransactions","href":"/api-reference/platform/hosts/subscribe-to-account-transactions"}]}]},{"group":"Accounts","pages":[{"title":"Connect an exchange or broker account","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/accounts/command/Connect","href":"/api-reference/platform/accounts/connect"},{"title":"Update account credentials","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/accounts/command/UpdateConnection","href":"/api-reference/platform/accounts/update-connection"},{"title":"Rename an account","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/accounts/command/Rename","href":"/api-reference/platform/accounts/rename"},{"title":"Delete an account","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/accounts/command/Delete","href":"/api-reference/platform/accounts/delete"},{"title":"List accounts","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/accounts/query/List","href":"/api-reference/platform/accounts/list"},{"title":"Get an account","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/accounts/query/Get","href":"/api-reference/platform/accounts/get"}]},{"group":"Paper trading","pages":[{"group":"Paper accounts","pages":[{"title":"Create a paper account","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/paper/command/CreateAccount","href":"/api-reference/platform/paper/create"},{"title":"Deposit into a paper account","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/paper/command/Deposit","href":"/api-reference/platform/paper/deposit"}]},{"group":"Paper fees","pages":[{"title":"Set paper fee tier","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/paper/command/SetFeeTier","href":"/api-reference/platform/paper/set-fee-tier"},{"title":"Get paper fee settings","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/paper/query/GetFeeSettings","href":"/api-reference/platform/paper/get-fee-settings"},{"title":"Get effective paper fee rates","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/paper/query/GetEffectiveFeeRates","href":"/api-reference/platform/paper/get-effective-fee-rates"}]}]}]}]},"title":"List candles - Plurex Docs","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DKJwRUt2.js","utils-CWD_VS3u.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-oFjciODD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C76WsxC3.js","snippetPresets-DvPMxpX_.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CuNQfndH.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BVFpVUoF.js","shallow-t59Jg5Kr.js","getApiPlaygroundDisplay-C_JZ4amX.js","CodeSnippet-CLRDnx_h.js","CodeSnippets-C2myU4kc.js","Page-7TwLLapg.js","getPastedJson-B-JaVXw7.js","icon-BA-iDhH3.js","MethodPill-D4qZABFp.js","DuplicateIcon-THIDKO1O.js","createIcon-CYYJwgFd.js","DynamicMarkdown-UGQuxDKp.js","SectionHeading-jYELb23h.js","axios-vUo_bRtp.js","Markdown-DKsLa3wy.js","clsx-CefdjKz2.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BaREnp3o.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-sgx_0XzF.js"]}