Streams one market’s candles of one price kind at one interval: a Reset of the recent candles, then an Update of the current candle as it forms and as each new one starts. A market, price kind or interval the venue does not stream returns 422 NotSupported.
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.
Future
FutureInv
Option
Perp
PerpInv
Spot
Show child attributes
Response
Each item in the stream
One message per line: a Reset first, then Updates, until an Ended line.
The recent candles, oldest first, ending with the current one.
Show child attributes
{"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":"6ae069e8d674d5fcdf0f8fc8","collectionId":"10a7ca6c-7ce8-4970-aa5a-284258f77003","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae069e8d674d5fcdf0f8fc8"},"entitlements":{},"buildId":"6ae13cd95d82eb0117f897be","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"API reference","count":47},{"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":9},{"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},"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":"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":"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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/platform/venues/subscribe-to-candles","slug":"/api-reference/platform/venues/subscribe-to-candles","pageMetadata":{"title":"Stream candles","description":"Streams one market's candles of one price kind at one interval: a Reset of the recent candles, then an Update of the current candle as it forms and as each new one starts. A market, price kind or interval the venue does not stream returns 422 NotSupported.","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/stream/SubscribeToCandles","playground":"none","href":"/api-reference/platform/venues/subscribe-to-candles"},"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: \"Streams one market’s candles of one price kind at one interval: a Reset of the recent candles, then an Update of the current candle as it forms and as each new one starts. A market, price kind or interval the venue does not stream returns 422 NotSupported.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const CapabilityCheck=({source=`host`,header=[],market=[],none=false,perMarket=false})=>{const _components={a:`a`,..._provideComponents()},{Info}=_components;if(!Info)_missingMdxReference(`Info`,true);const isHost=source===`host`;const noun=isHost?`host`:`venue`;const list=`/api-reference/platform/${noun}s/list`;const markets=`/api-reference/platform/${noun}s/list-markets`;const guide=`/capabilities/${noun}-capabilities`;const gated=header.some(item=>item.support);const keyed=header.find(item=>item.when);const path=value=>value.replace(/^capabilities\\./,``);return _jsxs(Info,{children:[_jsx(`p`,{children:_jsx(`strong`,{children:`Check support`})}),none?_jsx(`p`,{children:`No capability gates this operation.`}):_jsxs(_Fragment,{children:[_jsxs(`p`,{children:[`Read the `,noun,` with `,_jsxs(_components.a,{href:list,children:[`List `,noun,`s`]}),`. In its `,_jsx(`code`,{children:`capabilities`}),keyed?_jsxs(_Fragment,{children:[`, by your request's `,_jsx(`code`,{children:keyed.when.field})]}):null,`:`]}),_jsx(`ul`,{children:header.map(item=>_jsxs(`li`,{children:[item.when?_jsxs(_Fragment,{children:[_jsx(`code`,{children:item.when.value}),` → `]}):null,_jsx(`code`,{children:path(item.path)}),item.always?_jsxs(_Fragment,{children:[`, always `,_jsx(`code`,{children:`Supported`})]}):null,item.note?_jsxs(_Fragment,{children:[`: `,item.note]}):null]},item.path))}),gated?_jsxs(`p`,{children:[_jsx(`code`,{children:`Supported`}),`: go ahead.`,` `,perMarket?_jsxs(_Fragment,{children:[_jsx(`code`,{children:`PerMarket`}),`: check the market below. `]}):null,_jsx(`code`,{children:`NotSupported`}),`: the call fails with `,_jsx(`code`,{children:`422 NotSupported`}),`.`]}):null,market.length>0?_jsxs(_Fragment,{children:[_jsxs(`p`,{children:[`On the market, from `,_jsxs(_components.a,{href:markets,children:[`List `,noun,` markets`]}),`:`]}),_jsx(`ul`,{children:market.map(item=>_jsxs(`li`,{children:[_jsx(`code`,{children:item.path}),`: `,item.note]},item.path))})]}):null]}),_jsxs(`p`,{children:[`See `,_jsxs(_components.a,{href:guide,children:[isHost?`Host`:`Venue`,` capabilities`]}),` and`,` `,_jsx(_components.a,{href:`/capabilities/overview#support-values`,children:`support values`}),`.`]})]})};const OperationBadges=({badges=[]})=>{const{Badge,Tooltip}=_provideComponents()||{};if(!Badge)_missingMdxReference(`Badge`,true);if(!Tooltip)_missingMdxReference(`Tooltip`,true);const colors={query:`blue`,command:`purple`,stream:`yellow`,public:`green`,optional:`orange`,\"not-repeat-safe\":`red`};return _jsx(`p`,{children:badges.map(badge=>_jsx(`span`,{style:{marginRight:`0.5rem`},children:_jsx(Tooltip,{tip:badge.description,children:_jsx(Badge,{color:colors[badge.name]||`gray`,children:badge.label})})},badge.name))})};function _createMdxContent(props){const{_MdxComponentBoundary}={..._provideComponents(),...props.components};if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsx(_MdxComponentBoundary,{name:`OperationBadges`,children:_jsx(OperationBadges,{badges:[{\"name\":`stream`,\"label\":`Stream`,\"description\":`The response stays open and carries one JSON message per line until an Ended line.`},{\"name\":`optional`,\"label\":`Check capabilities`,\"description\":`Not every host or venue supports this operation; check its capabilities first or expect 422 NotSupported.`}]})}),`\n`,_jsx(_MdxComponentBoundary,{name:`CapabilityCheck`,children:_jsx(CapabilityCheck,{source:`venue`,header:[{\"path\":`capabilities.candles.subscribeToCandles`,\"support\":true}],market:[{\"path\":`marketData.candles.\u003cpriceKind>.subscribe`,\"note\":`true when the series can be streamed`},{\"path\":`marketData.candles.\u003cpriceKind>.supportedIntervals`,\"note\":`the intervals you can request`}],perMarket:true})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{CapabilityCheck,OperationBadges,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Stream candles","description":"Streams one market's candles of one price kind at one interval: a Reset of the recent candles, then an Update of the current candle as it forms and as each new one starts. A market, price kind or interval the venue does not stream returns 422 NotSupported.","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/stream/SubscribeToCandles","playground":"none","href":"/api-reference/platform/venues/subscribe-to-candles"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[151,2867,")=>null;const OperationBadges=()=>null;f"]]},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"venuesSubscribeToCandles","summary":"Stream candles","description":"Streams one market's candles of one price kind at one interval: a Reset of the recent candles, then an Update of the current candle as it forms and as each new one starts. A market, price kind or interval the venue does not stream returns 422 NotSupported.","tags":["candles","optional"],"requestBody":"d160d5cb-962c-40dc-860b-b718c64b3d84","responses":{"200":"48733969-46cc-4372-a943-bda350242234","400":"31407e59-4e26-4979-8111-b645dfd691b7","401":"1fb8c2c2-a2ba-4baa-b5d7-554a47dfb033","404":"e46f6fbc-2fad-4879-9a19-433ac0665adb","415":"5788ba05-1686-498b-9240-56a7135f3ac4","422":"ad4790a2-908f-4ce2-b271-5fb68e34b5ad","429":"02e0ca18-aa7d-41fd-83f5-4964e67b219f","500":"1b0f50bb-467a-4240-92b7-dc659a7f4c3a","502":"7625d416-1df8-41d3-a09c-8f79537d3215","503":"e8dac19e-cb31-4f23-94fc-8c250696df41","504":"04986221-57d0-45e0-a4a3-085d53cb6ffd"},"method":"post","type":"path","servers":["370bdac0-2687-440d-bc90-9160600a2147"],"security":["a45268ca-b483-4971-9c05-34ba8906f701"],"path":"/api/v1/venues/stream/SubscribeToCandles","baseUrlOptions":["https://api.plurex.io"],"title":"Stream 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>"},"instrument":{"oneOf":[{"type":"object","title":"Future","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":"instrument.oneOf.0.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"instrument.oneOf.0.quote","typeLabel":"string"},"expiry":{"type":"string","format":"date","description":"Contract expiry date (YYYY-MM-DD).","isRequired":true,"uniqueKey":"instrument.oneOf.0.expiry","typeLabel":"string\u003cdate>"},"type":{"type":"string","enum":["Future"],"isRequired":true,"uniqueKey":"instrument.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"instrument.oneOf.0","typeLabel":"Future · object"},{"type":"object","title":"FutureInv","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":"instrument.oneOf.1.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"instrument.oneOf.1.quote","typeLabel":"string"},"expiry":{"type":"string","format":"date","description":"Contract expiry date (YYYY-MM-DD).","isRequired":true,"uniqueKey":"instrument.oneOf.1.expiry","typeLabel":"string\u003cdate>"},"type":{"type":"string","enum":["FutureInv"],"isRequired":true,"uniqueKey":"instrument.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"instrument.oneOf.1","typeLabel":"FutureInv · object"},{"type":"object","title":"Option","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":"instrument.oneOf.2.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"instrument.oneOf.2.quote","typeLabel":"string"},"expiry":{"type":"string","format":"date","description":"Contract expiry date (YYYY-MM-DD).","isRequired":true,"uniqueKey":"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":"instrument.oneOf.2.strike","typeLabel":"string"},"right":{"type":"string","enum":["Call","Put"],"description":"Whether an option gives the right to buy (Call) or to sell (Put) the underlying at the strike.","isRequired":true,"uniqueKey":"instrument.oneOf.2.right","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["Option"],"isRequired":true,"uniqueKey":"instrument.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"instrument.oneOf.2","typeLabel":"Option · object"},{"type":"object","title":"Perp","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":"instrument.oneOf.3.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"instrument.oneOf.3.quote","typeLabel":"string"},"type":{"type":"string","enum":["Perp"],"isRequired":true,"uniqueKey":"instrument.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"instrument.oneOf.3","typeLabel":"Perp · object"},{"type":"object","title":"PerpInv","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":"instrument.oneOf.4.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"instrument.oneOf.4.quote","typeLabel":"string"},"type":{"type":"string","enum":["PerpInv"],"isRequired":true,"uniqueKey":"instrument.oneOf.4.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"instrument.oneOf.4","typeLabel":"PerpInv · object"},{"type":"object","title":"Spot","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":"instrument.oneOf.5.base","typeLabel":"string"},"quote":{"type":"string","pattern":"^[A-Z0-9.]{1,32}$","isRequired":true,"uniqueKey":"instrument.oneOf.5.quote","typeLabel":"string"},"type":{"type":"string","enum":["Spot"],"isRequired":true,"uniqueKey":"instrument.oneOf.5.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"instrument.oneOf.5","typeLabel":"Spot · object"}],"isRequired":true,"uniqueKey":"instrument","typeLabel":"Future · object | FutureInv · object | Option · object | Perp · object | PerpInv · object | Spot · object"}},"required":["venueId","priceKind","interval","instrument"],"description":"Streams one market's candles of one price kind at one interval on a venue.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"venueId":"\u003cstring>","instrument":{"base":"\u003cstring>","quote":"\u003cstring>","expiry":"2023-12-25","type":"Future"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"48733969-46cc-4372-a943-bda350242234":{"description":"One message per line: a Reset first, then Updates, until an Ended line.","content":{"application/jsonl":{"itemSchema":{"oneOf":[{"type":"object","title":"Reset","description":"One line of the candle stream.","required":["type","timestamp","data"],"properties":{"type":{"type":"string","enum":["Reset"],"description":"Always Reset.","isRequired":true,"uniqueKey":"oneOf.0.type","typeLabel":"enum\u003cstring>"},"timestamp":{"type":"string","format":"date-time","description":"When Plurex sent the event.","isRequired":true,"uniqueKey":"oneOf.0.timestamp","typeLabel":"string\u003cdate-time>"},"data":{"type":"object","properties":{"candles":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","format":"date-time","description":"Inclusive.","isRequired":true,"uniqueKey":"oneOf.0.data.candles.items.[INDEX].startAt","typeLabel":"string\u003cdate-time>"},"endAt":{"type":"string","format":"date-time","description":"Exclusive.","isRequired":true,"uniqueKey":"oneOf.0.data.candles.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":"oneOf.0.data.candles.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":"oneOf.0.data.candles.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":"oneOf.0.data.candles.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":"oneOf.0.data.candles.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":"oneOf.0.data.candles.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":"oneOf.0.data.candles.items.[INDEX].volume.oneOf.0.value","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.0.data.candles.items.[INDEX].volume.oneOf.0","typeLabel":"object"},{"type":"null","description":"Traded volume; null when the venue does not report it.","isRequired":true,"uniqueKey":"oneOf.0.data.candles.items.[INDEX].volume.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.data.candles.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":"oneOf.0.data.candles.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":"oneOf.0.data.candles.items.[INDEX].turnover.oneOf.0.value","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.0.data.candles.items.[INDEX].turnover.oneOf.0","typeLabel":"object"},{"type":"null","description":"Traded turnover; null when the venue does not report it.","isRequired":true,"uniqueKey":"oneOf.0.data.candles.items.[INDEX].turnover.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.data.candles.items.[INDEX].turnover","typeLabel":"object | null"}},"required":["startAt","endAt","open","high","low","close","volume","turnover"],"description":"OHLC for [startAt, endAt).","uniqueKey":"oneOf.0.data.candles.items.[INDEX]","typeLabel":"object"},"description":"Oldest first.","isRequired":true,"uniqueKey":"oneOf.0.data.candles","typeLabel":"object[]"}},"required":["candles"],"description":"The recent candles, oldest first, ending with the current one.","isRequired":true,"uniqueKey":"oneOf.0.data","typeLabel":"object"}},"uniqueKey":"oneOf.0","typeLabel":"Reset · object"},{"type":"object","title":"Update","description":"One line of the candle stream.","required":["type","timestamp","data"],"properties":{"type":{"type":"string","enum":["Update"],"description":"Always Update.","isRequired":true,"uniqueKey":"oneOf.1.type","typeLabel":"enum\u003cstring>"},"timestamp":{"type":"string","format":"date-time","description":"When Plurex sent the event.","isRequired":true,"uniqueKey":"oneOf.1.timestamp","typeLabel":"string\u003cdate-time>"},"data":{"type":"object","properties":{"candles":{"type":"array","items":{"type":"object","properties":{"startAt":{"type":"string","format":"date-time","description":"Inclusive.","isRequired":true,"uniqueKey":"oneOf.1.data.candles.items.[INDEX].startAt","typeLabel":"string\u003cdate-time>"},"endAt":{"type":"string","format":"date-time","description":"Exclusive.","isRequired":true,"uniqueKey":"oneOf.1.data.candles.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":"oneOf.1.data.candles.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":"oneOf.1.data.candles.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":"oneOf.1.data.candles.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":"oneOf.1.data.candles.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":"oneOf.1.data.candles.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":"oneOf.1.data.candles.items.[INDEX].volume.oneOf.0.value","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.1.data.candles.items.[INDEX].volume.oneOf.0","typeLabel":"object"},{"type":"null","description":"Traded volume; null when the venue does not report it.","isRequired":true,"uniqueKey":"oneOf.1.data.candles.items.[INDEX].volume.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.data.candles.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":"oneOf.1.data.candles.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":"oneOf.1.data.candles.items.[INDEX].turnover.oneOf.0.value","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.1.data.candles.items.[INDEX].turnover.oneOf.0","typeLabel":"object"},{"type":"null","description":"Traded turnover; null when the venue does not report it.","isRequired":true,"uniqueKey":"oneOf.1.data.candles.items.[INDEX].turnover.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.data.candles.items.[INDEX].turnover","typeLabel":"object | null"}},"required":["startAt","endAt","open","high","low","close","volume","turnover"],"description":"OHLC for [startAt, endAt).","uniqueKey":"oneOf.1.data.candles.items.[INDEX]","typeLabel":"object"},"description":"Oldest first.","isRequired":true,"uniqueKey":"oneOf.1.data.candles","typeLabel":"object[]"}},"required":["candles"],"description":"The current candle.","isRequired":true,"uniqueKey":"oneOf.1.data","typeLabel":"object"}},"uniqueKey":"oneOf.1","typeLabel":"Update · object"},{"type":"object","title":"Ended","description":"One line of the candle stream.","required":["type","code","message"],"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":"Why the stream stopped, for example UpstreamFailure when the venue's or host's own feed ended.","isRequired":true,"uniqueKey":"oneOf.2.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Readable detail for logs; do not parse it.","isRequired":true,"uniqueKey":"oneOf.2.message","typeLabel":"string"},"type":{"type":"string","enum":["Ended"],"description":"Always Ended.","isRequired":true,"uniqueKey":"oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.2","typeLabel":"Ended · object"}],"uniqueKey":"","typeLabel":"Reset · object | Update · object | Ended · object"},"examples":{"Stream":{"title":"Stream","value":{"type":"Reset","timestamp":"2026-10-27T09:01:20.120Z","data":{"candles":[{"startAt":"2026-10-27T09:00:00Z","endAt":"2026-10-27T09:01:00Z","open":"67250","high":"67262.5","low":"67248","close":"67260","volume":{"asset":"BTC","value":"12.4"},"turnover":{"asset":"USDT","value":"834012.6"}},{"startAt":"2026-10-27T09:01:00Z","endAt":"2026-10-27T09:02:00Z","open":"67260","high":"67266","low":"67259","close":"67263.5","volume":{"asset":"BTC","value":"3.1"},"turnover":{"asset":"USDT","value":"208517.9"}}]}},"serializedValue":"{\"type\":\"Reset\",\"timestamp\":\"2026-10-27T09:01:20.120Z\",\"data\":{\"candles\":[{\"startAt\":\"2026-10-27T09:00:00Z\",\"endAt\":\"2026-10-27T09:01:00Z\",\"open\":\"67250\",\"high\":\"67262.5\",\"low\":\"67248\",\"close\":\"67260\",\"volume\":{\"asset\":\"BTC\",\"value\":\"12.4\"},\"turnover\":{\"asset\":\"USDT\",\"value\":\"834012.6\"}},{\"startAt\":\"2026-10-27T09:01:00Z\",\"endAt\":\"2026-10-27T09:02:00Z\",\"open\":\"67260\",\"high\":\"67266\",\"low\":\"67259\",\"close\":\"67263.5\",\"volume\":{\"asset\":\"BTC\",\"value\":\"3.1\"},\"turnover\":{\"asset\":\"USDT\",\"value\":\"208517.9\"}}]}}\n{\"type\":\"Update\",\"timestamp\":\"2026-10-27T09:01:21.410Z\",\"data\":{\"candles\":[{\"startAt\":\"2026-10-27T09:01:00Z\",\"endAt\":\"2026-10-27T09:02:00Z\",\"open\":\"67260\",\"high\":\"67270\",\"low\":\"67259\",\"close\":\"67270\",\"volume\":{\"asset\":\"BTC\",\"value\":\"3.4\"},\"turnover\":{\"asset\":\"USDT\",\"value\":\"228697.9\"}}]}}\n\n{\"type\":\"Ended\",\"code\":\"UpstreamFailure\",\"message\":\"Upstream stream ended\"}\n"}},"exampleType":"examples"}},"exampleType":"examples"},"31407e59-4e26-4979-8111-b645dfd691b7":{"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 or withdrawal.; 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"}},"required":["code","message"],"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":{"InvalidRequest":{"title":"InvalidRequest","value":{"code":"InvalidRequest","message":"Invalid cursor"}}},"exampleType":"examples"}},"exampleType":"examples"},"1fb8c2c2-a2ba-4baa-b5d7-554a47dfb033":{"description":"401 Unauthenticated; code is Unauthenticated.","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 or withdrawal.; 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"}},"required":["code","message"],"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":{"Unauthenticated":{"title":"Unauthenticated","value":{"code":"Unauthenticated","message":"Unauthorized"}}},"exampleType":"examples"}},"exampleType":"examples"},"e46f6fbc-2fad-4879-9a19-433ac0665adb":{"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 or withdrawal.; 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"}},"required":["code","message"],"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":{"AccountNotFound":{"title":"AccountNotFound","value":{"code":"AccountNotFound","message":"Account not found: acc_123"}},"OrderNotFound":{"title":"OrderNotFound","value":{"code":"OrderNotFound","message":"Order not found: ord_456"}},"NotFound":{"title":"NotFound","value":{"code":"NotFound","message":"Not Found"}}},"exampleType":"examples"}},"exampleType":"examples"},"5788ba05-1686-498b-9240-56a7135f3ac4":{"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 or withdrawal.; 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"}},"required":["code","message"],"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":{"UnsupportedMediaType":{"title":"UnsupportedMediaType","value":{"code":"UnsupportedMediaType","message":"Content type text/plain is not supported"}}},"exampleType":"examples"}},"exampleType":"examples"},"ad4790a2-908f-4ce2-b271-5fb68e34b5ad":{"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 or withdrawal.; 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"}},"required":["code","message"],"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":{"InsufficientFunds":{"title":"InsufficientFunds","value":{"code":"InsufficientFunds","message":"Insufficient Funds"}},"InvalidProviderCredentials":{"title":"InvalidProviderCredentials","value":{"code":"InvalidProviderCredentials","message":"Unprocessable Entity"}},"AccountLimit":{"title":"AccountLimit","value":{"code":"AccountLimit","message":"Subscription limit reached"}},"NotSupported":{"title":"NotSupported","value":{"code":"NotSupported","message":"Unprocessable Entity"}},"Rejected":{"title":"Rejected","value":{"code":"Rejected","message":"Order price is not a multiple of the price increment"}}},"exampleType":"examples"}},"exampleType":"examples"},"02e0ca18-aa7d-41fd-83f5-4964e67b219f":{"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 or withdrawal.; 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"}},"required":["code","message"],"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":{"RateLimited":{"title":"RateLimited","value":{"code":"RateLimited","message":"Provider rate limited"}}},"exampleType":"examples"}},"exampleType":"examples"},"1b0f50bb-467a-4240-92b7-dc659a7f4c3a":{"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 or withdrawal.; 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"}},"required":["code","message"],"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":{"UnexpectedError":{"title":"UnexpectedError","value":{"code":"UnexpectedError","message":"Internal Server Error"}}},"exampleType":"examples"}},"exampleType":"examples"},"7625d416-1df8-41d3-a09c-8f79537d3215":{"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 or withdrawal.; 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"}},"required":["code","message"],"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":{"UpstreamFailure":{"title":"UpstreamFailure","value":{"code":"UpstreamFailure","message":"Bad Gateway"}},"CancelAllFailed":{"title":"CancelAllFailed","value":{"code":"CancelAllFailed","message":"Bad Gateway"}}},"exampleType":"examples"}},"exampleType":"examples"},"e8dac19e-cb31-4f23-94fc-8c250696df41":{"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 or withdrawal.; 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"}},"required":["code","message"],"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":{"Unavailable":{"title":"Unavailable","value":{"code":"Unavailable","message":"Service Unavailable"}}},"exampleType":"examples"}},"exampleType":"examples"},"04986221-57d0-45e0-a4a3-085d53cb6ffd":{"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 or withdrawal.; 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"}},"required":["code","message"],"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":{"UpstreamTimeout":{"title":"UpstreamTimeout","value":{"code":"UpstreamTimeout","message":"Gateway Timeout"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"a45268ca-b483-4971-9c05-34ba8906f701":{"ApiKey":{"type":"apiKey","in":"header","name":"X-API-KEY","scopes":[],"schemeName":"ApiKey"},"ApiSecret":{"type":"apiKey","in":"header","name":"X-API-SECRET","scopes":[],"schemeName":"ApiSecret"}}},"servers":{"370bdac0-2687-440d-bc90-9160600a2147":{"url":"https://api.plurex.io"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-KEY","scopes":[],"schemeName":"ApiKey"},"schema":{"title":"X-API-KEY","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKey","name":"X-API-KEY"},{"scheme":{"type":"apiKey","in":"header","name":"X-API-SECRET","scopes":[],"schemeName":"ApiSecret"},"schema":{"title":"X-API-SECRET","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiSecret","name":"X-API-SECRET"}],"title":"ApiKey \u0026 ApiSecret"}]},"originalFileLocation":"api-reference/platform/plurex-platform-api.yaml"},"subdomain":"plurex","siteName":"Plurex Docs","title":"Stream candles - Plurex Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T00:08:02.171Z","originalFileLocation":"api-reference/platform/venues/subscribe-to-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=\"Streams one market\u0026#x27;s candles of one price kind at one interval: a Reset of the recent candles, then an Update of the current candle as it forms and as each new one starts. A market, price kind or interval the venue does not stream returns 422 NotSupported.\">\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=\"Stream candles - Plurex Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Streams one market\u0026#x27;s candles of one price kind at one interval: a Reset of the recent candles, then an Update of the current candle as it forms and as each new one starts. A market, price kind or interval the venue does not stream returns 422 NotSupported.\">\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/subscribe-to-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=Stream+candles\u0026amp;description=Streams+one+market%27s+candles+of+one+price+kind+at+one+interval%3A+a+Reset+of+the+recent+candles%2C+then+an+Update+of+the+current+candle+as+it+forms+and+as+each+new+\u0026amp;theme=1267ba68e08c08afc9c8746c\u0026amp;signature=cd6263037b17581dcb057dfd1e64a4488dbd1ff7ed955a77c0b062c4745ab994\">\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=\"Stream candles - Plurex Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Streams one market\u0026#x27;s candles of one price kind at one interval: a Reset of the recent candles, then an Update of the current candle as it forms and as each new one starts. A market, price kind or interval the venue does not stream returns 422 NotSupported.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://plurex.mintlify.app/_mintlify/api/og/v2?division=Candles\u0026amp;title=Stream+candles\u0026amp;description=Streams+one+market%27s+candles+of+one+price+kind+at+one+interval%3A+a+Reset+of+the+recent+candles%2C+then+an+Update+of+the+current+candle+as+it+forms+and+as+each+new+\u0026amp;theme=1267ba68e08c08afc9c8746c\u0026amp;signature=cd6263037b17581dcb057dfd1e64a4488dbd1ff7ed955a77c0b062c4745ab994\">\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/subscribe-to-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/subscribe-to-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/subscribe-to-candles#webpage\",\"url\":\"https://docs.plurex.io/api-reference/platform/venues/subscribe-to-candles\",\"name\":\"Stream candles\",\"description\":\"Streams one market's candles of one price kind at one interval: a Reset of the recent candles, then an Update of the current candle as it forms and as each new one starts. A market, price kind or interval the venue does not stream returns 422 NotSupported.\",\"dateModified\":\"2026-10-28T00:08:02.171Z\",\"isPartOf\":{\"@id\":\"https://docs.plurex.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.plurex.io/api-reference/platform/venues/subscribe-to-candles#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.plurex.io/api-reference/platform/venues/subscribe-to-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\":\"Candles\",\"item\":\"https://docs.plurex.io/api-reference/platform/venues/list-candles\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Stream candles\",\"item\":\"https://docs.plurex.io/api-reference/platform/venues/subscribe-to-candles\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.plurex.io/api-reference/platform/venues/subscribe-to-candles#apireference\",\"headline\":\"Stream candles\",\"name\":\"Stream candles\",\"description\":\"Streams one market's candles of one price kind at one interval: a Reset of the recent candles, then an Update of the current candle as it forms and as each new one starts. A market, price kind or interval the venue does not stream returns 422 NotSupported.\",\"url\":\"https://docs.plurex.io/api-reference/platform/venues/subscribe-to-candles\",\"mainEntityOfPage\":{\"@id\":\"https://docs.plurex.io/api-reference/platform/venues/subscribe-to-candles#webpage\"},\"dateModified\":\"2026-10-28T00:08:02.171Z\",\"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"},{"title":"Stream an order book","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/stream/SubscribeToOrderBooks","playground":"none","href":"/api-reference/platform/venues/subscribe-to-order-books"}]},{"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"},{"title":"Stream public trades","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/stream/SubscribeToTrades","playground":"none","href":"/api-reference/platform/venues/subscribe-to-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":"Stream a price","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/stream/SubscribeToPrices","playground":"none","href":"/api-reference/platform/venues/subscribe-to-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":"Stream the best bid and ask","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/stream/SubscribeToBestQuotes","playground":"none","href":"/api-reference/platform/venues/subscribe-to-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":"Stream market statistics","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/stream/SubscribeToMarketStatistics","playground":"none","href":"/api-reference/platform/venues/subscribe-to-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":"Stream indicative funding","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/stream/SubscribeToIndicativeFundings","playground":"none","href":"/api-reference/platform/venues/subscribe-to-indicative-fundings"},{"title":"Get open interests","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/GetOpenInterests","href":"/api-reference/platform/venues/get-open-interests"},{"title":"Stream open interest","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/stream/SubscribeToOpenInterests","playground":"none","href":"/api-reference/platform/venues/subscribe-to-open-interests"}]},{"group":"Candles","pages":[{"title":"List candles","description":"Closed candles for one market, price kind and interval, newest first. The forming candle is never included, and a page has no gaps. ByInstrument starts from the latest closed candle, ByInstrumentBefore from the candles that end at or before `before`; paging past the first page needs the market's listBefore. A price kind or interval the market does not list returns 422 NotSupported.","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/query/ListCandles","href":"/api-reference/platform/venues/list-candles"},{"title":"Stream candles","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/venues/stream/SubscribeToCandles","playground":"none","href":"/api-reference/platform/venues/subscribe-to-candles"}]}]},{"group":"Trading","pages":[{"group":"Hosts and markets","pages":[{"title":"List hosts","description":"Lists every host, real and paper, with the operations it supports.","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":"Stream account orders","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/stream/SubscribeToAccountOrders","playground":"none","href":"/api-reference/platform/hosts/subscribe-to-account-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"}]},{"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","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/hosts/stream/SubscribeToAccountTransactions","playground":"none","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"},{"title":"Withdraw from a paper account","openapi":"api-reference/platform/plurex-platform-api.yaml POST /api/v1/paper/command/Withdraw","href":"/api-reference/platform/paper/withdraw"}]},{"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":"Stream candles - Plurex Docs","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","Page-R3M_BF4L.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","clsx-BGBGWFTt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cv_O2fky.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-2C5OB2eV.js"]}