# sloppy.space
> Free hosting for HTML pages, interactive docs and small games made with AI. Upload one HTML file or a zip and get a public link. No account is needed.
## Publish a page (agents: do this)
Send the HTML file as the request body:
curl -sS -X POST https://sloppy.space/api/sites \
-H 'Content-Type: text/html' \
--data-binary @page.html
For a multi-file site, zip it with `index.html` at the zip root:
curl -sS -X POST https://sloppy.space/api/sites \
-H 'Content-Type: application/zip' \
--data-binary @site.zip
A `201` response is JSON:
{"slug":"k3x9q2m7a1bz","url":"https://k3x9q2m7a1bz.sloppy.page/","revision":1,
"token":"...","expires_at":"2026-11-01T12:00:00Z","files":1,"bytes":3045}
- Give the user the `url`.
- Keep the `token`, and show it to the user. It is the only way to update or delete the site, and it is never shown again.
- Anonymous sites expire after 7 days. Publishing a new revision renews the expiry.
## Update or delete
curl -sS -X PUT https://sloppy.space/api/sites/ \
-H 'Authorization: Bearer ' -H 'Content-Type: text/html' \
--data-binary @page.html
curl -sS -X DELETE https://sloppy.space/api/sites/ -H 'Authorization: Bearer '
## Rules and limits
- One upload is at most 5 MiB. Each IP address can make 5 anonymous uploads and send 20 MiB per hour.
- Files are stored and served byte for byte. Each site gets its own origin under `sloppy.page`.
- Pages can run JavaScript. They cannot read cookies or storage from other sites.
- Errors are JSON: `{"error":"","message":"..."}`.
- `413`: too large.
- `429`: rate limited; wait for the `Retry-After` header.
- `503`: busy; retry after `Retry-After`.
- Do not publish secrets, personal data you were not asked to share, or anything illegal. Report abuse at https://sloppy.space/abuse.
## More
- API reference: https://sloppy.space/docs
- Terms: https://sloppy.space/terms