> ## 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.

# List and search Cardano stake pools

> Retrieves brief information for registered stake pools on the Cardano network. Omit `page` and `pageSize` to receive the complete set in one response. Supplying either one pages the result: `page` defaults to 1 and `pageSize` defaults to 100. `search` filters by ticker, name or bech32 pool id; `sort` orders by `ros` (default), `ticker` or `liveStake`, descending with nulls last.



## OpenAPI

````yaml https://nexus.gerowallet.io/v3/api-docs get /api/pools
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/pools:
    get:
      tags:
        - Cardano · Stake Pools
      summary: List and search Cardano stake pools
      description: >-
        Retrieves brief information for registered stake pools on the Cardano
        network. Omit `page` and `pageSize` to receive the complete set in one
        response. Supplying either one pages the result: `page` defaults to 1
        and `pageSize` defaults to 100. `search` filters by ticker, name or
        bech32 pool id; `sort` orders by `ros` (default), `ticker` or
        `liveStake`, descending with nulls last.
      operationId: getPools
      parameters:
        - 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: search
          in: query
          description: Case-insensitive match against ticker, name or bech32 pool id
          required: false
          schema:
            type: string
            default: ''
          example: gero
        - name: sort
          in: query
          description: >-
            Sort field: ros (default), ticker or liveStake. Descending, nulls
            last.
          required: false
          schema:
            type: string
            default: ''
          example: ros
        - name: page
          in: query
          description: Page number (1-based). Omit together with pageSize for the full set.
          required: false
          schema:
            type: string
            default: ''
            maximum: 1000
            minimum: 1
          example: 1
        - name: pageSize
          in: query
          description: Pools per page. Defaults to 100 when page is supplied.
          required: false
          schema:
            type: string
            default: ''
            maximum: 100
            minimum: 1
          example: 50
      responses:
        '200':
          description: Successfully retrieved stake pools
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PoolDto'
                additionalProperties:
                  default: ''
                default: ''
        '400':
          description: Invalid pagination parameters
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PoolDto'
        '404':
          description: Latest stake pools not available
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PoolDto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PoolDto'
        '503':
          description: Service temporarily unavailable - all providers failed
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PoolDto'
components:
  schemas:
    PoolDto:
      type: object
      properties:
        poolIdBech32:
          type: string
        poolIdHex:
          type: string
        poolStatus:
          type: string
        activeEpochNo:
          type: integer
          format: int64
        retiringEpoch:
          type: integer
          format: int64
        marginPct:
          type: number
        fixedCost:
          type: integer
        pledgeDeclared:
          type: integer
        deposit:
          type: integer
        rewardAddr:
          type: string
        owners:
          type: array
          items:
            type: string
        relays:
          type: array
          items:
            $ref: '#/components/schemas/RelayUiDto'
        metaUrl:
          type: string
        metaHash:
          type: string
        metaJson:
          $ref: '#/components/schemas/JsonNode'
        vrfKeyHash:
          type: string
        opCertCounter:
          type: integer
          format: int64
        blockCount:
          type: integer
          format: int64
        blocksMinted:
          type: integer
          format: int64
        activeStake:
          type: integer
        liveStake:
          type: integer
        livePledge:
          type: integer
        sigma:
          type: number
        liveSaturationPct:
          type: number
        liveStakePct:
          type: number
        liveDelegators:
          type: integer
          format: int64
        ticker:
          type: string
        poolGroup:
          type: string
        name:
          type: string
        homepage:
          type: string
        description:
          type: string
        ros:
          type: number
          format: double
        extendedMetadata:
          $ref: '#/components/schemas/JsonNode'
    RelayUiDto:
      type: object
      properties:
        ipv4:
          type: string
        ipv6:
          type: string
        dns:
          type: string
        port:
          type: integer
          format: int32
    JsonNode: {}
  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

````