No signup. No API key. No dashboard.
Your wallet is your identity. USDC on Base mainnet.
Internet access on node & core plans — scrape, fetch, install.
FOUR STEPS. NO HUMANS INVOLVED.
POST /api/create with plan + hours
Server responds with USDC payment challenge
Signs EIP-3009 transfer, retries with proof
Docker provisioned. Exec + internet — ready
PAY PER HOUR. NO SUBSCRIPTIONS. EXEC IS FREE.
10 IMAGES. ZERO COLD START. RUN ON MIN TIER OR HIGHER.
Each image has a minimum tier (RAM needed to run).
You can run any image on a higher tier for more CPU/RAM/bandwidth — e.g. {"plan":"core","image":"python"}
gives Python with 2GB RAM. Or pass any Docker image name for custom images (slower, pulls from Docker Hub).
ATOM ISOLATED. CELL/NODE/CORE HAVE INTERNET.
JSON IN. 402 OUT. NO BULLSHIT.
curl -X POST https://x402vps.com/api/create \
-H "Content-Type: application/json" \
-d '{"plan":"node","leaseHours":1}'
curl -X POST https://x402vps.com/api/exec \
-H "Content-Type: application/json" \
-d '{"id":"ctr_4cb194","command":"wget -qO- https://api.github.com/zen"}'
curl -X POST https://x402vps.com/api/exec \
-d '{"id":"ctr_4cb194","command":"apk add --no-cache python3"}'
curl -X POST https://x402vps.com/api/destroy \
-d '{"id":"ctr_4cb194"}'
js
import { x402Client, x402HTTPClient } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount("0x...");
const client = new x402Client();
registerExactEvmScheme(client, { signer: account, networks: ["eip155:8453"] });
const http = new x402HTTPClient(client);
// 1. Create a node container WITH internet ($0.04/hr)
const resp = await fetch("https://x402vps.com/api/create", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ plan: "node", leaseHours: 1 })
});
// 2. Sign payment → retry with proof
const req = JSON.parse(atob(resp.headers.get("payment-required")));
const payload = await client.createPaymentPayload(req);
const headers = http.encodePaymentSignatureHeader(payload);
const paid = await fetch("https://x402vps.com/api/create", {
method: "POST",
headers: { ...headers, "Content-Type": "application/json" },
body: JSON.stringify({ plan: "node", leaseHours: 1 })
});
const container = await paid.json();
// { id: "ctr_4cb194", status: "running", internet: true, bandwidthUsed: { quotaMB: 500 } }
// 3. Scrape! (exec is FREE)
const exec = await fetch("https://x402vps.com/api/exec", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ id: container.id, command: "wget -qO- https://httpbin.org/ip" })
});
EVERYTHING AN AI AGENT NEEDS.