Rocket Pool Node API

The Node API from Rocket Pool — 12 operation(s) for node.

Operations 12

GET /nodes List Registered Nodes #
GET /nodes/{address} Get Node Details #
GET /nodes/{address}/minipools List A Node's Minipools #
GET /node/status Get Node Status #
GET /node/sync Get Eth1 And Eth2 Sync Progress #
POST /node/register Register Node With Rocket Pool #
GET /node/rewards Get Expected Node Rewards #
POST /node/stake-rpl Stake RPL Against Node #
POST /node/withdraw-rpl Withdraw Staked RPL #
POST /node/claim-rewards Claim Available Node Rewards #
POST /node/join-smoothing-pool Opt Into Smoothing Pool #
POST /node/leave-smoothing-pool Opt Out Of Smoothing Pool #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/rocket-pool-node-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

rocket-pool-node-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Rocket Pool Node API
  version: '1.0'
  description: 'Operations tagged Node across 2 of this provider''s published API definitions: rocket-pool-protocol-openapi.yml, rocket-pool-smart-node-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://protocol.rocketpool.example/v1
  description: Logical base path — actual access is via Ethereum smart contracts
- url: http://localhost:8080/api
  description: Local Smart Node daemon (loopback)
tags:
- name: Node
paths:
  /nodes:
    get:
      tags:
      - Node
      summary: List Registered Nodes
      operationId: listNodes
      parameters:
      - name: offset
        in: query
        schema:
          type: integer
      - name: limit
        in: query
        schema:
          type: integer
      responses:
        '200':
          description: Page of registered nodes
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/NodeDetails'
    servers:
    - url: https://protocol.rocketpool.example/v1
      description: Logical base path — actual access is via Ethereum smart contracts
  /nodes/{address}:
    get:
      tags:
      - Node
      summary: Get Node Details
      operationId: getNodeDetails
      parameters:
      - $ref: '#/components/parameters/Address'
      responses:
        '200':
          description: Node details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeDetails'
    servers:
    - url: https://protocol.rocketpool.example/v1
      description: Logical base path — actual access is via Ethereum smart contracts
  /nodes/{address}/minipools:
    get:
      tags:
      - Node
      summary: List A Node's Minipools
      operationId: listNodeMinipools
      parameters:
      - $ref: '#/components/parameters/Address'
      responses:
        '200':
          description: Minipools belonging to the node
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MinipoolDetails'
    servers:
    - url: https://protocol.rocketpool.example/v1
      description: Logical base path — actual access is via Ethereum smart contracts
  /node/status:
    get:
      tags:
      - Node
      summary: Get Node Status
      operationId: getNodeStatus
      responses:
        '200':
          description: Node status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeStatus'
    servers:
    - url: http://localhost:8080/api
      description: Local Smart Node daemon (loopback)
  /node/sync:
    get:
      tags:
      - Node
      summary: Get Eth1 And Eth2 Sync Progress
      operationId: getNodeSync
      responses:
        '200':
          description: Sync state for the execution and consensus clients
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncStatus'
    servers:
    - url: http://localhost:8080/api
      description: Local Smart Node daemon (loopback)
  /node/register:
    post:
      tags:
      - Node
      summary: Register Node With Rocket Pool
      operationId: registerNode
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodeRegisterRequest'
      responses:
        '200':
          description: Registration submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
    servers:
    - url: http://localhost:8080/api
      description: Local Smart Node daemon (loopback)
  /node/rewards:
    get:
      tags:
      - Node
      summary: Get Expected Node Rewards
      operationId: getNodeRewards
      responses:
        '200':
          description: Expected RPL rewards at the next checkpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeRewards'
    servers:
    - url: http://localhost:8080/api
      description: Local Smart Node daemon (loopback)
  /node/stake-rpl:
    post:
      tags:
      - Node
      summary: Stake RPL Against Node
      operationId: stakeRpl
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StakeRplRequest'
      responses:
        '200':
          description: Stake submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
    servers:
    - url: http://localhost:8080/api
      description: Local Smart Node daemon (loopback)
  /node/withdraw-rpl:
    post:
      tags:
      - Node
      summary: Withdraw Staked RPL
      operationId: withdrawRpl
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WithdrawRplRequest'
      responses:
        '200':
          description: Withdraw submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
    servers:
    - url: http://localhost:8080/api
      description: Local Smart Node daemon (loopback)
  /node/claim-rewards:
    post:
      tags:
      - Node
      summary: Claim Available Node Rewards
      operationId: claimNodeRewards
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClaimRewardsRequest'
      responses:
        '200':
          description: Claim submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
    servers:
    - url: http://localhost:8080/api
      description: Local Smart Node daemon (loopback)
  /node/join-smoothing-pool:
    post:
      tags:
      - Node
      summary: Opt Into Smoothing Pool
      operationId: joinSmoothingPool
      responses:
        '200':
          description: Opt-in submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
    servers:
    - url: http://localhost:8080/api
      description: Local Smart Node daemon (loopback)
  /node/leave-smoothing-pool:
    post:
      tags:
      - Node
      summary: Opt Out Of Smoothing Pool
      operationId: leaveSmoothingPool
      responses:
        '200':
          description: Opt-out submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
    servers:
    - url: http://localhost:8080/api
      description: Local Smart Node daemon (loopback)
