> ## 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 metaprotocol activity for a Bitcoin address including Runes, inscriptions, and other token-related transactions.

# Metaprotocol Activity by Address



## OpenAPI

````yaml bitcoin/wallet-api/openapi.json get /wallet/addresses/{address}/activity/metaprotocols
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}/activity/metaprotocols:
    get:
      tags:
        - Addresses
      summary: Metaprotocol Activity by Address
      description: >-
        Return all transactions where the specified address has satoshi and/or
        metaprotocols activity. Supported metaprotocols: runes, inscriptions.
      operationId: wallet_metaprotocol_activity_by_address
      parameters:
        - name: address
          in: path
          description: Bitcoin address or hex encoded script pubkey
          required: true
          schema:
            type: string
          example: bc1qcx7ys0ahvtfqcc63sfn6axls0qrhkadnslpd94
        - 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 UTxOs 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 UTxOs 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: 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/MempoolWalletPaginatedActivityByAddressWithMetaprotocols
              example:
                data:
                  - confirmations: 53
                    height: 902843
                    inscription_activity: null
                    mempool: false
                    rune_activity:
                      decreased_balances:
                        - amount: '209938.14943'
                          rune_id: '840000:3'
                          usd_amount: '863.26'
                      etched_rune: null
                      increased_balances: []
                      minted: null
                      self_transfers: []
                    sat_activity:
                      amount: '546'
                      kind: decrease
                      usd_amount: '0.59'
                    tx_hash: >-
                      4717042047235b65fa7cf7d7a5fe2f0b9d51398f5c84676b65bde053edbac418
                  - confirmations: 49
                    height: 902847
                    inscription_activity:
                      received:
                        - from:
                            address: >-
                              bc1pqqeyklpuh5kx6yg3zqwy0tn9ysxtg6un0y7dl0hp6wz5y5xwvsvs6due29
                            input_index: 0
                            sat_offset: 0
                            script_pubkey: >-
                              512000324b7c3cbd2c6d1111101c47ae65240cb46b93793cdfbee1d3854250ce6419
                          inscription_id: >-
                            e484a11516b74a06f5d104a83b1974db8d26e7a38cbb495d29bf5ed6b1f4e156i277
                          to:
                            address: >-
                              bc1px7ff6446jwmh79uu9df6dejvqayn9d6tlvwe5tudehj4j0cz58xsfr0dw9
                            output_txid: >-
                              fe9cc01f0a2446da2bb71474652643d7b3d1d0c41fd05358373e0df921024575
                            output_vout: 0
                            sat_offset: 0
                            script_pubkey: >-
                              512037929d56ba93b77f179c2b53a6e64c074932b74bfb1d9a2f8dcde5593f02a1cd
                      self_transferred: []
                      sent: []
                    mempool: false
                    rune_activity: null
                    sat_activity:
                      amount: '546'
                      kind: increase
                      usd_amount: '0.59'
                    tx_hash: >-
                      fe9cc01f0a2446da2bb71474652643d7b3d1d0c41fd05358373e0df921024575
                indexer_info:
                  chain_tip:
                    block_hash: >-
                      00000000000000000001929ab2c8fa214ccb7f025c9b591514adfc39c8d18fdd
                    block_height: 902895
                  estimated_blocks: []
                  mempool_timestamp: null
                next_cursor: null
        '400':
          description: Malformed query parameters
        '404':
          description: Requested entity not found on-chain
        '500':
          description: Internal server error
