# boomurl.com
> Publish a static website (HTML/CSS/JS/images) and get an instant public URL — no build step, no account. Ideal for AI coding agents: generate files, publish in one authenticated HTTP call, get a live HTTPS URL.
Published sites are served at https://boomurl.site//. A free site shows a small ad banner. Static files only; nothing executes server-side. Limits: 50 MB and 500 files per site.
## Quickstart for agents (HTTP API)
Auth is a bearer API key (`boom_sk_...`). Mint one once (proves email ownership), then reuse it.
1. Request a code (emails a 6-digit code to you):
`POST https://boomurl.com/api/v1/keys/request` body: `{"email":"you@example.com"}`
2. Mint the key (returns the secret ONCE):
`POST https://boomurl.com/api/v1/keys` body: `{"email":"you@example.com","code":"123456","label":"my-agent"}`
-> `{"key":"boom_sk_..."}`
3. Publish or update a site (idempotent by name):
`PUT https://boomurl.com/api/v1/sites/` header: `Authorization: Bearer boom_sk_...`
body: `{"files":{"index.html":"hi
","style.css":"..."}}`
-> `{"url":"https://boomurl.site//"}`
(Binary files: set `"base64":true` and base64-encode the values.)
Other endpoints:
- `GET /api/v1/sites` — list your sites
- `GET /api/v1/sites/` — status (exists / owned / url)
- `DELETE /api/v1/sites/` — delete your site
- `GET /api/v1/keys` / `DELETE /api/v1/keys/` — manage keys
## Use your own domain (apex or subdomain)
Point a domain you own at your site. boomurl sets up Cloudflare + HTTPS; the user
just changes their domain's nameservers once.
1. Attach (returns the two nameservers to set):
`POST https://boomurl.com/api/v1/sites//domains` header: `Authorization: Bearer boom_sk_...`
body: `{"domain":"example.com"}` (apex or `blog.example.com`)
-> `{"nameservers":["x.ns.cloudflare.com","y.ns.cloudflare.com"],"instructions":"..."}`
2. Tell the user: at their registrar, set the domain's **nameservers** to those two.
3. Poll until live (HTTPS issues automatically):
`GET https://boomurl.com/api/v1/sites//domains` -> each domain has `nsDelegated`, `tlsReady`, `live`.
- `GET /api/v1/sites//domains/` — status of one domain
- `DELETE /api/v1/sites//domains/` — disconnect a domain
Notes: you must own the site (key's email). A domain can only attach to one site.
Until the user changes nameservers, the domain stays `pending` (and is released after 48h).
Rules: a key only acts on sites owned by its email. Names are first-come; `index.html` at the top level is required. Errors are JSON `{ "error", "code" }`.
## Docs
- OpenAPI spec: https://boomurl.com/openapi.json (usable directly as a ChatGPT Action)
- Agent guide: https://boomurl.com/docs/agents
- Terms of Use: https://boomurl.com/terms