XMR Privacy Wallet API

Monero Wallet API for Privacy-First AI Agents

Generate Monero wallets, monitor balances with view keys, and send XMR — without running a Monero daemon or syncing the blockchain. Stealth addresses, ring signatures, and RingCT protect every transaction by default.

Get API Key All Wallet APIs
~2min
Block Time
11
Ring Size
100%
Transactions Private
~$0.01
Avg Transfer Fee

Autonomous agents need financial privacy too

When an AI agent's entire transaction history is publicly readable on a transparent blockchain, competitors can front-run its trades, adversaries can map its holdings, and counterparties can exploit its predictable behavior. Monero eliminates all of these attack surfaces by default.

🔭

Prevent Front-Running

On Ethereum and Bitcoin, every pending transaction is visible in the mempool. If your agent consistently buys BTC before large moves, competitors scan the mempool and front-run every order. On Monero, transactions are private before and after confirmation.

🕵️

Hide Strategy Signals

Transparent blockchains expose your agent's strategy through its transaction patterns — entry sizes, timing, counterparties. Monero's stealth addresses and ring signatures make on-chain behavioral analysis computationally infeasible.

🛡️

Protect Counterparty Identity

When your agent hires another agent via escrow, the payment relationship is visible to anyone monitoring transparent chains. Monero payments are unlinkable — the escrow counterparty cannot determine your agent's full financial history.

💼

Confidential Holdings

RingCT (Ring Confidential Transactions) hides transaction amounts. Nobody can determine how much XMR your agent holds or transferred by scanning the blockchain — only the holder with the view key can see the true amounts.

🔑

Selective Disclosure

Monero view keys let your agent prove its transaction history to specific parties — an auditor, a regulator, a smart contract — without revealing that history to anyone else. Transparency only when you choose it.

🌐

No Node Required

Running a Monero daemon requires syncing 130+ GB of blockchain data and 10+ hours of initial sync time. Purple Flea handles all node infrastructure — your agent makes REST calls and gets XMR functionality immediately.

How Monero's privacy stack protects every transaction

Monero uses three complementary cryptographic mechanisms that together make transactions unlinkable, untraceable, and amount-confidential. All three are mandatory on every transaction — privacy is not opt-in.

Stealth Addresses

Every transaction generates a unique one-time address for the recipient. Even if the recipient publishes their main address, the blockchain shows only one-time addresses — linking payments to a recipient requires the private view key. The recipient scans the chain with their view key to identify incoming funds.

Ring Signatures

When your agent spends XMR, the transaction includes 10 other "decoy" inputs drawn from the blockchain (ring size 11). An external observer cannot determine which input is the real one being spent. The actual signer is cryptographically hidden among the ring members.

RingCT (Confidential Transactions)

Transaction amounts are hidden using Pedersen commitments — a cryptographic commitment scheme that proves the output amounts balance without revealing the actual values. The network can verify no XMR was created or destroyed without seeing any amounts.

Monero key structure

# Monero uses four keys per wallet: # 1. Spend key (private) — signs spends # Must remain secret. Spending key. # 2. View key (private) — scans for TXs # Can be shared for read-only monitoring # Does NOT allow spending # 3. Spend key (public) — derived from private # Part of the wallet address # 4. View key (public) — derived from private # Part of the wallet address # Monero address = base58(network_byte # + public_spend_key + public_view_key # + checksum) # Length: 95 characters # Prefix: 4... (mainnet) # Subaddresses use different derivation: # subaddr_spend = spend + H(view, i, j) # Unlinkable across subaddresses REFERENCE

Purple Flea stores and manages your agent's spend key securely. The view key is returned to you on wallet creation for independent monitoring. Neither key is ever exposed in API responses after the initial creation.

Monero wallet operations via Purple Flea API

Purple Flea handles Monero node sync, key management, and transaction broadcasting. Your agent makes standard REST calls — no monero-wallet-rpc process, no daemon, no 10-hour initial sync.

Sync times: Monero wallet balance checks require scanning the blockchain with the view key. Purple Flea caches balances with a 5-minute TTL. First balance call may take 10–30 seconds on a new wallet while Purple Flea scans for incoming transactions.

Generate a Monero wallet

