Paid requests, live ledger
Add pay-per-request billing to any API in a few lines, and give agents one client that pays automatically over x402.
Earned today
0.84 USDCPaid calls today
312Live endpoints
4Test mode calls
58Activity, last 30 days
TotalUnique
Breakdown
- Middleware for Express, Next.js...65%
- Client wrapper (paycurl.fetch) that...20%
- Test mode with fake...15%
| Time | Endpoint | Payer | Amount | Status |
|---|---|---|---|---|
| 2 min ago | GET /v1/tides | 9wFq...RtLm | 0.002 USDC | Settled |
| 4 min ago | GET /v1/tides | 3nBx...Yp7d | 0.002 USDC | Settled |
| 9 min ago | GET /v1/forecast | Hk5e...2cVa | 0.010 USDC | Settled |
| 14 min ago | POST /v1/route | 9wFq...RtLm | 0.025 USDC | Pending |
| 21 min ago | GET /v1/tides | Ud4s...8zQk | 0.002 USDC | Refused: quote expired |
| 33 min ago | GET /v1/forecast | 3nBx...Yp7d | 0.010 USDC | Settled |
Paid calls per hour, last 24h
Peak at 15:00 UTC when two agents polled the forecast endpoi
Endpoints and prices
- GET /v1/tides0.002 USDC per call, 214 calls todayLive
- GET /v1/forecast0.010 USDC per call, 71 calls todayLive
- POST /v1/route0.025 USDC per call, 27 calls todayLive
- GET /v1/buoys0.001 USDC per call, 0 calls todayTest mode
Settlement
410 msAvg verify time
6Refused quotes
0 USDCHeld by Paycurl
Seller settings
Accept USDC on Solana
Test mode for new endpoints
List endpoints in public directory
Email me when a payer is refused twice
Welcome to Paycurl
Connect a Solana wallet to set up your workspace. Paycurl only reads your public address.
- Middleware for Express, Next.js and Cloudflare Workers that returns a 402 quote and verifies the paymentPlanned
- Client wrapper (paycurl.fetch) that reads the quote, asks the connected wallet to sign, and retries the requestPlanned
- Test mode with fake balances and a sandbox facilitator so the full loop works without real fundsPlanned
- Seller dashboard with per-endpoint price, call counts, and earningsPlanned
- Public directory of paid endpoints with a copy-paste snippet for eachPlanned
Endpoints
Set a price per route and see its status.
Your endpoints
| Route | Price | Mode | Calls today | Earned today |
|---|---|---|---|---|
| GET /v1/tides | 0.002 USDC | Live | 214 | 0.43 USDC |
| GET /v1/forecast | 0.010 USDC | Live | 71 | 0.71 USDC |
| POST /v1/route | 0.025 USDC | Live | 27 | 0.68 USDC |
| GET /v1/buoys | 0.001 USDC | Test | 0 | 0.00 USDC |
Add a priced route
Results appear here.
- GET /v1/ports quoted at 0.003 USDCTest mode
- Snippet ready to pasteReady
Payments
Every quote, signature and settlement.
Payment log
| Time | Payer | Route | Amount | Signature |
|---|---|---|---|---|
| 12:41 | 9wFq...RtLm | /v1/tides | 0.002 USDC | 5Kc2...mQ9x |
| 12:39 | 3nBx...Yp7d | /v1/tides | 0.002 USDC | 2Vh8...Lr4t |
| 12:34 | Hk5e...2cVa | /v1/forecast | 0.010 USDC | 4Ty7...dN3b |
| 12:21 | Ud4s...8zQk | /v1/tides | Refused | none |
| 12:08 | 9wFq...RtLm | /v1/route | 0.025 USDC | 3Pj6...Wk8s |
Today
306Settled
6Refused
0.0027 USDCAvg amount
Sandbox
Run the whole 402 loop without real funds.
Test a route end to end
Request without payingThe route returns 402 with a quote of 0.010 USDC for GET /v1/forecast.
Sign with a test wallettest-agent-1 signs the quote against its fake balance.
Retry and settleThe sandbox facilitator verifies and your handler returns 200 with a receipt.
Agent run log
GET /v1/forecast?port=SEA
402 quote: 0.010 USDC to 4Zt8...PcB, expires in 60s.
Signed by test-agent-1, retrying.
200 OK. Receipt rcpt_t_0041 settled in the sandbox. Balance now 4.99 USDC.
Directory
Find paid endpoints and copy the call.
Listed endpoints
| Endpoint | Seller | Price | Uptime 7d |
|---|---|---|---|
| /v1/tides | tidegauge.dev | 0.002 USDC | 99.8% |
| /v1/track | parcelhound.io | 0.004 USDC | 99.1% |
| /v1/fx | lexrate.xyz | 0.001 USDC | 100% |
| /v1/geocode | mapnest.dev | 0.003 USDC | 98.6% |
Copy snippet for /v1/fx
const res = await paycurl.fetch("https://api.lexrate.xyz/v1/fx?pair=USDC-EUR", {
wallet,
maxPrice: "0.002"
});
console.log(await res.json());Your wallet
Live: balances read from Solana after you connect. Read-only, nothing to sign.
Connection
LiveConnect Phantom, Solflare or Backpack. Paycurl only reads your public address and balances.
W
SOL balance...
Token accounts
LiveConnect a wallet to list its tokens.