> For the complete documentation index, see [llms.txt](https://hinkal-team.gitbook.io/hinkal/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hinkal-team.gitbook.io/hinkal/hinkal-api/api-reference/balance.md).

# Balance

## Get shielded token balances

> Read-only — requires an active session. Pass \`sessionId\` and \`nonce\` as query parameters\
> and include \`x-hinkal-request-signature: secp256k1\_sign(SHA256("GET /balance\n" + queryString))\`\
> in the headers. Works for EVM, Tron, and Solana chains.<br>

```json
{"openapi":"3.0.3","info":{"title":"Hinkal API","version":"1.0.0"},"tags":[{"name":"Balance"}],"servers":[{"url":"https://api.hinkal.io","description":"Production"}],"paths":{"/balance":{"get":{"operationId":"getBalance","summary":"Get shielded token balances","description":"Read-only — requires an active session. Pass `sessionId` and `nonce` as query parameters\nand include `x-hinkal-request-signature: secp256k1_sign(SHA256(\"GET /balance\\n\" + queryString))`\nin the headers. Works for EVM, Tron, and Solana chains.\n","tags":["Balance"],"parameters":[{"$ref":"#/components/parameters/XHinkalRequestSignature"},{"name":"sessionId","in":"query","required":true,"description":"Session identifier UUID from POST /create-session","schema":{"type":"string","format":"uuid"}},{"name":"nonce","in":"query","required":true,"description":"Per-request UUID. Echoed back in the response.","schema":{"type":"string","format":"uuid"}},{"name":"chainId","in":"query","required":true,"description":"Chain ID (e.g. 10 for Optimism, 501 for Solana mainnet, 728126428 for Tron mainnet)","schema":{"type":"string"}}],"responses":{"200":{"description":"Shielded balances","headers":{},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"balances":{"type":"array","items":{"$ref":"#/components/schemas/TokenBalance"}},"nonce":{"type":"string","description":"Echoed per-request `nonce` from the request."}},"required":["success","balances","nonce"]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"500":{"$ref":"#/components/responses/ServerError"}}}}},"components":{"parameters":{"XHinkalRequestSignature":{"name":"x-hinkal-request-signature","in":"header","required":true,"schema":{"type":"string"},"description":"Hex-encoded compact secp256k1 signature: `secp256k1_sign(SHA256(binding + \"\\n\" + payload))`, where `binding` is `\"<METHOD> <routePath>\"` (this route's own method and path, e.g. `\"POST /refresh-cache\"` or `\"GET /balance\"`) and `payload` is `JSON.stringify(body)` for POST requests or the raw query string for GET requests. Binding the route into the signed digest stops a signature captured for one endpoint from being replayed against another. See [Authentication](/enclave-api/authentication) for the full signing scheme."}},"schemas":{"TokenBalance":{"type":"object","properties":{"chainId":{"type":"integer"},"tokenAddress":{"type":"string"},"balance":{"type":"string","description":"Balance in the token's smallest unit"}},"required":["chainId","tokenAddress","balance"]},"FailedResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string"}},"required":["success","error"]}},"responses":{"Unauthorized":{"description":"Invalid signature or reused nonce","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FailedResponse"}}}},"ServerError":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FailedResponse"}}}}}}}
```
