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

> Get Bitcoin rune transaction activity for a specific address including minting, transfers, and balance changes with mempool awareness.

# Rune Activity by Address (Mempool-aware)



## OpenAPI

````yaml bitcoin/wallet-api/openapi.json get /wallet/addresses/{address}/runes/activity
openapi: 3.0.3
info:
  title: Bitcoin - Wallet API
  description: >-
    Maestro's Bitcoin Wallet API delivers detailed transaction activity data at
    the address level, spanning native Bitcoin (satoshis) and metaprotocol
    layers like inscriptions and runes. This API enables deep visibility into
    balance changes, token movements, and asset-specific behaviors. Useful for
    powering explorers, wallets, or dashboards with granular insight into
    address-level history and asset interactions.


    #### Key Features:

    - **Satoshi Activity Tracking:** Track and analyze satoshi-level balance
    changes—including increases, decreases, and self-transfers—with timestamped
    precision. Historical balances are itemized by either block height or
    timestamp, enabling accurate auditing, time-based analysis, and
    USD-denominated valuation over time.

    - **Inscription Insight:** Monitor Ordinals transactions, filtered by
    inscription ID, activity type (send/receive), or self-transfer logic to
    reduce noise from spam or internal moves.

    - **Rune Transaction Logging:** Track rune minting, transfers, etchings, and
    balance changes for a given address, including support for filtering by
    specific rune.

    - **Unified Metaprotocol View:** Fetch combined activity across satoshis,
    inscriptions, and runes in a single request to power holistic user or
    address histories.

    - **Mempool Awareness:** Provides insight into the latest activity from the
    mempool by _default_. The system monitors for block reorganizations and
    automatically rolls back unconfirmed or invalidated trades, ensuring the
    data reflects the confirmed state of the chain.


    #### Key Benefits for Developers: 

    Developers gain the ability to surface address-level insights without having
    to manually parse raw blockchain data. The Wallet API simplifies historical
    activity analysis, enables protocol-specific filtering, and lets developers
    build UX-enhancing features like transaction history views, asset trackers,
    and real-time alerts for wallet activity without managing indexing
    infrastructure.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.txt
  version: v0.2.0
servers:
  - url: https://xbt-mainnet.gomaestro-api.org/v0
    description: Bitcoin Mainnet
  - url: https://xbt-testnet.gomaestro-api.org/v0
    description: Bitcoin Testnet
security:
  - api-key: []
paths:
  /wallet/addresses/{address}/runes/activity:
    get:
      tags:
        - Addresses
      summary: Rune Activity by Address (Mempool-aware)
      description: >-
        Return all transactions where the specified address has rune activity,
        with the option to filter by a specific rune kind. Mempool data is
        included by default.
      operationId: wallet_rune_activity_by_address
      parameters:
        - name: address
          in: path
          description: Bitcoin address or hex encoded script pubkey
          required: true
          schema:
            type: string
          example: bc1p27j3fa2mr3d50m3uaavr0ntyzr0v2a27n48lc9gxpkzd4xye6dgs2tzx6p
        - name: order
          in: query
          description: >-
            The order in which the results are sorted. Supported values: asc,
            desc
          required: false
          schema:
            allOf:
              - type: string
                default: asc
                enum:
                  - asc
                  - desc
            nullable: true
        - name: count
          in: query
          description: The max number of results per page
          required: false
          schema:
            allOf:
              - type: integer
                default: 100
                minimum: 0
            nullable: true
        - name: from
          in: query
          description: Return only transactions created on or after a specific height
          required: false
          schema:
            type: integer
            format: int64
            nullable: true
            minimum: 0
        - name: to
          in: query
          description: Return only transactions created on or before a specific height
          required: false
          schema:
            type: integer
            format: int64
            nullable: true
            minimum: 0
        - name: cursor
          in: query
          description: >-
            Pagination cursor string, use the cursor included in a page of
            results to fetch the next page
          required: false
          schema:
            type: string
            nullable: true
        - name: rune
          in: query
          description: >-
            Return only transactions containing a specific rune, specified
            either by the rune ID (etching block number and transaction index)
            or name (spaced or un-spaced). In presence of activity_kind, it
            relates to this specific rune. In presence of
            exclude_self_transfers, it is this specific rune that the queried
            address should see increase or decrease in balance in the tx, not
            just being self-transferred.
          required: false
          schema:
            type: string
            nullable: true
          example: '840000:3'
        - name: activity_kind
          in: query
          description: >-
            Filter txs by presence specific activity kind. Supported values:
            increased, decreased, self_transfer. In presence of rune filter, the
            activity kind relates to that specific rune. In presence of
            exclude_self_transfers, this activity kind cannot be self_transfer.
          required: false
          schema:
            allOf:
              - $ref: '#/components/schemas/RuneActivityKindByAddress'
            nullable: true
        - name: exclude_self_transfers
          in: query
          description: >-
            Exclude txs only containing runes self-transfers. In presence of
            activity_kind, it cannot be self_transfer. In presence of rune
            filter, that specific rune should be sent or received, not
            self-transferred.
          required: false
          schema:
            type: boolean
            nullable: true
        - name: mempool
          in: query
          description: 'Include mempool data. Default: true.'
          required: false
          schema:
            type: boolean
            nullable: true
      responses:
        '200':
          description: Requested data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/MempoolWalletPaginatedRuneActivityByAddress
              example:
                data:
                  - confirmations: 0
                    height: 901674
                    mempool: true
                    rune_activity:
                      decreased_balances:
                        - amount: '20000'
                          rune_id: '845764:84'
                      etched_rune: null
                      increased_balances: []
                      minted: null
                      self_transfers: []
                    tx_hash: >-
                      2264aa2f8ec653067a98f35c7e762cff248410dbb13408629ce0ed4ca6444dd1
                indexer_info:
                  chain_tip:
                    block_hash: >-
                      00000000000000000000a30d9d5025c11b17b2c44b176de0e284c84f59dacebb
                    block_height: 901673
                  estimated_blocks:
                    - block_height: 901674
                      sats_per_vb:
                        max: 300
                        median: 4
                        min: 1
                  mempool_timestamp: '2025-06-17 21:38:09'
                next_cursor: Aw3CKgEl0U1Epkzt4JxiCDSx2xCEJP8sdn5c85h6BlPGji-qZCI
        '400':
          description: Malformed query parameters
        '404':
          description: Requested entity not found on-chain
        '500':
          description: Internal server error
