> For the complete documentation index, see [llms.txt](https://docs.lumia.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.lumia.org/run-a-node/rpc-node/json-rpc-endpoints.md).

# JSON RPC endpoints

**Who this is for:** operators running their own Lumia RPC node who need to know what it serves and how to expose it responsibly. Developers looking for the canonical method reference should go to [`/reference/json-rpc-api`](https://app.gitbook.com/s/chmhPiVNAafGw48c4oU2/reference/json-rpc-api) instead: that page is the authoritative method table; this page is about running the node that serves it.

**Prerequisites:** a synced node. See [Run a local validium node](https://app.gitbook.com/s/chmhPiVNAafGw48c4oU2/run-a-node/zknode/run-a-local-validium-node).

### Local node vs. public endpoint

Once your node is synced, it answers standard Ethereum JSON-RPC on its own host: an address only you control until you choose to expose it. That's a different thing from Lumia's published public RPC/WSS endpoints listed at [`/reference/networks`](https://app.gitbook.com/s/chmhPiVNAafGw48c4oU2/reference/networks-and-endpoints). Running your own node gives you a private endpoint with your own uptime and rate limits; it does not change, and is not the same fact as, whether Lumia itself publishes a public endpoint for a given network.

### What's served by default

The execution client exposes the standard `eth_*` namespace (chain state, transaction submission, logs) plus, by default, heavier debug and trace namespaces (`debug_*`, `trace_*`) unless you trim them out of your node's configured API list. The full supported-method table, including any Lumia-specific extensions or deprecated methods, is canonical at [`/reference/json-rpc-api`](https://app.gitbook.com/s/chmhPiVNAafGw48c4oU2/reference/json-rpc-api): this page doesn't repeat it.

### If you expose your node publicly

Practical guidance:

{% hint style="warning" %}

* Put a reverse proxy in front (TLS termination, rate limiting per IP, a request body size cap) rather than exposing the node's RPC port directly.
* Trim `debug_*`/`trace_*` out of the API list you expose publicly: they're expensive and, left in, are callable by anyone who has your URL, token or not.
* Never expose the node's metrics or internal datastream-relay ports publicly: keep those bound to localhost or an internal network.
  {% endhint %}

None of the above changes what Lumia itself publishes as an official endpoint. See the note in [Run a Node](https://app.gitbook.com/s/chmhPiVNAafGw48c4oU2/run-a-node) about not conflating the two.
