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

# Get unspent outputs for address, paged

> Unspent outputs in a {data, tip, nextCursor} envelope.

GUARANTEE (mempool): unconfirmed outputs are always included with status.confirmed=false, including when from/to are present. Height bounds apply to confirmed outputs only. Filter client-side on status.confirmed.

data is ordered confirmed-ascending by (blockHeight, txid, vout), then unconfirmed. tip is the electrs tip fetched BEFORE the data query: store tip.blockHeight as your next watermark; a block arriving mid-request re-scans, never skips. cursor is opaque; limit defaults to 100, max 1000. Entries may repeat across pages when a mempool UTXO confirms mid-scan; treat (txid, vout) as the identity key.

includeOrdinals=true additionally inlines per-UTXO scriptPubkey plus, for outputs ord has indexed (ordinalsIndexed=true), inscriptions (inscription IDs) and runes (runeId in block:tx form, best-effort). ordinalsIndexed=false means ord has not examined the output yet and both fields are omitted rather than reported empty. Fails with 503 if ord is unavailable, 502 if its bulk response does not cover every requested outpoint.



## OpenAPI

````yaml https://nexus.gerowallet.io/v3/api-docs get /api/btc/addresses/{address}/utxos/page
openapi: 3.1.0
info:
  title: Nexus API
  description: >-
    Multi-chain blockchain data API for Cardano (and Apex), Bitcoin, and
    Midnight.


    ## Blockchains & Networks

    Endpoints are grouped by **blockchain**. Pick the target **network** with
    the

    `network` query parameter. A network is an environment *within* a
    blockchain,

    not a separate endpoint family.


    - **Cardano & Apex**: one shared set of UTxO endpoints serves
    `CARDANO_MAINNET`,
      `CARDANO_PREPROD`, `CARDANO_PREVIEW`, `APEX_PRIME_MAINNET`, `APEX_VECTOR_MAINNET`,
      `APEX_VECTOR_TESTNET`
    - **Bitcoin**: `BITCOIN_MAINNET`, `BITCOIN_TESTNET4`

    - **Midnight**: `MIDNIGHT_MAINNET`, `MIDNIGHT_PREPROD`, `MIDNIGHT_STAGENET`


    These are the values published on each operation's `network` schema, and
    what

    generated clients send. A kebab-case alias (`cardano-mainnet`) is also
    accepted,

    and matching is case-insensitive — see the note on the parameter itself.


    ### Key scope: one chain, one network

    Each API key is scoped to **one chain and one network**, fixed at creation
    time.

    A `CARDANO_MAINNET` key cannot query `CARDANO_PREPROD`, and it cannot query

    Bitcoin or Midnight at all. Create one key per chain and network under the
    same

    account. Sending a `network` value that does not match the key returns

    **400 Network Mismatch**; omit the parameter and the request runs against
    the

    key's own network.


    What is uniform across chains is the integration surface, not the
    credential:

    one account, one base URL, one auth header, one docs site.


    ## Authentication

    Send your API key in the `X-Api-Key` header. This is the credential for

    programmatic access (create one in the dashboard; keys start with `nxs_`).

    `Authorization: Bearer <token>` is only for JWT **session** tokens issued by

    `/api/auth/login` (browser/mobile apps), not for API keys.


    ## Add-ons

    Capability is gated separately from network scope. Market data, wallet
    analytics,

    transaction building, MCP, and IPFS are paid add-ons; those endpoints return

    **402 Payment Required** on a key whose plan does not carry the matching
    add-on,

    even when the chain and network match.
  contact:
    name: Nexus Team
    url: https://nexus.gerowallet.io/support
    email: nexus@gerowallet.io
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.0.0
servers:
  - url: https://nexus.gerowallet.io
    description: API Server
security:
  - apiKeyAuth: []
  - bearerAuth: []
