{
  "openapi": "3.1.0",
  "info": {
    "title": "NOWNodes",
    "summary": "Blockchain JSON-RPC and explorer API for Ethereum, Base, Solana, and Bitcoin",
    "description": "Full-node access through NOWNodes, paid per call.\n\nJSON-RPC: send one JSON-RPC 2.0 request per HTTP call, as you would to any node.\n- POST /eth   Ethereum mainnet (eth_blockNumber, eth_getBalance, eth_call, ...)\n- POST /base  Base mainnet\n- POST /sol   Solana mainnet (getSlot, getBalance, ...)\n\nExplorer (Blockbook REST) for Bitcoin mainnet: addresses, transactions, blocks,\nUTXOs, and fee estimates. Add `details=basic` to address calls to keep responses small.\n",
    "version": "1"
  },
  "servers": [
    {
      "url": "https://pay-servicerouter.agents.bakingbad.dev/service/nownodes",
      "description": "Service Router: pay per call with a payment key, x402, or MPP"
    }
  ],
  "security": [
    {
      "paymentKey": []
    }
  ],
  "paths": {
    "/eth": {
      "post": {
        "operationId": "ethRpc",
        "summary": "Ethereum JSON-RPC",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "eth_blockNumber",
                "params": []
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response. Errors also come as 200 with an `error` field."
          }
        },
        "x-payment-info": {
          "price": "0.0005",
          "currency": "USD",
          "methods": [
            "credits",
            "x402",
            "mpp"
          ]
        }
      }
    },
    "/base": {
      "post": {
        "operationId": "baseRpc",
        "summary": "Base JSON-RPC",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "eth_blockNumber",
                "params": []
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response"
          }
        },
        "x-payment-info": {
          "price": "0.0005",
          "currency": "USD",
          "methods": [
            "credits",
            "x402",
            "mpp"
          ]
        }
      }
    },
    "/sol": {
      "post": {
        "operationId": "solRpc",
        "summary": "Solana JSON-RPC",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "getSlot",
                "params": []
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response"
          }
        },
        "x-payment-info": {
          "price": "0.0005",
          "currency": "USD",
          "methods": [
            "credits",
            "x402",
            "mpp"
          ]
        }
      }
    },
    "/btc/api/v2/address/{address}": {
      "get": {
        "operationId": "btcAddress",
        "summary": "Balance and transactions of a Bitcoin address",
        "parameters": [
          {
            "name": "address",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "details",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "basic",
                "txids",
                "txs"
              ]
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Address"
          },
          "400": {
            "description": "Bad input"
          }
        },
        "x-payment-info": {
          "price": "0.001",
          "currency": "USD",
          "methods": [
            "credits",
            "x402",
            "mpp"
          ]
        }
      }
    },
    "/btc/api/v2/tx/{txid}": {
      "get": {
        "operationId": "btcTx",
        "summary": "A Bitcoin transaction",
        "parameters": [
          {
            "name": "txid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Transaction"
          },
          "400": {
            "description": "Bad input"
          }
        },
        "x-payment-info": {
          "price": "0.001",
          "currency": "USD",
          "methods": [
            "credits",
            "x402",
            "mpp"
          ]
        }
      }
    },
    "/btc/api/v2/block/{block}": {
      "get": {
        "operationId": "btcBlock",
        "summary": "A Bitcoin block by height or hash",
        "parameters": [
          {
            "name": "block",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Block"
          },
          "400": {
            "description": "Bad input"
          }
        },
        "x-payment-info": {
          "price": "0.001",
          "currency": "USD",
          "methods": [
            "credits",
            "x402",
            "mpp"
          ]
        }
      }
    },
    "/btc/api/v2/utxo/{descriptor}": {
      "get": {
        "operationId": "btcUtxo",
        "summary": "Unspent outputs of an address or xpub",
        "parameters": [
          {
            "name": "descriptor",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "UTXOs"
          },
          "400": {
            "description": "Bad input"
          }
        },
        "x-payment-info": {
          "price": "0.001",
          "currency": "USD",
          "methods": [
            "credits",
            "x402",
            "mpp"
          ]
        }
      }
    },
    "/btc/api/v2/estimatefee/{blocks}": {
      "get": {
        "operationId": "btcEstimateFee",
        "summary": "Fee estimate for confirmation within N blocks",
        "parameters": [
          {
            "name": "blocks",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Fee estimate"
          },
          "400": {
            "description": "Bad input"
          }
        },
        "x-payment-info": {
          "price": "0.001",
          "currency": "USD",
          "methods": [
            "credits",
            "x402",
            "mpp"
          ]
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "paymentKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "A Service Router payment key (sr_live_…). Without one, the 402 answer lists x402 and MPP options."
      }
    }
  }
}
