Docs

Tempo RPC with Dwellir

Tempo mainnet RPC endpoints, EVM JSON-RPC quickstarts, and integration guidance for stablecoin-native payment applications.

Tempo RPC

With Dwellir, you get access to our global Tempo network which always routes your API requests to the nearest available location, ensuring low latency and the fastest speeds.

Get your API key

Why Build on Tempo?

Tempo is a payments-first EVM blockchain designed for stablecoin settlement and financial application UX. Instead of forcing users to manage a native gas token, Tempo denominates fees in supported USD stablecoins while keeping standard Ethereum JSON-RPC compatibility.

Stablecoin-Native Fees

  • No native gas token - users pay fees in supported USD stablecoins
  • Predictable pricing - easier wallet and checkout UX for payment flows
  • Cleaner treasury logic - applications can reason about settlement costs in dollar terms

Built for Payment Workloads

  • Deterministic settlement - optimized for fast, reliable payment confirmation
  • Merchant-friendly design - suitable for payouts, invoices, and treasury automation
  • Wallet-aware fee flows - fee token preferences can be managed at the account level

Standard EVM Tooling

  • EVM compatible - keep your Solidity contracts and familiar SDKs
  • Trace and debug ready - Dwellir exposes trace_*, debug_*, and txpool_*
  • HTTPS and WebSocket - use the same endpoint shape as other EVM integrations

Quick Start with Tempo

Connect to Tempo mainnet with Dwellir:

Tempo RPC Endpoints
HTTPS
curl -sS -X POST https://api-tempo-mainnet.n.dwellir.com/<API_Keys_Are_Not_Made_for_Bots> \  -H 'Content-Type: application/json' \  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
import { JsonRpcProvider } from 'ethers';const provider = new JsonRpcProvider(  'https://api-tempo-mainnet.n.dwellir.com/<API_Keys_Are_Not_Made_for_Bots>');const latest = await provider.getBlockNumber();console.log('block', latest);
import requestsurl = 'https://api-tempo-mainnet.n.dwellir.com/<API_Keys_Are_Not_Made_for_Bots>'payload = {  'jsonrpc': '2.0', 'id': 1,  'method': 'eth_blockNumber', 'params': []}resp = requests.post(url, json=payload)print(resp.json())
package mainimport (  "bytes"  "fmt"  "io"  "net/http")func main() {  url := "https://api-tempo-mainnet.n.dwellir.com/<API_Keys_Are_Not_Made_for_Bots>"  payload := []byte(`{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}`)  resp, err := http.Post(url, "application/json",    bytes.NewBuffer(payload))  if err != nil { panic(err) }  defer resp.Body.Close()  body, _ := io.ReadAll(resp.Body)  fmt.Println(string(body))}

Installation & Setup

JavaScript
import { JsonRpcProvider } from 'ethers';

const provider = new JsonRpcProvider(
  'https://api-tempo-mainnet.n.dwellir.com/YOUR_API_KEY'
);

const chainId = await provider.send('eth_chainId', []);
console.log('Tempo chain ID:', parseInt(chainId, 16));

const block = await provider.getBlock('latest');
console.log('Latest block:', block.number);

Network Information

ParameterValueDetails
Chain ID4217Tempo mainnet
Block Time~1 secondFast settlement target
Fee ModelSupported USD stablecoinsNo native gas token
RPC StandardEthereumJSON-RPC 2.0

Tempo Fee Model Notes

Tempo does not behave like a typical ETH-gas chain:

  • No native token balance requirement for paying fees
  • Fee quotes are stablecoin-denominated, so wallet and app UX should not assume ETH-style gas handling
  • Fee token preferences matter because users can pay with supported stablecoins instead of a single mandatory gas asset

If your wallet or payment flow assumes eth_getBalance reflects spendable fee balance, adjust that logic for Tempo before launch.

API Reference

Tempo supports standard Ethereum JSON-RPC methods, and Dwellir's endpoint also exposes trace, debug, and txpool namespaces for production operations and debugging.

Common Integration Patterns

Stablecoin Payment Monitoring

JavaScript
async function waitForSettlement(txHash) {
  const receipt = await provider.waitForTransaction(txHash, 1);
  console.log('Settled in block:', receipt.blockNumber);
  return receipt;
}

Fee Estimation in Stablecoin Terms

JavaScript
const feeData = await provider.getFeeData();
const gasEstimate = await provider.estimateGas(tx);

const approxUsdCost =
  Number(feeData.gasPrice) / 1e9 * Number(gasEstimate) / 1e9;

console.log('Estimated fee (USD):', approxUsdCost);

Trace Support for Payment Debugging

JavaScript
const trace = await provider.send('debug_traceTransaction', [
  '0x50b1857dce8dbe401e09610534de81655bc508c6765eb30ecefe24148c515c28'
]);

console.log('Trace result:', trace);