Pay-per-upload static site hosting — upload a zip, get a live HTTPS subdomain for 6 months.
What it does
StableUpload's `/api/site` endpoint lets you purchase a static site hosting slot by paying per call via MPP (Tempo) or x402. You POST a JSON body with a filename and tier selection, receive a presigned S3 upload URL, then PUT your zip file to that URL. A subsequent call to `/api/site/activate` extracts the zip and serves the site at `https://{uploadId}.s.stableupload.dev/`. Sites support custom domains with automatic Cloudflare TLS, custom response headers via a `_headers` file (useful for WASM/COOP/COEP), and free updates by re-uploading a new zip to the same upload ID.
Three pricing tiers are available based on uncompressed site size: 10 MB for $0.02, 100 MB for $0.20, and 1 GB for $2.00. Each tier grants 6 months of hosting, extendable via the `/api/site/renew` endpoint (up to 10 periods at a time). Sites are limited to 500 files. Files are stored on AWS S3 and presigned upload URLs expire after 1 hour. No API keys are required — payment is handled inline via the MPP Tempo protocol (pathUSD) or x402. Wallet-based authentication (SIWX) is used for non-paid management operations like activating, updating, and attaching custom domains.
The full site hosting workflow involves multiple endpoints: `POST /api/site` (paid, creates slot), `PUT /api/site` (SIWX, gets new upload URL for updates), `POST /api/site/activate` (SIWX, extracts zip), `POST /api/site/domain` (SIWX, attaches custom domain), and `GET /api/site/domain/status` (SIWX, polls TLS status). Payment settlement uses pathUSD on Tempo L2 (currency address `0x20c0000000000000000000000000000000000001`).
Capabilities
Use cases
- —AI agents deploying generated static websites or documentation without managing infrastructure
- —Publishing a single-page app or landing page from a zip archive with a custom domain
- —Hosting WASM applications that require COOP/COEP headers
- —Programmatic site deployment in CI/CD pipelines using crypto micropayments
- —Temporary project hosting for demos, prototypes, or event pages with a 6-month TTL
Fit
Best for
- —AI agents that need to publish static content to a public URL autonomously
- —Developers wanting zero-config static site hosting paid per upload with no accounts
- —Deploying small to medium static sites (up to 1 GB uncompressed, 500 files)
- —Projects needing custom domains with automatic HTTPS provisioning
Not for
- —Dynamic server-side applications or sites requiring backend compute
- —Long-term permanent hosting without periodic renewal (files deleted on expiry)
- —Sites exceeding 1 GB uncompressed or 500 files
Quick start
# 1. Buy a site upload slot (payment handled via MPP/x402)
curl -X POST https://stableupload.dev/api/site \
-H "Content-Type: application/json" \
-d '{"filename": "my-site.zip", "tier": "10mb"}'
# 2. Upload your zip to the returned uploadUrl
curl -X PUT "$uploadUrl" \
-H "Content-Type: application/zip" \
--data-binary @my-site.zip
# 3. Activate the site (requires SIWX auth)
curl -X POST https://stableupload.dev/api/site/activate \
-H "Content-Type: application/json" \
-d '{"uploadId": "<uploadId>"}'Example
Request
{
"tier": "100mb",
"filename": "my-site.zip"
}Response
{
"maxSize": 104857600,
"uploadId": "k7gm3nqp2",
"expiresAt": "2026-01-15T00:00:00.000Z",
"uploadUrl": "https://s3.amazonaws.com/bucket/k7gm3nqp2?X-Amz-Signature=...",
"curlExample": "curl -X PUT 'https://s3.amazonaws.com/bucket/k7gm3nqp2?...' -H 'Content-Type: application/zip' --data-binary @my-site.zip"
}Endpoint
Quality
Full OpenAPI 3.1 schema with detailed x-guidance documentation, clear pricing tiers, and well-defined request/response schemas. The MPP probe returned 405 because the endpoint only accepts POST (not HEAD/GET), which is expected behavior — the OpenAPI spec confirms it's a POST-only paid endpoint. Docked slightly because no live 402 challenge was captured and the docs page returns 404.
Warnings
- —MPP probe returned 405 on HEAD/GET — endpoint is POST-only; the probe did not attempt POST so no 402 challenge was captured directly
- —The /docs page returns 404; all documentation comes from the OpenAPI x-guidance field
- —Expired sites cannot be renewed — files are permanently deleted on expiry
Citations
- —Three pricing tiers: 10mb ($0.02), 100mb ($0.20), 1gb ($2.00) with 6-month TTLhttps://stableupload.dev
- —Sites limited to 500 files, tier limit applies to uncompressed sizehttps://stableupload.dev/.well-known/x402
- —Files stored on AWS S3; upload URLs expire after 1 hourhttps://stableupload.dev/.well-known/x402
- —Custom domains get automatic HTTPS via Cloudflare DV cert (~30s with DCV delegation)https://stableupload.dev/.well-known/x402
- —Payment via MPP Tempo (pathUSD) or x402 protocolhttps://stableupload.dev/.well-known/x402
- —Pay in USDC on Base, Solana, or Tempohttps://stableupload.dev