What your organization holds on one network, in base units, per chain instance and
asset: the totals of GET /wallets/{reference}/balance over every wallet, without a
request per wallet. With vault, over that vault only.
balance is what the chains hold, escrow what transactions in flight have reserved out
of it, staked what is locked, and spendable is balance - escrow. The same token on
two chain instances is two rows, never one sum: USDT on TRON and on BSC are two contracts,
with their own decimals. An asset Citadel does not list in GET /assets reads as its
contract, with decimals: null.
network is required: each network keeps its own books, and a total never spans them.
Needs the read scope. A key limited to vaults totals those vaults only; a vault
outside them answers 404.
An API key minted in the console (ctd_…). Authenticates; never authorizes funds. A key
carries scopes (read, wallets.write, transactions.write, events.write,
webhooks.write, policy.write) and may be limited to vaults, to IP addresses, and in
lifetime — see Authentication.
The network the data lives on. Required — there is no default network: without it,
422 network_required. A wallet named by its id on another network: 422 network_mismatch.
The network the data lives on. Required wherever it appears in a request — there is no
default network. One your installation does not serve: 422 network_not_served.
The network the data lives on. Required wherever it appears in a request — there is no
default network. One your installation does not serve: 422 network_not_served.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Citadel API","colors":{"primary":"#1F5BD8","light":"#5B8BEF","dark":"#163F99"},"api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python","go"]}},"integrations":{"telemetry":{"enabled":false}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"hasAudioNarration":false,"customDomains":[],"gitSource":{"type":"github","owner":"local","repo":"local","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":"local","isBase":true},"buildId":"local","clientVersion":"0.0.4088"},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false,"isLoggedInCli":false,"mintExport":{}},"customCss":[],"page":{"pagePath":"api-reference/organization/get-organization-balances","slug":"/api-reference/organization/get-organization-balances","pageMetadata":{"openapi":"/openapi.yaml get /balances","description":"What your organization holds on one network, in base units, per chain instance and\nasset: the totals of `GET /wallets/{reference}/balance` over every wallet, without a\nrequest per wallet. With `vault`, over that vault only.\n\n`balance` is what the chains hold, `escrow` what transactions in flight have reserved out\nof it, `staked` what is locked, and `spendable` is `balance - escrow`. The same token on\ntwo chain instances is two rows, never one sum: USDT on TRON and on BSC are two contracts,\nwith their own `decimals`. An asset Citadel does not list in `GET /assets` reads as its\ncontract, with `decimals: null`.\n\n`network` is required: each network keeps its own books, and a total never spans them.\nNeeds the `read` scope. A key limited to vaults totals those vaults only; a `vault`\noutside them answers `404`.\n","href":"/api-reference/organization/get-organization-balances","title":"Get organization balances"},"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: [_jsxs(_components.p, {\n children: [\"What your organization holds on one network, in base units, per chain instance and\\nasset: the totals of \", _jsx(_components.code, {\n children: \"GET /wallets/{reference}/balance\"\n }), \" over every wallet, without a\\nrequest per wallet. With \", _jsx(_components.code, {\n children: \"vault\"\n }), \", over that vault only.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"balance\"\n }), \" is what the chains hold, \", _jsx(_components.code, {\n children: \"escrow\"\n }), \" what transactions in flight have reserved out\\nof it, \", _jsx(_components.code, {\n children: \"staked\"\n }), \" what is locked, and \", _jsx(_components.code, {\n children: \"spendable\"\n }), \" is \", _jsx(_components.code, {\n children: \"balance - escrow\"\n }), \". The same token on\\ntwo chain instances is two rows, never one sum: USDT on TRON and on BSC are two contracts,\\nwith their own \", _jsx(_components.code, {\n children: \"decimals\"\n }), \". An asset Citadel does not list in \", _jsx(_components.code, {\n children: \"GET /assets\"\n }), \" reads as its\\ncontract, with \", _jsx(_components.code, {\n children: \"decimals: null\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"network\"\n }), \" is required: each network keeps its own books, and a total never spans them.\\nNeeds the \", _jsx(_components.code, {\n children: \"read\"\n }), \" scope. A key limited to vaults totals those vaults only; a \", _jsx(_components.code, {\n children: \"vault\"\n }), \"\\noutside them answers \", _jsx(_components.code, {\n children: \"404\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"openapi":"/openapi.yaml get /balances","description":"What your organization holds on one network, in base units, per chain instance and\nasset: the totals of `GET /wallets/{reference}/balance` over every wallet, without a\nrequest per wallet. With `vault`, over that vault only.\n\n`balance` is what the chains hold, `escrow` what transactions in flight have reserved out\nof it, `staked` what is locked, and `spendable` is `balance - escrow`. The same token on\ntwo chain instances is two rows, never one sum: USDT on TRON and on BSC are two contracts,\nwith their own `decimals`. An asset Citadel does not list in `GET /assets` reads as its\ncontract, with `decimals: null`.\n\n`network` is required: each network keeps its own books, and a total never spans them.\nNeeds the `read` scope. A key limited to vaults totals those vaults only; a `vault`\noutside them answers `404`.\n","href":"/api-reference/organization/get-organization-balances","title":"Get organization balances"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Organization"],"operationId":"getBalances","summary":"Get organization balances","description":"What your organization holds on one network, in base units, per chain instance and\nasset: the totals of `GET /wallets/{reference}/balance` over every wallet, without a\nrequest per wallet. With `vault`, over that vault only.\n\n`balance` is what the chains hold, `escrow` what transactions in flight have reserved out\nof it, `staked` what is locked, and `spendable` is `balance - escrow`. The same token on\ntwo chain instances is two rows, never one sum: USDT on TRON and on BSC are two contracts,\nwith their own `decimals`. An asset Citadel does not list in `GET /assets` reads as its\ncontract, with `decimals: null`.\n\n`network` is required: each network keeps its own books, and a total never spans them.\nNeeds the `read` scope. A key limited to vaults totals those vaults only; a `vault`\noutside them answers `404`.\n","parameters":["c1073ce1-5864-48ec-9312-a2519de5dbcc","b24aa71f-318a-4f37-b0c5-fe88e94caff1"],"responses":{"200":"44a3fc4e-c382-4fad-8237-92d07e728b83","401":"95dd4463-295f-47b0-b8d9-469d59cf5f4d","403":"a1547cc0-73c7-4510-b85e-eab88728f442","404":"5e32aa61-5126-497b-991e-bda8894cbd1f","422":"0537802d-eb02-446a-9e6e-c5b07541ec7d"},"method":"get","type":"path","servers":["825d9789-7332-4a65-b039-b330384d4003"],"security":["24aebd70-fdbd-4dae-a4a9-d627e2d2711f"],"path":"/balances","baseUrlOptions":["https://api.citadel.example/api/v1"],"title":"Get organization balances","codeSamples":[],"requestExampleLanguages":["bash","javascript","python","go"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"c1073ce1-5864-48ec-9312-a2519de5dbcc":{"name":"network","in":"query","required":true,"description":"The network the data lives on. Required — there is no default network: without it,\n`422 network_required`. A wallet named by its id on another network: `422 network_mismatch`.\n","schema":{"type":"string","enum":["mainnet","testnet"],"description":"The network the data lives on. Required — there is no default network: without it,\n`422 network_required`. A wallet named by its id on another network: `422 network_mismatch`.\n\nThe network the data lives on. Required wherever it appears in a request — there is no\ndefault network. One your installation does not serve: `422 network_not_served`.\n","isRequired":true,"uniqueKey":"","typeLabel":"enum\u003cstring>"}},"b24aa71f-318a-4f37-b0c5-fe88e94caff1":{"name":"vault","in":"query","required":false,"description":"Only this vault. Not a vault id, `422`; not one of yours, or outside the key's vaults, `404`.","schema":{"type":"string","format":"uuid","isRequired":false,"description":"Only this vault. Not a vault id, `422`; not one of yours, or outside the key's vaults, `404`.","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"responses":{"44a3fc4e-c382-4fad-8237-92d07e728b83":{"description":"Totals per chain instance and asset.","content":{"application/json":{"schema":{"type":"object","required":["network","vault","balances"],"properties":{"network":{"type":"string","enum":["mainnet","testnet"],"description":"The network the data lives on. Required wherever it appears in a request — there is no\ndefault network. One your installation does not serve: `422 network_not_served`.\n","isRequired":true,"uniqueKey":"network","typeLabel":"enum\u003cstring>"},"vault":{"oneOf":[{"type":"string","format":"uuid","description":"The vault totalled; `null` for every vault the key reaches.","isRequired":true,"uniqueKey":"vault.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"The vault totalled; `null` for every vault the key reaches.","isRequired":true,"uniqueKey":"vault.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"vault","typeLabel":"string\u003cuuid> | null"},"balances":{"type":"array","items":{"type":"object","required":["chain","instance","asset","contract","decimals","balance","escrow","staked","spendable"],"properties":{"chain":{"type":"string","enum":["tron","evm","solana","ton"],"isRequired":true,"uniqueKey":"balances.items.[INDEX].chain","typeLabel":"enum\u003cstring>"},"instance":{"type":"string","description":"The chain instance, as `GET /networks` names it: for EVM, which L1/L2.","isRequired":true,"uniqueKey":"balances.items.[INDEX].instance","typeLabel":"string"},"asset":{"type":"string","description":"Catalog symbol. An asset the catalog no longer lists (a balance left on a disabled one) reads as Citadel's books record it: its contract in lowercase, on TRON in hex (`41…`) rather than base58.","isRequired":true,"uniqueKey":"balances.items.[INDEX].asset","typeLabel":"string"},"contract":{"oneOf":[{"type":"string","description":"null for the native coin. For an asset the catalog does not list, the same value as `asset`.","isRequired":true,"uniqueKey":"balances.items.[INDEX].contract.oneOf.0","typeLabel":"string"},{"type":"null","description":"null for the native coin. For an asset the catalog does not list, the same value as `asset`.","isRequired":true,"uniqueKey":"balances.items.[INDEX].contract.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.items.[INDEX].contract","typeLabel":"string | null"},"decimals":{"oneOf":[{"type":"integer","description":"null for an asset the catalog does not list.","isRequired":true,"uniqueKey":"balances.items.[INDEX].decimals.oneOf.0","typeLabel":"integer"},{"type":"null","description":"null for an asset the catalog does not list.","isRequired":true,"uniqueKey":"balances.items.[INDEX].decimals.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.items.[INDEX].decimals","typeLabel":"integer | null"},"balance":{"type":"string","pattern":"^[0-9]+$","description":"An integer amount in the asset's smallest unit, as a string.","isRequired":true,"uniqueKey":"balances.items.[INDEX].balance","typeLabel":"string"},"escrow":{"type":"string","pattern":"^[0-9]+$","description":"An integer amount in the asset's smallest unit, as a string.","isRequired":true,"uniqueKey":"balances.items.[INDEX].escrow","typeLabel":"string"},"staked":{"type":"string","pattern":"^[0-9]+$","description":"An integer amount in the asset's smallest unit, as a string.","isRequired":true,"uniqueKey":"balances.items.[INDEX].staked","typeLabel":"string"},"spendable":{"type":"string","pattern":"^[0-9]+$","description":"An integer amount in the asset's smallest unit, as a string.","isRequired":true,"uniqueKey":"balances.items.[INDEX].spendable","typeLabel":"string"}},"uniqueKey":"balances.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"network":"mainnet","vault":null,"balances":[{"chain":"tron","instance":"tron","asset":"TRX","contract":null,"decimals":6,"balance":"1250000000","escrow":"0","staked":"0","spendable":"1250000000"},{"chain":"tron","instance":"tron","asset":"USDT","contract":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","decimals":6,"balance":"98000000000","escrow":"50000000","staked":"0","spendable":"97950000000"}]},"examples":{"Example":{"title":"Example","value":{"network":"mainnet","vault":null,"balances":[{"chain":"tron","instance":"tron","asset":"TRX","contract":null,"decimals":6,"balance":"1250000000","escrow":"0","staked":"0","spendable":"1250000000"},{"chain":"tron","instance":"tron","asset":"USDT","contract":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","decimals":6,"balance":"98000000000","escrow":"50000000","staked":"0","spendable":"97950000000"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"95dd4463-295f-47b0-b8d9-469d59cf5f4d":{"description":"Missing, unknown, revoked or expired API key.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable; not stable.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine code, where one exists.","uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"unauthorized"},"examples":{"Example":{"title":"Example","value":{"error":"unauthorized"}}},"exampleType":"examples"}},"exampleType":"examples"},"a1547cc0-73c7-4510-b85e-eab88728f442":{"description":"The key may not make this call. Nothing was created or reserved. `code`:\n`ip_not_allowed` — the call came from an address outside the key's IP allowlist;\n`scope_missing` — the key lacks the scope the endpoint needs;\n`vault_limited` — the key is limited to vaults and the wallet is outside them, or the\nendpoint drives or lists workflows, manages webhook endpoints, reads webhook deliveries,\nreads or changes the policy document, or asks for or reads a report.\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable; not stable.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine code, where one exists.","uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"ip_not_allowed":{"title":"ip_not_allowed","value":{"error":"request from 198.51.100.1 is not allowed for this key","code":"ip_not_allowed"}},"scope_missing":{"title":"scope_missing","value":{"error":"this key lacks the transactions.write scope","code":"scope_missing"}},"vault_limited":{"title":"vault_limited","value":{"error":"wallet is outside this key's vaults","code":"vault_limited"}}},"exampleType":"examples"}},"exampleType":"examples"},"5e32aa61-5126-497b-991e-bda8894cbd1f":{"description":"The `vault` is not one of yours, or is outside the key's vaults.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable; not stable.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine code, where one exists.","uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"vault not found"},"examples":{"Example":{"title":"Example","value":{"error":"vault not found"}}},"exampleType":"examples"}},"exampleType":"examples"},"0537802d-eb02-446a-9e6e-c5b07541ec7d":{"description":"The request was understood and refused. Nothing was created or reserved. A request\nwithout `network` is refused with `network_required`, a network your installation does\nnot serve with `network_not_served`, a wallet id from another network with\n`network_mismatch`. A list refuses a cursor it did not issue with `invalid_cursor`, and an\nunknown filter value, a filter sent as a list or an object instead of one string, or a\n`limit` out of range without a `code`; so does a webhook retry of a period without `from`.\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable; not stable.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine code, where one exists.","uniqueKey":"code","typeLabel":"string"},"retryable":{"type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"refused":{"title":"refused","value":{"error":"wallet has no address yet"}},"network_required":{"title":"network_required","value":{"error":"network is required (mainnet, testnet)","code":"network_required"}},"network_not_served":{"title":"network_not_served","value":{"error":"network \"devnet\" is not served here (mainnet, testnet)","code":"network_not_served"}},"network_mismatch":{"title":"network_mismatch","value":{"error":"wallet 0199a3c4-7f1e-7b11-9c2e-3f4a5b6c7d8e lives on testnet, not mainnet","code":"network_mismatch"}},"invalid_cursor":{"title":"invalid_cursor","value":{"error":"cursor is not one this API issued","code":"invalid_cursor"}},"invalid_filter":{"title":"invalid_filter","value":{"error":"unknown status settled (created, aml_pending, awaiting_approval, …)"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"24aebd70-fdbd-4dae-a4a9-d627e2d2711f":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An API key minted in the console (`ctd_…`). Authenticates; never authorizes funds. A key\ncarries scopes (`read`, `wallets.write`, `transactions.write`, `events.write`,\n`webhooks.write`, `policy.write`) and may be limited to vaults, to IP addresses, and in\nlifetime — see Authentication.\n","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"825d9789-7332-4a65-b039-b330384d4003":{"url":"https://api.citadel.example/api/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"An API key minted in the console (`ctd_…`). Authenticates; never authorizes funds. A key\ncarries scopes (`read`, `wallets.write`, `transactions.write`, `events.write`,\n`webhooks.write`, `policy.write`) and may be limited to vaults, to IP addresses, and in\nlifetime — see Authentication.\n","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"An API key minted in the console (`ctd_…`). Authenticates; never authorizes funds. A key\ncarries scopes (`read`, `wallets.write`, `transactions.write`, `events.write`,\n`webhooks.write`, `policy.write`) and may be limited to vaults, to IP addresses, and in\nlifetime — see Authentication.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"localhost","siteName":"Citadel API","title":"Get organization balances - Citadel API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"originalFileLocation":"api-reference/organization/get-organization-balances.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"What your organization holds on one network, in base units, per chain instance and asset: the totals of GET /wallets/{reference}/balance over every wallet, without a request per wallet. With vault, over that vault only. balance is what the chains hold, escrow what transactions in flight have reserved out of it, staked what is locked, and spendable is balance - escrow. The same token on two chain instances is two rows, never one sum: USDT on TRON and on BSC are two contracts, with their own decimals. An asset Citadel does not list in GET /assets reads as its contract, with decimals: null. network is required: each network keeps its own books, and a total never spans them. Needs the read scope. A key limited to vaults totals those vaults only; a vault outside them answers 404.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Citadel API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/local/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/local/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/local/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/local/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get organization balances - Citadel API\">\u003cmeta data-mint-head property=\"og:description\" content=\"What your organization holds on one network, in base units, per chain instance and asset: the totals of GET /wallets/{reference}/balance over every wallet, without a request per wallet. With vault, over that vault only. balance is what the chains hold, escrow what transactions in flight have reserved out of it, staked what is locked, and spendable is balance - escrow. The same token on two chain instances is two rows, never one sum: USDT on TRON and on BSC are two contracts, with their own decimals. An asset Citadel does not list in GET /assets reads as its contract, with decimals: null. network is required: each network keeps its own books, and a total never spans them. Needs the read scope. A key limited to vaults totals those vaults only; a vault outside them answers 404.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Citadel API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://local./api-reference/organization/get-organization-balances\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get organization balances - Citadel API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"What your organization holds on one network, in base units, per chain instance and asset: the totals of GET /wallets/{reference}/balance over every wallet, without a request per wallet. With vault, over that vault only. balance is what the chains hold, escrow what transactions in flight have reserved out of it, staked what is locked, and spendable is balance - escrow. The same token on two chain instances is two rows, never one sum: USDT on TRON and on BSC are two contracts, with their own decimals. An asset Citadel does not list in GET /assets reads as its contract, with decimals: null. network is required: each network keeps its own books, and a total never spans them. Needs the read scope. A key limited to vaults totals those vaults only; a vault outside them answers 404.\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/local/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Citadel API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1F5BD8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://local./api-reference/organization/get-organization-balances\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/organization/get-organization-balances.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Citadel API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Citadel API","nav":{"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API reference","groups":[{"group":"Wallets","pages":[{"title":"List wallets","openapi":"/openapi.yaml get /wallets","href":"/api-reference/wallets/list-wallets"},{"title":"Issue a deposit wallet","openapi":"/openapi.yaml post /wallets","href":"/api-reference/wallets/issue-a-deposit-wallet"},{"title":"Issue wallets in a batch","openapi":"/openapi.yaml post /wallets/batch","href":"/api-reference/wallets/issue-wallets-in-a-batch"},{"title":"Get a wallet","openapi":"/openapi.yaml get /wallets/{reference}","href":"/api-reference/wallets/get-a-wallet"},{"title":"Update a wallet","openapi":"/openapi.yaml patch /wallets/{reference}","href":"/api-reference/wallets/update-a-wallet"},{"title":"Retire a wallet","openapi":"/openapi.yaml post /wallets/{reference}/retire","href":"/api-reference/wallets/retire-a-wallet"},{"title":"Get a wallet balance","openapi":"/openapi.yaml get /wallets/{reference}/balance","href":"/api-reference/wallets/get-a-wallet-balance"},{"title":"Get a wallet's limits","openapi":"/openapi.yaml get /wallets/{reference}/limits","href":"/api-reference/wallets/get-a-wallets-limits"}]},{"group":"Transactions","pages":[{"title":"List transactions","openapi":"/openapi.yaml get /transactions","href":"/api-reference/transactions/list-transactions"},{"title":"Send a transaction","openapi":"/openapi.yaml post /transactions","href":"/api-reference/transactions/send-a-transaction"},{"title":"Estimate a transaction","openapi":"/openapi.yaml post /transactions/estimate","href":"/api-reference/transactions/estimate-a-transaction"},{"title":"Get a transaction","openapi":"/openapi.yaml get /transactions/{id}","href":"/api-reference/transactions/get-a-transaction"},{"title":"Cancel a transaction","openapi":"/openapi.yaml post /transactions/{id}/cancel","href":"/api-reference/transactions/cancel-a-transaction"},{"title":"Speed up a stuck EVM transaction","openapi":"/openapi.yaml post /transactions/{id}/speedup","href":"/api-reference/transactions/speed-up-a-stuck-evm-transaction"},{"title":"Validate an address","openapi":"/openapi.yaml get /addresses/validate","href":"/api-reference/transactions/validate-an-address"}]},{"group":"Transfers","pages":[{"title":"List transfers","openapi":"/openapi.yaml get /transfers","href":"/api-reference/transfers/list-transfers"},{"title":"Get a transfer","openapi":"/openapi.yaml get /transfers/{tx_hash}","href":"/api-reference/transfers/get-a-transfer"}]},{"group":"Reference","pages":[{"title":"List networks and chains","openapi":"/openapi.yaml get /networks","href":"/api-reference/reference/list-networks-and-chains"},{"title":"List assets","openapi":"/openapi.yaml get /assets","href":"/api-reference/reference/list-assets"},{"title":"List asset prices","openapi":"/openapi.yaml get /prices","href":"/api-reference/reference/list-asset-prices"},{"title":"Get network status","openapi":"/openapi.yaml get /status","href":"/api-reference/reference/get-network-status"}]},{"group":"Organization","pages":[{"title":"List vaults","description":"Your organization's vaults the key reaches, oldest first — the ids `vault` takes in\n`POST /wallets`, `GET /wallets` and `GET /balances`. The first is where `POST /wallets`\nissues when the request names no `vault`.\n\nTakes no `network`: a vault holds wallets on every network. Needs the `read` scope. A key\nlimited to vaults lists those vaults only.\n","openapi":"/openapi.yaml get /vaults","href":"/api-reference/organization/list-vaults"},{"title":"Get organization balances","openapi":"/openapi.yaml get /balances","href":"/api-reference/organization/get-organization-balances"},{"title":"Get the calling key","description":"What the key you call with is: the organization it acts for, what it was minted with\n(scopes, vaults, IP allowlist, expiry), the networks your installation serves, and the\naddress your call arrived from — the one the IP allowlist judges. Use it to check an\nintegration end to end. The token itself is never returned: Citadel keeps only its digest.\n\nTakes no `network`. Needs the `read` scope, like every `GET`.\n","openapi":"/openapi.yaml get /me","href":"/api-reference/organization/get-the-calling-key"},{"title":"Get the billing balance","openapi":"/openapi.yaml get /billing/balance","href":"/api-reference/organization/get-the-billing-balance"}]},{"group":"Approvals","pages":[{"title":"List approvals","openapi":"/openapi.yaml get /approvals","href":"/api-reference/approvals/list-approvals"}]},{"group":"Policy","pages":[{"title":"Get the policy document","openapi":"/openapi.yaml get /policy","href":"/api-reference/policy/get-the-policy-document"},{"title":"Draft the policy document","openapi":"/openapi.yaml post /policy/drafts","href":"/api-reference/policy/draft-the-policy-document"},{"title":"Get a policy draft","openapi":"/openapi.yaml get /policy/drafts/{version}","href":"/api-reference/policy/get-a-policy-draft"},{"title":"Publish a signed policy draft","openapi":"/openapi.yaml post /policy/publish","href":"/api-reference/policy/publish-a-signed-policy-draft"}]},{"group":"Workflows","pages":[{"title":"Start workflows by event","openapi":"/openapi.yaml post /events/{name}","href":"/api-reference/workflows/start-workflows-by-event"},{"title":"List workflow runs","openapi":"/openapi.yaml get /runs","href":"/api-reference/workflows/list-workflow-runs"},{"title":"Get a workflow run","openapi":"/openapi.yaml get /runs/{id}","href":"/api-reference/workflows/get-a-workflow-run"},{"title":"Cancel a workflow run","openapi":"/openapi.yaml post /runs/{id}/cancel","href":"/api-reference/workflows/cancel-a-workflow-run"},{"title":"List workflows","openapi":"/openapi.yaml get /workflows","href":"/api-reference/workflows/list-workflows"}]},{"group":"Webhook endpoints","pages":[{"title":"List webhook endpoints","openapi":"/openapi.yaml get /webhook_endpoints","href":"/api-reference/webhook-endpoints/list-webhook-endpoints"},{"title":"Add a webhook endpoint","openapi":"/openapi.yaml post /webhook_endpoints","href":"/api-reference/webhook-endpoints/add-a-webhook-endpoint"},{"title":"Get a webhook endpoint","openapi":"/openapi.yaml get /webhook_endpoints/{id}","href":"/api-reference/webhook-endpoints/get-a-webhook-endpoint"},{"title":"Remove a webhook endpoint","openapi":"/openapi.yaml delete /webhook_endpoints/{id}","href":"/api-reference/webhook-endpoints/remove-a-webhook-endpoint"},{"title":"Change a webhook endpoint","openapi":"/openapi.yaml patch /webhook_endpoints/{id}","href":"/api-reference/webhook-endpoints/change-a-webhook-endpoint"},{"title":"Send a test delivery","openapi":"/openapi.yaml post /webhook_endpoints/{id}/test","href":"/api-reference/webhook-endpoints/send-a-test-delivery"},{"title":"Rotate the signing secret","openapi":"/openapi.yaml post /webhook_endpoints/{id}/rotate_secret","href":"/api-reference/webhook-endpoints/rotate-the-signing-secret"}]},{"group":"Webhook deliveries","pages":[{"title":"List webhook deliveries","openapi":"/openapi.yaml get /webhook_deliveries","href":"/api-reference/webhook-deliveries/list-webhook-deliveries"},{"title":"Retry a failed delivery","openapi":"/openapi.yaml post /webhook_deliveries/{id}/retry","href":"/api-reference/webhook-deliveries/retry-a-failed-delivery"},{"title":"Retry the failed deliveries of a period","openapi":"/openapi.yaml post /webhook_deliveries/retry","href":"/api-reference/webhook-deliveries/retry-the-failed-deliveries-of-a-period"}]},{"group":"Reports","pages":[{"title":"Ask for a report","openapi":"/openapi.yaml post /reports","href":"/api-reference/reports/ask-for-a-report"},{"title":"Get a report","openapi":"/openapi.yaml get /reports/{id}","href":"/api-reference/reports/get-a-report"},{"title":"Download a report's file","openapi":"/openapi.yaml get /reports/{id}/file","href":"/api-reference/reports/download-a-reports-file"}]},{"group":"API Reference","pages":[{"title":"Operation*","openapi":"/openapi.yaml webhook operation","href":"/api-reference/operation*"},{"title":"Blockchain event*","openapi":"/openapi.yaml webhook blockchain_event","href":"/api-reference/blockchain_event*"},{"title":"Run*","openapi":"/openapi.yaml webhook run","href":"/api-reference/run*"},{"title":"Wallet*","openapi":"/openapi.yaml webhook wallet","href":"/api-reference/wallet*"}]}]}]},"basePath":"","title":"Get organization balances - Citadel API","buildId":"3c5c97139bf8","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DGp7Pxzx.js","utils-8Jv-1L07.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CLSsw4wM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-RrVIaDh7.js","snippetPresets-DSI4wgEf.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-W2e9g_oX.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CDpwfEDw.js","shallow-Dq5-SwG1.js","getApiPlaygroundDisplay-basMZYRO.js","CodeSnippet-CWKJfCQt.js","CodeSnippets-xDLW1FEv.js","Page-Dc5qkJG8.js","getPastedJson-DObxGgIR.js","icon-HMNWawTa.js","MethodPill-DA_6XsWN.js","DuplicateIcon-DK5o2DOi.js","createIcon-BhUMOhLi.js","DynamicMarkdown-Dokq7GGW.js","SectionHeading-DSaxk-9e.js","axios-vUo_bRtp.js","Markdown-BDO6y5hF.js","clsx-DfU2JnNK.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BRVLaqXg.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CxOoiG7S.js"]}