O
ObolMonad

Documentation

Integrate x402 payments into your agent in minutes. Pay per call on Base, Solana, or Monad.

Quick Start

Call any Fixr API endpoint. If you haven't paid, you'll get a 402 Payment Required response with payment instructions. Pay on-chain, retry with proof, get your data.

# 1. Try the request (get 402)
curl https://agent.fixr.nexus/api/v1/security/audit
# 2. Pay on-chain (Base example)
# Transfer 0.01 USDC to 0xBe2Cc...B5y on Base
# 3. Retry with payment proof
curl -H "X-Payment-TxHash: 0x..." \
-H "X-Payment-Chain: base" \
https://agent.fixr.nexus/api/v1/security/audit

Payment Chains

BaseBase (Chain ID 8453)

TokenUSDC (0x8335...2913)
Recipient0xBe2Cc...B5y
Amount0.01 USDC (10000 units)
HeaderX-Payment-TxHash
VerificationUSDC Transfer event in tx receipt

SolanaSolana (Mainnet-Beta)

MintEPjFWdd5...Dt1v
Recipient96vRDB...EvuU
Amount0.01 USDC (10000 units)
HeaderX-Payment-TxHash (signature)
VerificationToken balance delta (pre/post)

MonadMonad / Obol (Chain ID 143)

Payments route through the Obol bonding curve. Every API call buys $FIXR tokens.

Curve ID0 (FIXR)
TokenUSDC (0x7547...0603)
Amount0.01 USDC (10000 units)
HeaderX-Payment-Nonce (bytes16 hex)
VerificationverifyPayment(nonce) on-chain receipt

Request Headers

HeaderDescription
X-Payment-Chainbase | solana | monad (default: base)
X-Payment-TxHashTransaction hash (Base) or signature (Solana)
X-Payment-Noncebytes16 hex nonce (Monad/Obol only)
X-Wallet-AddressEVM address for staking tier lookup (optional)

Obol Payment Flow (Monad)

1

Agent calls payViaCurve(curveId, usdcAmount, nonce) on the X402CurveRouter contract. The nonce is a unique bytes16 value chosen by the caller.

2

The router transfers USDC from the caller, buys tokens on the bonding curve, and stores a Receipt on-chain keyed by the nonce.

3

Agent retries the API call with X-Payment-Nonce: 0x... and X-Payment-Chain: monad.

4

The server calls verifyPayment(nonce) via eth_call, decodes the receipt struct, verifies the payer and amount, and grants access.

5

Post-graduation, the same flow seamlessly routes through Uniswap V3 instead of the bonding curve. No client-side changes needed.

Receipt Struct

The on-chain receipt returned by verifyPayment(nonce):

// Solidity struct (ABI-encoded return)
struct Receipt {
address payer;// Who paid
uint256 curveId;// 0 = FIXR
uint256 usdcAmount;// Payment amount
uint256 tokensReceived;// Tokens bought
uint256 fee;// Protocol fee
uint256 blockNumber;// Timestamp
bool viaUniswap;// Post-graduation flag
}

Staking Tiers

Alternatively, stake FIXR tokens on Base for persistent rate limits without per-call payments.

TierMin StakeRate Limit
FREE010/min
BUILDER1,000,000 FIXR20/min
PRO10,000,000 FIXR50/min
ELITE50,000,000 FIXRUnlimited

Contracts (Monad Mainnet)

All contracts verified on MonadScan via Etherscan v2 API.

Try It

Hit the payment info endpoint to see live chain options:

curl https://agent.fixr.nexus/api/access/payment