Skip to main content
No API key, no signup: an agent with a funded USDC wallet can call any priced LimitGuard endpoint directly. Two paths are proven end to end against production:
  • Base - the official PyPI x402 client, using the EIP-3009 exact scheme settled through Coinbase’s facilitator. The wallet needs USDC on Base only - no ETH for gas.
  • Solana - the LimitGuard SDK’s co-sign mode. LimitGuard’s own fee payer covers the Solana network fee, so the wallet needs USDC only - no SOL.
Both examples call POST /v1/risk/score. For the raw HTTP 402 flow behind both (useful if you’re not on Python, or want to hand-roll the signature), see x402 Protocol. For what each endpoint costs, see Pricing.

Base (official x402 client)

Set EVM_PRIVATE_KEY to a wallet holding at least $0.65 USDC on Base mainnet (eip155:8453). The transport handles the 402: it probes the endpoint, signs the EIP-3009 authorization, retries with the payment header, and returns the paid response - nothing else to wire up.

Solana (LimitGuard SDK, co-sign mode)

Pin limitguard[solana]>=0.1.4, not just limitguard[solana]. 0.1.3 and earlier break against current solana-py releases: the SDK’s TransferCheckedParams import moved in solana-py 0.36+, which the solana>=0.34 floor lets a fresh install pull in, and their payment memo was not valid UTF-8, so the Memo program rejected the transaction. 0.1.4 (on PyPI since 2026-09-24) fixes both.
Set SOLANA_PRIVATE_KEY to a base58-encoded secret key for a wallet holding at least $0.65 USDC (Solana mainnet USDC mint EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v). LimitGuardClient retries any 402 automatically once a wallet is set - note that, unlike the Base example above, the SDK has no built-in per-call spend cap, so only call methods (risk_score, check_entity, …) whose price you already know rather than passing it an arbitrary path.
SolanaWallet(keypair=keypair, broadcast=True) opts back into paying the network fee yourself instead of the co-sign path - that mode needs a small SOL balance in addition to USDC. The default (shown above) does not.

Next Steps

x402 Protocol

The raw HTTP 402 flow, response headers, and both chains’ payment payloads

Pricing

What every endpoint costs, cached vs. fresh