Returns the whole account at one revision: its summary, positions, working orders and protection. Read this rather than combining separate reads, which are three moments with nothing to say whether they agree. It is the same body the account stream sends, so a client with no stream open, or one coming back after a disconnect, gets exactly what the stream would have sent.
Required key: Trading API key. A Connect app’s backend can also send it with the app’s API key, and a venue’s backend with its Venue key, which carries trader:read or trader:trade, each naming one of its own traders in x-trdrs-trader: it then runs on that trader’s own accounts.
GET
/
api
/
account
/
snapshot
TypeScript
const res = await fetch('https://app.trdrs.co/api/account/snapshot', { headers: { Authorization: `Bearer ${process.env.TRDRS_API_KEY}` },})const data = await res.json()
The Trading API key (trdrs_sk_…), for market data, orders and account state on the accounts its owner holds. Use it server-to-server, and keep it on your server. Its scope is named trading in the API.
The account number at that provider. It must be one of your own accounts.
Response
The account at one revision.
The whole account at one revision: its summary, positions, working orders, protection and capabilities. GET /api/account/snapshot returns it, and every account event on the stream carries the same shape. Apply frames by revision alone: keep the newest one you have for the accountId, drop any at or behind it, and replace your whole picture with any ahead of it.
The account's revision. A frame that skips revisions is still complete, so there is nothing to catch up on and nothing to resync. Never work out a revision of your own.
What the revision counts. engine is the account's own history on trdrs. observation is trdrs reading a provider: every reading gets a new revision, so two reads of an account nothing happened to still differ. Compare revisions, never count them.
The paper book account's cycle, read with its rows. A reset starts a new cycle, so a frame from an earlier cycle describes an account that no longer exists, and nothing held from it applies. Null on a provider account, and on some older Demo accounts, whose reads carry no cycle.
How the account holds positions. On net there is at most one signed position row per instrument, except on a provider account in hedge mode, which shows the rows its provider reports beside an accountMode refusal and sends no order. On independent_tickets every open ticket is its own row with its positionId, and its exits are the reduce-only orders that name that id.
True while trdrs's connection to the provider is live. False means this is the last picture trdrs has, which you must be able to tell apart from an account that is flat.
The protection around the account's positions: every live bracket, and those that ended in the last day, with its ladders, the automation its stop losses run and the orders resting for it.
The account's leverage and margin modes, read with the rows: every instrument the account holds a position in or a working order on, and every instrument it saved a setting for. Absent on an account whose provider keeps no such setting, such as futures. An instrument with no entry has its starting setting, which GET /api/trading/symbol-config answers.
Where the account's own rules stand on this revision: each loss floor whose breach fails the account, and its stage's profit target, in the account's currency. Present on an account a venue issues on the paper book with a drawdown rule, a loss limit or a stage that advances; absent on every other account.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"trdrs Engine API","description":"Market data, trading and venue infrastructure: programmatic trading and business integrations through one documented API.","colors":{"primary":"#0a0a0a","light":"#fafafa","dark":"#0a0a0a"},"logo":{"light":"https://mintcdn.com/trdrs/VlyBylpRulgoNVYk/logo.svg?fit=max\u0026auto=format\u0026n=VlyBylpRulgoNVYk\u0026q=85\u0026s=0725a6173d2c03859de4fc3b0a99ea50","dark":"https://mintcdn.com/trdrs/VlyBylpRulgoNVYk/logo.svg?fit=max\u0026auto=format\u0026n=VlyBylpRulgoNVYk\u0026q=85\u0026s=0725a6173d2c03859de4fc3b0a99ea50"},"favicon":"https://mintcdn.com/trdrs/VlyBylpRulgoNVYk/logo.svg?fit=max\u0026auto=format\u0026n=VlyBylpRulgoNVYk\u0026q=85\u0026s=0725a6173d2c03859de4fc3b0a99ea50","api":{"playground":{"display":"simple"}},"appearance":{"default":"dark","strict":false},"background":{"color":{"light":"#ffffff","dark":"#0f0f0f"}},"navbar":{"links":[{"href":"https://trdrs.co/developers","label":"Developers"},{"href":"https://sandbox.trdrs.co/settings/api","label":"Sandbox"}],"primary":{"type":"button","label":"Get started","href":"/build"}},"fonts":{"family":"Inter"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"trdrs","hasAudioNarration":false,"actualSubdomain":"trdrs","customDomains":["docs.trdrs.co"],"gitSource":{"type":"github","owner":"trdrsco","repo":"trdrs-engine","deployBranch":"main","contentDirectory":"packages/developer-docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6adbde8f6c84e39c25185fdc","collectionId":"e0e8309c-fda2-4a24-b382-2e7b63e94f0a","liveDeploymentHistoryId":"6adbde8f6c84e39c25185fdc","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6adec344531268f76f8b6d66","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"API reference","count":163},{"language":"default","tag":"Endpoints","count":162},{"language":"default","tag":"Venues","count":117},{"language":"default","tag":"Guides","count":47},{"language":"default","tag":"Trading","count":46},{"language":"default","tag":"Connect","count":21},{"language":"default","tag":"Get started","count":20},{"language":"default","tag":"Venue accounts","count":20},{"language":"default","tag":"Market data","count":18},{"language":"default","tag":"Orders","count":18}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":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":[{"filePath":"style.css","content":"html{font-size:90%}"}],"page":{"pagePath":"api-reference/account/get-the-account-snapshot","slug":"/api-reference/account/get-the-account-snapshot","pageMetadata":{"title":"Get the account snapshot","description":"Returns the whole account at one revision: its summary, positions, working orders and protection. Read this rather than combining separate reads, which are three moments with nothing to say whether they agree. It is the same body the account stream sends, so a client with no stream open, or one coming back after a disconnect, gets exactly what the stream would have sent.\n\nRequired key: Trading API key. A Connect app's backend can also send it with the app's API key, and a venue's backend with its Venue key, which carries `trader:read` or `trader:trade`, each naming one of its own traders in `x-trdrs-trader`: it then runs on that trader's own accounts.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/snapshot","href":"/api-reference/account/get-the-account-snapshot","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Returns the whole account at one revision: its summary, positions, working orders and protection. Read this rather than combining separate reads, which are three moments with nothing to say whether they agree. It is the same body the account stream sends, so a client with no stream open, or one coming back after a disconnect, gets exactly what the stream would have sent.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Required key: Trading API key. A Connect app’s backend can also send it with the app’s API key, and a venue’s backend with its Venue key, which carries \", _jsx(_components.code, {\n children: \"trader:read\"\n }), \" or \", _jsx(_components.code, {\n children: \"trader:trade\"\n }), \", each naming one of its own traders in \", _jsx(_components.code, {\n children: \"x-trdrs-trader\"\n }), \": it then runs on that trader’s own accounts.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get the account snapshot","description":"Returns the whole account at one revision: its summary, positions, working orders and protection. Read this rather than combining separate reads, which are three moments with nothing to say whether they agree. It is the same body the account stream sends, so a client with no stream open, or one coming back after a disconnect, gets exactly what the stream would have sent.\n\nRequired key: Trading API key. A Connect app's backend can also send it with the app's API key, and a venue's backend with its Venue key, which carries `trader:read` or `trader:trade`, each naming one of its own traders in `x-trdrs-trader`: it then runs on that trader's own accounts.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/snapshot","href":"/api-reference/account/get-the-account-snapshot","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Account"],"summary":"Get the account snapshot","description":"Returns the whole account at one revision: its summary, positions, working orders and protection. Read this rather than combining separate reads, which are three moments with nothing to say whether they agree. It is the same body the account stream sends, so a client with no stream open, or one coming back after a disconnect, gets exactly what the stream would have sent.\n\nRequired key: Trading API key. A Connect app's backend can also send it with the app's API key, and a venue's backend with its Venue key, which carries `trader:read` or `trader:trade`, each naming one of its own traders in `x-trdrs-trader`: it then runs on that trader's own accounts.","security":["6bbc01cd-7e68-46a5-9be9-c679cb06f384","a0919fab-f762-489f-b4b7-fc507bdaaee5","8b55adb4-4fa8-4ff4-ad6f-e2d5bdf6e9b2"],"parameters":["33f75f87-edbb-4a1d-8bbc-dd378d54b0ae","6a95db4c-51c6-402d-8972-9ec5e0c5079a"],"responses":{"200":"e238c40b-09d7-48cc-b952-99626a9fe93b","400":"f626f7d2-4e28-4d02-9013-fd52328e29fb","401":"18f7cd81-3608-44d9-ba45-a96b6efa76a8","502":"288314df-a68e-4ab7-bce3-f9684344551f"},"x-codeSamples":[{"lang":"javascript","label":"TypeScript","source":"const res = await fetch('https://app.trdrs.co/api/account/snapshot', {\n headers: { Authorization: `Bearer ${process.env.TRDRS_API_KEY}` },\n})\nconst data = await res.json()"},{"lang":"shell","label":"cURL","source":"curl 'https://app.trdrs.co/api/account/snapshot' \\\n -H \"Authorization: Bearer $TRDRS_API_KEY\""}],"method":"get","type":"path","servers":["deea1f89-6e7f-4694-a35b-0824c194126c","3a3d6625-9250-40d2-9464-92c2f83e4ef6"],"path":"/api/account/snapshot","baseUrlOptions":["https://app.trdrs.co","/"],"title":"Get the account snapshot","codeSamples":[{"label":"TypeScript","lang":"javascript","source":"const res = await fetch('https://app.trdrs.co/api/account/snapshot', {\n headers: { Authorization: `Bearer ${process.env.TRDRS_API_KEY}` },\n})\nconst data = await res.json()"},{"label":"cURL","lang":"shell","source":"curl 'https://app.trdrs.co/api/account/snapshot' \\\n -H \"Authorization: Bearer $TRDRS_API_KEY\""}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"33f75f87-edbb-4a1d-8bbc-dd378d54b0ae":{"name":"provider","in":"query","schema":{"type":"string","description":"The provider the account is at. Omit it to use your default provider.","uniqueKey":"","typeLabel":"string"},"description":"The provider the account is at. Omit it to use your default provider."},"6a95db4c-51c6-402d-8972-9ec5e0c5079a":{"name":"account","in":"query","schema":{"type":"string","description":"The account number at that provider. It must be one of your own accounts.","uniqueKey":"","typeLabel":"string"},"description":"The account number at that provider. It must be one of your own accounts."}},"responses":{"e238c40b-09d7-48cc-b952-99626a9fe93b":{"description":"The account at one revision.","content":{"application/json":{"schema":{"type":"object","description":"The whole account at one revision: its summary, positions, working orders, protection and capabilities. `GET /api/account/snapshot` returns it, and every `account` event on the stream carries the same shape. Apply frames by `revision` alone: keep the newest one you have for the `accountId`, drop any at or behind it, and replace your whole picture with any ahead of it.","properties":{"accountId":{"type":"string","description":"The account's id. It is opaque: key your panels and subscriptions by it, and never take it apart.","isRequired":true,"uniqueKey":"accountId","typeLabel":"string"},"revision":{"type":"integer","description":"The account's revision. A frame that skips revisions is still complete, so there is nothing to catch up on and nothing to resync. Never work out a revision of your own.","isRequired":true,"uniqueKey":"revision","typeLabel":"integer"},"clock":{"type":"string","enum":["engine","observation"],"description":"What the revision counts. `engine` is the account's own history on trdrs. `observation` is trdrs reading a provider: every reading gets a new revision, so two reads of an account nothing happened to still differ. Compare revisions, never count them.","isRequired":true,"uniqueKey":"clock","typeLabel":"enum\u003cstring>"},"cycle":{"oneOf":[{"type":"integer","description":"The paper book account's cycle, read with its rows. A reset starts a new cycle, so a frame from an earlier cycle describes an account that no longer exists, and nothing held from it applies. Null on a provider account, and on some older Demo accounts, whose reads carry no cycle.","isRequired":true,"uniqueKey":"cycle.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The paper book account's cycle, read with its rows. A reset starts a new cycle, so a frame from an earlier cycle describes an account that no longer exists, and nothing held from it applies. Null on a provider account, and on some older Demo accounts, whose reads carry no cycle.","isRequired":true,"uniqueKey":"cycle.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cycle","typeLabel":"integer | null"},"positionModel":{"type":"string","enum":["net","independent_tickets"],"description":"How the account holds positions. On `net` there is at most one signed position row per instrument, except on a provider account in hedge mode, which shows the rows its provider reports beside an `accountMode` refusal and sends no order. On `independent_tickets` every open ticket is its own row with its `positionId`, and its exits are the reduce-only orders that name that id.","isRequired":true,"uniqueKey":"positionModel","typeLabel":"enum\u003cstring>"},"capabilities":{"type":"object","description":"What the provider behind the account supports.","properties":{"provider":{"type":"string","description":"The name of the provider integration behind the account, for your logs.","isRequired":true,"uniqueKey":"capabilities.provider","typeLabel":"string"},"assetClasses":{"type":"array","items":{"type":"string","uniqueKey":"capabilities.assetClasses.items.[INDEX]","typeLabel":"string"},"description":"The asset classes the provider may ever trade here. Empty means none.","isRequired":true,"uniqueKey":"capabilities.assetClasses","typeLabel":"string[]"},"orderTypes":{"type":"array","items":{"type":"string","enum":["market","limit","stop","stop_limit"],"uniqueKey":"capabilities.orderTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"The order types the provider accepts.","isRequired":true,"uniqueKey":"capabilities.orderTypes","typeLabel":"enum\u003cstring>[]"},"tifs":{"type":"array","items":{"type":"string","enum":["day","gtc","ioc","fok","post_only"],"uniqueKey":"capabilities.tifs.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"The times in force the provider supports. Any other is refused, never quietly changed to a different one.","isRequired":true,"uniqueKey":"capabilities.tifs","typeLabel":"enum\u003cstring>[]"},"exitHolding":{"type":"string","enum":["book","native_pair","reduce_only","none"],"description":"How the provider holds a bracket's pairs, each a take profit and a stop loss that cancel each other: `book` in trdrs's own paper book, `native_pair` as the provider's own one-cancels-other group, `reduce_only` as two reduce-only orders, the one left cancelled by trdrs when the other fills, and `none` where the provider holds no take profits or stop losses, and your interface offers none.","isRequired":true,"uniqueKey":"capabilities.exitHolding","typeLabel":"enum\u003cstring>"},"attachedExits":{"oneOf":[{"type":"object","description":"Where the provider places pairs in the entry's own request and rests them the moment it fills. Null where trdrs rests each pair on the fill it sees. Either way a bracket works on every entry type the account accepts: this says only how soon its protection rests.","required":["entryTypes","maxPairs","partial"],"properties":{"entryTypes":{"type":"array","items":{"type":"string","enum":["market","limit","stop","stop_limit"],"uniqueKey":"capabilities.attachedExits.oneOf.0.entryTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"The entry types the provider attaches pairs to.","isRequired":true,"uniqueKey":"capabilities.attachedExits.oneOf.0.entryTypes","typeLabel":"enum\u003cstring>[]"},"maxPairs":{"type":"integer","description":"The most pairs it attaches to one entry.","isRequired":true,"uniqueKey":"capabilities.attachedExits.oneOf.0.maxPairs","typeLabel":"integer"},"partial":{"type":"boolean","description":"True when the attached pairs may cover less than the whole entry.","isRequired":true,"uniqueKey":"capabilities.attachedExits.oneOf.0.partial","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"capabilities.attachedExits.oneOf.0","typeLabel":"object"},{"type":"null","description":"Where the provider places pairs in the entry's own request and rests them the moment it fills. Null where trdrs rests each pair on the fill it sees. Either way a bracket works on every entry type the account accepts: this says only how soon its protection rests.","isRequired":true,"uniqueKey":"capabilities.attachedExits.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"capabilities.attachedExits","typeLabel":"object | null"},"amendOrder":{"type":"boolean","description":"True when a resting order can be changed in place, keeping its identity at the provider. False means trdrs cancels it and places a new one, which gets a new identity.","isRequired":true,"uniqueKey":"capabilities.amendOrder","typeLabel":"boolean"},"reduceOnly":{"type":"boolean","description":"True when the provider enforces reduce-only orders.","isRequired":true,"uniqueKey":"capabilities.reduceOnly","typeLabel":"boolean"},"symbolConfig":{"type":"boolean","description":"True when leverage can be read and set with `/api/trading/symbol-config`.","isRequired":true,"uniqueKey":"capabilities.symbolConfig","typeLabel":"boolean"},"marginPreview":{"type":"string","enum":["real","estimate","none"],"description":"`real` when the provider computes the margin preview, `estimate` when trdrs estimates it, and `none` when there is no preview.","isRequired":true,"uniqueKey":"capabilities.marginPreview","typeLabel":"enum\u003cstring>"},"updates":{"type":"object","description":"Which parts of the account the provider pushes as they change. A part it doesn't push is refreshed on trdrs's regular polling instead.","properties":{"summary":{"type":"boolean","description":"Balance and profit and loss.","isRequired":true,"uniqueKey":"capabilities.updates.summary","typeLabel":"boolean"},"positions":{"type":"boolean","description":"Positions.","isRequired":true,"uniqueKey":"capabilities.updates.positions","typeLabel":"boolean"},"orders":{"type":"boolean","description":"Working orders.","isRequired":true,"uniqueKey":"capabilities.updates.orders","typeLabel":"boolean"},"executions":{"type":"boolean","description":"Fills.","isRequired":true,"uniqueKey":"capabilities.updates.executions","typeLabel":"boolean"},"push":{"type":"boolean","description":"True when the provider pushes updates at all.","isRequired":true,"uniqueKey":"capabilities.updates.push","typeLabel":"boolean"}},"required":["summary","positions","orders","executions","push"],"isRequired":true,"uniqueKey":"capabilities.updates","typeLabel":"object"},"instrumentFacts":{"type":"object","description":"Which facts the provider gives about each instrument. When an order needs a check the provider can't answer, the order is refused rather than guessed.","properties":{"priceIncrement":{"type":"boolean","description":"The price increment.","isRequired":true,"uniqueKey":"capabilities.instrumentFacts.priceIncrement","typeLabel":"boolean"},"quantityStep":{"type":"boolean","description":"The quantity step.","isRequired":true,"uniqueKey":"capabilities.instrumentFacts.quantityStep","typeLabel":"boolean"},"quantityBounds":{"type":"boolean","description":"The smallest and largest quantity.","isRequired":true,"uniqueKey":"capabilities.instrumentFacts.quantityBounds","typeLabel":"boolean"},"contractMultiplier":{"type":"boolean","description":"The contract multiplier.","isRequired":true,"uniqueKey":"capabilities.instrumentFacts.contractMultiplier","typeLabel":"boolean"}},"required":["priceIncrement","quantityStep","quantityBounds","contractMultiplier"],"isRequired":true,"uniqueKey":"capabilities.instrumentFacts","typeLabel":"object"},"exitSupport":{"type":"array","items":{"type":"string","enum":["stop_loss","take_profit","multiple_targets","multiple_stops","runner","breakeven","trailing_stop"],"uniqueKey":"capabilities.exitSupport.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Which parts of a bracket this account can run, worked out from `exitHolding`. A move to breakeven and a trailing stop are trdrs's own work on every provider that holds pairs: it moves the stop orders it holds.","isRequired":true,"uniqueKey":"capabilities.exitSupport","typeLabel":"enum\u003cstring>[]"},"completeOrderBook":{"type":"boolean","description":"True when the order history can say whether a `clientOrderId` was ever accepted, across the account's whole history.","isRequired":true,"uniqueKey":"capabilities.completeOrderBook","typeLabel":"boolean"}},"required":["provider","assetClasses","orderTypes","tifs","exitHolding","attachedExits","amendOrder","reduceOnly","symbolConfig","marginPreview","updates","instrumentFacts","exitSupport","completeOrderBook"],"isRequired":true,"uniqueKey":"capabilities","typeLabel":"object"},"connected":{"type":"boolean","description":"True while trdrs's connection to the provider is live. False means this is the last picture trdrs has, which you must be able to tell apart from an account that is flat.","isRequired":true,"uniqueKey":"connected","typeLabel":"boolean"},"account":{"type":"object","description":"Balance, profit and loss, and buying power.","properties":{"provider":{"type":"string","description":"The provider the account is at.","isRequired":true,"uniqueKey":"account.provider","typeLabel":"string"},"accountNumber":{"type":"string","description":"The account number.","isRequired":true,"uniqueKey":"account.accountNumber","typeLabel":"string"},"currency":{"type":"string","description":"The currency the account is held in.","isRequired":true,"uniqueKey":"account.currency","typeLabel":"string"},"balance":{"oneOf":[{"type":"number","description":"The balance.","uniqueKey":"account.balance.oneOf.0","typeLabel":"number"},{"type":"null","description":"The balance.","uniqueKey":"account.balance.oneOf.1","typeLabel":"null"}],"uniqueKey":"account.balance","typeLabel":"number | null"},"realizedPnl":{"oneOf":[{"type":"number","description":"Realized profit and loss.","uniqueKey":"account.realizedPnl.oneOf.0","typeLabel":"number"},{"type":"null","description":"Realized profit and loss.","uniqueKey":"account.realizedPnl.oneOf.1","typeLabel":"null"}],"uniqueKey":"account.realizedPnl","typeLabel":"number | null"},"unrealizedPnl":{"oneOf":[{"type":"number","description":"Unrealized profit and loss on open positions.","uniqueKey":"account.unrealizedPnl.oneOf.0","typeLabel":"number"},{"type":"null","description":"Unrealized profit and loss on open positions.","uniqueKey":"account.unrealizedPnl.oneOf.1","typeLabel":"null"}],"uniqueKey":"account.unrealizedPnl","typeLabel":"number | null"},"netLiquidating":{"oneOf":[{"type":"number","description":"What the account would be worth if every position closed now.","uniqueKey":"account.netLiquidating.oneOf.0","typeLabel":"number"},{"type":"null","description":"What the account would be worth if every position closed now.","uniqueKey":"account.netLiquidating.oneOf.1","typeLabel":"null"}],"uniqueKey":"account.netLiquidating","typeLabel":"number | null"},"availableBuyingPower":{"oneOf":[{"type":"number","description":"Buying power for new positions, as the provider reports and enforces it. It is the real basis of margin and leverage (leverage is netLiquidating divided by marginRequired). On a paper book account, including a Demo, it is the free collateral the account's risk decisions last valued its pool at: marginBalance less usedBuyingPower. It is negative when no new exposure fits. It isn't an order's verdict: the paper book judges each order at its own prices, and `POST /api/trading/margin-preview` tells you beforehand whether it fits. A new account holding nothing shows its whole balance. It is null while the account's latest change is still being valued, or while a price it needs is missing or stale.","uniqueKey":"account.availableBuyingPower.oneOf.0","typeLabel":"number"},{"type":"null","description":"Buying power for new positions, as the provider reports and enforces it. It is the real basis of margin and leverage (leverage is netLiquidating divided by marginRequired). On a paper book account, including a Demo, it is the free collateral the account's risk decisions last valued its pool at: marginBalance less usedBuyingPower. It is negative when no new exposure fits. It isn't an order's verdict: the paper book judges each order at its own prices, and `POST /api/trading/margin-preview` tells you beforehand whether it fits. A new account holding nothing shows its whole balance. It is null while the account's latest change is still being valued, or while a price it needs is missing or stale.","uniqueKey":"account.availableBuyingPower.oneOf.1","typeLabel":"null"}],"uniqueKey":"account.availableBuyingPower","typeLabel":"number | null"},"usedBuyingPower":{"oneOf":[{"type":"number","description":"Buying power in use by open positions and working orders. On a paper book account it is the initial margin the account's risk decisions last valued its open positions at, plus what working orders and charges of unknown amount hold back, so usedBuyingPower and availableBuyingPower add up to marginBalance. It is null when availableBuyingPower is.","uniqueKey":"account.usedBuyingPower.oneOf.0","typeLabel":"number"},{"type":"null","description":"Buying power in use by open positions and working orders. On a paper book account it is the initial margin the account's risk decisions last valued its open positions at, plus what working orders and charges of unknown amount hold back, so usedBuyingPower and availableBuyingPower add up to marginBalance. It is null when availableBuyingPower is.","uniqueKey":"account.usedBuyingPower.oneOf.1","typeLabel":"null"}],"uniqueKey":"account.usedBuyingPower","typeLabel":"number | null"},"marginBalance":{"oneOf":[{"type":"number","description":"The provider's margin balance: the equity it counts toward margin. On a paper book account it is the equity the account's risk decisions last valued its pool at, and null when availableBuyingPower is.","uniqueKey":"account.marginBalance.oneOf.0","typeLabel":"number"},{"type":"null","description":"The provider's margin balance: the equity it counts toward margin. On a paper book account it is the equity the account's risk decisions last valued its pool at, and null when availableBuyingPower is.","uniqueKey":"account.marginBalance.oneOf.1","typeLabel":"null"}],"uniqueKey":"account.marginBalance","typeLabel":"number | null"},"asOf":{"oneOf":[{"type":"number","description":"When these values were read, in epoch seconds, or null until the provider's first reading.","uniqueKey":"account.asOf.oneOf.0","typeLabel":"number"},{"type":"null","description":"When these values were read, in epoch seconds, or null until the provider's first reading.","uniqueKey":"account.asOf.oneOf.1","typeLabel":"null"}],"uniqueKey":"account.asOf","typeLabel":"number | null"}},"required":["provider","accountNumber","currency"],"example":{"provider":"rithmic","accountNumber":"PA-4821-07","balance":50245.5,"realizedPnl":245.5,"unrealizedPnl":75,"netLiquidating":50320.5,"availableBuyingPower":47120.5,"usedBuyingPower":3200,"marginBalance":null,"currency":"USD","asOf":1787581920},"isRequired":true,"uniqueKey":"account","typeLabel":"object"},"positions":{"type":"array","items":{"type":"object","description":"One open position: the instrument's net position on a net account, or one open ticket on an account that holds separate tickets.","properties":{"instrument":{"type":"string","description":"The instrument.","isRequired":true,"uniqueKey":"positions.items.[INDEX].instrument","typeLabel":"string"},"positionId":{"oneOf":[{"type":"string","description":"The position's id, stable and opaque, unique within the account. Its exits, closes and history name it by this id. On the paper book every position has one: each ticket its own, and a net position a new one each time it opens, so a reversal or a reopen after flat gets a new id. Null where no position id is kept: for every position a provider reports, and on some older Demo accounts.","isRequired":true,"uniqueKey":"positions.items.[INDEX].positionId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The position's id, stable and opaque, unique within the account. Its exits, closes and history name it by this id. On the paper book every position has one: each ticket its own, and a net position a new one each time it opens, so a reversal or a reopen after flat gets a new id. Null where no position id is kept: for every position a provider reports, and on some older Demo accounts.","isRequired":true,"uniqueKey":"positions.items.[INDEX].positionId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"positions.items.[INDEX].positionId","typeLabel":"string | null"},"positionRevision":{"oneOf":[{"type":"integer","description":"The position's own revision on the paper book: 1 when it opens, and one more each time a fill changes it, so a command can state the revision it expects. Null wherever `positionId` is null.","isRequired":true,"uniqueKey":"positions.items.[INDEX].positionRevision.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The position's own revision on the paper book: 1 when it opens, and one more each time a fill changes it, so a command can state the revision it expects. Null wherever `positionId` is null.","isRequired":true,"uniqueKey":"positions.items.[INDEX].positionRevision.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"positions.items.[INDEX].positionRevision","typeLabel":"integer | null"},"qty":{"type":"number","description":"The signed quantity: positive for long and negative for short. A ticket stays long or short for its whole life.","isRequired":true,"uniqueKey":"positions.items.[INDEX].qty","typeLabel":"number"},"margin":{"oneOf":[{"type":"number","description":"The margin set aside for this position as the provider reports it, or null where the provider doesn't report one. On the paper book, the initial margin the account's risk policy requires for the position, in the account's currency. On an account that holds separate tickets, the policy's hedging method sets margin across the instrument's tickets, so a ticket that shares its instrument with another has none of its own and states null.","isRequired":true,"uniqueKey":"positions.items.[INDEX].margin.oneOf.0","typeLabel":"number"},{"type":"null","description":"The margin set aside for this position as the provider reports it, or null where the provider doesn't report one. On the paper book, the initial margin the account's risk policy requires for the position, in the account's currency. On an account that holds separate tickets, the policy's hedging method sets margin across the instrument's tickets, so a ticket that shares its instrument with another has none of its own and states null.","isRequired":true,"uniqueKey":"positions.items.[INDEX].margin.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"positions.items.[INDEX].margin","typeLabel":"number | null"},"root":{"type":"string","description":"The product root, such as `ES`.","uniqueKey":"positions.items.[INDEX].root","typeLabel":"string"},"avgPrice":{"oneOf":[{"type":"number","description":"The position's average entry price. For a ticket, its own entry price.","uniqueKey":"positions.items.[INDEX].avgPrice.oneOf.0","typeLabel":"number"},{"type":"null","description":"The position's average entry price. For a ticket, its own entry price.","uniqueKey":"positions.items.[INDEX].avgPrice.oneOf.1","typeLabel":"null"}],"uniqueKey":"positions.items.[INDEX].avgPrice","typeLabel":"number | null"},"unrealizedPnl":{"oneOf":[{"type":"number","description":"The position's own unrealized profit and loss, or null until known.","uniqueKey":"positions.items.[INDEX].unrealizedPnl.oneOf.0","typeLabel":"number"},{"type":"null","description":"The position's own unrealized profit and loss, or null until known.","uniqueKey":"positions.items.[INDEX].unrealizedPnl.oneOf.1","typeLabel":"null"}],"uniqueKey":"positions.items.[INDEX].unrealizedPnl","typeLabel":"number | null"},"liquidationPrice":{"oneOf":[{"type":"number","description":"The liquidation price the provider reports for a leveraged position, or null where it reports none, such as for futures. On the paper book, the price at which the account's risk policy would start closing the position, every other price held where it is: where the account's equity reaches the stop-out level, or a floor that flattens the account, whichever comes first. It is in the price the position is valued at: the bid for a long, the ask for a short, or the mark for an instrument valued at its mark. Null on the paper book where it can't be stated exactly: a ticket that shares its instrument with another, a position whose profit is in another currency than the account's, a long whose margin is set on notional at the ask, a contract awaiting final settlement, or an account already being flattened.","uniqueKey":"positions.items.[INDEX].liquidationPrice.oneOf.0","typeLabel":"number"},{"type":"null","description":"The liquidation price the provider reports for a leveraged position, or null where it reports none, such as for futures. On the paper book, the price at which the account's risk policy would start closing the position, every other price held where it is: where the account's equity reaches the stop-out level, or a floor that flattens the account, whichever comes first. It is in the price the position is valued at: the bid for a long, the ask for a short, or the mark for an instrument valued at its mark. Null on the paper book where it can't be stated exactly: a ticket that shares its instrument with another, a position whose profit is in another currency than the account's, a long whose margin is set on notional at the ask, a contract awaiting final settlement, or an account already being flattened.","uniqueKey":"positions.items.[INDEX].liquidationPrice.oneOf.1","typeLabel":"null"}],"uniqueKey":"positions.items.[INDEX].liquidationPrice","typeLabel":"number | null"},"leverage":{"oneOf":[{"type":"number","description":"The position's leverage as the provider reports it. Null where there is no such thing, such as for futures, so show no value rather than 1. On the paper book, the leverage the instrument trades at: the leverage set on a perpetual its provider's tiers margin, or notional over initial margin for one margined at a fixed rate of notional.","uniqueKey":"positions.items.[INDEX].leverage.oneOf.0","typeLabel":"number"},{"type":"null","description":"The position's leverage as the provider reports it. Null where there is no such thing, such as for futures, so show no value rather than 1. On the paper book, the leverage the instrument trades at: the leverage set on a perpetual its provider's tiers margin, or notional over initial margin for one margined at a fixed rate of notional.","uniqueKey":"positions.items.[INDEX].leverage.oneOf.1","typeLabel":"null"}],"uniqueKey":"positions.items.[INDEX].leverage","typeLabel":"number | null"}},"required":["instrument","positionId","positionRevision","qty","margin"],"uniqueKey":"positions.items.[INDEX]","typeLabel":"object"},"description":"The open positions.","isRequired":true,"uniqueKey":"positions","typeLabel":"object[]"},"orders":{"type":"array","items":{"type":"object","description":"One order at the provider. A price that doesn't apply is null.","properties":{"providerOrderId":{"type":"string","description":"The order id at the provider.","isRequired":true,"uniqueKey":"orders.items.[INDEX].providerOrderId","typeLabel":"string"},"instrument":{"type":"string","description":"The instrument.","isRequired":true,"uniqueKey":"orders.items.[INDEX].instrument","typeLabel":"string"},"side":{"type":"string","enum":["buy","sell"],"description":"Buy or sell.","isRequired":true,"uniqueKey":"orders.items.[INDEX].side","typeLabel":"enum\u003cstring>"},"qty":{"type":"number","description":"The quantity the order was placed for, never the quantity left to fill.","isRequired":true,"uniqueKey":"orders.items.[INDEX].qty","typeLabel":"number"},"orderType":{"type":"string","enum":["market","stop","limit","stop_limit","trailing_stop"],"description":"The order type.","isRequired":true,"uniqueKey":"orders.items.[INDEX].orderType","typeLabel":"enum\u003cstring>"},"triggerPrice":{"oneOf":[{"type":"number","description":"The stop trigger price, or null.","isRequired":true,"uniqueKey":"orders.items.[INDEX].triggerPrice.oneOf.0","typeLabel":"number"},{"type":"null","description":"The stop trigger price, or null.","isRequired":true,"uniqueKey":"orders.items.[INDEX].triggerPrice.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"orders.items.[INDEX].triggerPrice","typeLabel":"number | null"},"limitPrice":{"oneOf":[{"type":"number","description":"The limit price, or null.","isRequired":true,"uniqueKey":"orders.items.[INDEX].limitPrice.oneOf.0","typeLabel":"number"},{"type":"null","description":"The limit price, or null.","isRequired":true,"uniqueKey":"orders.items.[INDEX].limitPrice.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"orders.items.[INDEX].limitPrice","typeLabel":"number | null"},"status":{"type":"string","enum":["working","filled","cancelled","rejected"],"description":"The order's status.","isRequired":true,"uniqueKey":"orders.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"filledQty":{"oneOf":[{"type":"number","description":"How much of `qty` has filled, or null where the provider doesn't report it. Null means unknown, never 0. It tells an order cancelled untouched from one cancelled after part of it filled.","isRequired":true,"uniqueKey":"orders.items.[INDEX].filledQty.oneOf.0","typeLabel":"number"},{"type":"null","description":"How much of `qty` has filled, or null where the provider doesn't report it. Null means unknown, never 0. It tells an order cancelled untouched from one cancelled after part of it filled.","isRequired":true,"uniqueKey":"orders.items.[INDEX].filledQty.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"orders.items.[INDEX].filledQty","typeLabel":"number | null"},"clientOrderId":{"oneOf":[{"type":"string","description":"The `clientOrderId` it was placed with, or null.","isRequired":true,"uniqueKey":"orders.items.[INDEX].clientOrderId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The `clientOrderId` it was placed with, or null.","isRequired":true,"uniqueKey":"orders.items.[INDEX].clientOrderId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"orders.items.[INDEX].clientOrderId","typeLabel":"string | null"},"submittedAt":{"oneOf":[{"type":"number","description":"When the order was placed, in epoch seconds.","isRequired":true,"uniqueKey":"orders.items.[INDEX].submittedAt.oneOf.0","typeLabel":"number"},{"type":"null","description":"When the order was placed, in epoch seconds.","isRequired":true,"uniqueKey":"orders.items.[INDEX].submittedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"orders.items.[INDEX].submittedAt","typeLabel":"number | null"},"tif":{"oneOf":[{"type":"string","enum":["day","gtc","ioc","fok","post_only",null],"description":"The time in force, or null.","isRequired":true,"uniqueKey":"orders.items.[INDEX].tif.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["day","gtc","ioc","fok","post_only",null],"description":"The time in force, or null.","isRequired":true,"uniqueKey":"orders.items.[INDEX].tif.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"orders.items.[INDEX].tif","typeLabel":"enum\u003cstring> | null"},"reduceOnly":{"type":"boolean","description":"True when the order can only reduce a position.","isRequired":true,"uniqueKey":"orders.items.[INDEX].reduceOnly","typeLabel":"boolean"},"endReason":{"oneOf":[{"type":"string","enum":["trader_cancelled","oco_sibling_filled","replaced","liquidation_cancelled","position_closed","import_entry_cancelled","import_replaced","contract_expired",null],"description":"Why the order ended, where the paper book can say: `trader_cancelled`, `oco_sibling_filled`, `replaced`, `liquidation_cancelled`, `position_closed`, `import_entry_cancelled`, `import_replaced` or `contract_expired`, an order whose dated contract passed its last trade. Null on an order that is still working, filled or rejected, and on every order a provider ends without saying why. Show a value you don't recognize as it is.","isRequired":true,"uniqueKey":"orders.items.[INDEX].endReason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["trader_cancelled","oco_sibling_filled","replaced","liquidation_cancelled","position_closed","import_entry_cancelled","import_replaced","contract_expired",null],"description":"Why the order ended, where the paper book can say: `trader_cancelled`, `oco_sibling_filled`, `replaced`, `liquidation_cancelled`, `position_closed`, `import_entry_cancelled`, `import_replaced` or `contract_expired`, an order whose dated contract passed its last trade. Null on an order that is still working, filled or rejected, and on every order a provider ends without saying why. Show a value you don't recognize as it is.","isRequired":true,"uniqueKey":"orders.items.[INDEX].endReason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"orders.items.[INDEX].endReason","typeLabel":"enum\u003cstring> | null"},"positionId":{"oneOf":[{"type":"string","description":"The paper book position this order acts on. On an account that holds separate tickets, it is the ticket the order opens or, when `reduceOnly`, the one ticket it closes or protects, so a ticket's exits are the reduce-only orders that name its id. On a net account, it is the position that a protective exit, placed when a fill opened it, protects. Null on a net account's other orders, and on every provider's orders.","isRequired":true,"uniqueKey":"orders.items.[INDEX].positionId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The paper book position this order acts on. On an account that holds separate tickets, it is the ticket the order opens or, when `reduceOnly`, the one ticket it closes or protects, so a ticket's exits are the reduce-only orders that name its id. On a net account, it is the position that a protective exit, placed when a fill opened it, protects. Null on a net account's other orders, and on every provider's orders.","isRequired":true,"uniqueKey":"orders.items.[INDEX].positionId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"orders.items.[INDEX].positionId","typeLabel":"string | null"},"orderId":{"oneOf":[{"type":"string","description":"The paper book order's id for its whole life, FIX's OrderID (37): a replace keeps it, so every row of one order, and every execution report of it, names the same one. Null on every provider's orders.","isRequired":true,"uniqueKey":"orders.items.[INDEX].orderId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The paper book order's id for its whole life, FIX's OrderID (37): a replace keeps it, so every row of one order, and every execution report of it, names the same one. Null on every provider's orders.","isRequired":true,"uniqueKey":"orders.items.[INDEX].orderId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"orders.items.[INDEX].orderId","typeLabel":"string | null"},"clOrdId":{"oneOf":[{"type":"string","description":"The id the order is known by while this row stands, FIX's ClOrdID (11): the id it was placed or last replaced under, as execution reports name it. Null on every provider's orders.","isRequired":true,"uniqueKey":"orders.items.[INDEX].clOrdId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The id the order is known by while this row stands, FIX's ClOrdID (11): the id it was placed or last replaced under, as execution reports name it. Null on every provider's orders.","isRequired":true,"uniqueKey":"orders.items.[INDEX].clOrdId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"orders.items.[INDEX].clOrdId","typeLabel":"string | null"},"ordStatus":{"oneOf":[{"type":"string","enum":["pending_new","new","partially_filled","filled","cancelled","pending_cancel","rejected","expired","pending_replace",null],"description":"Where the order stands, FIX's OrdStatus (39), as an execution report's `ordStatus` states it. Null on a row a replace ended, since the row that replaced it stands for the order, and on every provider's orders.","isRequired":true,"uniqueKey":"orders.items.[INDEX].ordStatus.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["pending_new","new","partially_filled","filled","cancelled","pending_cancel","rejected","expired","pending_replace",null],"description":"Where the order stands, FIX's OrdStatus (39), as an execution report's `ordStatus` states it. Null on a row a replace ended, since the row that replaced it stands for the order, and on every provider's orders.","isRequired":true,"uniqueKey":"orders.items.[INDEX].ordStatus.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"orders.items.[INDEX].ordStatus","typeLabel":"enum\u003cstring> | null"},"refusal":{"oneOf":[{"type":"object","description":"On a paper book order refused when it was sent, the code it was refused with, as its `rejected` execution report carries it. Such an order is listed with the account's other orders, with `status` and `ordStatus` `rejected`, for 90 days. Null on every other order, a resting order the book rejects later included. A refused order's code is one of the refusal codes, or, where the order contradicts the account's own positions or a fill its order no longer admits, a code of the paper book's own. Each code below is listed with FIX's OrdRejReason (103) it stands for, as a value and its name: `market_data_unavailable` 32 (unavailable price liquidity), `market_data_stale` 32 (unavailable price liquidity), `valuation_required` 19 (reference price not available), `valuation_stale` 19 (reference price not available), `collateral_unvalued` 19 (reference price not available), `collateral_insufficient` 25 (insufficient credit limit), `risk_locked` 0 (broker exchange option), `reconciliation_hold` 0 (broker exchange option), `stage_version_unrecorded` 0 (broker exchange option), `venue_conditions_missing` 0 (broker exchange option), `venue_route_missing` 0 (broker exchange option), `venue_route_retired` 0 (broker exchange option), `venue_instrument_expired` 4 (too late to enter), `permission_denied` 0 (broker exchange option), `asset_class_not_supported` 0 (broker exchange option), `collateral_policy_unverified` 0 (broker exchange option), `settlement_asset_unmodeled` 0 (broker exchange option), `product_economics_unsupported` 0 (broker exchange option), `currency_economics_unsupported` 0 (broker exchange option), `contract_not_trading` 2 (exchange closed), `entry_halted` 0 (broker exchange option), `instrument_not_permitted` 0 (broker exchange option), `venue_instrument_disabled` 0 (broker exchange option), `margin_window_closing` 0 (broker exchange option), `order_quantity_above_limit` 3 (order exceeds limit), `position_quantity_above_limit` 3 (order exceeds limit), `position_notional_above_limit` 20 (notional value exceeds threshold), `below_min_notional` 13 (incorrect quantity), `fill_exceeds_remaining` 13 (incorrect quantity), `reduce_only_violation` 3 (order exceeds limit), `position_not_closable` 99 (other), `position_revision_stale` 8 (stale order), `version_conflict` 8 (stale order), `order_not_working` 99 (other), `venue_fill_refused` 0 (broker exchange option), `price_beyond_limit` 99 (other), `invalid_request` 99 (other), `not_found` 1 (unknown symbol), `idempotency_conflict` 6 (duplicate order), `position_mode_unsupported` 11 (unsupported order characteristic), `position_identity_conflict` 99 (other), `opening_identity_conflict` 99 (other), `position_mode_mismatch` 11 (unsupported order characteristic), `trigger_unspent` 99 (other). Where a detail decides it: `contract_not_trading` with `expired` 4 (too late to enter), `contract_not_trading` with `close_only` 0 (broker exchange option), `venue_fill_refused` with `outside_collar` 16 (price exceeds current price band), `venue_fill_refused` with `beyond_limit` 99 (other), `collateral_unvalued` with `obligation_pending` 0 (broker exchange option); and `invalid_request` naming a price off the instrument's grid 18 (invalid price increment), a price outside its bands 16 (price exceeds current price band), a quantity 13 (incorrect quantity), or an order type or time in force 11 (unsupported order characteristic). Any other code stands for 99 (other).","required":["code"],"properties":{"code":{"type":"string","description":"The code the order was refused with.","isRequired":true,"uniqueKey":"orders.items.[INDEX].refusal.oneOf.0.code","typeLabel":"string"}},"isRequired":true,"uniqueKey":"orders.items.[INDEX].refusal.oneOf.0","typeLabel":"object"},{"type":"null","description":"On a paper book order refused when it was sent, the code it was refused with, as its `rejected` execution report carries it. Such an order is listed with the account's other orders, with `status` and `ordStatus` `rejected`, for 90 days. Null on every other order, a resting order the book rejects later included. A refused order's code is one of the refusal codes, or, where the order contradicts the account's own positions or a fill its order no longer admits, a code of the paper book's own. Each code below is listed with FIX's OrdRejReason (103) it stands for, as a value and its name: `market_data_unavailable` 32 (unavailable price liquidity), `market_data_stale` 32 (unavailable price liquidity), `valuation_required` 19 (reference price not available), `valuation_stale` 19 (reference price not available), `collateral_unvalued` 19 (reference price not available), `collateral_insufficient` 25 (insufficient credit limit), `risk_locked` 0 (broker exchange option), `reconciliation_hold` 0 (broker exchange option), `stage_version_unrecorded` 0 (broker exchange option), `venue_conditions_missing` 0 (broker exchange option), `venue_route_missing` 0 (broker exchange option), `venue_route_retired` 0 (broker exchange option), `venue_instrument_expired` 4 (too late to enter), `permission_denied` 0 (broker exchange option), `asset_class_not_supported` 0 (broker exchange option), `collateral_policy_unverified` 0 (broker exchange option), `settlement_asset_unmodeled` 0 (broker exchange option), `product_economics_unsupported` 0 (broker exchange option), `currency_economics_unsupported` 0 (broker exchange option), `contract_not_trading` 2 (exchange closed), `entry_halted` 0 (broker exchange option), `instrument_not_permitted` 0 (broker exchange option), `venue_instrument_disabled` 0 (broker exchange option), `margin_window_closing` 0 (broker exchange option), `order_quantity_above_limit` 3 (order exceeds limit), `position_quantity_above_limit` 3 (order exceeds limit), `position_notional_above_limit` 20 (notional value exceeds threshold), `below_min_notional` 13 (incorrect quantity), `fill_exceeds_remaining` 13 (incorrect quantity), `reduce_only_violation` 3 (order exceeds limit), `position_not_closable` 99 (other), `position_revision_stale` 8 (stale order), `version_conflict` 8 (stale order), `order_not_working` 99 (other), `venue_fill_refused` 0 (broker exchange option), `price_beyond_limit` 99 (other), `invalid_request` 99 (other), `not_found` 1 (unknown symbol), `idempotency_conflict` 6 (duplicate order), `position_mode_unsupported` 11 (unsupported order characteristic), `position_identity_conflict` 99 (other), `opening_identity_conflict` 99 (other), `position_mode_mismatch` 11 (unsupported order characteristic), `trigger_unspent` 99 (other). Where a detail decides it: `contract_not_trading` with `expired` 4 (too late to enter), `contract_not_trading` with `close_only` 0 (broker exchange option), `venue_fill_refused` with `outside_collar` 16 (price exceeds current price band), `venue_fill_refused` with `beyond_limit` 99 (other), `collateral_unvalued` with `obligation_pending` 0 (broker exchange option); and `invalid_request` naming a price off the instrument's grid 18 (invalid price increment), a price outside its bands 16 (price exceeds current price band), a quantity 13 (incorrect quantity), or an order type or time in force 11 (unsupported order characteristic). Any other code stands for 99 (other).","isRequired":true,"uniqueKey":"orders.items.[INDEX].refusal.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"orders.items.[INDEX].refusal","typeLabel":"object | null"}},"required":["providerOrderId","instrument","side","qty","orderType","triggerPrice","limitPrice","status","filledQty","clientOrderId","submittedAt","tif","reduceOnly","endReason","positionId","orderId","clOrdId","ordStatus","refusal"],"uniqueKey":"orders.items.[INDEX]","typeLabel":"object"},"description":"The working orders.","isRequired":true,"uniqueKey":"orders","typeLabel":"object[]"},"brackets":{"type":"array","items":{"type":"object","description":"The protection around one position, or around the position one entry will open: up to three take profits and three stop losses, laid out as pairs along the position, nearest the entry first. Each pair's take profit and stop loss cancel each other.","properties":{"id":{"type":"string","description":"The bracket's id.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].id","typeLabel":"string"},"accountId":{"type":"string","description":"The account's id.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].accountId","typeLabel":"string"},"instrument":{"type":"string","description":"The instrument.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].instrument","typeLabel":"string"},"side":{"type":"string","enum":["buy","sell"],"description":"The side of the position it protects. Every leg trades the other side.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].side","typeLabel":"enum\u003cstring>"},"state":{"type":"string","enum":["pending_entry","active","completed","cancelled","failed"],"description":"`failed` is final and never quiet: the provider refused the entry, or a position is open and its protection could not be put in place. `endReason` says which, and why.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].state","typeLabel":"enum\u003cstring>"},"clientOrderId":{"type":"string","description":"The command it was placed under: the entry's `clientOrderId`, or the protection's.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].clientOrderId","typeLabel":"string"},"entryOrderId":{"oneOf":[{"type":"string","description":"The entry it waits on, by its id at the provider. Null for a bracket placed on an open position, and until the provider names the entry.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].entryOrderId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The entry it waits on, by its id at the provider. Null for a bracket placed on an open position, and until the provider names the entry.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].entryOrderId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].entryOrderId","typeLabel":"string | null"},"positionId":{"oneOf":[{"type":"string","description":"The one position it protects, where the account names its positions; null elsewhere.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].positionId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The one position it protects, where the account names its positions; null elsewhere.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].positionId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].positionId","typeLabel":"string | null"},"qty":{"type":"number","description":"The quantity it protects: the entry's, or the position's when it was placed.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].qty","typeLabel":"number"},"filledQty":{"type":"number","description":"How much of that has filled.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].filledQty","typeLabel":"number"},"avgEntry":{"oneOf":[{"type":"number","description":"The average entry its stop losses move from, once the entry has filled.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].avgEntry.oneOf.0","typeLabel":"number"},{"type":"null","description":"The average entry its stop losses move from, once the entry has filled.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].avgEntry.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].avgEntry","typeLabel":"number | null"},"takeProfits":{"type":"array","items":{"type":"object","description":"One take profit or stop loss of a bracket, at its price, closing its quantity.","properties":{"id":{"type":"string","description":"The leg's id.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].id","typeLabel":"string"},"rank":{"type":"integer","description":"Its place in its ladder, nearest the entry first: 1 is TP1 or SL1.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].rank","typeLabel":"integer"},"price":{"type":"number","description":"The leg's price: a take profit's limit, or a stop loss's trigger.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].price","typeLabel":"number"},"qty":{"type":"number","description":"How much of the position the leg closes in all: what it has filled, what rests, and what it rests as more of the entry fills.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].qty","typeLabel":"number"},"filledQty":{"type":"number","description":"How much of the leg has filled.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].filledQty","typeLabel":"number"},"state":{"type":"string","enum":["pre_armed","working","filled","cancelled","rejected"],"description":"`pre_armed` is priced and recorded but deliberately not resting yet, because the part of the position it protects has not filled.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].state","typeLabel":"enum\u003cstring>"},"automation":{"oneOf":[{"type":"object","description":"On a stop loss that moves itself, how it runs. Null otherwise.","required":["rules","state","phase","pauseReason","failureReason"],"example":{"rules":{"breakeven":{"triggerTicks":8,"plusTicks":0},"trail":[{"triggerTicks":16,"distanceTicks":8,"frequencyTicks":2}]},"state":"managing","phase":"protecting","pauseReason":null,"failureReason":null},"properties":{"rules":{"type":"object","description":"The rules, in whole ticks.","properties":{"breakeven":{"oneOf":[{"type":"object","description":"The one-time move to breakeven, or null for none.","required":["triggerTicks","plusTicks"],"properties":{"triggerTicks":{"type":"integer","description":"How far in profit, in ticks, the position must be before the stop moves.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.rules.breakeven.oneOf.0.triggerTicks","typeLabel":"integer"},"plusTicks":{"type":"integer","description":"How far beyond the entry, in ticks, the stop goes. Zero is exact breakeven.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.rules.breakeven.oneOf.0.plusTicks","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.rules.breakeven.oneOf.0","typeLabel":"object"},{"type":"null","description":"The one-time move to breakeven, or null for none.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.rules.breakeven.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.rules.breakeven","typeLabel":"object | null"},"trail":{"type":"array","maxItems":3,"items":{"type":"object","properties":{"triggerTicks":{"type":"integer","description":"How far in profit, in ticks, the tier starts.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.rules.trail.items.[INDEX].triggerTicks","typeLabel":"integer"},"distanceTicks":{"type":"integer","description":"How far behind the best price, in ticks, the stop follows.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.rules.trail.items.[INDEX].distanceTicks","typeLabel":"integer"},"frequencyTicks":{"type":"integer","description":"How far, in ticks, the price must advance before the stop moves again.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.rules.trail.items.[INDEX].frequencyTicks","typeLabel":"integer"}},"required":["triggerTicks","distanceTicks","frequencyTicks"],"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.rules.trail.items.[INDEX]","typeLabel":"object"},"description":"The trailing tiers, lowest trigger first. Empty for no trailing stop.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.rules.trail","typeLabel":"object[]"}},"required":["breakeven","trail"],"example":{"breakeven":{"triggerTicks":8,"plusTicks":0},"trail":[{"triggerTicks":16,"distanceTicks":8,"frequencyTicks":2}]},"isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.rules","typeLabel":"object"},"state":{"type":"string","enum":["pending","managing","paused","completed","cancelled","failed"],"description":"`pending` waits for the entry to fill. `paused` means nothing is moving the stop right now, not that it failed: the last stop the provider accepted still rests, and `pauseReason` says why it is not moving.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.state","typeLabel":"enum\u003cstring>"},"phase":{"type":"string","enum":["awaiting_entry","protecting","breakeven","trailing","done"],"description":"Which stop rests now: the one placed (`protecting`), the breakeven one, or a trailing one.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.phase","typeLabel":"enum\u003cstring>"},"pauseReason":{"oneOf":[{"type":"string","enum":["provider_disconnected","no_price_feed","no_instrument_facts","account_locked",null],"description":"Why it is paused, or null.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.pauseReason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["provider_disconnected","no_price_feed","no_instrument_facts","account_locked",null],"description":"Why it is paused, or null.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.pauseReason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.pauseReason","typeLabel":"enum\u003cstring> | null"},"failureReason":{"oneOf":[{"type":"string","description":"Why it failed, or null.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.failureReason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why it failed, or null.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.failureReason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0.failureReason","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.0","typeLabel":"object"},{"type":"null","description":"On a stop loss that moves itself, how it runs. Null otherwise.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX].automation","typeLabel":"object | null"}},"required":["id","rank","price","qty","filledQty","state","automation"],"example":{"id":"3c9a0f61-52d4-4b78-8e15-7f6b2a4d0c83","rank":1,"price":6477.5,"qty":2,"filledQty":0,"state":"working","automation":{"rules":{"breakeven":{"triggerTicks":8,"plusTicks":0},"trail":[{"triggerTicks":16,"distanceTicks":8,"frequencyTicks":2}]},"state":"managing","phase":"protecting","pauseReason":null,"failureReason":null}},"uniqueKey":"brackets.items.[INDEX].takeProfits.items.[INDEX]","typeLabel":"object"},"description":"The take-profit ladder, live legs nearest the entry first, then the legs that ended.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].takeProfits","typeLabel":"object[]"},"stopLosses":{"type":"array","items":{"type":"object","description":"One take profit or stop loss of a bracket, at its price, closing its quantity.","properties":{"id":{"type":"string","description":"The leg's id.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].id","typeLabel":"string"},"rank":{"type":"integer","description":"Its place in its ladder, nearest the entry first: 1 is TP1 or SL1.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].rank","typeLabel":"integer"},"price":{"type":"number","description":"The leg's price: a take profit's limit, or a stop loss's trigger.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].price","typeLabel":"number"},"qty":{"type":"number","description":"How much of the position the leg closes in all: what it has filled, what rests, and what it rests as more of the entry fills.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].qty","typeLabel":"number"},"filledQty":{"type":"number","description":"How much of the leg has filled.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].filledQty","typeLabel":"number"},"state":{"type":"string","enum":["pre_armed","working","filled","cancelled","rejected"],"description":"`pre_armed` is priced and recorded but deliberately not resting yet, because the part of the position it protects has not filled.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].state","typeLabel":"enum\u003cstring>"},"automation":{"oneOf":[{"type":"object","description":"On a stop loss that moves itself, how it runs. Null otherwise.","required":["rules","state","phase","pauseReason","failureReason"],"example":{"rules":{"breakeven":{"triggerTicks":8,"plusTicks":0},"trail":[{"triggerTicks":16,"distanceTicks":8,"frequencyTicks":2}]},"state":"managing","phase":"protecting","pauseReason":null,"failureReason":null},"properties":{"rules":{"type":"object","description":"The rules, in whole ticks.","properties":{"breakeven":{"oneOf":[{"type":"object","description":"The one-time move to breakeven, or null for none.","required":["triggerTicks","plusTicks"],"properties":{"triggerTicks":{"type":"integer","description":"How far in profit, in ticks, the position must be before the stop moves.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.rules.breakeven.oneOf.0.triggerTicks","typeLabel":"integer"},"plusTicks":{"type":"integer","description":"How far beyond the entry, in ticks, the stop goes. Zero is exact breakeven.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.rules.breakeven.oneOf.0.plusTicks","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.rules.breakeven.oneOf.0","typeLabel":"object"},{"type":"null","description":"The one-time move to breakeven, or null for none.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.rules.breakeven.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.rules.breakeven","typeLabel":"object | null"},"trail":{"type":"array","maxItems":3,"items":{"type":"object","properties":{"triggerTicks":{"type":"integer","description":"How far in profit, in ticks, the tier starts.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.rules.trail.items.[INDEX].triggerTicks","typeLabel":"integer"},"distanceTicks":{"type":"integer","description":"How far behind the best price, in ticks, the stop follows.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.rules.trail.items.[INDEX].distanceTicks","typeLabel":"integer"},"frequencyTicks":{"type":"integer","description":"How far, in ticks, the price must advance before the stop moves again.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.rules.trail.items.[INDEX].frequencyTicks","typeLabel":"integer"}},"required":["triggerTicks","distanceTicks","frequencyTicks"],"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.rules.trail.items.[INDEX]","typeLabel":"object"},"description":"The trailing tiers, lowest trigger first. Empty for no trailing stop.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.rules.trail","typeLabel":"object[]"}},"required":["breakeven","trail"],"example":{"breakeven":{"triggerTicks":8,"plusTicks":0},"trail":[{"triggerTicks":16,"distanceTicks":8,"frequencyTicks":2}]},"isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.rules","typeLabel":"object"},"state":{"type":"string","enum":["pending","managing","paused","completed","cancelled","failed"],"description":"`pending` waits for the entry to fill. `paused` means nothing is moving the stop right now, not that it failed: the last stop the provider accepted still rests, and `pauseReason` says why it is not moving.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.state","typeLabel":"enum\u003cstring>"},"phase":{"type":"string","enum":["awaiting_entry","protecting","breakeven","trailing","done"],"description":"Which stop rests now: the one placed (`protecting`), the breakeven one, or a trailing one.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.phase","typeLabel":"enum\u003cstring>"},"pauseReason":{"oneOf":[{"type":"string","enum":["provider_disconnected","no_price_feed","no_instrument_facts","account_locked",null],"description":"Why it is paused, or null.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.pauseReason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["provider_disconnected","no_price_feed","no_instrument_facts","account_locked",null],"description":"Why it is paused, or null.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.pauseReason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.pauseReason","typeLabel":"enum\u003cstring> | null"},"failureReason":{"oneOf":[{"type":"string","description":"Why it failed, or null.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.failureReason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why it failed, or null.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.failureReason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0.failureReason","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.0","typeLabel":"object"},{"type":"null","description":"On a stop loss that moves itself, how it runs. Null otherwise.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX].automation","typeLabel":"object | null"}},"required":["id","rank","price","qty","filledQty","state","automation"],"example":{"id":"3c9a0f61-52d4-4b78-8e15-7f6b2a4d0c83","rank":1,"price":6477.5,"qty":2,"filledQty":0,"state":"working","automation":{"rules":{"breakeven":{"triggerTicks":8,"plusTicks":0},"trail":[{"triggerTicks":16,"distanceTicks":8,"frequencyTicks":2}]},"state":"managing","phase":"protecting","pauseReason":null,"failureReason":null}},"uniqueKey":"brackets.items.[INDEX].stopLosses.items.[INDEX]","typeLabel":"object"},"description":"The stop-loss ladder, in the same order.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].stopLosses","typeLabel":"object[]"},"orders":{"type":"array","items":{"type":"object","description":"One order resting for one leg of one pair. Draw the legs; use the orders to tell which of the account's working orders belong to a bracket.","properties":{"id":{"type":"string","description":"The order's id in the bracket.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].id","typeLabel":"string"},"legId":{"type":"string","description":"The leg it rests for.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].legId","typeLabel":"string"},"role":{"type":"string","enum":["target","stop"],"description":"A take profit or a stop loss.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"pairId":{"type":"string","description":"The pair it belongs to. Both orders of a pair carry it, and a fill of one ends the other.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].pairId","typeLabel":"string"},"qty":{"type":"number","description":"The order's quantity.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].qty","typeLabel":"number"},"filledQty":{"type":"number","description":"How much of it has filled.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].filledQty","typeLabel":"number"},"state":{"type":"string","enum":["pre_armed","working","filled","cancelled","rejected"],"description":"Where the order stands.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].state","typeLabel":"enum\u003cstring>"},"providerOrderId":{"oneOf":[{"type":"string","description":"The order's id at the provider, once it rests there.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].providerOrderId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The order's id at the provider, once it rests there.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].providerOrderId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].providerOrderId","typeLabel":"string | null"},"clientOrderId":{"oneOf":[{"type":"string","description":"The name trdrs gave the order before placing it.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].clientOrderId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The name trdrs gave the order before placing it.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].clientOrderId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].clientOrderId","typeLabel":"string | null"},"holding":{"oneOf":[{"type":"string","enum":["provider_managed",null],"description":"Who holds it while it has no provider id: `provider_managed` means the provider holds it with the entry under the name trdrs gave it. Null is the normal case.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].holding.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["provider_managed",null],"description":"Who holds it while it has no provider id: `provider_managed` means the provider holds it with the entry under the name trdrs gave it. Null is the normal case.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].holding.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].holding","typeLabel":"enum\u003cstring> | null"},"rejectReason":{"oneOf":[{"type":"string","description":"Why the provider refused it, or null.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].rejectReason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why the provider refused it, or null.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].rejectReason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX].rejectReason","typeLabel":"string | null"}},"required":["id","legId","role","pairId","qty","filledQty","state","providerOrderId","clientOrderId","holding","rejectReason"],"example":{"id":"8f2c5a91-3d6e-4b07-a1c8-5e9f0d2b7a46","legId":"5e7d1b04-8a26-4c39-9f52-1d0c6b8e3a75","role":"target","pairId":"e7a40c2d-95b1-4f68-8d3e-2c1b6a0f9e57","qty":1,"filledQty":0,"state":"working","providerOrderId":"1b8e6d24-07c3-4a9f-b5e2-9d4a7c0f3e18","clientOrderId":"1b8e6d24-07c3-4a9f-b5e2-9d4a7c0f3e18","holding":null,"rejectReason":null},"uniqueKey":"brackets.items.[INDEX].orders.items.[INDEX]","typeLabel":"object"},"description":"The orders resting, and rested, for the legs.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].orders","typeLabel":"object[]"},"runner":{"type":"number","description":"How much of what it protects has a stop and no take profit.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].runner","typeLabel":"number"},"unprotected":{"type":"number","description":"How much of what it protects has no stop at all.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].unprotected","typeLabel":"number"},"endReason":{"oneOf":[{"type":"string","description":"Why it ended, or null while it is live.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].endReason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why it ended, or null while it is live.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].endReason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"brackets.items.[INDEX].endReason","typeLabel":"string | null"},"createdAt":{"type":"integer","description":"When it was placed, in epoch milliseconds.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].createdAt","typeLabel":"integer"},"updatedAt":{"type":"integer","description":"When it last changed, in epoch milliseconds.","isRequired":true,"uniqueKey":"brackets.items.[INDEX].updatedAt","typeLabel":"integer"}},"required":["id","accountId","instrument","side","state","clientOrderId","entryOrderId","positionId","qty","filledQty","avgEntry","takeProfits","stopLosses","orders","runner","unprotected","endReason","createdAt","updatedAt"],"example":{"id":"b41e7d2a-9c58-4f03-a6b1-2e8d5c7f0a94","accountId":"c3e81b5f0a9d47e2b6f14d8a2c7e9031","instrument":"ESU6","side":"buy","state":"active","clientOrderId":"a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d","entryOrderId":"a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d","positionId":null,"qty":2,"filledQty":2,"avgEntry":6480.5,"takeProfits":[{"id":"5e7d1b04-8a26-4c39-9f52-1d0c6b8e3a75","rank":1,"price":6485.5,"qty":1,"filledQty":0,"state":"working","automation":null}],"stopLosses":[{"id":"3c9a0f61-52d4-4b78-8e15-7f6b2a4d0c83","rank":1,"price":6477.5,"qty":2,"filledQty":0,"state":"working","automation":{"rules":{"breakeven":{"triggerTicks":8,"plusTicks":0},"trail":[{"triggerTicks":16,"distanceTicks":8,"frequencyTicks":2}]},"state":"managing","phase":"protecting","pauseReason":null,"failureReason":null}}],"orders":[{"id":"8f2c5a91-3d6e-4b07-a1c8-5e9f0d2b7a46","legId":"5e7d1b04-8a26-4c39-9f52-1d0c6b8e3a75","role":"target","pairId":"e7a40c2d-95b1-4f68-8d3e-2c1b6a0f9e57","qty":1,"filledQty":0,"state":"working","providerOrderId":"1b8e6d24-07c3-4a9f-b5e2-9d4a7c0f3e18","clientOrderId":"1b8e6d24-07c3-4a9f-b5e2-9d4a7c0f3e18","holding":null,"rejectReason":null},{"id":"2a7d9e03-6c18-4f52-b4a9-0e3c8d1f6b25","legId":"3c9a0f61-52d4-4b78-8e15-7f6b2a4d0c83","role":"stop","pairId":"e7a40c2d-95b1-4f68-8d3e-2c1b6a0f9e57","qty":1,"filledQty":0,"state":"working","providerOrderId":"4c0f2b87-9e15-4d63-a8b7-6f1e3d5c2a90","clientOrderId":"4c0f2b87-9e15-4d63-a8b7-6f1e3d5c2a90","holding":null,"rejectReason":null},{"id":"6e1b4c78-2f9a-4d05-9c63-b8a2e7d0f413","legId":"3c9a0f61-52d4-4b78-8e15-7f6b2a4d0c83","role":"stop","pairId":"9d5f2e60-4b83-4a1c-be07-3a6c9f1d8e24","qty":1,"filledQty":0,"state":"working","providerOrderId":"7a3e9c15-8d40-4f2b-91e6-c5b0a2d7f839","clientOrderId":"7a3e9c15-8d40-4f2b-91e6-c5b0a2d7f839","holding":null,"rejectReason":null}],"runner":1,"unprotected":0,"endReason":null,"createdAt":1787581400000,"updatedAt":1787581460000},"uniqueKey":"brackets.items.[INDEX]","typeLabel":"object"},"description":"The protection around the account's positions: every live bracket, and those that ended in the last day, with its ladders, the automation its stop losses run and the orders resting for it.","isRequired":true,"uniqueKey":"brackets","typeLabel":"object[]"},"accountMode":{"oneOf":[{"type":"object","description":"The account settings an exchange reported on this reading, and whether trdrs can trade under them. Null for every other account.","required":["provider","product","status","settings","refusals","checkedAt"],"properties":{"provider":{"type":"string","description":"The provider.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.provider","typeLabel":"string"},"product":{"type":"string","enum":["usdt_linear_perpetual","usdc_linear_perpetual"],"description":"The product trdrs trades at this provider.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.product","typeLabel":"enum\u003cstring>"},"status":{"type":"string","enum":["supported","unsupported","unknown"],"description":"`supported` when every setting read is supported, `unsupported` when a setting is refused, and `unknown` when a setting that must be read couldn't be.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.status","typeLabel":"enum\u003cstring>"},"settings":{"type":"array","items":{"type":"object","description":"One account setting the provider reports.","properties":{"setting":{"type":"string","enum":["position_mode","asset_mode","account_type","margin_mode","account_abstraction"],"description":"Which setting this is.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.settings.items.[INDEX].setting","typeLabel":"enum\u003cstring>"},"value":{"type":"string","description":"The setting's value: a fixed token for a documented value, and the provider's own string for anything else. `position_mode` is 'one_way' or 'hedge'. `asset_mode` is 'single_asset' or 'multi_assets'. `account_type` is 'classic', 'unified_1', 'unified_1_pro', 'unified_2' or 'unified_2_pro'. `margin_mode` is 'cross', 'isolated' or 'portfolio'. `account_abstraction` is 'standard', 'default', 'unified_account', 'portfolio_margin' or 'dex_abstraction'.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.settings.items.[INDEX].value","typeLabel":"string"},"instrument":{"oneOf":[{"type":"string","description":"The instrument the setting applies to, or null for the whole account.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.settings.items.[INDEX].instrument.oneOf.0","typeLabel":"string"},{"type":"null","description":"The instrument the setting applies to, or null for the whole account.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.settings.items.[INDEX].instrument.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"accountMode.oneOf.0.settings.items.[INDEX].instrument","typeLabel":"string | null"},"supported":{"type":"boolean","description":"True when trdrs trades with this value.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.settings.items.[INDEX].supported","typeLabel":"boolean"}},"required":["setting","value","instrument","supported"],"uniqueKey":"accountMode.oneOf.0.settings.items.[INDEX]","typeLabel":"object"},"description":"Every setting read.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.settings","typeLabel":"object[]"},"refusals":{"type":"array","items":{"type":"object","description":"Why the account, or one instrument on it, can't trade on trdrs, as a refusal code with its details. An order, exit, close or flatten on it is refused with the same code and details. Translate by code, and show a generic message for a code you don't recognize.","properties":{"code":{"type":"string","enum":["mode_unreadable","mode_unrecognized","hedge_position_mode","multi_assets_mode","classic_account","portfolio_margin","unified_account","unverified_account_abstraction"],"description":"The refusal code.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"params":{"type":"object","description":"What you need to explain the refusal in your own words. The provider's own string is never repeated.","properties":{"provider":{"type":"string","description":"The provider.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].params.provider","typeLabel":"string"},"instrument":{"oneOf":[{"type":"string","description":"The instrument, or null for the whole account.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].params.instrument.oneOf.0","typeLabel":"string"},{"type":"null","description":"The instrument, or null for the whole account.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].params.instrument.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].params.instrument","typeLabel":"string | null"},"setting":{"type":"string","enum":["position_mode","asset_mode","account_type","margin_mode","account_abstraction"],"description":"The setting that is refused.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].params.setting","typeLabel":"enum\u003cstring>"},"reported":{"oneOf":[{"type":"string","description":"The value the provider reported, as a fixed token, or null when it couldn't be read or isn't documented.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].params.reported.oneOf.0","typeLabel":"string"},{"type":"null","description":"The value the provider reported, as a fixed token, or null when it couldn't be read or isn't documented.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].params.reported.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].params.reported","typeLabel":"string | null"},"supported":{"type":"array","items":{"type":"string","uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].params.supported.items.[INDEX]","typeLabel":"string"},"description":"The values trdrs trades with for this setting.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].params.supported","typeLabel":"string[]"}},"required":["provider","instrument","setting","reported","supported"],"isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].params","typeLabel":"object"},"message":{"type":"string","description":"The refusal as an English sentence.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].message","typeLabel":"string"},"instrument":{"oneOf":[{"type":"string","description":"The instrument refused, or null when the whole account is refused.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].instrument.oneOf.0","typeLabel":"string"},{"type":"null","description":"The instrument refused, or null when the whole account is refused.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].instrument.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX].instrument","typeLabel":"string | null"}},"required":["code","params","message","instrument"],"uniqueKey":"accountMode.oneOf.0.refusals.items.[INDEX]","typeLabel":"object"},"description":"What is refused. A refusal for the whole account (`instrument` null) refuses every order before anything is sent, and a refusal for one instrument refuses orders on that instrument.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.refusals","typeLabel":"object[]"},"checkedAt":{"type":"integer","description":"When the settings were read, in epoch seconds.","isRequired":true,"uniqueKey":"accountMode.oneOf.0.checkedAt","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"accountMode.oneOf.0","typeLabel":"object"},{"type":"null","description":"The account settings an exchange reported on this reading, and whether trdrs can trade under them. Null for every other account.","isRequired":true,"uniqueKey":"accountMode.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"accountMode","typeLabel":"object | null"},"margin":{"type":"object","description":"The account's leverage and margin modes, read with the rows: every instrument the account holds a position in or a working order on, and every instrument it saved a setting for. Absent on an account whose provider keeps no such setting, such as futures. An instrument with no entry has its starting setting, which `GET /api/trading/symbol-config` answers.","properties":{"instruments":{"type":"array","items":{"type":"object","description":"One instrument's leverage and margin mode on the account, as `GET /api/trading/symbol-config` answers them.","properties":{"instrument":{"type":"string","description":"The instrument.","isRequired":true,"uniqueKey":"margin.instruments.items.[INDEX].instrument","typeLabel":"string"},"provider":{"type":"string","description":"The provider whose margin terms the instrument trades by: on a paper account, the provider whose contract it trades. A change of margin mode with `marginModeScope` `account` reaches every instrument of this provider on the account.","isRequired":true,"uniqueKey":"margin.instruments.items.[INDEX].provider","typeLabel":"string"},"leverage":{"type":"number","description":"The leverage set.","isRequired":true,"uniqueKey":"margin.instruments.items.[INDEX].leverage","typeLabel":"number"},"marginMode":{"type":"string","enum":["cross","isolated"],"description":"The margin mode.","isRequired":true,"uniqueKey":"margin.instruments.items.[INDEX].marginMode","typeLabel":"enum\u003cstring>"},"maxLeverage":{"oneOf":[{"type":"number","description":"The most leverage the provider allows on the instrument, or null when it states none.","isRequired":true,"uniqueKey":"margin.instruments.items.[INDEX].maxLeverage.oneOf.0","typeLabel":"number"},{"type":"null","description":"The most leverage the provider allows on the instrument, or null when it states none.","isRequired":true,"uniqueKey":"margin.instruments.items.[INDEX].maxLeverage.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"margin.instruments.items.[INDEX].maxLeverage","typeLabel":"number | null"},"marginModes":{"type":"array","items":{"type":"string","enum":["cross","isolated"],"uniqueKey":"margin.instruments.items.[INDEX].marginModes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"The margin modes the provider offers on the instrument.","isRequired":true,"uniqueKey":"margin.instruments.items.[INDEX].marginModes","typeLabel":"enum\u003cstring>[]"},"marginModeScope":{"type":"string","enum":["instrument","account"],"description":"What one change of margin mode reaches: this instrument, or every instrument of its provider on the account.","isRequired":true,"uniqueKey":"margin.instruments.items.[INDEX].marginModeScope","typeLabel":"enum\u003cstring>"}},"required":["instrument","provider","leverage","marginMode","maxLeverage","marginModes","marginModeScope"],"uniqueKey":"margin.instruments.items.[INDEX]","typeLabel":"object"},"description":"One setting for each held instrument and each instrument with a saved setting.","isRequired":true,"uniqueKey":"margin.instruments","typeLabel":"object[]"},"accountModes":{"type":"array","description":"The one margin mode each provider that sets it across the account holds there, for every such provider the account saved a setting under.","items":{"type":"object","properties":{"provider":{"type":"string","description":"The provider.","isRequired":true,"uniqueKey":"margin.accountModes.items.[INDEX].provider","typeLabel":"string"},"marginMode":{"type":"string","enum":["cross","isolated"],"description":"The mode the account holds across the provider's instruments.","isRequired":true,"uniqueKey":"margin.accountModes.items.[INDEX].marginMode","typeLabel":"enum\u003cstring>"}},"required":["provider","marginMode"],"uniqueKey":"margin.accountModes.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"margin.accountModes","typeLabel":"object[]"}},"required":["instruments","accountModes"],"uniqueKey":"margin","typeLabel":"object"},"rules":{"type":"object","description":"Where the account's own rules stand on this revision: each loss floor whose breach fails the account, and its stage's profit target, in the account's currency. Present on an account a venue issues on the paper book with a drawdown rule, a loss limit or a stage that advances; absent on every other account.","properties":{"floors":{"type":"array","items":{"type":"object","description":"One rule's floor. The account fails when what the rule measures is at or below `floor`.","properties":{"rule":{"type":"string","enum":["max_drawdown","daily_drawdown","daily_loss"],"description":"The rule.","isRequired":true,"uniqueKey":"rules.floors.items.[INDEX].rule","typeLabel":"enum\u003cstring>"},"measure":{"type":"string","const":"equity","description":"Live equity, including open-position profit and loss.","isRequired":true,"uniqueKey":"rules.floors.items.[INDEX].measure","typeLabel":"string"},"limit":{"type":"number","description":"The distance below `from` the rule allows.","isRequired":true,"uniqueKey":"rules.floors.items.[INDEX].limit","typeLabel":"number"},"from":{"type":"number","description":"The level the distance counts from: the starting balance or the high-water mark for the maximum drawdown, the day's anchor equity for the daily drawdown and the daily loss limit.","isRequired":true,"uniqueKey":"rules.floors.items.[INDEX].from","typeLabel":"number"},"floor":{"type":"number","description":"The level at or below which the account fails: `from` less `limit`.","isRequired":true,"uniqueKey":"rules.floors.items.[INDEX].floor","typeLabel":"number"},"trails":{"oneOf":[{"type":"string","enum":["intraday","endOfDay",null],"description":"For a trailing maximum drawdown, when its high-water rises: `intraday` as equity makes a new high, `endOfDay` at the session roll. Null for a floor that does not trail.","isRequired":true,"uniqueKey":"rules.floors.items.[INDEX].trails.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["intraday","endOfDay",null],"description":"For a trailing maximum drawdown, when its high-water rises: `intraday` as equity makes a new high, `endOfDay` at the session roll. Null for a floor that does not trail.","isRequired":true,"uniqueKey":"rules.floors.items.[INDEX].trails.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"rules.floors.items.[INDEX].trails","typeLabel":"enum\u003cstring> | null"},"until":{"oneOf":[{"type":"integer","description":"The epoch millisecond at which the day this floor is anchored in ends, or an end-of-day high-water rises, after which the next frame states the floor that follows. Null for a floor that holds until the account's reset.","isRequired":true,"uniqueKey":"rules.floors.items.[INDEX].until.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The epoch millisecond at which the day this floor is anchored in ends, or an end-of-day high-water rises, after which the next frame states the floor that follows. Null for a floor that holds until the account's reset.","isRequired":true,"uniqueKey":"rules.floors.items.[INDEX].until.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"rules.floors.items.[INDEX].until","typeLabel":"integer | null"}},"required":["rule","measure","limit","from","floor","trails","until"],"uniqueKey":"rules.floors.items.[INDEX]","typeLabel":"object"},"description":"Every floor whose breach fails the account. The highest is the one it reaches first.","isRequired":true,"uniqueKey":"rules.floors","typeLabel":"object[]"},"target":{"oneOf":[{"type":"object","description":"The stage's profit target, where the stage names the group a passing account advances into; null where it advances nowhere.","properties":{"target":{"type":"number","description":"The profit the stage asks for, after fees.","isRequired":true,"uniqueKey":"rules.target.oneOf.0.target","typeLabel":"number"},"level":{"type":"number","description":"The realized balance at which the profit reaches the target.","isRequired":true,"uniqueKey":"rules.target.oneOf.0.level","typeLabel":"number"}},"required":["target","level"],"isRequired":true,"uniqueKey":"rules.target.oneOf.0","typeLabel":"object"},{"type":"null","description":"The stage's profit target, where the stage names the group a passing account advances into; null where it advances nowhere.","properties":{"target":{"type":"number","description":"The profit the stage asks for, after fees."},"level":{"type":"number","description":"The realized balance at which the profit reaches the target."}},"required":["target","level"],"isRequired":true,"uniqueKey":"rules.target.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"rules.target","typeLabel":"object | null"}},"required":["floors","target"],"uniqueKey":"rules","typeLabel":"object"}},"required":["accountId","revision","clock","cycle","positionModel","capabilities","connected","account","positions","orders","brackets","accountMode"],"example":{"accountId":"7a1f4c93b28d05e6f1a3c7d9b4e28f60","revision":4831,"clock":"observation","cycle":null,"positionModel":"net","capabilities":{"provider":"rithmic","assetClasses":["futures"],"orderTypes":["market","limit","stop","stop_limit"],"tifs":["day","gtc"],"exitHolding":"none","attachedExits":null,"amendOrder":true,"reduceOnly":false,"symbolConfig":false,"marginPreview":"estimate","updates":{"summary":true,"positions":true,"orders":true,"executions":false,"push":true},"instrumentFacts":{"priceIncrement":true,"quantityStep":true,"quantityBounds":false,"contractMultiplier":true},"exitSupport":[],"completeOrderBook":false},"connected":true,"account":{"provider":"rithmic","accountNumber":"PA-4821-07","balance":50245.5,"realizedPnl":245.5,"unrealizedPnl":75,"netLiquidating":50320.5,"availableBuyingPower":47120.5,"usedBuyingPower":3200,"marginBalance":null,"currency":"USD","asOf":1787581920},"positions":[{"instrument":"ESU6","root":"ES","positionId":null,"positionRevision":null,"qty":2,"avgPrice":6480.5,"unrealizedPnl":75,"liquidationPrice":null,"leverage":null,"margin":null}],"orders":[{"providerOrderId":"234992187","instrument":"ESU6","side":"sell","qty":2,"orderType":"limit","triggerPrice":null,"limitPrice":6492.25,"status":"working","clientOrderId":"a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d","submittedAt":1787581400,"tif":"gtc","reduceOnly":true}],"brackets":[],"accountMode":null},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"accountId":"7a1f4c93b28d05e6f1a3c7d9b4e28f60","revision":4831,"clock":"observation","cycle":null,"positionModel":"net","capabilities":{"provider":"rithmic","assetClasses":["futures"],"orderTypes":["market","limit","stop","stop_limit"],"tifs":["day","gtc"],"exitHolding":"none","attachedExits":null,"amendOrder":true,"reduceOnly":false,"symbolConfig":false,"marginPreview":"estimate","updates":{"summary":true,"positions":true,"orders":true,"executions":false,"push":true},"instrumentFacts":{"priceIncrement":true,"quantityStep":true,"quantityBounds":false,"contractMultiplier":true},"exitSupport":[],"completeOrderBook":false},"connected":true,"account":{"provider":"rithmic","accountNumber":"PA-4821-07","balance":50245.5,"realizedPnl":245.5,"unrealizedPnl":75,"netLiquidating":50320.5,"availableBuyingPower":47120.5,"usedBuyingPower":3200,"marginBalance":null,"currency":"USD","asOf":1787581920},"positions":[{"instrument":"ESU6","root":"ES","positionId":null,"positionRevision":null,"qty":2,"avgPrice":6480.5,"unrealizedPnl":75,"liquidationPrice":null,"leverage":null,"margin":null}],"orders":[{"providerOrderId":"234992187","instrument":"ESU6","side":"sell","qty":2,"orderType":"limit","triggerPrice":null,"limitPrice":6492.25,"status":"working","clientOrderId":"a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d","submittedAt":1787581400,"tif":"gtc","reduceOnly":true}],"brackets":[],"accountMode":null}}},"exampleType":"generated"}},"exampleType":"generated"},"f626f7d2-4e28-4d02-9013-fd52328e29fb":{"description":"The provider or account is unknown, or no provider is connected.","content":{"application/json":{"schema":{"type":"object","description":"The body of every error response. It always carries `error`, an English sentence you can show. A refused trading request also carries `code`, one of the refusal codes, and `params`, the details of that refusal. Translate by `code` and `params`, and show a generic message for a code you don't recognize. Other errors may carry a `code` of their own.","properties":{"error":{"type":"string","description":"What went wrong, as an English sentence.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"A stable machine code. On a refused trading request, it is one of the refusal codes.","uniqueKey":"code","typeLabel":"string"},"params":{"type":"object","description":"The details of the refusal named by `code`, on a refused trading request.","uniqueKey":"params","typeLabel":"object"}},"required":["error"],"example":{"error":"invalid_instrument"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"invalid_instrument"}}},"exampleType":"generated"}},"exampleType":"generated"},"18f7cd81-3608-44d9-ba45-a96b6efa76a8":{"description":"The key is missing, unknown or revoked.","content":{"application/json":{"schema":{"type":"object","description":"The body of every error response. It always carries `error`, an English sentence you can show. A refused trading request also carries `code`, one of the refusal codes, and `params`, the details of that refusal. Translate by `code` and `params`, and show a generic message for a code you don't recognize. Other errors may carry a `code` of their own.","properties":{"error":{"type":"string","description":"What went wrong, as an English sentence.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"A stable machine code. On a refused trading request, it is one of the refusal codes.","uniqueKey":"code","typeLabel":"string"},"params":{"type":"object","description":"The details of the refusal named by `code`, on a refused trading request.","uniqueKey":"params","typeLabel":"object"}},"required":["error"],"example":{"error":"invalid_instrument"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"invalid_instrument"}}},"exampleType":"generated"}},"exampleType":"generated"},"288314df-a68e-4ab7-bce3-f9684344551f":{"description":"Reading the provider failed. A partial snapshot is never returned.","content":{"application/json":{"schema":{"type":"object","description":"The body of every error response. It always carries `error`, an English sentence you can show. A refused trading request also carries `code`, one of the refusal codes, and `params`, the details of that refusal. Translate by `code` and `params`, and show a generic message for a code you don't recognize. Other errors may carry a `code` of their own.","properties":{"error":{"type":"string","description":"What went wrong, as an English sentence.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"A stable machine code. On a refused trading request, it is one of the refusal codes.","uniqueKey":"code","typeLabel":"string"},"params":{"type":"object","description":"The details of the refusal named by `code`, on a refused trading request.","uniqueKey":"params","typeLabel":"object"}},"required":["error"],"example":{"error":"invalid_instrument"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"invalid_instrument"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"6bbc01cd-7e68-46a5-9be9-c679cb06f384":{"tradingApiKey":{"type":"http","scheme":"bearer","description":"The Trading API key (`trdrs_sk_…`), for market data, orders and account state on the accounts its owner holds. Use it server-to-server, and keep it on your server. Its scope is named `trading` in the API.","scopes":[],"schemeName":"tradingApiKey"}},"a0919fab-f762-489f-b4b7-fc507bdaaee5":{"connectApiKey":{"type":"http","scheme":"bearer","description":"A Connect app's API key (`trdrs_ck_sandbox_…` or `trdrs_ck_production_…`), in preview. It belongs to one app in one environment, has a name and an expiry, and carries the whole Connect API. An owner of the app creates it in the Connect dashboard. It creates, reads and closes the app's Connect links under `/api/connect/links`, and on the account, market and trading routes it reads the app's own traders' accounts and market data and routes their orders, each request naming its trader in `x-trdrs-trader`. It stops working when it is revoked or expires, or when the owner who created it stops being an owner. Keep it on your server.","scopes":[],"schemeName":"connectApiKey"},"trader":{"type":"apiKey","in":"header","name":"x-trdrs-trader","description":"Your own id for one of your traders: the id your Connect links name, or the id the accounts your venue issues them use. Send it with your app's API key, or with your Venue key carrying `trader:read`, or `trader:trade` to also route the trader's orders, and the request runs as that trader on their own accounts. An id that names none of your traders is refused with `404` `trader_not_found` and a suspended trader with `403` `trader_suspended`. A request that also carries a cookie or a browser `Origin` is refused with `400` `credential_not_allowed`.","scopes":[],"schemeName":"trader"}},"8b55adb4-4fa8-4ff4-ad6f-e2d5bdf6e9b2":{"venueKey":{"type":"http","scheme":"bearer","description":"The Venue key (`trdrs_vk_sandbox_…` or `trdrs_vk_production_…`), in preview. It belongs to one venue in one environment and carries the scopes it was created with. The venue's verified owner creates it while signed in. It works on the `/api/venues/{venueId}` routes and, with `trader:read` or `trader:trade`, on the account, market and trading routes, reading the venue's own traders' accounts and routing their orders, each request naming its trader in `x-trdrs-trader`. A `trdrs_sk_…` key can't be used in its place. It reaches its venue's routes and its venue's own traders, and the owner manages keys from a signed-in session. Keep it on your server.","scopes":[],"schemeName":"venueKey"},"trader":{"type":"apiKey","in":"header","name":"x-trdrs-trader","description":"Your own id for one of your traders: the id your Connect links name, or the id the accounts your venue issues them use. Send it with your app's API key, or with your Venue key carrying `trader:read`, or `trader:trade` to also route the trader's orders, and the request runs as that trader on their own accounts. An id that names none of your traders is refused with `404` `trader_not_found` and a suspended trader with `403` `trader_suspended`. A request that also carries a cookie or a browser `Origin` is refused with `400` `credential_not_allowed`.","scopes":[],"schemeName":"trader"}}},"servers":{"deea1f89-6e7f-4694-a35b-0824c194126c":{"url":"https://app.trdrs.co","description":"Production"},"3a3d6625-9250-40d2-9464-92c2f83e4ef6":{"url":"/","description":"This engine"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"The Trading API key (`trdrs_sk_…`), for market data, orders and account state on the accounts its owner holds. Use it server-to-server, and keep it on your server. Its scope is named `trading` in the API.","scopes":[],"schemeName":"tradingApiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"The Trading API key (`trdrs_sk_…`), for market data, orders and account state on the accounts its owner holds. Use it server-to-server, and keep it on your server. Its scope is named `trading` in the API.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"tradingApiKey","name":"Authorization"}],"title":"tradingApiKey"},{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"A Connect app's API key (`trdrs_ck_sandbox_…` or `trdrs_ck_production_…`), in preview. It belongs to one app in one environment, has a name and an expiry, and carries the whole Connect API. An owner of the app creates it in the Connect dashboard. It creates, reads and closes the app's Connect links under `/api/connect/links`, and on the account, market and trading routes it reads the app's own traders' accounts and market data and routes their orders, each request naming its trader in `x-trdrs-trader`. It stops working when it is revoked or expires, or when the owner who created it stops being an owner. Keep it on your server.","scopes":[],"schemeName":"connectApiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"A Connect app's API key (`trdrs_ck_sandbox_…` or `trdrs_ck_production_…`), in preview. It belongs to one app in one environment, has a name and an expiry, and carries the whole Connect API. An owner of the app creates it in the Connect dashboard. It creates, reads and closes the app's Connect links under `/api/connect/links`, and on the account, market and trading routes it reads the app's own traders' accounts and market data and routes their orders, each request naming its trader in `x-trdrs-trader`. It stops working when it is revoked or expires, or when the owner who created it stops being an owner. Keep it on your server.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"connectApiKey","name":"Authorization"},{"scheme":{"type":"apiKey","in":"header","name":"x-trdrs-trader","description":"Your own id for one of your traders: the id your Connect links name, or the id the accounts your venue issues them use. Send it with your app's API key, or with your Venue key carrying `trader:read`, or `trader:trade` to also route the trader's orders, and the request runs as that trader on their own accounts. An id that names none of your traders is refused with `404` `trader_not_found` and a suspended trader with `403` `trader_suspended`. A request that also carries a cookie or a browser `Origin` is refused with `400` `credential_not_allowed`.","scopes":[],"schemeName":"trader"},"schema":{"title":"x-trdrs-trader","type":"string","description":"Your own id for one of your traders: the id your Connect links name, or the id the accounts your venue issues them use. Send it with your app's API key, or with your Venue key carrying `trader:read`, or `trader:trade` to also route the trader's orders, and the request runs as that trader on their own accounts. An id that names none of your traders is refused with `404` `trader_not_found` and a suspended trader with `403` `trader_suspended`. A request that also carries a cookie or a browser `Origin` is refused with `400` `credential_not_allowed`.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"trader","name":"x-trdrs-trader"}],"title":"connectApiKey \u0026 trader"},{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"The Venue key (`trdrs_vk_sandbox_…` or `trdrs_vk_production_…`), in preview. It belongs to one venue in one environment and carries the scopes it was created with. The venue's verified owner creates it while signed in. It works on the `/api/venues/{venueId}` routes and, with `trader:read` or `trader:trade`, on the account, market and trading routes, reading the venue's own traders' accounts and routing their orders, each request naming its trader in `x-trdrs-trader`. A `trdrs_sk_…` key can't be used in its place. It reaches its venue's routes and its venue's own traders, and the owner manages keys from a signed-in session. Keep it on your server.","scopes":[],"schemeName":"venueKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"The Venue key (`trdrs_vk_sandbox_…` or `trdrs_vk_production_…`), in preview. It belongs to one venue in one environment and carries the scopes it was created with. The venue's verified owner creates it while signed in. It works on the `/api/venues/{venueId}` routes and, with `trader:read` or `trader:trade`, on the account, market and trading routes, reading the venue's own traders' accounts and routing their orders, each request naming its trader in `x-trdrs-trader`. A `trdrs_sk_…` key can't be used in its place. It reaches its venue's routes and its venue's own traders, and the owner manages keys from a signed-in session. Keep it on your server.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"venueKey","name":"Authorization"},{"scheme":{"type":"apiKey","in":"header","name":"x-trdrs-trader","description":"Your own id for one of your traders: the id your Connect links name, or the id the accounts your venue issues them use. Send it with your app's API key, or with your Venue key carrying `trader:read`, or `trader:trade` to also route the trader's orders, and the request runs as that trader on their own accounts. An id that names none of your traders is refused with `404` `trader_not_found` and a suspended trader with `403` `trader_suspended`. A request that also carries a cookie or a browser `Origin` is refused with `400` `credential_not_allowed`.","scopes":[],"schemeName":"trader"},"schema":{"title":"x-trdrs-trader","type":"string","description":"Your own id for one of your traders: the id your Connect links name, or the id the accounts your venue issues them use. Send it with your app's API key, or with your Venue key carrying `trader:read`, or `trader:trade` to also route the trader's orders, and the request runs as that trader on their own accounts. An id that names none of your traders is refused with `404` `trader_not_found` and a suspended trader with `403` `trader_suspended`. A request that also carries a cookie or a browser `Origin` is refused with `400` `credential_not_allowed`.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"trader","name":"x-trdrs-trader"}],"title":"venueKey \u0026 trader"}]},"originalFileLocation":"api/openapi.json"},"subdomain":"trdrs","siteName":"trdrs Engine API","title":"Get the account snapshot - trdrs Engine API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T22:24:26.747Z","originalFileLocation":"api-reference/account/get-the-account-snapshot.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=\"dark\"}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=\"Returns the whole account at one revision: its summary, positions, working orders and protection. Read this rather than combining separate reads, which are three moments with nothing to say whether they agree. It is the same body the account stream sends, so a client with no stream open, or one coming back after a disconnect, gets exactly what the stream would have sent. Required key: Trading API key. A Connect app\u0026#x27;s backend can also send it with the app\u0026#x27;s API key, and a venue\u0026#x27;s backend with its Venue key, which carries trader:read or trader:trade, each naming one of its own traders in x-trdrs-trader: it then runs on that trader\u0026#x27;s own accounts.\">\u003cmeta data-mint-head name=\"application-name\" content=\"trdrs Engine API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/trdrs/Mc3uPNp5t9BqWGNO/_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/trdrs/Mc3uPNp5t9BqWGNO/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/trdrs/Mc3uPNp5t9BqWGNO/_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/trdrs/Mc3uPNp5t9BqWGNO/_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/trdrs/Mc3uPNp5t9BqWGNO/_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/trdrs/Mc3uPNp5t9BqWGNO/_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/trdrs/Mc3uPNp5t9BqWGNO/_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/trdrs/Mc3uPNp5t9BqWGNO/_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/trdrs/Mc3uPNp5t9BqWGNO/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get the account snapshot - trdrs Engine API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns the whole account at one revision: its summary, positions, working orders and protection. Read this rather than combining separate reads, which are three moments with nothing to say whether they agree. It is the same body the account stream sends, so a client with no stream open, or one coming back after a disconnect, gets exactly what the stream would have sent. Required key: Trading API key. A Connect app\u0026#x27;s backend can also send it with the app\u0026#x27;s API key, and a venue\u0026#x27;s backend with its Venue key, which carries trader:read or trader:trade, each naming one of its own traders in x-trdrs-trader: it then runs on that trader\u0026#x27;s own accounts.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"trdrs Engine API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.trdrs.co/api-reference/account/get-the-account-snapshot\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://trdrs.mintlify.app/_mintlify/api/og/v2?division=Account+state\u0026amp;title=Get+the+account+snapshot\u0026amp;description=Returns+the+whole+account+at+one+revision%3A+its+summary%2C+positions%2C+working+orders+and+protection.+Read+this+rather+than+combining+separate+reads%2C+which+are+thre\u0026amp;theme=85063b664f29463f86ec0c0f\u0026amp;signature=eea043836c9a33757270d2bb8b749523f0f6de1e28b55153fa98d995c5874f4f\">\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=\"Get the account snapshot - trdrs Engine API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns the whole account at one revision: its summary, positions, working orders and protection. Read this rather than combining separate reads, which are three moments with nothing to say whether they agree. It is the same body the account stream sends, so a client with no stream open, or one coming back after a disconnect, gets exactly what the stream would have sent. Required key: Trading API key. A Connect app\u0026#x27;s backend can also send it with the app\u0026#x27;s API key, and a venue\u0026#x27;s backend with its Venue key, which carries trader:read or trader:trade, each naming one of its own traders in x-trdrs-trader: it then runs on that trader\u0026#x27;s own accounts.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://trdrs.mintlify.app/_mintlify/api/og/v2?division=Account+state\u0026amp;title=Get+the+account+snapshot\u0026amp;description=Returns+the+whole+account+at+one+revision%3A+its+summary%2C+positions%2C+working+orders+and+protection.+Read+this+rather+than+combining+separate+reads%2C+which+are+thre\u0026amp;theme=85063b664f29463f86ec0c0f\u0026amp;signature=eea043836c9a33757270d2bb8b749523f0f6de1e28b55153fa98d995c5874f4f\">\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/trdrs/Mc3uPNp5t9BqWGNO/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"trdrs Engine API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0a0a0a\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.trdrs.co/api-reference/account/get-the-account-snapshot\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/account/get-the-account-snapshot.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.trdrs.co/#organization\",\"name\":\"trdrs Engine API\",\"url\":\"https://docs.trdrs.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/trdrs/VlyBylpRulgoNVYk/logo.svg?fit=max\u0026auto=format\u0026n=VlyBylpRulgoNVYk\u0026q=85\u0026s=0725a6173d2c03859de4fc3b0a99ea50\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.trdrs.co#website\",\"name\":\"trdrs Engine API\",\"url\":\"https://docs.trdrs.co\",\"publisher\":{\"@id\":\"https://docs.trdrs.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.trdrs.co/api-reference/account/get-the-account-snapshot#webpage\",\"url\":\"https://docs.trdrs.co/api-reference/account/get-the-account-snapshot\",\"name\":\"Get the account snapshot\",\"description\":\"Returns the whole account at one revision: its summary, positions, working orders and protection. Read this rather than combining separate reads, which are three moments with nothing to say whether they agree. It is the same body the account stream sends, so a client with no stream open, or one coming back after a disconnect, gets exactly what the stream would have sent. Required key: Trading API key. A Connect app's backend can also send it with the app's API key, and a venue's backend with its Venue key, which carries trader:read or trader:trade, each naming one of its own traders in x-trdrs-trader: it then runs on that trader's own accounts.\",\"dateModified\":\"2026-10-23T22:24:26.747Z\",\"isPartOf\":{\"@id\":\"https://docs.trdrs.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.trdrs.co/api-reference/account/get-the-account-snapshot#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.trdrs.co/api-reference/account/get-the-account-snapshot#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.trdrs.co/api-reference/market-data/get-market-data-limits\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Trading\",\"item\":\"https://docs.trdrs.co/api-reference/trading/get-the-net-position\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Account state\",\"item\":\"https://docs.trdrs.co/api-reference/account/list-accounts\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Get the account snapshot\",\"item\":\"https://docs.trdrs.co/api-reference/account/get-the-account-snapshot\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.trdrs.co/api-reference/account/get-the-account-snapshot#apireference\",\"headline\":\"Get the account snapshot\",\"name\":\"Get the account snapshot\",\"description\":\"Returns the whole account at one revision: its summary, positions, working orders and protection. Read this rather than combining separate reads, which are three moments with nothing to say whether they agree. It is the same body the account stream sends, so a client with no stream open, or one coming back after a disconnect, gets exactly what the stream would have sent. Required key: Trading API key. A Connect app's backend can also send it with the app's API key, and a venue's backend with its Venue key, which carries trader:read or trader:trade, each naming one of its own traders in x-trdrs-trader: it then runs on that trader's own accounts.\",\"url\":\"https://docs.trdrs.co/api-reference/account/get-the-account-snapshot\",\"mainEntityOfPage\":{\"@id\":\"https://docs.trdrs.co/api-reference/account/get-the-account-snapshot#webpage\"},\"dateModified\":\"2026-10-23T22:24:26.747Z\",\"publisher\":{\"@id\":\"https://docs.trdrs.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.trdrs.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"trdrs Engine API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"trdrs Engine API","nav":{"global":null,"tabs":[{"tab":"Get started","pages":[{"title":"Get started","href":""}]},{"tab":"Guides","dropdowns":[{"dropdown":"Programmatic trading","icon":"code","description":"Trade accounts you hold","groups":[{"group":"Start here","pages":[{"title":"Programmatic trading quickstart","href":"/guides/programmatic-quickstart"}]},{"group":"Trading","pages":[{"title":"Trading overview","sidebarTitle":"Overview","href":"/guides/trading-overview"},{"title":"Place your first order","sidebarTitle":"Place an order","href":"/guides/place-your-first-order"},{"title":"Protect a position","sidebarTitle":"Protect a position","href":"/guides/protect-a-position"},{"title":"Manage working orders","sidebarTitle":"Manage working orders","href":"/guides/manage-working-orders"},{"title":"Close a position","sidebarTitle":"Close a position","href":"/guides/close-a-position"},{"title":"Trade with leverage","sidebarTitle":"Trade with leverage","href":"/guides/trade-with-leverage"},{"title":"Track fills and P\u0026L","sidebarTitle":"Track fills and P\u0026L","href":"/guides/track-fills-and-pnl"}]}]},{"dropdown":"Market data","icon":"chart-line","description":"Read prices, history and streams","pages":[{"title":"Market data overview","sidebarTitle":"Overview","href":"/guides/market-data-overview"},{"title":"Find symbols","sidebarTitle":"Find symbols","href":"/guides/find-symbols"},{"title":"Backfill history","sidebarTitle":"Backfill history","href":"/guides/backfill-history"},{"title":"Stream live market data","sidebarTitle":"Stream live data","href":"/guides/stream-live-data"}]},{"dropdown":"Connect","icon":"link","description":"Build your own trading interface","groups":[{"group":"Start here","pages":[{"title":"Connect","sidebarTitle":"Overview","href":"/guides/connect-overview"},{"title":"Connect quickstart","sidebarTitle":"Quickstart","href":"/guides/connect-quickstart"}]},{"group":"Build","pages":[{"title":"Route your traders' orders","sidebarTitle":"Route your traders' orders","href":"/guides/route-your-traders-orders"},{"title":"Choose your tiles and white-label paper","sidebarTitle":"Tiles and white-label paper","href":"/guides/connect-tiles-and-paper"}]},{"group":"Go live","pages":[{"title":"Pass Connect conformance","sidebarTitle":"Pass conformance","href":"/guides/connect-conformance"},{"title":"Billing for Connect apps","sidebarTitle":"Billing","href":"/guides/connect-billing"},{"title":"Active traders and billing","sidebarTitle":"Active traders","href":"/guides/connect-active-traders"}]}]},{"dropdown":"Venues","icon":"building","description":"Run a prop firm or brokerage","groups":[{"group":"Start here","pages":[{"title":"Prop firms","sidebarTitle":"Prop firms","href":"/guides/prop-firms-overview"},{"title":"Brokerages","sidebarTitle":"Brokerages","href":"/guides/brokerages-overview"},{"title":"Venue quickstart","href":"/guides/business-quickstart"},{"title":"Evaluation quickstart","href":"/quickstart"},{"title":"What your traders get","sidebarTitle":"What your traders get","href":"/what-your-traders-get"}]},{"group":"Set up your venue","pages":[{"title":"Run a venue end to end","sidebarTitle":"Run a venue","href":"/guides/run-a-venue"},{"title":"Venue keys","sidebarTitle":"Venue keys","href":"/guides/venue-keys"},{"title":"Back-office tool","href":"/guides/back-office"}]},{"group":"Run accounts","pages":[{"title":"Venue accounts","sidebarTitle":"Accounts","href":"/guides/venue-accounts"},{"title":"Send your traders to the trading platform","sidebarTitle":"Send traders to trade","href":"/guides/send-traders-to-the-trading-platform"},{"title":"Paper accounts on provider contracts","href":"/guides/paper-provider-contracts"},{"title":"Hedge venue exposure","sidebarTitle":"Hedging","href":"/guides/venue-hedging"},{"title":"Account analytics","sidebarTitle":"Account analytics","href":"/guides/firm-analytics"},{"title":"Read your usage","sidebarTitle":"Read your usage","href":"/guides/read-your-usage"},{"title":"Receive events on your server","sidebarTitle":"Receive events","href":"/guides/receive-events"}]},{"group":"Connect pre-registration","pages":[{"title":"Get listed","sidebarTitle":"Get listed","href":"/guides/get-listed"},{"title":"Register an account","sidebarTitle":"Register an account","href":"/guides/register-an-account"},{"title":"Follow registrations","sidebarTitle":"Follow registrations","href":"/guides/handle-registration-events"}]},{"group":"Check your integration","pages":[{"title":"Requirements","href":"/providers/requirements"},{"title":"Run conformance","href":"/providers/test-evidence"},{"title":"Use your results","href":"/providers/submission"}]}]},{"dropdown":"Providers","icon":"plug","description":"Bring a market to trdrs","pages":[{"title":"Provider conformance","href":"/providers/provider-conformance"},{"title":"Publish a provider integration","href":"/providers/publishing"},{"title":"FXCubic","href":"/providers/fxcubic"},{"title":"Run a testnet provider","href":"/guides/run-a-testnet-provider"},{"title":"Publish a datafeed to your traders","sidebarTitle":"Publish a datafeed","href":"/guides/publish-a-datafeed"},{"title":"Provider data","sidebarTitle":"Provider data","href":"/guides/venue-data"}]},{"dropdown":"Trading interfaces","icon":"display-code","description":"Build your own trading screens","pages":[{"title":"Build a front end","sidebarTitle":"Build a front end","href":"/guides/build-a-front-end"}]}]},{"tab":"API reference","groups":[{"group":"Start here","pages":[{"title":"API reference overview","sidebarTitle":"Overview","href":"/api/overview"}]},{"group":"Endpoints","pages":[{"group":"Market data","pages":[{"group":"Prices and symbols","pages":[{"title":"Get market-data limits","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/market/config","href":"/api-reference/market-data/get-market-data-limits"},{"title":"Search the symbol catalog","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/market/symbols","href":"/api-reference/market-data/search-the-symbol-catalog"},{"title":"Get symbol details","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/market/symbol-info","href":"/api-reference/market-data/get-symbol-details"},{"title":"Get the futures catalog","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/instruments","href":"/api-reference/market-data/get-the-futures-catalog"},{"title":"Get server time","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/market/time","href":"/api-reference/market-data/get-server-time"},{"title":"Get price history","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/market/history","href":"/api-reference/market-data/get-price-history"},{"title":"Get quote snapshots","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/market/quotes","href":"/api-reference/market-data/get-quote-snapshots"},{"title":"Stream live bars","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/market/stream","href":"/api-reference/market-data/stream-live-bars"},{"title":"Stream multiplexed live bars","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/market/streams","href":"/api-reference/market-data/stream-multiplexed-live-bars"}]},{"group":"News and calendar","pages":[{"title":"List news headlines","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/news","href":"/api-reference/news/list-news-headlines"},{"title":"Get a news thumbnail","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/news/image/{id}","href":"/api-reference/news/get-a-news-thumbnail"},{"title":"List calendar events","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/calendar","href":"/api-reference/news/list-calendar-events"},{"title":"Stream news","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/news/stream","href":"/api-reference/news/stream-news"},{"title":"Stream calendar updates","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/calendar/stream","href":"/api-reference/news/stream-calendar-updates"}]}]},{"group":"Trading","pages":[{"group":"Orders","pages":[{"title":"Get the net position","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/trading/position","href":"/api-reference/trading/get-the-net-position"},{"title":"Get what the account may do","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/trading/actions","href":"/api-reference/trading/get-what-the-account-may-do"},{"title":"Match a market for an account","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/trading/match","href":"/api-reference/trading/match-a-market-for-an-account"},{"title":"Preview order margin","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/trading/margin-preview","href":"/api-reference/trading/preview-order-margin"},{"title":"Get leverage and margin mode","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/trading/symbol-config","href":"/api-reference/trading/get-leverage-and-margin-mode"},{"title":"Set leverage","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/trading/symbol-config","href":"/api-reference/trading/set-leverage"},{"title":"Set margin mode","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/trading/margin-mode","href":"/api-reference/trading/set-margin-mode"},{"title":"Place an order","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/trading/order","href":"/api-reference/trading/place-an-order"},{"title":"Replace an order","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/trading/replace","href":"/api-reference/trading/replace-an-order"},{"title":"Cancel an order","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/trading/cancel","href":"/api-reference/trading/cancel-an-order"},{"title":"Cancel all working orders","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/trading/cancel-all","href":"/api-reference/trading/cancel-all-working-orders"},{"title":"Protect a position","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/trading/exits","href":"/api-reference/trading/protect-a-position"},{"title":"Change a bracket","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/trading/exits/{id}","href":"/api-reference/trading/change-a-bracket"},{"title":"Withdraw a bracket","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/trading/exits/{id}","href":"/api-reference/trading/withdraw-a-bracket"},{"title":"Close part of a position","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/trading/close","href":"/api-reference/trading/close-part-of-a-position"},{"title":"Flatten a position","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/trading/flatten","href":"/api-reference/trading/flatten-a-position"},{"title":"Flatten the account","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/trading/flatten-account","href":"/api-reference/trading/flatten-the-account"},{"title":"Reverse a position","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/trading/reverse","href":"/api-reference/trading/reverse-a-position"}]},{"group":"Account state","pages":[{"title":"List accounts","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/list","href":"/api-reference/account/list-accounts"},{"title":"List the markets an account trades","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/markets","href":"/api-reference/account/list-the-markets-an-account-trades"},{"title":"Get the account summary","description":"Returns the account's money in one read: balance, profit and loss, net liquidation value and buying power. A value is null when the provider hasn't reported it or the account has no such figure, never 0 in its place.\n\nRequired key: Trading API key. A Connect app's backend can also send it with the app's API key, and a venue's backend with its Venue key, which carries `trader:read` or `trader:trade`, each naming one of its own traders in `x-trdrs-trader`: it then runs on that trader's own accounts.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/summary","href":"/api-reference/account/get-the-account-summary"},{"title":"Get the account snapshot","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/snapshot","href":"/api-reference/account/get-the-account-snapshot"},{"title":"List open positions","description":"Returns the open positions in one read, with the position mode they were read under. On an account that holds separate tickets, each open ticket is its own row with its `positionId`, so a long and a short ticket on one instrument are two rows.\n\nRequired key: Trading API key. A Connect app's backend can also send it with the app's API key, and a venue's backend with its Venue key, which carries `trader:read` or `trader:trade`, each naming one of its own traders in `x-trdrs-trader`: it then runs on that trader's own accounts.","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/positions","href":"/api-reference/account/list-open-positions"},{"title":"List closed positions","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/positions/closed","href":"/api-reference/account/list-closed-positions"},{"title":"List orders","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/orders","href":"/api-reference/account/list-orders"},{"title":"List order history","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/orders/history","href":"/api-reference/account/list-order-history"},{"title":"List fills for an instrument","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/executions","href":"/api-reference/account/list-fills-for-an-instrument"},{"title":"Get daily P\u0026L history","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/pnl/history","href":"/api-reference/account/get-daily-p\u0026l-history"},{"title":"List closed round trips","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/pnl/round-trips","href":"/api-reference/account/list-closed-round-trips"},{"title":"List brackets","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/brackets","href":"/api-reference/account/list-brackets"},{"title":"Stream account updates","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/stream","href":"/api-reference/account/stream-account-updates"},{"title":"Get history sync status","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/account/sync-status","href":"/api-reference/account/get-history-sync-status"}]},{"group":"Retired risk controls","pages":[{"title":"Get the risk state (deprecated)","deprecated":true,"version":null,"openapi":"/api/openapi.json get /api/risk","href":"/api-reference/account/get-the-risk-state-deprecated"},{"title":"Read the risk state (deprecated)","deprecated":true,"version":null,"openapi":"/api/openapi.json put /api/risk","href":"/api-reference/account/read-the-risk-state-deprecated"},{"title":"Clear the risk lock (deprecated)","deprecated":true,"version":null,"openapi":"/api/openapi.json post /api/risk/unlock","href":"/api-reference/account/clear-the-risk-lock-deprecated"}]},{"group":"Evaluation programs","pages":[{"title":"List evaluation programs","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/challenges","href":"/api-reference/challenges/list-evaluation-programs"},{"title":"Create an enrollment","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/challenges/enroll","href":"/api-reference/challenges/create-an-enrollment"},{"title":"List your enrollments","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/enrollments","href":"/api-reference/challenges/list-your-enrollments"},{"title":"List enrollment events","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/enrollments/events","href":"/api-reference/challenges/list-enrollment-events"}]}]},{"group":"Connect","pages":[{"title":"List the built-in providers and how each is signed into","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/connect/providers","href":"/api-reference/connect/list-the-built-in-providers-and-how-each-is-signed-into"},{"title":"List Connect’s tiles","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/connect/tiles","href":"/api-reference/connect/list-connect’s-tiles"},{"group":"Connect links","pages":[{"title":"Create a Connect link","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/connect/links","href":"/api-reference/connect-apps-preview/create-a-connect-link"},{"title":"Read a Connect link","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/connect/links/{linkId}","href":"/api-reference/connect-apps-preview/read-a-connect-link"},{"title":"Close a Connect link","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/connect/links/{linkId}","href":"/api-reference/connect-apps-preview/close-a-connect-link"}]},{"group":"Hosted Connect's own routes","pages":[{"title":"Mount a Connect link token","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/connect-link/mount","href":"/api-reference/connect-apps-preview/mount-a-connect-link-token"},{"title":"List the tiles a Connect session offers","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/connect-link/sessions/{sessionId}/tiles","href":"/api-reference/connect-apps-preview/list-the-tiles-a-connect-session-offers"},{"title":"List a trader's provider connections","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/connect-link/sessions/{sessionId}/providers","href":"/api-reference/connect-apps-preview/list-a-traders-provider-connections"},{"title":"Open white-label paper in Connect","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/connect-link/sessions/{sessionId}/paper","href":"/api-reference/connect-apps-preview/open-white-label-paper-in-connect"},{"title":"Start a provider sign-in window","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/connect-link/sessions/{sessionId}/oauth/{provider}","href":"/api-reference/connect-apps-preview/start-a-provider-sign-in-window"},{"title":"Finish a provider sign-in window","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/connect-link/sessions/{sessionId}/oauth/{provider}/finish","href":"/api-reference/connect-apps-preview/finish-a-provider-sign-in-window"},{"title":"Complete a Connect provider login","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/connect-link/sessions/{sessionId}/complete","href":"/api-reference/connect-apps-preview/complete-a-connect-provider-login"},{"title":"End a hosted Connect session","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/connect-link/sessions/{sessionId}/frame","href":"/api-reference/connect-apps-preview/end-a-hosted-connect-session"}]}]},{"group":"Venues","pages":[{"group":"Venue details","pages":[{"title":"Read a venue","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}","href":"/api-reference/venue-platform-preview/read-a-venue"}]},{"group":"Branding and reference data","pages":[{"title":"Read the venue brand","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/brand","href":"/api-reference/venue-platform-preview/read-the-venue-brand"},{"title":"Update the venue brand","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/venues/{venueId}/brand","href":"/api-reference/venue-platform-preview/update-the-venue-brand"},{"title":"Upload the venue logo","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/brand/logo","href":"/api-reference/venue-platform-preview/upload-the-venue-logo"},{"title":"Read the venue instrument reference catalog","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/reference/instruments","href":"/api-reference/venue-platform-preview/read-the-venue-instrument-reference-catalog"},{"title":"Read registered contract facts for a new instrument","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/reference/contract","href":"/api-reference/venue-platform-preview/read-registered-contract-facts-for-a-new-instrument"},{"title":"Search the markets a venue can list","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/reference/symbols","href":"/api-reference/venue-platform-preview/search-the-markets-a-venue-can-list"}]},{"group":"Instruments","pages":[{"title":"List instrument candidates","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/instruments","href":"/api-reference/venue-platform-preview/list-instrument-candidates"},{"title":"List active instruments","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/instruments/active","href":"/api-reference/venue-platform-preview/list-active-instruments"},{"title":"Read an instrument candidate","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/instruments/{candidateId}","href":"/api-reference/venue-platform-preview/read-an-instrument-candidate"},{"title":"Save an instrument candidate","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/instruments","href":"/api-reference/venue-platform-preview/save-an-instrument-candidate"},{"title":"Activate an instrument version","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/instruments/active","href":"/api-reference/venue-platform-preview/activate-an-instrument-version"}]},{"group":"Conditions and groups","pages":[{"title":"List account groups","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/conditions/groups","href":"/api-reference/venue-platform-preview/list-account-groups"},{"title":"List condition profiles","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/conditions/profiles","href":"/api-reference/venue-platform-preview/list-condition-profiles"},{"title":"Apply a condition profile","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/conditions/active","href":"/api-reference/venue-platform-preview/apply-a-condition-profile"},{"title":"Create or update an account group","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/conditions/groups","href":"/api-reference/venue-platform-preview/create-or-update-an-account-group"},{"title":"Preview a conditions change","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/conditions/preview","href":"/api-reference/venue-platform-preview/preview-a-conditions-change"},{"title":"Publish a condition profile","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/conditions/profiles","href":"/api-reference/venue-platform-preview/publish-a-condition-profile"},{"title":"Point a group at a route","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/groups/{groupId}/route","href":"/api-reference/venue-platform-preview/point-a-group-at-a-route"}]},{"group":"Routes","pages":[{"title":"List routes","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/routes","href":"/api-reference/venue-platform-preview/list-routes"},{"title":"Create or update a route","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/routes","href":"/api-reference/venue-platform-preview/create-or-update-a-route"}]},{"group":"Providers and connections","pages":[{"title":"List provider connections","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/connections","href":"/api-reference/venue-platform-preview/list-provider-connections"},{"title":"List discovered provider accounts","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/connections/{connectionId}/accounts","href":"/api-reference/venue-platform-preview/list-discovered-provider-accounts"},{"title":"Read provider validation status","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/connections/{connectionId}/validations/{jobId}","href":"/api-reference/venue-platform-preview/read-provider-validation-status"},{"title":"List provider versions","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/providers","href":"/api-reference/venue-platform-preview/list-provider-versions"},{"title":"Create a provider connection draft","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/connections","href":"/api-reference/venue-platform-preview/create-a-provider-connection-draft"},{"title":"Queue read-only provider validation","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/connections/{connectionId}/validate","href":"/api-reference/venue-platform-preview/queue-read-only-provider-validation"},{"title":"Register a public provider version","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/providers","href":"/api-reference/venue-platform-preview/register-a-public-provider-version"},{"title":"Show or hide a plugged-in provider to this venue's traders","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/connections/{connectionId}/expose","href":"/api-reference/venue-platform-preview/show-or-hide-a-plugged-in-provider-to-this-venues-traders"},{"title":"Browse public provider integrations","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/provider-catalog/directory","href":"/api-reference/venue-platform-preview/browse-public-provider-integrations"},{"title":"Read your maintained integrations","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/provider-catalog/mine","href":"/api-reference/venue-platform-preview/read-your-maintained-integrations"},{"title":"Create a private provider profile","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/provider-catalog/profiles","href":"/api-reference/venue-platform-preview/create-a-private-provider-profile"},{"title":"Update provider profile","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/provider-catalog/profiles/{companyId}","href":"/api-reference/venue-platform-preview/update-provider-profile"},{"title":"Upload a provider logo","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/provider-catalog/profiles/{companyId}/logo","href":"/api-reference/venue-platform-preview/upload-a-provider-logo"},{"title":"Record an immutable provider release","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/provider-catalog/profiles/{companyId}/releases","href":"/api-reference/venue-platform-preview/record-an-immutable-provider-release"},{"title":"Preview, submit or withdraw a provider release","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/provider-catalog/profiles/{companyId}/publication","href":"/api-reference/venue-platform-preview/preview-submit-or-withdraw-a-provider-release"},{"title":"Pin a published release to your venue","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/provider-catalog/releases/{releaseId}/install","href":"/api-reference/venue-platform-preview/pin-a-published-release-to-your-venue"}]},{"group":"Risk policies","pages":[{"title":"List the venue's risk policies","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/risk-policies","href":"/api-reference/venue-platform-preview/list-the-venues-risk-policies"},{"title":"Store a risk policy version","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/risk-policies","href":"/api-reference/venue-platform-preview/store-a-risk-policy-version"},{"title":"Read one risk policy","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/risk-policies/{policyId}","href":"/api-reference/venue-platform-preview/read-one-risk-policy"},{"title":"Publish a risk policy version","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/risk-policies/{policyId}/publications","href":"/api-reference/venue-platform-preview/publish-a-risk-policy-version"}]},{"group":"Stages","pages":[{"title":"Read an account's stage eligibility","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/accounts/{accountId}/stages/{stageId}/eligibility","href":"/api-reference/venue-platform-preview/read-an-accounts-stage-eligibility"},{"title":"List stage policies","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/stages/policies","href":"/api-reference/venue-platform-preview/list-stage-policies"},{"title":"Advance an account past a stage","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/accounts/{accountId}/stages/{stageId}/advance","href":"/api-reference/venue-platform-preview/advance-an-account-past-a-stage"},{"title":"Put a stage policy in force","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/stages/active","href":"/api-reference/venue-platform-preview/put-a-stage-policy-in-force"},{"title":"Publish a stage policy","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/stages/policies","href":"/api-reference/venue-platform-preview/publish-a-stage-policy"}]},{"group":"Retired account controls","pages":[{"title":"Retired account risk controls","deprecated":true,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/accounts/{accountId}/risk-controls","href":"/api-reference/venue-platform-preview/retired-account-risk-controls"},{"title":"Retired account risk controls write","deprecated":true,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/accounts/{accountId}/risk-controls","href":"/api-reference/venue-platform-preview/retired-account-risk-controls-write"}]},{"group":"Venue accounts","pages":[{"title":"List a venue's accounts","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/accounts","href":"/api-reference/venue-platform-preview/list-a-venues-accounts"},{"title":"List existing accounts with original rules","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/existing-accounts","href":"/api-reference/venue-platform-preview/list-existing-accounts-with-original-rules"},{"title":"Issue an account into a group","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/accounts","href":"/api-reference/venue-platform-preview/issue-an-account-into-a-group"},{"title":"Bind a discovered external account","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/accounts/bind","href":"/api-reference/venue-platform-preview/bind-a-discovered-external-account"},{"title":"Credit, debit or adjust an account's balance","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/accounts/{accountId}/balance","href":"/api-reference/venue-platform-preview/credit-debit-or-adjust-an-accounts-balance"},{"title":"Quote an account payout","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/accounts/{accountId}/payout","href":"/api-reference/venue-platform-preview/quote-an-account-payout"},{"title":"Record an account payout","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/accounts/{accountId}/payout","href":"/api-reference/venue-platform-preview/record-an-account-payout"},{"title":"Reset an account to its starting balance","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/accounts/{accountId}/reset","href":"/api-reference/venue-platform-preview/reset-an-account-to-its-starting-balance"},{"title":"Halt trading on an account","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/accounts/{accountId}/halt","href":"/api-reference/venue-platform-preview/halt-trading-on-an-account"},{"title":"Resume trading on an account","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/accounts/{accountId}/resume","href":"/api-reference/venue-platform-preview/resume-trading-on-an-account"},{"title":"Read an account's analytics","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/accounts/{accountId}/analytics","href":"/api-reference/venue-platform-preview/read-an-accounts-analytics"},{"title":"Revoke an account grant","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/venues/{venueId}/accounts/{accountId}/grants/{grantId}","href":"/api-reference/venue-platform-preview/revoke-an-account-grant"},{"title":"Read account invitation status","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/accounts/{accountId}/grants/{grantId}","href":"/api-reference/venue-platform-preview/read-account-invitation-status"},{"title":"Read an account's open liquidation","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/accounts/{accountId}/incident","href":"/api-reference/venue-platform-preview/read-an-accounts-open-liquidation"},{"title":"Read what one account may trade","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/accounts/{accountId}/instruments","href":"/api-reference/venue-platform-preview/read-what-one-account-may-trade"},{"title":"Read a customer account's books","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/accounts/{accountId}/ledger","href":"/api-reference/venue-platform-preview/read-a-customer-accounts-books"},{"title":"Read one account's effective conditions","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/conditions/accounts/{accountId}/effective","href":"/api-reference/venue-platform-preview/read-one-accounts-effective-conditions"},{"title":"Invite an account recipient","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/accounts/{accountId}/grants","href":"/api-reference/venue-platform-preview/invite-an-account-recipient"},{"title":"Move an account between groups","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/conditions/accounts/{accountId}/group","href":"/api-reference/venue-platform-preview/move-an-account-between-groups"},{"title":"Set per-account safety limits","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/conditions/accounts/{accountId}/risk","href":"/api-reference/venue-platform-preview/set-per-account-safety-limits"}]},{"group":"Venue traders","pages":[{"title":"Send a trader to the trading platform","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/handoffs","href":"/api-reference/venue-platform-preview/send-a-trader-to-the-trading-platform"},{"title":"Suspend a trader","deprecated":null,"version":null,"openapi":"/api/openapi.json put /api/venues/{venueId}/traders/{trader}/suspension","href":"/api-reference/venue-platform-preview/suspend-a-trader"},{"title":"Lift a trader's suspension","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/venues/{venueId}/traders/{trader}/suspension","href":"/api-reference/venue-platform-preview/lift-a-traders-suspension"}]},{"group":"Hedging","pages":[{"title":"Read venue hedge state","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/hedges","href":"/api-reference/venue-platform-preview/read-venue-hedge-state"},{"title":"Publish a hedge policy","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/hedges/policies","href":"/api-reference/venue-platform-preview/publish-a-hedge-policy"},{"title":"Activate, pause or stop a hedge policy","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/hedges/activation","href":"/api-reference/venue-platform-preview/activate-pause-or-stop-a-hedge-policy"},{"title":"Preview or persist the next hedge target","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/hedges/calculate","href":"/api-reference/venue-platform-preview/preview-or-persist-the-next-hedge-target"},{"title":"Dispatch one prepared hedge intent","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/hedges/intents/{intentId}/dispatch","href":"/api-reference/venue-platform-preview/dispatch-one-prepared-hedge-intent"},{"title":"Reconcile an uncertain hedge intent","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/hedges/intents/{intentId}/reconcile","href":"/api-reference/venue-platform-preview/reconcile-an-uncertain-hedge-intent"},{"title":"Stop every hedge policy for this venue","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/hedges/emergency-stop","href":"/api-reference/venue-platform-preview/stop-every-hedge-policy-for-this-venue"},{"title":"Flatten a hedge destination","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/hedges/flatten","href":"/api-reference/venue-platform-preview/flatten-a-hedge-destination"},{"title":"Unbind a hedge account","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/accounts/{accountId}/unbind","href":"/api-reference/venue-platform-preview/unbind-a-hedge-account"},{"title":"Read risk across the venue's accounts","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/risk","href":"/api-reference/venue-platform-preview/read-risk-across-the-venues-accounts"}]},{"group":"Venue rules","pages":[{"title":"Turn venue rules on or off","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/rules","href":"/api-reference/venue-platform-preview/turn-venue-rules-on-or-off"}]},{"group":"Usage and webhooks","pages":[{"title":"Read the venue's metered usage for a month","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/usage","href":"/api-reference/venue-platform-preview/read-the-venues-metered-usage-for-a-month"},{"title":"Read the accounts behind the venue's usage","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/usage/accounts","href":"/api-reference/venue-platform-preview/read-the-accounts-behind-the-venues-usage"},{"title":"Read the receipt of one balance operation","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/balance-ops/{referenceId}","href":"/api-reference/venue-platform-preview/read-the-receipt-of-one-balance-operation"},{"title":"List the venue's webhooks","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/webhooks","href":"/api-reference/venue-platform-preview/list-the-venues-webhooks"},{"title":"Register a webhook","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/webhooks","href":"/api-reference/venue-platform-preview/register-a-webhook"},{"title":"Remove a webhook","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/venues/{venueId}/webhooks/{webhookId}","href":"/api-reference/venue-platform-preview/remove-a-webhook"},{"title":"Send a signed test ping to a webhook","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/venues/{venueId}/webhooks/{webhookId}/test","href":"/api-reference/venue-platform-preview/send-a-signed-test-ping-to-a-webhook"},{"title":"Read a webhook's delivery log","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/venues/{venueId}/webhooks/{webhookId}/deliveries","href":"/api-reference/venue-platform-preview/read-a-webhooks-delivery-log"}]},{"group":"Pre-registration","pages":[{"title":"Pre-register a trader’s account","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/pre-registration/registrations","href":"/api-reference/connect/pre-register-a-trader’s-account"},{"title":"List pre-registered accounts","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/pre-registration/registrations","href":"/api-reference/connect/list-pre-registered-accounts"},{"title":"Cancel a pre-registration","deprecated":null,"version":null,"openapi":"/api/openapi.json delete /api/pre-registration/registrations","href":"/api-reference/connect/cancel-a-pre-registration"}]},{"group":"Pre-registration conformance (sandbox)","pages":[{"title":"Start a sandbox conformance run","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/pre-registration/conformance/runs","href":"/api-reference/connect/start-a-sandbox-conformance-run"},{"title":"Read conformance run results","deprecated":null,"version":null,"openapi":"/api/openapi.json get /api/pre-registration/conformance/runs/{id}","href":"/api-reference/connect/read-conformance-run-results"},{"title":"Finish a sandbox conformance run","deprecated":null,"version":null,"openapi":"/api/openapi.json post /api/pre-registration/conformance/runs/{id}/close","href":"/api-reference/connect/finish-a-sandbox-conformance-run"}]}]}]}]},{"tab":"SDKs and tools","dropdowns":[{"dropdown":"Overview","icon":"flag-checkered","description":"Choose a tool for your integration","pages":[{"title":"SDKs and tools","sidebarTitle":"Overview","href":"/sdks"}]},{"dropdown":"Connect","icon":"link","description":"Embed hosted Connect with the Connect SDK","pages":[{"title":"Connect SDK","sidebarTitle":"Connect SDK","href":"/sdks/connect"}]},{"dropdown":"TypeScript","icon":"cube","description":"Read about the TypeScript SDK and its availability","pages":[{"title":"TypeScript SDK","sidebarTitle":"TypeScript SDK (unavailable)","href":"/sdks/typescript"}]},{"dropdown":"Charting","icon":"chart-line","description":"Build charts with Quick Charts","pages":[{"title":"Charting","href":"/chart-integration"}]},{"dropdown":"CLI","icon":"terminal","description":"Read about the CLI and its availability","pages":[{"title":"CLI","sidebarTitle":"CLI (unavailable)","href":"/cli"}]},{"dropdown":"AI","icon":"robot","description":"Build and check an integration with a coding agent","groups":[{"group":"Start here","pages":[{"title":"Build with AI","href":"/ai"}]},{"group":"Prompts","pages":[{"title":"Agent prompts","href":"/sdks/agent-prompts"}]}]}]}]},"title":"Get the account snapshot - trdrs Engine API","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"]}