DEV Community

holistis
holistis

Posted on

I Built a Pay-Per-Call DeFi Bot Intelligence API Using x402 — No Signup Required

I run 50+ DeFi bots across Base, Arbitrum, OP and Solana. The data those bots generate — arb signals, draw schedules, earnings, health status — was sitting in PM2 logs on a Hetzner server. So I packaged it into an API and made it public.

It's called the DeFi Signal API. Live on RapidAPI at rapidapi.com/defisignalapi/api/defi-signal and directly at http://138.201.204.97:3748.

What the API exposes

Seven paid endpoints, all returning live data from real running bots:

  • GET /api/pt-next - Next PoolTogether draw time on Base/Arb/OP/Scroll with countdown ($0.001)
  • GET /api/pt - PT draw scans and recent claim results from active claimer bots ($0.001)
  • GET /api/signals - Solana DEX arb near-win signals from the last 2 hours ($0.002)
  • GET /api/earnings - Bot earnings today across all chains, per bot ($0.003)
  • GET /api/health - Live PM2 status of all 50+ bots on Hetzner VPS ($0.002)
  • GET /api/murshid - Nightly strategy report: expected vs actual, lessons learned ($0.010)
  • GET /api/edge - Strategy verdicts with expected vs actual monthly returns ($0.008)

One free endpoint: GET /api/status returns all prices and the payment wallet address.

How payment works: x402

The x402 protocol turns payment into an HTTP header. No account. No API key. No signup form.

  1. Call GET /api/status to get the USDC wallet address on Base
  2. Send the exact USDC amount on Base mainnet
  3. Include the tx hash as PAYMENT-SIGNATURE header
  4. Server verifies on-chain. Each tx hash works once.
const status = await fetch('http://138.201.204.97:3748/api/status');
const { wallet } = await status.json();

// After sending USDC to wallet on Base mainnet:
const res = await fetch('http://138.201.204.97:3748/api/pt-next', {
  headers: { 'PAYMENT-SIGNATURE': '0x...your_tx_hash...' }
});
const draws = await res.json();
// { base: { nextDrawAt: 1721390400000, timeUntilMs: 3600000 }, arb: {...} }
Enter fullscreen mode Exit fullscreen mode

Transactions on Base settle in about 2 seconds. USDC transfer costs less than a cent. Pay-per-call is economically viable here.

Who this is for

  • PoolTogether bot builders who want precise draw timing without running their own RPC stack
  • Solana arb researchers studying near-miss patterns to calibrate their own bots
  • DeFi infrastructure teams wanting to monitor a live bot fleet without VPS access
  • Strategy researchers who want real expected-vs-actual return data, not backtests

What it does not do

No transaction execution. No trading advice. No personal data. Pure data layer.

Links

Still building in public. If you need an endpoint that isn't there, open an issue or reach out.

Top comments (1)

Collapse
 
vollos profile image
Pon

Once a tx confirms on Base, does the server verification tie a PAYMENT-SIGNATURE to the wallet that sent it, or just to the USDC amount landing? Confirmed hashes go public on-chain right away, so I'm curious how that's wired. The x402 setup itself is a clean way to skip API keys and signup forms entirely.