Add payment protection to your existing Node.js/Express/Hono APIs with just a few lines of code
- Simple API • Flexible pricing
- Built-in payment verification
- Base & Base Sepolia support
Install
npm i x402-magic
Example (Express)
import express, { type Request, type Response } from "express";
import { OnSpot } from "x402-magic";
import { facilitator as baseDefaultFacilitator } from "@coinbase/x402";
const app = express();
app.use(express.json());
const onSpot = new OnSpot({
payTo: process.env.PAY_TO,
settleAsync: false,
facilitator: baseDefaultFacilitator,
network: "base"
});
app.get("/premium-content", async (req: Request, res: Response) => {
const payment = req.header("X-PAYMENT") || "";
const result = await onSpot.requirePayment({
price: "$0.01",
payment: payment,
resource: `${req.protocol}://${req.get("host")}${req.originalUrl}`
});
if (result.paymentRequired) {
return res.status(402).json(result.res);
}
if (!result.isValid) {
return res.status(402).json({ error: "Invalid payment" });
}
return res.json({ content: "Your premium content here!" });
});
app.listen(3000);