Skip to main content

Portal’s RPC gateway

Portal exposes a managed JSON-RPC gateway so you can read chain state and broadcast transactions without provisioning your own RPC provider. Supported EVM and Solana networks are reachable at a single, predictable URL:
POST https://api.portalhq.io/rpc/v1/{namespace}/{reference}
{namespace} and {reference} are the two halves of the chain’s CAIP-2 chain ID (namespace:reference). To build the endpoint, take the CAIP-2 ID and replace the : with /. For example, the CAIP-2 ID for Monad mainnet is eip155:143, so its RPC endpoint is https://api.portalhq.io/rpc/v1/eip155/143.
The gateway covers the eip155 (EVM) and solana namespaces — not every chain in Blockchain support has a gateway endpoint. Authenticate with your Client API Key or Client Session Token; see Authentication & API keys.

Common endpoints

Here are the most commonly used endpoints, listed explicitly for quick reference:
NetworkCAIP-2 chain IDRPC endpoint
Monad Mainneteip155:143https://api.portalhq.io/rpc/v1/eip155/143
Monad Testneteip155:10143https://api.portalhq.io/rpc/v1/eip155/10143
Ethereum Mainneteip155:1https://api.portalhq.io/rpc/v1/eip155/1
Solana Mainnetsolana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdphttps://api.portalhq.io/rpc/v1/solana/5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp

The pattern for supported chains

Gateway-supported chains follow the same …/rpc/v1/{namespace}/{reference} shape — take the CAIP-2 chain ID and swap the : for a /. A few examples:
NetworkCAIP-2 chain IDRPC endpoint
Ethereum Mainneteip155:1https://api.portalhq.io/rpc/v1/eip155/1
Ethereum Sepoliaeip155:11155111https://api.portalhq.io/rpc/v1/eip155/11155111
Base Mainneteip155:8453https://api.portalhq.io/rpc/v1/eip155/8453
Polygon Mainneteip155:137https://api.portalhq.io/rpc/v1/eip155/137
Arbitrum Mainneteip155:42161https://api.portalhq.io/rpc/v1/eip155/42161
Optimism Mainneteip155:10https://api.portalhq.io/rpc/v1/eip155/10
Solana Mainnetsolana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdphttps://api.portalhq.io/rpc/v1/solana/5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
Solana Devnetsolana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1https://api.portalhq.io/rpc/v1/solana/EtWTRABZaYq6iMfeYKouRu166VU2xqa1
For the full list of supported chains and their CAIP-2 IDs, see Blockchain support. For how CAIP-2 IDs are formed, see Chain ID formatting.

Official public RPC endpoints

If you would rather connect directly to a chain’s own public RPC instead of Portal’s gateway, use the official endpoints below.
NetworkCAIP-2 chain IDOfficial public RPC URL
Monad Mainneteip155:143https://rpc1.monad.xyz
Monad Testneteip155:10143https://testnet-rpc.monad.xyz
Base Mainneteip155:8453https://mainnet.base.org
Optimism Mainneteip155:10https://mainnet.optimism.io
Arbitrum Oneeip155:42161https://arb1.arbitrum.io/rpc
Polygon Mainneteip155:137https://polygon-rpc.com
Solana Mainnetsolana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdphttps://api.mainnet-beta.solana.com
Solana Devnetsolana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1https://api.devnet.solana.com
For chains not listed here — including Ethereum mainnet and testnets, which have no single canonical public endpoint — find an official or community public RPC via chainlist.org.
Public RPC endpoints are free but heavily rate-limited and are not intended for production workloads. For production, use Portal’s RPC gateway above or a dedicated RPC provider.

Making a request

The gateway accepts standard JSON-RPC POST requests. Authenticate with your Client API Key:
curl --request POST \
  --url https://api.portalhq.io/rpc/v1/eip155/143 \
  --header 'Authorization: Bearer YOUR_CLIENT_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "eth_blockNumber",
    "params": []
  }'

Using it as your rpcUrl

Anywhere Portal accepts an rpcUrl — for example in the SDKs or in the Enclave MPC API send and sign requests — you can pass the gateway URL for the target chain so Portal uses its managed RPC:
{
  "chain": "eip155:143",
  "rpcUrl": "https://api.portalhq.io/rpc/v1/eip155/143",
  "to": "0x1234...",
  "token": "NATIVE",
  "amount": "0.01"
}
If you would rather use a dedicated provider, pass your own RPC URL here instead.
On iOS, Android, and Flutter you don’t need to pass an rpcUrl for the common chains Portal supports — these SDKs default to Portal’s RPC gateway automatically. Pass an rpcUrl only to use a different provider or a chain outside the default set. On Web and React Native, configure your RPC endpoints explicitly.