# Tempo RPC with Dwellir

## Tempo RPC plans and rate limits

- **Free plan:** 20 responses per second, up to 100,000 responses a day.
- **Plans:** $49/mo, $299/mo, $999/mo with 25M, 150M, and 500M included responses. Overages billed at $5/$3/$2 per million responses respectively.
- **Paid rate limits:** 100 to 5,000 responses per second (bursts from 500 to 10,000), no daily limit.
- **Billing:** 1 response = 1 API credit on every shared plan, over HTTPS or WebSocket (WSS) where Tempo supports it.

Details: [Pricing](https://www.dwellir.com/docs/getting-started/pricing) · [Rate limits](https://www.dwellir.com/docs/getting-started/rate-limits) · [Authentication](https://www.dwellir.com/docs/getting-started/authentication) · [Archive nodes](https://www.dwellir.com/docs/getting-started/archive-nodes)

## 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:

### Installation & Setup

Ethers.js v6
Web3.js
Viem
Web3.py

```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);
```

```javascript
const Web3 = require('web3');

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

const chainId = await web3.eth.getChainId();
console.log('Connected to Tempo:', chainId === 4217);

const gasPrice = await web3.eth.getGasPrice();
console.log('Current fee quote:', web3.utils.fromWei(gasPrice, 'gwei'), 'gwei-USD');
```

```typescript
import { createPublicClient, defineChain, http } from 'viem';

const tempo = defineChain({
  id: 4217,
  name: 'Tempo',
  nativeCurrency: {
    name: 'USD',
    symbol: 'USD',
    decimals: 18,
  },
  rpcUrls: {
    default: {
      http: ['https://api-tempo-mainnet.n.dwellir.com/YOUR_API_KEY'],
    },
  },
  blockExplorers: {
    default: {
      name: 'Tempo Explorer',
      url: 'https://explore.tempo.xyz',
    },
  },
});

const client = createPublicClient({
  chain: tempo,
  transport: http('https://api-tempo-mainnet.n.dwellir.com/YOUR_API_KEY'),
});

const blockNumber = await client.getBlockNumber();
console.log('Latest block:', blockNumber);
```

```python
from web3 import Web3

web3 = Web3(Web3.HTTPProvider(
  'https://api-tempo-mainnet.n.dwellir.com/YOUR_API_KEY'
))

print('Connected:', web3.is_connected())
print('Chain ID:', web3.eth.chain_id)  # 4217
print('Latest block:', web3.eth.block_number)
```

## Network Information

| Parameter    | Value                     | Details                |
| ------------ | ------------------------- | ---------------------- |
| Chain ID     | 4217                      | Tempo mainnet          |
| Block Time   | \~1 second                | Fast settlement target |
| Fee Model    | Supported USD stablecoins | No native gas token    |
| RPC Standard | Ethereum                  | JSON-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);
```

## Related guides

- [Stablecoin L1 RPC guide: Arc, Tempo, Plasma and Stable](https://www.dwellir.com/blog/stablechain-rpc-guide)
- [Top Tempo RPC providers compared](https://www.dwellir.com/blog/top-tempo-rpc-providers)
