Config
Providers

Providers

AIOpen as plain markdown for AI

A provider adds a third-party RPC service to eRPC with one line — eRPC discovers every chain that vendor supports and lazy-loads each one on first request. Without providers you'd write a separate upstream for every (vendor, chain) pair.

You can configure:

  • URL shorthandvendor://API_KEY style endpoint, works for every supported vendor
  • Long-formproviders[] config when you need per-network overrides, scoped upstream IDs, or network allow/deny lists
  • Network filteringonlyNetworks / ignoreNetworks to bound the lazy-load surface
  • Per-network overridesoverrides map keyed by network pattern (evm:1, evm:*, evm:1|evm:10)
  • Vendor-specific settings — e.g. Chainstack region/project filters, HyperRPC root domain, repository recheck interval

Quick start — the URL shorthand

Pick a vendor, drop in your API key, and you're done. eRPC will lazy-load every chain that vendor supports.

projectsupstreams[]
erpc.yaml
projects:  - id: main    upstreams:      # Auto-imports every Alchemy-supported EVM chain on first request.      # Same shape works for any vendor in the table below.      - endpoint: alchemy://YOUR_ALCHEMY_API_KEY

eRPC also supports any plain EVM JSON-RPC endpoint via the evm upstream type — providers are an optimization for vendors with many chains.

Supported vendors

VendorURL shorthandWhat it adds
alchemyalchemy://API_KEYAll Alchemy EVM chains
ankrankr://API_KEYAll Ankr EVM chains
blastapiblastapi://API_KEYAll BlastAPI EVM chains
blockdaemonblockdaemon://API_KEYAll Blockdaemon EVM chains
blockpiblockpi://API_KEYAll BlockPi EVM chains
chainstackchainstack://API_KEY[?project=…&region=…]Chainstack EVM chains with optional filters
conduitconduit://API_KEYAll Conduit rollup chains
drpcdrpc://API_KEYAll dRPC EVM chains
dwellirdwellir://API_KEYAll Dwellir EVM chains
envioenvio://rpc.hypersync.xyzHyperRPC-accelerated read methods on supported chains
erpcerpc://HOST/project/evm[?secret=…]Another eRPC instance as a recursive upstream
etherspotetherspot://public or etherspot://API_KEYERC-4337 account-abstraction bundler
infurainfura://API_KEYAll Infura EVM chains
llamallama://API_KEYAll Llama Nodes EVM chains
onfinalityonfinality://API_KEYAll OnFinality EVM chains
pimlicopimlico://public or pimlico://API_KEYERC-4337 account-abstraction bundler
quicknodequicknode://API_KEYAll QuickNode EVM chains
repositoryrepository://URL4,000+ public endpoints from a JSON registry
routemeshroutemesh://API_KEYAll RouteMesh EVM chains
superchainsuperchain://github.com/.../chainList.jsonAll chains from a Superchain registry JSON
tenderlytenderly://API_KEYAll Tenderly EVM chains
thirdwebthirdweb://CLIENT_IDAll Thirdweb EVM chains
⚠️

repository, superchain, and envio accept a URL instead of an API key. pimlico and etherspot accept the literal string public for keyless tier. See the per-vendor reference below for the exact syntax.

Advanced — providers[] long-form

When the URL shorthand isn't enough — per-network overrides, scoped upstream IDs, restricting the lazy-load surface — switch to the explicit providers[] block:

projectsproviders[]
erpc.yaml
projects:  - id: main    providers:      # (optional) Prefix for the dynamically generated upstream IDs.      - id: alchemy-prod        # (REQUIRED) The vendor name; see the table above.        vendor: alchemy        # (optional) Vendor-specific settings (see AI reference below).        settings:          apiKey: YOUR_KEY        # (optional) Restrict lazy-load to a specific chain list.        onlyNetworks:          - evm:1          - evm:137        # (optional) Exclude specific chains.        ignoreNetworks:          - evm:56        # (optional) Template for the generated upstream IDs.        upstreamIdTemplate: "<PROVIDER>-<NETWORK>"        # (optional) Per-network overrides; keys accept matcher syntax.        overrides:          "evm:1":            failsafe:              - matchMethod: "*"                retry: { maxAttempts: 5 }          "evm:*":            rateLimitBudget: free-tier
Copy for your AI assistant — full provider referenceExpand for every option, default, and edge case — or copy this entire section into your AI assistant.

