Express.js Integration
Add x402 payments to your Express.js API in minutes
Installation
npm install @getconduit/x402-expressBasic Setup
import express from 'express'
import { x402Middleware } from '@getconduit/x402-express'
const app = express()
// Configure x402 middleware
app.use(x402Middleware({
facilitatorUrl: 'https://getconduit.io/api/facilitator',
network: 'solana', // or 'solana-devnet'
}))
// Protected endpoint
app.get('/api/premium-content', async (req, res) => {
// This endpoint requires payment
res.json({
message: 'Premium content unlocked!',
data: { /* your premium data */ }
})
})
app.listen(3000, () => {
console.log('Server running on port 3000')
})Configuration Options
| Option | Type | Description |
|---|---|---|
| facilitatorUrl | string | Conduit facilitator URL |
| network | string | Solana network (mainnet/devnet) |
| price | number | Price in USDC (default: 0.01) |
Advanced Example
import express from 'express'
import { x402Middleware, requirePayment } from '@getconduit/x402-express'
const app = express()
app.use(x402Middleware({
facilitatorUrl: 'https://getconduit.io/api/facilitator',
network: 'solana',
}))
// Free endpoint
app.get('/api/public', (req, res) => {
res.json({ message: 'This is free!' })
})
// Paid endpoint with custom price
app.get('/api/premium',
requirePayment({ price: 0.05 }),
(req, res) => {
res.json({
message: 'Premium content',
payer: req.payment.payer
})
}
)
// Dynamic pricing
app.get('/api/data/:size',
requirePayment((req) => {
const size = req.params.size
return { price: size === 'large' ? 0.10 : 0.01 }
}),
(req, res) => {
res.json({ data: '...' })
}
)
app.listen(3000)