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:
| Network | CAIP-2 chain ID | RPC endpoint |
|---|
| Monad Mainnet | eip155:143 | https://api.portalhq.io/rpc/v1/eip155/143 |
| Monad Testnet | eip155:10143 | https://api.portalhq.io/rpc/v1/eip155/10143 |
| Ethereum Mainnet | eip155:1 | https://api.portalhq.io/rpc/v1/eip155/1 |
| Solana Mainnet | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp | https://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:
| Network | CAIP-2 chain ID | RPC endpoint |
|---|
| Ethereum Mainnet | eip155:1 | https://api.portalhq.io/rpc/v1/eip155/1 |
| Ethereum Sepolia | eip155:11155111 | https://api.portalhq.io/rpc/v1/eip155/11155111 |
| Base Mainnet | eip155:8453 | https://api.portalhq.io/rpc/v1/eip155/8453 |
| Polygon Mainnet | eip155:137 | https://api.portalhq.io/rpc/v1/eip155/137 |
| Arbitrum Mainnet | eip155:42161 | https://api.portalhq.io/rpc/v1/eip155/42161 |
| Optimism Mainnet | eip155:10 | https://api.portalhq.io/rpc/v1/eip155/10 |
| Solana Mainnet | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp | https://api.portalhq.io/rpc/v1/solana/5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Solana Devnet | solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 | https://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.
| Network | CAIP-2 chain ID | Official public RPC URL |
|---|
| Monad Mainnet | eip155:143 | https://rpc1.monad.xyz |
| Monad Testnet | eip155:10143 | https://testnet-rpc.monad.xyz |
| Base Mainnet | eip155:8453 | https://mainnet.base.org |
| Optimism Mainnet | eip155:10 | https://mainnet.optimism.io |
| Arbitrum One | eip155:42161 | https://arb1.arbitrum.io/rpc |
| Polygon Mainnet | eip155:137 | https://polygon-rpc.com |
| Solana Mainnet | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp | https://api.mainnet-beta.solana.com |
| Solana Devnet | solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 | https://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.