# 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