components:
  schemas:
    Address:
      type: string
      pattern: ^0x[a-fA-F0-9]{40}$
    EthAmount:
      type: string
      description: Amount in wei
    MinipoolDetails:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/Address'
        nodeAddress:
          $ref: '#/components/schemas/Address'
        validatorPubkey:
          $ref: '#/components/schemas/PublicKey'
        status:
          type: string
        depositType:
          type: string
        nodeDepositBalance:
          $ref: '#/components/schemas/EthAmount'
        userDepositBalance:
          $ref: '#/components/schemas/EthAmount'
        nodeFee:
          type: number
          format: float
        delegateAddress:
          $ref: '#/components/schemas/Address'
        useLatestDelegate:
          type: boolean
        finalised:
          type: boolean
    PublicKey:
      type: string
      pattern: ^0x[a-fA-F0-9]{96}$
    NodeDetails:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/Address'
        registrationTime:
          type: string
          format: date-time
        timezone:
          type: string
        withdrawalAddress:
          $ref: '#/components/schemas/Address'
        rplWithdrawalAddress:
          $ref: '#/components/schemas/Address'
        rplStake:
          $ref: '#/components/schemas/EthAmount'
        effectiveRplStake:
          $ref: '#/components/schemas/EthAmount'
        minimumRplStake:
          $ref: '#/components/schemas/EthAmount'
        maximumRplStake:
          $ref: '#/components/schemas/EthAmount'
        ethMatched:
          $ref: '#/components/schemas/EthAmount'
        ethMatchedLimit:
          $ref: '#/components/schemas/EthAmount'
        minipoolCount:
          type: integer
        smoothingPoolRegistered:
          type: boolean
    NodeRegisterRequest:
      type: object
      required:
      - timezone
      properties:
        timezone:
          type: string
          example: America/Denver
    Address_2:
      type: string
      pattern: ^0x[a-fA-F0-9]{40}$
      example: '0x0000000000000000000000000000000000000000'
    ClaimRewardsRequest:
      type: object
      required:
      - indices
      properties:
        indices:
          type: array
          items:
            type: integer
        stakeAmount:
          $ref: '#/components/schemas/EthAmount_2'
    StakeRplRequest:
      type: object
      required:
      - amount
      properties:
        amount:
          $ref: '#/components/schemas/EthAmount_2'
    SyncStatus:
      type: object
      properties:
        eth1:
          $ref: '#/components/schemas/ClientSync'
        eth2:
          $ref: '#/components/schemas/ClientSync'
    EthAmount_2:
      type: string
      description: Amount expressed in wei (1 ETH = 10^18 wei)
      example: '32000000000000000000'
    WithdrawRplRequest:
      type: object
      required:
      - amount
      properties:
        amount:
          $ref: '#/components/schemas/EthAmount_2'
    NodeStatus:
      type: object
      properties:
        accountAddress:
          $ref: '#/components/schemas/Address_2'
        registered:
          type: boolean
        trusted:
          type: boolean
        withdrawalAddress:
          $ref: '#/components/schemas/Address_2'
        rplWithdrawalAddress:
          $ref: '#/components/schemas/Address_2'
        timezone:
          type: string
          example: America/Denver
        balances:
          type: object
          properties:
            eth:
              $ref: '#/components/schemas/EthAmount_2'
            rpl:
              $ref: '#/components/schemas/EthAmount_2'
            reth:
              $ref: '#/components/schemas/EthAmount_2'
        minipoolCount:
          type: integer
        rplStake:
          $ref: '#/components/schemas/EthAmount_2'
        effectiveRplStake:
          $ref: '#/components/schemas/EthAmount_2'
        minimumRplStake:
          $ref: '#/components/schemas/EthAmount_2'
        maximumRplStake:
          $ref: '#/components/schemas/EthAmount_2'
        feeDistributorInitialized:
          type: boolean
        feeDistributorAddress:
          $ref: '#/components/schemas/Address_2'
        smoothingPoolRegistrationState:
          type: boolean
        smoothingPoolRegistrationChanged:
          type: string
          format: date-time
    TransactionResponse:
      type: object
      properties:
        status:
          type: string
          enum:
          - success
          - error
        txHash:
          $ref: '#/components/schemas/TransactionHash'
        gasInfo:
          type: object
          properties:
            estGasLimit:
              type: integer
            safeGasLimit:
              type: integer
        error:
          type: string
    TransactionHash:
      type: string
      pattern: ^0x[a-fA-F0-9]{64}$
    ClientSync:
      type: object
      properties:
        synced:
          type: boolean
        progress:
          type: number
          format: float
          minimum: 0
          maximum: 1
    NodeRewards:
      type: object
      properties:
        nextCheckpoint:
          type: string
          format: date-time
        estimatedRplRewards:
          $ref: '#/components/schemas/EthAmount_2'
        nodeRegistrationTime:
          type: string
          format: date-time
        rewardsInterval:
          type: integer
  parameters:
    Address:
      name: address
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/Address'
x-refined-from:
- rocket-pool-protocol-openapi.yml
- rocket-pool-smart-node-openapi.yml