Every supported vendor with its URL syntax and notes

repository

Reads a remote JSON file listing RPC endpoints across chains and lazy-loads each on first request.

upstreams:
  - endpoint: repository://evm-public-endpoints.erpc.cloud

The default eRPC-curated repository (evm-public-endpoints.erpc.cloud) is a regularly-updated IPFS file aggregating 4,000+ public endpoints from chainlist.org (opens in a new tab), chainid.network (opens in a new tab), and the viem library (opens in a new tab). Test before relying on it in production — eRPC handles unreliable endpoints gracefully but quality varies.

Long-form settings: settings.repositoryUrl, settings.recheckInterval (default 1h).

erpc

Connect to another eRPC instance as a recursive upstream. Chain ID is auto-detected per request.

upstreams:
  - endpoint: erpc://xxx.aws.erpc.cloud/project/evm
  - endpoint: erpc://xxx.aws.erpc.cloud/project/evm?secret=xxxxx  # with auth

Long-form settings: settings.endpoint, settings.secret.

alchemy

upstreams:
  - endpoint: alchemy://YOUR_ALCHEMY_API_KEY

Long-form settings: settings.apiKey.

drpc

upstreams:
  - endpoint: drpc://YOUR_DRPC_API_KEY

Long-form settings: settings.apiKey.

blastapi

upstreams:
  - endpoint: blastapi://YOUR_BLASTAPI_API_KEY

Long-form settings: settings.apiKey.

infura

upstreams:
  - endpoint: infura://YOUR_INFURA_API_KEY

Long-form settings: settings.apiKey.

thirdweb

Production traffic: consult the Thirdweb team about which chains you'll use and your expected request volume.

upstreams:
  - endpoint: thirdweb://YOUR_THIRDWEB_CLIENT_ID

Long-form settings: settings.clientId.

envio

Envio's HyperRPC (opens in a new tab) accelerates a subset of read methods (opens in a new tab) (e.g. eth_getLogs) by routing them to HyperSync indexers. When a request is for an unsupported method, the upstream skips it. Recommended for indexing workloads.

upstreams:
  - endpoint: envio://rpc.hypersync.xyz

Long-form settings: settings.rootDomain (default rpc.hypersync.xyz).

pimlico

Adds Pimlico (opens in a new tab) account-abstraction (ERC-4337) support. AA-related requests are routed to Pimlico; eth_* requests stay on your normal upstreams.

upstreams:
  - endpoint: pimlico://public           # keyless tier
  - endpoint: pimlico://YOUR_API_KEY     # authenticated

Long-form settings: settings.apiKey (accepts "public" or your API key).

etherspot

Same role as Pimlico — Etherspot (opens in a new tab) handles AA-related (ERC-4337) requests.

upstreams:
  - endpoint: etherspot://public
  - endpoint: etherspot://YOUR_API_KEY

Long-form settings: settings.apiKey.

dwellir

Register at dashboard.dwellir.com (opens in a new tab) for a key. Supports onlyNetworks filtering if you don't want every chain.

upstreams:
  - endpoint: dwellir://YOUR_DWELLIR_API_KEY

Long-form settings: settings.apiKey.

conduit

For Conduit (opens in a new tab) rollup customers — auto-imports every rollup chain you have access to.

upstreams:
  - endpoint: conduit://YOUR_CONDUIT_API_KEY

