> ## Documentation Index
> Fetch the complete documentation index at: https://routeme.sh/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Public JSON-RPC proxy (no API key)

> 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}.



## OpenAPI

````yaml /api-reference/openapi.json post /rpc/evm/{chainId}
openapi: 3.0.0
info:
  title: RouteMesh API
  version: 1.0.0
  description: >-
    HTTP API for routing JSON-RPC requests across providers, managing API keys,
    and viewing usage.
  license:
    name: Proprietary
    url: https://routeme.sh
servers:
  - url: https://api.routeme.sh
    description: API server — health, chains, API keys, usage, and public submissions
  - url: https://lb.routeme.sh
    description: RPC router (primary load balancer)
  - url: https://lb2.routeme.sh
    description: RPC router (AWS backup load balancer)
security: []
tags:
  - name: RPC
    description: Forward JSON-RPC requests to the router.
  - name: Chains
    description: Discover supported chains.
  - name: Submissions
    description: Public chain and node listing requests (rate-limited per IP).
  - name: API Keys
    description: Manage your API keys for self-service access.
  - name: Usage
    description: View your usage and billing data.
  - name: Pricing
    description: >-
      Current RPC route and websocket notification prices (public,
      rate-limited).
  - name: Health
    description: Service health checks.
paths:
  /rpc/evm/{chainId}:
    post:
      tags:
        - RPC
      summary: Public JSON-RPC proxy (no API key)
      description: >-
        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}.
      operationId: postPublicRpc
      parameters:
        - name: chainId
          in: path
          required: true
          description: Chain ID (e.g. 1 for Ethereum, 137 for Polygon, 8453 for Base).
          schema:
            type: string
          example: '1'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/JsonRpcRequest'
                - $ref: '#/components/schemas/JsonRpcBatchRequest'
      responses:
        '200':
          description: JSON-RPC response (single or batch)
          headers:
            X-Batch-Id:
              $ref: '#/components/headers/XBatchId'
        '400':
          description: Bad request (e.g. invalid JSON or invalid JSON-RPC payload)
        '429':
          description: Too many requests (public per-IP rate limit exceeded)
        '500':
          description: Internal server error
        '503':
          description: >-
            Service temporarily unavailable (public free-tier capacity exhausted
            or unrelated)
components:
  schemas:
    JsonRpcRequest:
      type: object
      properties:
        jsonrpc:
          type: string
          enum:
            - '2.0'
        method:
          type: string
          description: JSON-RPC method name (e.g. eth_blockNumber, eth_call).
        params:
          oneOf:
            - type: array
              items: {}
            - type: object
              additionalProperties: true
          description: Method parameters (varies by method).
        id: {}
      required:
        - jsonrpc
        - method
        - id
      additionalProperties: false
    JsonRpcBatchRequest:
      type: array
      items:
        $ref: '#/components/schemas/JsonRpcRequest'
  headers:
    XBatchId:
      description: >-
        Correlation ID for this HTTP request. Save it and share with RouteMesh
        support to help trace requests across logs and analytics.
      schema:
        type: string
      example: 1f4f3b23-1c2b-4c87-9c2f-7e2e0f0df4b5

````