Micro utilities for AI agents and apps, priced per call and paid in
USDC over the x402 protocol. No signup, no API keys —
call an endpoint, get a 402, pay, and get your result.
| Method | Path | Price | What it does |
|---|---|---|---|
| POST | /v1/echo |
$0.001 | Echoes back the JSON body you send, with a server timestamp. Useful for verifying your x402 client integration end to end.{"msg":"hello farm"} |
| POST | /v1/pdf |
$0.010 | Render HTML or a public web page into a pixel-perfect PDF using a headless Chrome browser. Send inline `html` (invoices, receipts, reports, tickets) or a `url` to snapshot; control paper size, orientation, margins, background graphics and scale. Returns the raw application/pdf bytes — no signup, no browser to run, pay per document.{"html":"<html><body><h1>Invoice #1042</h1><table><tr><td>Item</td><td>$20.00</td></tr></table></body></html>","format":"A4","printBackground":true} |
| POST | /v1/screenshot |
$0.008 | Capture a screenshot of any public web page with a headless Chrome browser. Set the viewport, grab the full scrollable page or just the fold, and choose PNG, JPEG or WebP with an optional quality. Returns the raw image bytes — ideal for link previews, thumbnails, visual monitoring and archiving. No browser to run, pay per capture.{"url":"https://example.com","fullPage":true,"format":"png"} |
| POST | /v1/og-image |
$0.003 | Generate a polished Open Graph / social share image (PNG) from text — no browser, no design tools. Pick a template (article, product, stat), pass a title and optional subtitle, set your brand accent colour and light/dark theme, and get back a crisp 1200×630 PNG ready for og:image, Twitter cards, blog headers and launch posts. Rendered with Satori + resvg; fast and cheap.{"template":"article","title":"Announcing the Monetization Gateway","subtitle":"Charge for any resource behind Cloudflare via x402","accent":"#2FBF71","theme":"dark"} |
| GET | /v1/vat-check |
$0.002 | Validate an EU VAT number against the official VIES registry before invoicing, onboarding a customer, or applying a reverse charge. Per-country syntax is checked locally first, so invalid formats never touch the network. Valid numbers return the registered company name and address when VIES discloses them, plus an optional consultation number (requesterVat). Never a false 'invalid': if VIES is down you get a 503 and are not charged.{"vat":"IE6388047V"} |
| GET | /v1/vat-rates |
$0.001 | Look up current VAT rates for any EU member state — standard, reduced, super-reduced and parking rates plus the currency — from the European Commission's official figures. Filter to one rate category if you only need one. Ideal for pricing, invoicing and tax-calculation logic that must apply the right rate per country. Returns the source and the date the data was verified so you can trust and audit it.{"country":"FR"} |
| GET | /v1/iban-check |
$0.001 | Validate an IBAN structurally before you pay or store it: ISO 7064 mod-97 check digits plus the official per-country length and BBAN layout (~90 countries), returning the bank/branch/account breakdown for FR, DE, ES, IT, BE and NL. Structural validation only — no BIC directory lookup (SWIFT's BIC registry is proprietary) and no proof the account exists. Purely local, instant.{"iban":"FR76 3000 6000 0112 3456 7890 189"} |
| POST | /v1/qr |
$0.002 | Generate a QR code as PNG or SVG from any text or URL. Pick the size, error-correction level (L/M/Q/H) and foreground/background colours; a 4-module quiet zone is always included so it scans reliably. Returns the raw image bytes. No logo overlay (compositing is out of scope).{"data":"https://402utils.com","size":512,"ecLevel":"M"} |
| POST | /v1/ics |
$0.002 | Build a strictly RFC 5545-conformant .ics calendar file from a list of events: correct TEXT escaping, 75-octet line folding, generated UIDs, and unambiguous UTC timestamps (a per-event IANA timezone interprets naive wall-clock times). Supports all-day events, location, description and a passthrough RRULE. The fiddly conformance an agent shouldn't hand-roll.{"calendarName":"Launch","events":[{"title":"402utils launch","start":"2026-07-10T14:00:00","end":"2026-07-10T15:00:00","timezone":"Europe/Paris","location":"Online"}]} |
| GET | /v1/email-check |
$0.003 | Validate an email address before you accept a signup or send to it: RFC 5322 syntax, whether the domain resolves and its MX records, whether it is a disposable/throwaway domain (community blocklist), and whether it is a role account (info@, support@…). DNS is checked over DoH. No SMTP probing (intrusive and spammy), so a true 'domainExists' does not guarantee the mailbox exists.{"email":"user@example.com"} |
| GET | /v1/rss-to-json |
$0.002 | Fetch an RSS 2.0 or Atom feed and return clean JSON: feed title, link and description, plus items with title, link, ISO-8601 publishedAt, summary and author. Handles both formats and normalises the dates. The caller-supplied URL is SSRF-checked; the fetch is capped at 2 MB and 8 s.{"url":"https://blog.cloudflare.com/rss/","limit":10} |
| POST | /v1/pdf-extract |
$0.005 | Extract text from a PDF: send the PDF bytes directly, or a JSON body with a public {url}. Returns the full text, per-page text, and metadata (page count, title, author). Text layer only — scanned/image-only PDFs return empty text with a no_text_layer warning (no OCR). Max 10 MB.{"url":"https://example.com/document.pdf"} |
| POST | /v1/image-optimize |
$0.004 | Resize and convert an image (PNG, JPEG or WebP, up to 10 MB). Send the image bytes as the body and set options in the query: width, height, fit (contain or cover), format (webp/jpeg/png) and quality (JPEG). Returns the converted image bytes. WebP has no quality knob and AVIF is not supported (out of scope).{"width":800,"format":"webp"} |
# 1. Call it — get HTTP 402 with price + asset + network in the PAYMENT-REQUIRED header
curl -i -X POST https://402utils.com/v1/echo \
-H 'content-type: application/json' \
-d '{"msg":"hello farm"}'
# 2. Pay with any x402 client (signs a gasless USDC authorization; the
# facilitator settles on-chain) and it retries automatically:
# npx x402 fetch https://402utils.com/v1/echo — or @x402/fetch in code.