tags:
  - name: Cardano · Blocks
    description: Cardano Block API
  - name: Cardano · Policy
    description: Cardano Policy API
  - name: IPFS
    description: IPFS Content Resolution API
  - name: Bitcoin · Ordinals
    description: Ordinals + runes metadata (ord indexer)
  - name: Partner
    description: Aggregator revenue share for partner key holders
  - name: Cardano · Metadata
    description: Label-scoped transaction metadata API
  - name: Cardano · Assets
    description: Token Registry Metadata
  - name: Cardano · Transactions
    description: Cardano Transactions API
  - name: Midnight · Transactions
    description: Midnight-specific transaction endpoints (unshielded UTXOs)
  - name: Bitcoin · Mempool
    description: Bitcoin mempool snapshot
  - name: Midnight · DUST
    description: DUST registration + generation status
  - name: Cardano · Stake Pools
    description: >-
      Cardano stake pool information including registrations, retirements, and
      pool metadata
  - name: Cardano · Network
    description: Cardano Network API - Query static network / genesis parameters
  - name: Cardano · Addresses
    description: Cardano Address API
  - name: Bitcoin · Addresses
    description: >-
      Bitcoin address-keyed queries: stats / balance / UTxOs via electrs;
      ordinals via ord
  - name: Bitcoin · Transactions
    description: Bitcoin transaction lookup and submission
  - name: Cardano · Governance
    description: >-
      Cardano on-chain governance: DReps, governance actions + votes,
      constitutional committee, constitution
  - name: Cardano · DReps
    description: >-
      Cardano delegate representatives (DReps): voting power, status, metadata,
      delegators
  - name: Cardano · Transaction Builder
    description: >-
      Cardano transaction building API. Builds unsigned transactions server-side
      for client-side signing and submission. Network can be specified in the
      request body or as a query parameter. Body takes precedence over query
      parameter.
  - name: Cardano · Assets
    description: Cardano Asset API
  - name: Cardano · Accounts
    description: Cardano Account API
  - name: Bitcoin · Fees
    description: Bitcoin fee-rate estimates by confirmation block target
  - name: Bitcoin · Blocks
    description: Bitcoin block lookup
  - name: Cardano · Handles
    description: ADA Handle resolution
  - name: Cardano Market Data
    description: Endpoints from cardano-market-data
  - name: Midnight · Indexer
    description: Transparent proxy to the Midnight GraphQL indexer
  - name: Cardano · Scripts
    description: Cardano script & datum API
  - name: Cardano · Epochs
    description: Cardano Epoch API - Query protocol parameters and epoch information
  - name: Bitcoin · Chain
    description: Bitcoin chain-tip and sync state
