This is the index.ts the starter generates. It loads your env, attaches the x402 payment interceptor to an Axios instance, calls your endpoint, and logs both the JSON body and the decoded x-payment-response headers.
Copy
import axios from "axios";import { config } from "dotenv";import { Hex } from "viem";import { privateKeyToAccount } from "viem/accounts";import { withPaymentInterceptor, decodeXPaymentResponse } from "x402-axios";config();const privateKey = process.env.PRIVATE_KEY as Hex;const baseURL = process.env.RESOURCE_SERVER_URL as string; // e.g. https://example.comconst endpointPath = process.env.ENDPOINT_PATH as string; // e.g. /weatherif (!baseURL || !privateKey || !endpointPath) { console.error("Missing required environment variables"); process.exit(1);}const account = privateKeyToAccount(privateKey);const api = withPaymentInterceptor( axios.create({ baseURL, }), account,);api .get(endpointPath) .then(response => { console.log(response.data); const paymentResponse = decodeXPaymentResponse(response.headers["x-payment-response"] as string); console.log(paymentResponse); }) .catch(error => { console.error(error.response?.data?.error ?? error.message); });
You can test your client against a local server by running the express example or the hono example.You can also test your client against a live merchant for free. You will receive a full refund of any tokens that you send, and PayAI will pay for the network fees.