import requests API_KEY = "pf_live_your_key" BASE = "https://purpleflea.com/api" HEADERS = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json", } def create_monero_wallet(agent_id: str) -> dict: r = requests.post( f"{BASE}/wallet/create", headers=HEADERS, json={ "agentId": agent_id, "chain": "monero", }, ) data = r.json() # Returns: # address — 95-char main address # mnemonic — 25-word Monero seed # viewKey — private view key # spendKey — private spend key return data wallet = create_monero_wallet("my-agent") print("Address:", wallet["address"]) print("View Key:", wallet["viewKey"]) # Store viewKey for balance monitoring # Store spendKey in secure vault only PYTHON

Check XMR balance (uses view key scan)

def get_xmr_balance( address: str, view_key: str, ) -> dict: """ Returns unlocked and locked XMR balance. Locked = outputs with < 10 confirmations. Unlocked = spendable balance. """ r = requests.get( f"{BASE}/wallet/balance", headers=HEADERS, params={ "chain": "monero", "address": address, "viewKey": view_key, }, ) data = r.json() # data["xmr_unlocked"] — spendable # data["xmr_locked"] — pending # data["usd_value"] — approx USD return data bal = get_xmr_balance( wallet["address"], wallet["viewKey"], ) print(f"Spendable: {bal['xmr_unlocked']} XMR") print(f"Pending: {bal['xmr_locked']} XMR") PYTHON

Send XMR to another address

def send_xmr( from_agent: str, to_address: str, amount_xmr: float, priority: str = "normal", ) -> dict: """ priority: 'slow'|'normal'|'fast'|'fastest' Higher priority = higher fee = faster confirm. Normal: ~2 min. Fastest: next block. """ r = requests.post( f"{BASE}/wallet/send", headers=HEADERS, json={ "agentId": from_agent, "chain": "monero", "to": to_address, "amount": amount_xmr, "priority": priority, }, ) data = r.json() # data["txHash"] — transaction ID # data["fee"] — fee in XMR return data PYTHON

View-key-only monitoring (no spend access)

def get_transactions( address: str, view_key: str, direction: str = "in", ) -> list: """ Scan for incoming or outgoing transactions using only the view key — no spend ability. direction: 'in' | 'out' | 'all' """ r = requests.get( f"{BASE}/wallet/transactions", headers=HEADERS, params={ "chain": "monero", "address": address, "viewKey": view_key, "direction": direction, }, ) return r.json()["transactions"] # Each tx: txHash, amount, height, # timestamp, confirmations PYTHON

What to know before using Monero in production

Balance Sync Latency

Monero wallets require scanning every block with the view key to find incoming outputs. Purple Flea runs background sync with a 5-minute cache TTL. First call on a fresh wallet may take 10–30 seconds. Cache subsequent calls in your agent's local state.

10-Confirmation Unlock

Monero requires 10 block confirmations (~20 minutes) before outputs are spendable. The balance API returns both xmr_unlocked (spendable now) and xmr_locked (pending confirmations). Check unlocked balance before sending.

25-Word Mnemonic

Monero uses its own 25-word mnemonic format (not BIP-39). The 25th word is a checksum word. Store the mnemonic securely — it derives both the spend key and view key. Purple Flea never stores mnemonics after wallet creation.

Transaction IDs are Private

Monero transaction IDs are not publicly queryable on block explorers unless you hold the view key. To verify a sent transaction, use the txHash returned by the send endpoint combined with the view key to prove the transfer.

When AI agents choose Monero over transparent chains

🤫

Private Agent-to-Agent Payments

When two agents cooperate on a task and want to keep the payment relationship confidential from competitors or watchers, XMR via Purple Flea escrow provides complete payment privacy.

📊

Confidential Treasury Reserve

Agents that have accumulated significant USDC or crypto holdings can convert a portion to XMR as a confidential reserve. Holdings are invisible to blockchain analytics firms and competitors alike.

🔍

Auditable-on-Demand

An agent operating in a regulated context can share its view key with an auditor to prove its full transaction history — while keeping that history invisible to everyone else. Selective transparency without compromising default privacy.

Add a Monero wallet to your agent

One API call generates a privacy-preserving XMR wallet. No daemon, no 130GB sync, no node infrastructure. Privacy by default from the first transaction.

More wallet APIs