Bitcoin Core + 5 EVM Chains + Cross-Chain Identity + On-Chain Attestations.
0ms cached responses. Pay with Lightning, get your API key instantly.
Pay Lightning ā get your key ā make your first call. Under 2 minutes.
Pick a tier below, scan the Lightning QR, and pay with any wallet.
ā” Key delivered automatically ā no emails, no waiting.
One curl. That's it.
Works with ethers.js, web3.js, viem ā just point your provider at /v1/rpc
Pre-built endpoints that replace dozens of raw RPC calls:
/api/evm/portfolio/:addr ā 5-chain portfolio/api/evm/gas ā gas across all chains/api/eth/leaderboard ā 7ms for 100 players/v1/mempool/stats ā live mempool intel
Hit real endpoints from this page. Public endpoints work without a key ā paste yours to unlock everything.
Copy-paste these to get running immediately.
# Get current Bitcoin block height
curl https://api.nativebtc.org/v1/block-height \
-H "X-API-Key: fp_your_key_here"
# JSON-RPC ā works with ethers.js, web3.js, viem
curl -X POST https://api.nativebtc.org/v1/rpc \
-H "Content-Type: application/json" \
-H "X-API-Key: fp_your_key_here" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
const { JsonRpcProvider } = require('ethers');
const provider = new JsonRpcProvider(
'https://api.nativebtc.org/v1/rpc',
{ name: 'bitcoin', chainId: 0xD9B4BEF9 },
{ staticNetwork: true, batchMaxCount: 1,
fetchOptions: { headers: { 'X-API-Key': 'fp_your_key_here' } } }
);
const block = await provider.getBlockNumber();
console.log('Bitcoin block:', block);
| Method | Path | Description |
|---|---|---|
| POST | /v1/rpc | JSON-RPC ā eth_* translated to Bitcoin + native BTC methods |
| GET | /v1/block-height | Current Bitcoin block height |
| GET | /v1/fee-estimate?blocks=6 | Fee estimate (sat/vB) for target confirmation |
| GET | /v1/balance/:address | Address balance (Bitcoin or EVM-translated) |
| GET | /v1/utxos/:address | UTXO set for a Bitcoin address |
| GET | /v1/tx/:txid | Transaction details by txid |
| GET | /v1/identity/evm-to-btc/:address | Resolve EVM address ā BTC identity |
| GET | /v1/identity/btc-to-evm/:address | Resolve BTC address ā EVM identity |
| GET | /v1/derive/:chain/:evmAddress | Derive chain address (solana, xrp, cardano, polkadot, tron) |
| GET | /v1/tiers | Available API tiers no auth |
| GET | /health | Service health check no auth |
| Method | Path | Description |
|---|---|---|
| GET | /v1/mempool/stats | Mempool size, fees, congestion level, fee estimates for 1ā144 blocks |
| GET | /v1/mempool/fees?target=10 | Fee landscape ā distribution histogram + recommended rate for target |
| GET | /v1/mempool/txs?limit=25&sort=fee_desc | Paginated mempool snapshot (sort: fee_desc, time_desc, size_desc) |
| GET | /v1/mempool/address/:address | Pending transactions for a Bitcoin address |
| GET | /v1/mempool/tx/:txid | Detailed mempool entry ā fees, ancestors, descendants, RBF flag |
| GET | /v1/mempool/tx/:txid/replacements | RBF replacement tracking ā was this tx bumped? |
| WS | /v1/mempool/stream?key=fp_xxx | WebSocket ā live stream of new mempool transactions + stats |
| Method | Path | Description |
|---|---|---|
| GET | /v1/attest/signer | Public signer address ā set as trustedSigner in your contract no auth |
| POST | /v1/attest/balance | Signed BTC balance proof ā verifiable on-chain via EIP-712 |
| POST | /v1/attest/ownership | Signed UTXO ownership proof ā prove you own a specific Bitcoin UTXO |
Cached, batched, multi-chain. 0ms cached responses. One call replaces dozens of raw RPC calls.
| Method | Path | Description |
|---|---|---|
| GET | /api/evm/chains | List supported EVM chains (ETH, ARB, BASE, OP, POLYGON) no auth |
| GET | /api/evm/:chain/balance/:address | Native balance on any chain ā cached 15s |
| GET | /api/evm/:chain/tokens/:address | ERC-20 token balances (USDC, USDT, DAI, WETH, + more) ā one call |
| GET | /api/evm/:chain/wallet/:address | Balance + tx count + EOA vs contract detection ā 3 RPC calls, 0ms cached |
| GET | /api/evm/portfolio/:address | Full portfolio across all 5 chains ā native balances + tx counts in one call |
| GET | /api/evm/gas | Gas prices on all 5 chains ā one call, 6s cache |
| GET | /api/evm/multichain-balance/:address | Native balance on all chains ā select chains with ?chains=ethereum,arbitrum |
| POST | /api/evm/:chain/batch-balances | Up to 200 addresses in one call ā ranked by balance, batch RPC |
| GET | /api/eth/leaderboard | 100-player leaderboard ā 7ms cached, 193ms cold. Alchemy: ~2 seconds |
| GET | /api/evm/multichain-leaderboard | Leaderboard ranked by TOTAL balance across all chains ā nobody else has this |
| POST | /api/evm/:chain/call | Cached eth_call ā read any contract, any method, 12s cache |
| GET | /api/cache/stats | Cache hit/miss stats, singleflight dedup, TTL config no auth |
All standard Ethereum JSON-RPC methods are translated to Bitcoin equivalents in real-time.
| EVM Method | Bitcoin Equivalent | Notes |
|---|---|---|
| eth_chainId | ā | Returns 0xD9B4BEF9 (Bitcoin mainnet magic) |
| eth_blockNumber | getblockcount | Current block height |
| eth_getBalance | UTXO scan | Address balance in satoshis |
| eth_gasPrice | estimatesmartfee | Fee rate in sat/vB |
| eth_getBlockByNumber | getblock | Full block data |
| eth_getTransactionByHash | getrawtransaction | Decoded transaction |
| eth_sendRawTransaction | sendrawtransaction | Broadcast signed tx |
Native Bitcoin RPC methods (getblock, estimatesmartfee, etc.) are also supported directly.
Real-time mempool data direct from our Bitcoin Core pruned node. Fee sniping, RBF tracking, congestion monitoring.
# Get fee distribution + recommended rate for 6-block target
curl "https://api.nativebtc.org/v1/mempool/fees?target=6" \
-H "X-API-Key: fp_your_key_here"
# Response includes histogram of fee rates across entire mempool
const ws = new WebSocket(
'wss://api.nativebtc.org/v1/mempool/stream?key=fp_your_key_here'
);
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === 'new_txs') {
console.log(`${msg.count} new txs`, msg.transactions);
}
if (msg.type === 'stats') {
console.log('Mempool:', msg.data.mempool.size, 'txs');
}
};
// Commands: subscribe:txs, subscribe:stats, filter:address:bc1q...
ws.send('subscribe:stats');
# See pending transactions for any Bitcoin address
curl "https://api.nativebtc.org/v1/mempool/address/bc1q..." \
-H "X-API-Key: fp_your_key_here"
# Returns direction (incoming/outgoing), fee rate, value
# Check if a transaction was replaced (fee bumped)
curl "https://api.nativebtc.org/v1/mempool/tx/abc123.../replacements" \
-H "X-API-Key: fp_your_key_here"
# Returns: wasReplaced, replacedBy txid, fee delta
Alchemy sells raw RPC. We sell pre-cached, batched, structured data. One endpoint replaces dozens of RPC calls.
| Scenario | FastPath | Alchemy | Verdict |
|---|---|---|---|
| ETH leaderboard (100 players, cached) | 7ms | ~2,000ms | 286Ć faster |
| Portfolio (5 chains, cached) | 0ms | ~800ms | ā |
| Token balances (6 tokens, cached) | 0ms | ~500ms | ā |
| Gas oracle (5 chains, cached) | 4ms | ~400ms | 100Ć faster |
| Leaderboard polling (p50) | 4.5ms | N/A | exclusive |
| Multichain leaderboard | ~50ms | N/A | exclusive |
# Vitalik's full portfolio across 5 chains
curl "https://api.nativebtc.org/api/evm/portfolio/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
# Response: 0ms cached, 204ms cold
{
"totalNativeEth": "527.644853",
"portfolio": {
"ethereum": { "eth": "32.13", "transactionCount": 1647 },
"polygon": { "eth": "495.20", "transactionCount": 1 },
"arbitrum": { "eth": "0.06", "transactionCount": 13 },
"optimism": { "eth": "0.18", "transactionCount": 40 },
"base": { "eth": "0.07", "transactionCount": 16 }
}
}
# Send up to 200 addresses, get ranked leaderboard
curl "https://api.nativebtc.org/api/eth/leaderboard?addresses=0xBE0e...,0xF977...,0x28C6..."
# Cached response: 7ms for 100 players
{
"loadTimeMs": 7,
"cacheHits": 100,
"leaderboard": [
{ "rank": 1, "address": "0xC02a...", "eth": "2084580.50" },
{ "rank": 2, "address": "0xBE0e...", "eth": "1996008.37" },
// ...
]
}
# Get USDC, USDT, DAI, WETH, LINK, UNI balances in one call
curl "https://api.nativebtc.org/api/evm/ethereum/tokens/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
# Filter specific tokens:
curl "https://api.nativebtc.org/api/evm/arbitrum/tokens/0x...?tokens=USDC,ARB"
# Send 200 addresses, get all balances ranked
curl -X POST "https://api.nativebtc.org/api/evm/ethereum/batch-balances" \
-H "Content-Type: application/json" \
-d '{"addresses": ["0xBE0e...", "0xF977...", "0x28C6..."]}'
Signed proofs of Bitcoin balance and UTXO ownership that smart contracts can verify on-chain. Like Chainlink for BTC state.
# Request a signed proof of Bitcoin balance
curl -X POST "https://api.nativebtc.org/v1/attest/balance" \
-H "Content-Type: application/json" \
-H "X-API-Key: fp_your_key_here" \
-d '{"evmAddress": "0xYourWallet", "btcAddress": "bc1q...", "chainId": 1}'
# Response:
{
"success": true,
"attestation": {
"message": {
"evmAddress": "0xYourWallet",
"btcAddress": "bc1q...",
"balanceSats": "150000000", // 1.5 BTC
"timestamp": 1772236005,
"nonce": 2993801780
},
"signature": "0xcacf38...",
"signerAddress": "0xef0FEb..."
}
}
// User calls your contract with the attestation data
const tx = await vault.attestBalance(
attestation.message.btcAddress,
attestation.message.balanceSats,
attestation.message.timestamp,
attestation.message.nonce,
attestation.signature
);
// Contract verifies signature ā credits user's BTC collateral
// In your Solidity contract ā import FastpathAttestationVerifier
function attestBalance(
string calldata btcAddress,
uint256 balanceSats,
uint256 timestamp,
uint256 nonce,
bytes calldata signature
) external {
// Verifies EIP-712 sig, checks expiry + nonce replay
verifier.verifyBalance(
msg.sender, btcAddress, balanceSats,
timestamp, nonce, signature
);
// ā
Balance is verified ā lend, mint NFT, gate access, etc.
positions[msg.sender].btcBalanceSats = balanceSats;
}
IFastpathAttestation.sol ā Interface for your contractsFastpathAttestationVerifier.sol ā Verifier with nonce + expiry protectionBTCBackedVaultV2.sol ā Example lending vault using real BTC balance
Click a tier ā Scan the QR ā Get your API key in seconds.
Payment is verified automatically. No accounts, no emails, no waiting.
Works with any Lightning wallet ā Wallet of Satoshi, Phoenix, Breez, Zeus, etc.
Pass your API key via the X-API-Key header on every request:
curl https://api.nativebtc.org/v1/block-height \
-H "X-API-Key: fp_your_key_here"
Rate limit info is returned in response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-DailyLimit-Remaining.
If you exceed your limit, you'll receive a 429 with a Retry-After header.
Scan. Pay. Build. Your API key is delivered the moment payment confirms.
ā” Get API Key ā 1,000 sats (~$1)Bitcoin-only. Lightning-fast. No accounts. No sign-ups.