> ## Documentation Index
> Fetch the complete documentation index at: https://docs.range.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Enumerate manageable tokens

> Returns one paginated list of every token the caller workspace can manage: held balances (canonical assets aggregated across chains, plus uncurated tokens keyed by network+denom) union tokens carrying a stored whitelist override. Always shows everything — does not accept show_all. Composable filters: state, has_override, priced, network. The two logically contradictory filter combinations (see docs) return an empty list, not a 400. refresh=true busts the cached aggregate and re-scans stored balances only — no live RPC/chain fan-out, unlike GET /accounts/concentration's refresh.



## OpenAPI

````yaml /api-reference/platform-api.json get /v2/accounts/tokens
openapi: 3.0.0
info:
  title: Range Platform API
  description: >-
    The Range Platform API for workspace management, counterparties, and
    operational tooling.
  version: 1.7.16
  contact: {}
servers:
  - url: https://api.range.org
    description: Range API Server
security:
  - Authorization: []
  - Authorization: []
tags:
  - name: Address Information
    description: Get information about a crypto address.
  - name: Transfer Enrichments
    description: Attach workspace-scoped notes and categories to transfers.
  - name: Counterparties
    description: Manage external entities, their addresses, bank accounts, and documents.
paths:
  /v2/accounts/tokens:
    get:
      tags:
        - Accounts
      summary: Enumerate manageable tokens
      description: >-
        Returns one paginated list of every token the caller workspace can
        manage: held balances (canonical assets aggregated across chains, plus
        uncurated tokens keyed by network+denom) union tokens carrying a stored
        whitelist override. Always shows everything — does not accept show_all.
        Composable filters: state, has_override, priced, network. The two
        logically contradictory filter combinations (see docs) return an empty
        list, not a 400. refresh=true busts the cached aggregate and re-scans
        stored balances only — no live RPC/chain fan-out, unlike GET
        /accounts/concentration's refresh.
      operationId: getTokens
      parameters:
        - name: cursor
          required: false
          in: query
          description: >-
            Opaque cursor for the next page of results — echo back
            `meta.next_cursor` from the previous response verbatim.
          schema:
            example: >-
              eyJ1c2QiOjUyMy40NCwiYW1vdW50IjoiNTIzLjQ0Iiwic3ltYm9sIjoiVVNEQyIsIm5ldHdvcmsiOm51bGwsImRlbm9tIjpudWxsfQ==
            type: string
        - name: size
          required: false
          in: query
          schema:
            minimum: 1
            maximum: 1000
            default: 50
            example: 50
            type: number
        - name: state
          required: false
          in: query
          description: >-
            Restrict to entries whose effective_state matches. Omit to return
            both.
          schema:
            type: string
            enum:
              - shown
              - hidden
        - name: has_override
          required: false
          in: query
          description: >-
            Restrict to entries that do (true) or do not (false) carry a stored
            override. Finds every customization, including orphans and dead
            config.
          schema:
            type: boolean
        - name: priced
          required: false
          in: query
          description: >-
            Restrict to entries whose priced flag matches. Use priced=false to
            isolate the unpriced tail where spam concentrates.
          schema:
            type: boolean
        - name: network
          required: false
          in: query
          description: >-
            Restrict to entries held on (or, for uncurated tokens, keyed to) one
            network.
          schema:
            type: string
            example: ethereum
        - name: refresh
          required: false
          in: query
          description: >-
            Bust the cached balance aggregate and re-scan stored balances before
            assembling the list. No live RPC / chain fan-out — for that, call
            POST /accounts/refresh first. Diverges from GET
            /accounts/concentration, where refresh=true does trigger a live
            chain refresh.
          schema:
            default: false
            type: boolean
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokensResponseDto'
components:
  schemas:
    TokensResponseDto:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/TokenResourceDto'
        meta:
          $ref: '#/components/schemas/CursorMetaDto'
      required:
        - items
        - meta
    TokenResourceDto:
      type: object
      properties:
        kind:
          type: string
          enum:
            - asset
            - token
        symbol:
          type: string
          example: USDC
          description: >-
            Canonical symbol for a curated asset. For an uncurated token, the
            raw denom (no symbol resolves).
        network:
          type: string
          nullable: true
          example: ethereum
          description: Only present for kind "token" (the uncurated escape hatch).
        denom:
          type: string
          nullable: true
          example: '0xdac17f958d2ee523a2206206994597c13d831ec'
          description: Only present for kind "token" (the uncurated escape hatch).
        name:
          type: string
          nullable: true
          example: USD Coin
        amount:
          type: string
          example: '1523.44'
          description: >-
            Quantity, aggregated across chains for a canonical asset (see
            breakdown).
        usd:
          type: number
          example: 1523.44
        priced:
          type: boolean
          example: true
          description: >-
            Whether this holding is priced: the curated catalog carries a USD
            value for it, or the balance line itself carries a positive USD
            value from an upstream valuation source (ADR-0007).
        override_state:
          type: string
          enum:
            - 'on'
            - 'off'
          nullable: true
          description: The workspace's stored override for this token, if any.
        effective_state:
          type: string
          enum:
            - shown
            - hidden
        breakdown:
          nullable: true
          description: >-
            Per-network amounts for a canonical asset. null for uncurated
            tokens.
          type: array
          items:
            $ref: '#/components/schemas/TokenBreakdownEntryDto'
      required:
        - kind
        - symbol
        - name
        - amount
        - usd
        - priced
        - override_state
        - effective_state
        - breakdown
    CursorMetaDto:
      type: object
      properties:
        next_cursor:
          type: string
          nullable: true
          description: >-
            Opaque string cursor pointing to the next page of results. null if
            there is no next page.
          example: eyJpZCI6IjkxeFFlV3Z...
        previous_cursor:
          type: string
          nullable: true
          description: >-
            Opaque string cursor pointing to the previous page of results. null
            if there is no previous page.
          example: eyJpZCI6IjkxeFFlV3Z...
        first_page_cursor:
          type: string
          description: >-
            Opaque string cursor pointing to the very first page in the entire
            dataset with respect to the current filter.
          example: eyJpZCI6IjkxeFFlV3Z...
        last_page_cursor:
          type: string
          nullable: true
          description: >-
            Opaque string cursor pointing to the very last page in the entire
            dataset with respect to the current filter.
          example: eyJpZCI6IjkxeFFlV3Z...
        total_count:
          type: number
          nullable: true
          description: Total number of results.
          example: 100
        page_number:
          type: number
          description: Current page number.
          example: 1
    TokenBreakdownEntryDto:
      type: object
      properties:
        network:
          type: string
          nullable: true
          example: ethereum
          description: >-
            Network this slice of the balance was held on. null for
            exchange-sourced amounts, which are symbol-only.
        denom:
          type: string
          nullable: true
          example: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
          description: Raw on-chain denom for this slice. null alongside network.
        amount:
          type: string
          example: '1000.00'
        usd:
          type: number
          example: 1000
      required:
        - network
        - denom
        - amount
        - usd
  securitySchemes:
    Authorization:
      type: apiKey
      in: header
      name: X-API-KEY
      description: Authorization method required to allow user to access the api endpoints.

````