Asset Forge API gets out of your way. Five endpoints, one auth scheme, 100 free calls a day, 402 Payment Required when you hit the quota. Get a key, sign a request, ship.
If you sell anything in 2026, you'll do it via HTTP. Three things you ship at launch: an OG card, a sitemap, and a robots.txt — none of which should take you 30 minutes. This API gets them done in one line.
No signup. No checkout. No email roundtrip. Hit the endpoint, see a 402, pay $0.01 USDC on Base, retry. The server never learns who you are. The transfer is verifiable on-chain forever. That's the entire flow.
Three routes to try:
# 1. Demo (free, shared quota of 3,000/day) curl "https://asset-forge-hire.vercel.app/api/og?title=Hello&demo=1" -o og.svg # 2. Try without paying (returns 402) curl -i "https://asset-forge-hire.vercel.app/api/og?title=Hello" # 3. Pay 0.01 USDC on Base to 0x833ca7dcdb6a681ddc0c15982ef0d609bceb3a5e, # then retry with X-Payment header curl "https://asset-forge-hire.vercel.app/api/og?title=Hello" \ -H "X-Payment: 0x<txHash>" \ -o og.svg
The 402 body is a machine-readable x402 payment-requirements spec. Any wallet or agent that understands x402 can parse it and pay without human action.
GET No params. Returns { id, secret }. Sign your requests with secret.
GET Generate an SVG OG card from query string. Default is paid ($0.01 USDC on Base). Append &demo=1 for the free path.
| Param | Type | Required | Notes |
|---|---|---|---|
title | string | yes | Headline (≤ 80 chars) |
subtitle | string | no | ≤ 120 chars |
author | string | no | Byline |
url | string | no | Domain shown in footer |
demo=1 | flag | no | Use shared free quota (no payment needed) |
To pay: Read /api/payment-required, send 0.01 USDC to the recipient, retry with X-Payment: 0x<txHash>.
GET Builds robots.txt + sitemap.xml + llms.txt in one call. $0.01 USDC on Base. Append &demo=1 for the free path.
curl "https://asset-forge-hire.vercel.app/api/sitemap?domain=acme.com&demo=1"
GET Returns used/remaining for today.
curl "https://asset-forge-hire.vercel.app/api/usage?key=<id>"
GET Lists every available upgrade path. Returns x402 as the default with Ko-fi / Sponsors as a fallback.
GET Public. Returns the x402 payment-requirements object: recipient wallet, asset, amount, scheme. Read this BEFORE paying.
GET Multi-mode transform endpoint:
curl "https://asset-forge-hire.vercel.app/api/transform?kind=avatar&name=Mary+Smith&size=128&demo=1" curl "https://asset-forge-hire.vercel.app/api/transform?kind=preview&url=https://stripe.com&demo=1" curl "https://asset-forge-hire.vercel.app/api/transform?kind=badge&label=build&value=passing&status=passing&demo=1" curl "https://asset-forge-hire.vercel.app/api/transform?kind=stats"
Modes: preview (live URL fetch + OG meta parsing, $1 USDC), avatar (initials SVG, $0.01), badge (shields-style badges, $0.01), stats (free traffic counters).
/api/og, writes to public/og.svg, references it in your <head>./api/sitemap call gives you 3 files, ready to commit.| Tier | Price | What you get |
|---|---|---|
| Free (demo) | $0 | 3,000 calls/day from a shared bucket (any IP). Append &demo=1 to opt in. |
| Per-call (x402) | $0.01 USDC | One call. Pay USDC on Base, retry with X-Payment: 0x<txHash>. Verified on-chain, no signup. |
| Support | Pay what you want | Ko-fi · GitHub Sponsors. Funds go directly to the project. |
Why USDC on Base? Because the API does not run any human-facing payment processor.
An AI agent with a wallet can pay without anyone logging in. The recipient address
is 0x833ca7dcdb6a681ddc0c15982ef0d609bceb3a5e and is visible on-chain for every transfer, forever.