Axios Client
Make x402 payments using Axios with automatic retry logic
Installation
npm install @getconduit/x402-axios axios @solana/web3.jsBasic Usage
import axios from 'axios'
import { x402Interceptor } from '@getconduit/x402-axios'
import { Connection, Keypair } from '@solana/web3.js'
// Create axios instance
const client = axios.create({
baseURL: 'https://api.example.com'
})
// Add x402 interceptor
x402Interceptor(client, {
connection: new Connection('https://api.mainnet-beta.solana.com'),
payer: yourKeypair,
})
// Make paid requests (automatically handles 402 responses)
const { data } = await client.get('/premium')
console.log(data) // Premium contentConfiguration
import axios from 'axios'
import { x402Interceptor } from '@getconduit/x402-axios'
import { Connection, Keypair } from '@solana/web3.js'
const client = axios.create({
baseURL: 'https://api.example.com',
timeout: 10000,
})
x402Interceptor(client, {
connection: new Connection('https://api.mainnet-beta.solana.com'),
payer: yourKeypair,
// Optional: Custom payment handler
onPayment: (amount, recipient) => {
console.log(`Paying ${amount} USDC to ${recipient}`)
},
// Optional: Error handler
onError: (error) => {
console.error('Payment failed:', error)
},
// Optional: Max retries for failed payments
maxRetries: 3,
})Multiple Endpoints
import axios from 'axios'
import { x402Interceptor } from '@getconduit/x402-axios'
import { Connection, Keypair } from '@solana/web3.js'
const client = axios.create()
x402Interceptor(client, {
connection: new Connection('https://api.mainnet-beta.solana.com'),
payer: yourKeypair,
})
// Make requests to different paid APIs
async function fetchAllData() {
const [data1, data2, data3] = await Promise.all([
client.get('https://api1.example.com/premium'),
client.get('https://api2.example.com/data'),
client.get('https://api3.example.com/content'),
])
return {
api1: data1.data,
api2: data2.data,
api3: data3.data,
}
}Error Handling
import axios from 'axios'
import { x402Interceptor, X402Error } from '@getconduit/x402-axios'
const client = axios.create()
x402Interceptor(client, { /* config */ })
async function fetchPremiumData() {
try {
const { data } = await client.get('/premium')
return data
} catch (error) {
if (error instanceof X402Error) {
switch (error.code) {
case 'INSUFFICIENT_FUNDS':
console.error('Not enough USDC in wallet')
break
case 'PAYMENT_REJECTED':
console.error('Payment was rejected by facilitator')
break
case 'NETWORK_ERROR':
console.error('Solana network error')
break
default:
console.error('Payment error:', error.message)
}
} else {
console.error('Request error:', error)
}
throw error
}
}