components:
  schemas:
    RuneActivityKindByAddress:
      type: string
      enum:
        - self_transfer
        - increase
        - decrease
    MempoolWalletPaginatedRuneActivityByAddress:
      type: object
      required:
        - data
        - indexer_info
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/WalletRuneActivityByAddress'
        indexer_info:
          $ref: '#/components/schemas/MempoolLastUpdated'
        next_cursor:
          type: string
          nullable: true
    WalletRuneActivityByAddress:
      type: object
      required:
        - height
        - confirmations
        - mempool
        - tx_hash
        - rune_activity
      properties:
        confirmations:
          type: integer
          format: int64
          description: Number of confirmation blocks.
          minimum: 0
        height:
          type: integer
          format: int64
          description: Height of block containing the rune activity.
          minimum: 0
        mempool:
          type: boolean
          description: Whether the data is pending (true) or confirmed (false).
        rune_activity:
          $ref: '#/components/schemas/WalletRuneActivity'
        tx_hash:
          type: string
          description: Hash of transaction containing the rune activity.
    MempoolLastUpdated:
      type: object
      required:
        - chain_tip
        - estimated_blocks
      properties:
        chain_tip:
          $ref: '#/components/schemas/ChainTip'
        estimated_blocks:
          type: array
          items:
            $ref: '#/components/schemas/EstimatedBlock'
          description: >-
            Information about any estimated blocks from the mempool that were
            indexed in addition to the mainchain
        mempool_timestamp:
          type: string
          description: >-
            Timestamp of the indexed mempool snapshot, if any estimated blocks
            from the mempool have been indexed
          nullable: true
    WalletRuneActivity:
      type: object
      required:
        - self_transfers
        - increased_balances
        - decreased_balances
      properties:
        decreased_balances:
          type: array
          items:
            $ref: '#/components/schemas/WalletRuneAndAmount'
          description: >-
            List of runes and amounts, corresponding to decreased balances for
            this address.
        etched_rune:
          allOf:
            - $ref: '#/components/schemas/EtchAndPremine'
          nullable: true
        increased_balances:
          type: array
          items:
            $ref: '#/components/schemas/WalletRuneAndAmount'
          description: >-
            List of runes and amounts, corresponding to increased balances for
            this address.
        minted:
          allOf:
            - $ref: '#/components/schemas/WalletRuneAndAmount'
          nullable: true
        self_transfers:
          type: array
          items:
            $ref: '#/components/schemas/WalletRuneAndAmount'
          description: List of runes that were self-transferred.
    ChainTip:
      type: object
      required:
        - block_hash
        - block_height
      properties:
        block_hash:
          type: string
          description: The hash of the block
          example: 0000000000000000000a7f3b7b6b6e1d9a18db65a3b4a3f4f3bcb2e1f1b2d3e7
        block_height:
          type: integer
          format: int64
          description: The height of the block in the blockchain
          example: 707000
          minimum: 0
    EstimatedBlock:
      type: object
      required:
        - block_height
        - sats_per_vb
      properties:
        block_height:
          type: integer
          format: int64
          description: Height of the estimated block
          example: '707001'
          minimum: 0
        sats_per_vb:
          $ref: '#/components/schemas/BlockSatsPerVb'
    WalletRuneAndAmount:
      type: object
      required:
        - rune_id
        - amount
        - usd_amount
      properties:
        amount:
          type: string
        rune_id:
          type: string
        usd_amount:
          type: string
          description: >-
            USD price for amounts of runes at the time the block containing this
            activity was mined.
    EtchAndPremine:
      type: object
      required:
        - rune_id
      properties:
        premined_amount:
          type: string
          description: Amount of premined runes.
          nullable: true
        rune_id:
          type: string
          description: Rune ID.
    BlockSatsPerVb:
      type: object
      description: >-
        For transactions within a block, these are the lowest, median and
        highest

        satoshis per virtual-byte values.
      required:
        - min
        - median
        - max
      properties:
        max:
          type: integer
          format: int64
          description: Highest sat/vB value of the transactions within the block
          example: 255
          minimum: 0
        median:
          type: integer
          format: int64
          description: Median sat/vB value of the transactions within the block
          example: 15
          minimum: 0
        min:
          type: integer
          format: int64
          description: Lowest sat/vB value of the transactions within the block
          example: 11
          minimum: 0
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: api-key
      description: Project API Key

````