Long-form settings: settings.apiKey, settings.networksUrl (default https://api.conduit.xyz/public/network/all), settings.recheckInterval (default 24h).

superchain

Reads a Superchain-registry JSON file and adds every chain in it. blob segments in GitHub URLs are stripped automatically.

upstreams:
  - endpoint: superchain://github.com/ethereum-optimism/superchain-registry/main/chainList.json

Long-form settings: settings.registryUrl, settings.recheckInterval (default 24h).

tenderly

upstreams:
  - endpoint: tenderly://YOUR_TENDERLY_API_KEY

Long-form settings: settings.apiKey.

chainstack

The API key must come from the Platform API Key (opens in a new tab) settings page. Query-string filters let you scope to specific Chainstack projects/regions/providers/types.

upstreams:
  - endpoint: chainstack://YOUR_KEY
  - endpoint: chainstack://YOUR_KEY?project=PROJECT_ID&organization=ORG_ID&region=us-east-1&provider=aws&type=dedicated

Supported filters:

FilterValues
projectProject ID
organizationOrganization ID
regionasia-southeast1, ap-southeast-1, us-west-2, us-east-1, uksouth, eu3
provideraws, azure, gcloud, vzo
typeshared, dedicated

Long-form settings: settings.apiKey, settings.recheckInterval (default 1h), plus the filter fields above (project, organization, region, provider, type).

See also Chainstack's eRPC quickstart (opens in a new tab).

onfinality

upstreams:
  - endpoint: onfinality://YOUR_ONFINALITY_API_KEY

Long-form settings: settings.apiKey.

blockpi

Contact BlockPi support (opens in a new tab) to request a global API key that works across all your EVM chains.

upstreams:
  - endpoint: blockpi://YOUR_BLOCKPI_API_KEY

Long-form settings: settings.apiKey.

ankr

upstreams:
  - endpoint: ankr://YOUR_ANKR_API_KEY

Long-form settings: settings.apiKey.

quicknode

Get keys at the QuickNode dashboard (opens in a new tab).

upstreams:
  - endpoint: quicknode://YOUR_QUICKNODE_API_KEY

Long-form settings: settings.apiKey, settings.recheckInterval (default 1h).

llama

Llama Nodes (opens in a new tab) RPC service — currently only available via the long-form providers[] syntax with a settings block.

providers:
  - vendor: llama
    settings:
      apiKey: YOUR_LLAMA_API_KEY

Long-form settings: settings.apiKey.

routemesh

RouteMesh (opens in a new tab) only supports the long-form providers[] syntax (no URL shorthand).

providers:
  - vendor: routemesh
    settings:
      apiKey: YOUR_ROUTEMESH_API_KEY
      baseURL: lb.routemes.sh  # optional, this is the default

Long-form settings: settings.apiKey, settings.baseURL (default lb.routemes.sh).

blockdaemon

A single key grants access to every EVM chain Blockdaemon's RPC service supports. Get one from the Blockdaemon dashboard (opens in a new tab).

upstreams:
  - endpoint: blockdaemon://YOUR_BLOCKDAEMON_API_KEY

Long-form settings: settings.apiKey.

providers[] fields reference

Every field on a providers[] entry:

FieldTypePurpose
idstringOptional unique ID, used as a prefix on every dynamically generated upstream ID.
vendorstring (required)One of the supported vendor names (see table).
settingsobjectVendor-specific settings; see per-vendor sections above.
onlyNetworksstring[]Restrict the lazy-load to these networks (e.g. evm:1, evm:137). When omitted, every supported chain is lazy-loaded.
ignoreNetworksstring[]Exclude these networks from the lazy-load. Combines with onlyNetworks.
upstreamIdTemplatestringTemplate for generated upstream IDs. Supports <PROVIDER> and <NETWORK> placeholders. Default: <PROVIDER>-<NETWORK>.
overridesmap[string→UpstreamConfig]Per-network overrides. Keys accept matcher syntax (evm:1, evm:*, `evm:1

Combining onlyNetworks + overrides + upstreamIdTemplate

A realistic production setup — Alchemy on mainnet/Polygon with stricter retries on mainnet and a cheap rate-limit budget elsewhere:

projects:
  - id: main
    providers:
      - id: alchemy
        vendor: alchemy
        settings:
          apiKey: ${ALCHEMY_KEY}
        onlyNetworks:
          - evm:1
          - evm:137
          - evm:42161
        upstreamIdTemplate: "alchemy-<NETWORK>"
        overrides:
          # Mainnet: aggressive retries
          "evm:1":
            failsafe:
              - matchMethod: "*"
                retry: { maxAttempts: 5, delay: 100ms }
          # Everywhere else: stay under a per-vendor budget
          "evm:*":
            rateLimitBudget: alchemy-shared

Vendor-settings cheatsheet (all vendors, copy-paste ready)

providers:
  - vendor: alchemy
    settings: { apiKey: xxxxx }
  - vendor: blastapi
    settings: { apiKey: xxxxx }
  - vendor: drpc
    settings: { apiKey: xxxxx }
  - vendor: envio
    settings: { rootDomain: rpc.hypersync.xyz }
  - vendor: erpc
    settings: { endpoint: xxx.aws.erpc.cloud/project/evm, secret: xxxxx }
  - vendor: etherspot
    settings: { apiKey: xxxxx }
  - vendor: infura
    settings: { apiKey: xxxxx }
  - vendor: llama
    settings: { apiKey: xxxxx }
  - vendor: pimlico
    settings: { apiKey: xxxxx }      # or "public"
  - vendor: thirdweb
    settings: { clientId: xxxxx }
  - vendor: repository
    settings:
      repositoryUrl: https://evm-public-endpoints.erpc.cloud
      recheckInterval: 1h            # how often to refresh the repository
  - vendor: dwellir
    settings: { apiKey: xxxxx }
  - vendor: conduit
    settings:
      apiKey: xxxxx
      networksUrl: https://api.conduit.xyz/public/network/all
      recheckInterval: 24h
  - vendor: superchain
    settings:
      registryUrl: github.com/ethereum-optimism/superchain-registry/main/chainList.json
      recheckInterval: 24h
  - vendor: tenderly
    settings: { apiKey: xxxxx }
  - vendor: chainstack
    settings:
      apiKey: xxxxx
      recheckInterval: 1h
      project: xxxxx                  # filter by project ID
      organization: xxxxx             # filter by organization ID
      region: us-east-1               # asia-southeast1, ap-southeast-1, us-west-2, us-east-1, uksouth, eu3
      provider: aws                   # aws, azure, gcloud, vzo
      type: dedicated                 # shared, dedicated
  - vendor: onfinality
    settings: { apiKey: xxxxx }
  - vendor: blockpi
    settings: { apiKey: xxxxx }
  - vendor: ankr
    settings: { apiKey: xxxxx }
  - vendor: quicknode
    settings:
      apiKey: xxxxx
      recheckInterval: 1h
  - vendor: routemesh
    settings:
      apiKey: xxxxx
      baseURL: lb.routemes.sh
  - vendor: blockdaemon
    settings: { apiKey: xxxxx }

Common pitfalls

  • URL shorthand vs long-form on the same vendor — the URL shorthand silently maps to providers[] internally, so you can't mix-and-match for one vendor. Pick one form per project.
  • onlyNetworks doesn't lazy-load — listed networks are still lazy-loaded on first request. The list just bounds which networks may load.
  • Matcher keys in overrides — only | (OR), * (wildcard), and ! (NOT) are supported. Comma-separated lists are NOT a matcher.
  • recheckInterval — for vendors that fetch a network list (repository, superchain, conduit, chainstack, quicknode), this controls how often eRPC refreshes the list. Newly added chains won't appear until the next recheck.
  • API key in endpoint vs settings.apiKey — they're equivalent. URL shorthand stuffs the key into settings.apiKey automatically.

Want this entire reference as plain markdown for an AI assistant? Use the AI link at the top of the page, or append .llms.txt to any docs URL.