---
title: "Public JSON-RPC proxy (no API key)"
method: POST
path: "/rpc/evm/{chainId}"
tags: ["RPC"]
---

# Public JSON-RPC proxy (no API key)

`POST /rpc/evm/{chainId}`

Send a single JSON-RPC request or a JSON-RPC batch (array) to the public, anonymous free tier. No API key required. Rate-limited per IP. For higher volume, use an API key at /rpc/{chainId}/{apiKey}.

## Path parameters

- `chainId` string, required

## Request body

- union
  - JsonRpcRequest
    - `jsonrpc` '2.0', required
    - `method` string, required — JSON-RPC method name (e.g. eth_blockNumber, eth_call).
    - `params` union — Method parameters (varies by method).
      - unknown[]
        - unknown
      - object
    - `id` unknown, required
  - JsonRpcRequest[]
    - `jsonrpc` '2.0', required
    - `method` string, required — JSON-RPC method name (e.g. eth_blockNumber, eth_call).
    - `params` union — Method parameters (varies by method).
      - unknown[]
        - unknown
      - object
    - `id` unknown, required

## Response `200`

JSON-RPC response (single or batch)

## Other responses

- `400` — Bad request (e.g. invalid JSON or invalid JSON-RPC payload)
- `429` — Too many requests (public per-IP rate limit exceeded)
- `500` — Internal server error
- `503` — Service temporarily unavailable (public free-tier capacity exhausted or unrelated)

## Changes

- **2026-08-28** `ec927412b199` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/routemesh/apis/routemesh-api/changes/rpc/evm/:chainId/post.md)

---

[API](https://skmtc.dev/routemesh/apis/routemesh-api.md) · [All operations](https://skmtc.dev/routemesh/apis/routemesh-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/routemesh/routemesh-api/revisions/9afeec0a1706/schema)