paths:
  /api/btc/addresses/{address}/utxos/page:
    get:
      tags:
        - Bitcoin · Addresses
      summary: Get unspent outputs for address, paged
      description: >-
        Unspent outputs in a {data, tip, nextCursor} envelope.


        GUARANTEE (mempool): unconfirmed outputs are always included with
        status.confirmed=false, including when from/to are present. Height
        bounds apply to confirmed outputs only. Filter client-side on
        status.confirmed.


        data is ordered confirmed-ascending by (blockHeight, txid, vout), then
        unconfirmed. tip is the electrs tip fetched BEFORE the data query: store
        tip.blockHeight as your next watermark; a block arriving mid-request
        re-scans, never skips. cursor is opaque; limit defaults to 100, max
        1000. Entries may repeat across pages when a mempool UTXO confirms
        mid-scan; treat (txid, vout) as the identity key.


        includeOrdinals=true additionally inlines per-UTXO scriptPubkey plus,
        for outputs ord has indexed (ordinalsIndexed=true), inscriptions
        (inscription IDs) and runes (runeId in block:tx form, best-effort).
        ordinalsIndexed=false means ord has not examined the output yet and both
        fields are omitted rather than reported empty. Fails with 503 if ord is
        unavailable, 502 if its bulk response does not cover every requested
        outpoint.
      operationId: getUtxosPage
      parameters:
        - name: address
          in: path
          required: true
          schema:
            type: string
            maxLength: 128
            minLength: 14
            pattern: ^[a-zA-HJ-NP-Z0-9]{14,128}$
        - name: network
          in: query
          required: false
          schema:
            type: string
            description: >-
              Accepts either the value listed here (`CARDANO_MAINNET`) or its
              kebab-case alias (`cardano-mainnet`); matching is
              case-insensitive. Omit it and the network is taken from the API
              key. A value that disagrees with the key's own network returns 400
              Network Mismatch.
            enum:
              - CARDANO_MAINNET
              - CARDANO_PREPROD
              - CARDANO_PREVIEW
              - APEX_PRIME_MAINNET
              - APEX_VECTOR_MAINNET
              - APEX_VECTOR_TESTNET
              - MIDNIGHT_MAINNET
              - MIDNIGHT_PREPROD
              - MIDNIGHT_STAGENET
              - BITCOIN_MAINNET
              - BITCOIN_TESTNET4
        - name: from
          in: query
          required: false
          schema:
            type: integer
            format: int64
            minimum: 0
        - name: to
          in: query
          required: false
          schema:
            type: integer
            format: int64
            minimum: 0
        - name: cursor
          in: query
          required: false
          schema:
            type: string
            maxLength: 256
            minLength: 0
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
            maximum: 1000
            minimum: 1
        - name: includeOrdinals
          in: query
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/BitcoinUtxoPageDto'
components:
  schemas:
    BitcoinUtxoPageDto:
      type: object
      default: null
      description: >-
        Paged UTXO listing, returned by /utxos/page. The unpaged /utxos endpoint
        returns the bare array instead.
      properties:
        data:
          type: array
          default: ''
          description: >-
            UTXOs: confirmed ascending by (blockHeight, txid, vout), then
            unconfirmed (status.confirmed=false) by (txid, vout)
          items:
            $ref: '#/components/schemas/BitcoinUtxoDto'
        tip:
          $ref: '#/components/schemas/BitcoinIndexerTipDto'
          default: ''
          description: Indexer tip the response was computed against; safe watermark
        nextCursor:
          type: string
          default: ''
          description: Opaque cursor for the next page; absent when exhausted
    BitcoinUtxoDto:
      type: object
      default: null
      description: Bitcoin unspent transaction output
      properties:
        txid:
          type: string
          default: ''
          description: Funding txid
        vout:
          type: integer
          format: int32
          default: ''
          description: Output index in the funding tx
        value:
          type: integer
          format: int64
          default: ''
          description: Value in satoshis
        status:
          $ref: '#/components/schemas/Status'
          default: ''
          description: Status (confirmed flag, block height, block hash, block time)
        ordinalsIndexed:
          type: boolean
          default: false
          description: >-
            Only with includeOrdinals=true: true when ord's inscription/rune
            indices have processed this output, so inscriptions/runes below are
            authoritative (empty list = provably none). false when ord has not
            examined it (unconfirmed outputs, or ord lagging the chain tip);
            inscriptions/runes are then omitted, NOT empty.
        scriptPubkey:
          type: string
          default: ''
          description: Hex scriptPubKey (only with includeOrdinals=true)
        inscriptions:
          type: array
          default: ''
          description: >-
            Inscription IDs on this output (only with includeOrdinals=true;
            empty list = none)
          items:
            type: string
        runes:
          type: array
          default: ''
          description: >-
            Rune balances on this output incl. runeId block:tx (only with
            includeOrdinals=true; empty list = none)
          items:
            $ref: '#/components/schemas/RuneBalanceDto'
    BitcoinIndexerTipDto:
      type: object
      default: null
      description: >-
        Chain tip as seen by the address indexer (electrs) that served the same
        response. Store blockHeight as the next scan watermark; it is fetched
        before the data query, so it is never ahead of the returned data.
      properties:
        blockHeight:
          type: integer
          format: int64
          default: ''
          description: Best block height known to the indexer
        blockHash:
          type: string
          default: ''
          description: Best block hash known to the indexer
    Status:
      type: object
      default: null
      description: UTxO confirmation status
      properties:
        confirmed:
          type: boolean
        blockHeight:
          type: integer
          format: int64
        blockHash:
          type: string
        blockTime:
          type: integer
          format: int64
    RuneBalanceDto:
      type: object
      properties:
        runeId:
          type: string
        name:
          type: string
        amount:
          type: integer
        divisibility:
          type: integer
          format: int32
        symbol:
          type: string
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      description: >-
        ### API key (programmatic access — recommended)

        Send your API key in the `X-Api-Key` header. Keys start with `nxs_` and
        are

        created in the dashboard (or via **POST /api/keys** with a session JWT).


        Each key is scoped to **one chain and one network** (for example

        `CARDANO_MAINNET`), fixed at creation time. It cannot query a different
        network

        on the same chain, and it cannot query a different chain at all. A
        mismatched

        `network` parameter returns **400 Network Mismatch**. Create one key per
        chain

        and network under the same account.


        This is the credential most integrations should use.
      name: X-Api-Key
      in: header
    bearerAuth:
      type: http
      description: >-
        ### JWT session token (browser / mobile apps)

        A short-lived JWT issued by `/api/auth/login` or `/api/auth/device`,
        sent as

        `Authorization: Bearer <token>`. This is the **session** credential for
        the web

        dashboard and mobile apps, not for server-to-server API access.


        For programmatic API access use an **API key** in the `X-Api-Key` header

        instead — do **not** put an `nxs_` API key in this Bearer field.
      scheme: bearer
      bearerFormat: JWT

````