Add pay-per-request billing to any API in a few lines, and give agents one client that pays automatically over x402.
It focuses on developer experience: five minutes from install to a paid endpoint, a sandbox that behaves like production, and a non-custodial flow where funds never rest in Paycurl.
- Core features
- 5
- Status
- Early access
- Network
- Solana
- Your funds
- Non-custodial
| 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
Paycurl, feature by feature.
Built for aPI and data providers who want micro-pricing without a billing stack, and developers building agents that need to buy data or compute per call.
Client wrapper (paycurl.fetch) that reads the quote, asks the connected wallet to sign, and retries the request
PlannedTest mode with fake balances and a sandbox facilitator so the full loop works without real funds
PlannedSeller dashboard with per-endpoint price, call counts, and earnings
PlannedPublic directory of paid endpoints with a copy-paste snippet for each
PlannedClient wrapper (paycurl.fetch) that reads the quote, asks the connected wallet to sign, and retries the request.
paycurl.fetch reads the 402 quote, checks it against your spending cap, asks Phantom, Solflare or Backpack to sign, and retries with the payment attached.
Plannedagent.ts
import { paycurl } from "@paycurl/client";
const res = await paycurl.fetch(
"https://api.tidegauge.dev/v1/tides?port=SEA",
{
wallet, // connected Solana wallet adapter
maxPrice: "0.01", // refuse quotes above 0.01 USDC
asset: "USDC"
}
);
const data = await res.json();
console.log(res.headers.get("x-paycurl-receipt"));Middleware for Express, Next.js and Cloudflare Workers that returns a 402 quote and verifies the payment.
Mount the middleware and list the routes you want to charge for. Unpaid requests get a 402 with a quote. Paid retries are verified before your handler runs.
Plannedserver.js (Express)
import express from "express";
import { paycurl } from "@paycurl/express";
const app = express();
app.use(paycurl({
payTo: "4Zt8RkXw2pQyN7cVbH3sJdUe9mFa6LgTq5Yx1WnKrPcB",
network: "solana",
routes: {
"GET /v1/tides": { price: "0.002", asset: "USDC" },
"GET /v1/forecast": { price: "0.010", asset: "USDC" }
}
}));
app.get("/v1/tides", (req, res) => res.json({ port: "SEA", high: "3.1 m" }));
app.listen(3000);Test mode with fake balances and a sandbox facilitator so the full loop works without real funds.
Sandbox wallets hold fake USDC and a sandbox facilitator settles instantly. Quotes, signatures, retries and refusals behave the same as in production.
PlannedSandbox wallets
| Wallet | Role | Fake balance | Calls made |
|---|---|---|---|
| test-agent-1 | Payer | 5.00 USDC | 23 |
| test-agent-2 | Payer | 0.04 USDC | 17 |
| test-seller | Seller | 0.62 USDC | 40 |
| test-broke | Payer | 0.00 USDC | 8 refused |
Seller dashboard with per-endpoint price, call counts, and earnings.
See which routes earn, edit a price without redeploying, and check how many payers were refused and why.
PlannedLast 7 days by endpoint
| Endpoint | Price | Calls | Unique payers | Earned |
|---|---|---|---|---|
| GET /v1/tides | 0.002 USDC | 1,126 | 7 | 2.25 USDC |
| GET /v1/forecast | 0.010 USDC | 388 | 5 | 3.88 USDC |
| POST /v1/route | 0.025 USDC | 94 | 3 | 2.35 USDC |
| GET /v1/buoys | 0.001 USDC | 0 | 0 | 0.00 USDC |
Public directory of paid endpoints with a copy-paste snippet for each.
Listed endpoints show price, a live status check and a copy-paste call, so an agent developer can try one in a minute.
PlannedNewly listed endpoints
- tidegauge.dev /v1/tides0.002 USDC per call, tide heights for 40Live
- parcelhound.io /v1/track0.004 USDC per call, parcel status lookuLive
- lexrate.xyz /v1/fx0.001 USDC per call, FX rates updated eaLive
- openclause.app /v1/summarize0.030 USDC per call, contract summaryTest mode
It focuses on developer experience: five minutes from install to a paid endpoint, a sandbox that behaves like production, and a non-custodial flow where funds never rest in Paycurl.
3 steps from start to first result.
Open by default.
Every screen reads from the same model. Live parts read public onchain data; nothing ever asks your wallet to sign.
Read the docs{
"product": "Paycurl",
"network": "solana",
"features": [
{
"name": "Middleware for Express, Next.js and Cloudflare W",
"status": "planned"
},
{
"name": "Client wrapper (paycurl.fetch) that reads the qu",
"status": "planned"
},
{
"name": "Test mode with fake balances and a sandbox facil",
"status": "planned"
},
{
"name": "Seller dashboard with per-endpoint price, call c",
"status": "planned"
}
]
}What works today.
Live features work today. Planned ones are next on the roadmap, in this order.
Questions.
Short answers. The docs have the rest.
What is Paycurl?
Add pay-per-request billing to any API in a few lines, and give agents one client that pays automatically over x402. It focuses on developer experience: five minutes from install to a paid endpoint, a sandbox that behaves like production, and a non-custodial flow where funds never rest in Paycurl.
What works today?
Paycurl is in development. Every feature is on the status list with what ships next, and the app opens in a sample workspace so you can see how it will work.
Do I need a wallet?
No. You can explore without one. Connecting a Solana wallet only shares your public address so Paycurl can read your balances; it never asks you to sign a transaction.
Who is it for?
API and data providers who want micro-pricing without a billing stack, and developers building agents that need to buy data or compute per call.
Middleware for Express, Next.js and Cloudflare Workers that returns a 402 quote and verifies the payment.
Add pay-per-request billing to any API in a few lines, and give agents one client that pays automatically over x402.