components:
  schemas:
    MempoolWalletPaginatedActivityByAddressWithMetaprotocols:
      type: object
      required:
        - data
        - indexer_info
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/WalletActivityByAddressWithMetaprotocols'
        indexer_info:
          $ref: '#/components/schemas/MempoolLastUpdated'
        next_cursor:
          type: string
          nullable: true
    WalletActivityByAddressWithMetaprotocols:
      type: object
      required:
        - height
        - confirmations
        - mempool
        - tx_hash
        - sat_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 satoshi activity.
          minimum: 0
        inscription_activity:
          allOf:
            - $ref: '#/components/schemas/InscriptionActivity'
          nullable: true
        mempool:
          type: boolean
          description: Whether the data is pending (true) or confirmed (false).
        rune_activity:
          allOf:
            - $ref: '#/components/schemas/WalletRuneActivity'
          nullable: true
        sat_activity:
          $ref: '#/components/schemas/WalletSatActivity'
        tx_hash:
          type: string
          description: Hash of transaction containing the satoshi 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
    InscriptionActivity:
      type: object
      required:
        - self_transferred
        - sent
        - received
      properties:
        received:
          type: array
          items:
            $ref: '#/components/schemas/InscriptionActivityByTx'
          description: List of inscriptions which the script gained control over.
        self_transferred:
          type: array
          items:
            $ref: '#/components/schemas/InscriptionActivityByTx'
          description: List of inscriptions that were self-transferred in the transaction.
        sent:
          type: array
          items:
            $ref: '#/components/schemas/InscriptionActivityByTx'
          description: List of inscriptions which the script lost control of.
    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.
    WalletSatActivity:
      type: object
      required:
        - kind
        - amount
        - usd_amount
      properties:
        amount:
          type: string
          description: Amount of satoshis involved in the activity.
        kind:
          $ref: '#/components/schemas/ActivityKindByAddress'
        usd_amount:
          type: string
          description: >-
            USD amount if sat amount was exchanged to USD. If the block is
            confirmed, the exchange rate is that between USD and BTC at the time
            the block was mined. If the block is pending (mempool transaction),
            then the exchange rate is that between USD and BTC at the time the
            block at the tip of the chain was mined.
    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'
    InscriptionActivityByTx:
      type: object
      required:
        - inscription_id
        - to
      properties:
        from:
          allOf:
            - $ref: '#/components/schemas/FromInscriptionLocation'
          nullable: true
        inscription_id:
          type: string
          description: >-
            String representation of the inscription ID, whose first coordinate
            is the reveal transaction hash, and the second coordinate is the
            index of inscription in the reveal transaction.
        to:
          $ref: '#/components/schemas/ToInscriptionLocation'
    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.
    ActivityKindByAddress:
      type: string
      enum:
        - self_transfer
        - increase
        - decrease
    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
    FromInscriptionLocation:
      type: object
      required:
        - script_pubkey
        - input_index
        - sat_offset
      properties:
        address:
          type: string
          description: >-
            Address-encoding of the script pubkey at which the input containing
            the inscription resides.
          nullable: true
        input_index:
          type: integer
          format: int32
          description: Index of the input containing the inscription.
          minimum: 0
        sat_offset:
          type: integer
          format: int64
          description: Offset of the inscribed satoshi within the input.
          minimum: 0
        script_pubkey:
          type: string
          description: Script pubkey at which the input containing the inscription resides.
    ToInscriptionLocation:
      type: object
      required:
        - script_pubkey
        - output_vout
        - sat_offset
        - output_txid
      properties:
        address:
          type: string
          description: >-
            Address-encoding of the script pubkey at which the output containing
            the inscription resides.
          nullable: true
        output_txid:
          type: string
          description: >-
            Hash of tx producing the output containing the inscription. If this
            is the hash of the coinbase tx of the block, then the inscription
            was spent as fee in a tx in the block and therefore sent to the
            output of the coinbase tx controlled by the block miner.
        output_vout:
          type: integer
          format: int32
          description: Index of the output containing the inscription.
          minimum: 0
        sat_offset:
          type: integer
          format: int64
          description: Offset of the inscribed satoshi within the output.
          minimum: 0
        script_pubkey:
          type: string
          description: >-
            Script pubkey at which the output containing the inscription
            resides.
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: api-key
      description: Project API Key

````