# Public RPCs

> The public HTTP and WebSocket RPC endpoints for every Somnia network, open to everyone.

The public RPCs are open to everyone with no key. For nodes reserved for your own traffic, see [Somnia Dedicated RPC](/network/dedicated-rpc).

| Network | Chain ID | HTTP | WebSocket |
| --- | --- | --- | --- |
| Global | `5031` | `https://api.infra.mainnet.somnia.network/` | `wss://api.infra.mainnet.somnia.network/ws` |
| Tokyo | `50321` | `https://api.tokyo.infra.mainnet.somnia.network` | `wss://api.tokyo.infra.mainnet.somnia.network/ws` |
| Global testnet | `50312` | `https://api.infra.testnet.somnia.network/` | `wss://api.infra.testnet.somnia.network/ws` |
| Tokyo testnet | `50383` | `https://api.hideki.infra.testnet.somnia.network/` | `wss://api.hideki.infra.testnet.somnia.network/ws` |

New York, the next Regional Subchain, has no public RPC yet.

`eth_getLogs` accepts at most 1,000 blocks per query on Tokyo mainnet.

## From code

```ts
import { createPublicClient, http, webSocket } from "viem"
import { somnia } from "./chain" // defineChain({ id: 5031, ... }), see the Somnia Chain overview

export const client = createPublicClient({ chain: somnia, transport: http("https://api.infra.mainnet.somnia.network/") })
export const live = createPublicClient({ chain: somnia, transport: webSocket("wss://api.infra.mainnet.somnia.network/ws") })
```

---

Every page is also Markdown: append `.md` to its URL, or ask for `text/markdown`. Found something wrong, missing or confusing in these docs? Tell us: `POST /api/feedback` on this site with JSON `{"message": "…", "context": "what you were doing and what happened", "page": "…"}`, or a plain-text body. `GET /api/feedback` gives the JSON Schema. The team reads every one.
