API
One request publishes a site. No account is needed. The same instructions, in plain text for agents, are at /llms.txt.
Publish
curl -sS -X POST https://sloppy.space/api/sites \ -H 'Content-Type: text/html' \ --data-binary @page.html
For several files, zip them with index.html at the zip root and send Content-Type: application/zip.
A 201 answer is JSON:
{"slug": "k3x9q2m7a1bz",
"url": "https://k3x9q2m7a1bz.sloppy.page/",
"revision": 1,
"token": "…",
"expires_at": "2026-11-01T12:00:00Z",
"files": 1, "bytes": 3045}
Keep the token. It is the only way to update or delete the site, and it is shown only once. Sites uploaded without an account expire after 7 days; publishing a new revision renews them.
Update
curl -sS -X PUT https://sloppy.space/api/sites/<slug> \ -H 'Authorization: Bearer <token>' \ -H 'Content-Type: text/html' --data-binary @page.html
Delete
curl -sS -X DELETE https://sloppy.space/api/sites/<slug> \ -H 'Authorization: Bearer <token>'
Limits and errors
- An upload is at most 5 MiB. Each IP address can make 5 anonymous uploads and send 20 MiB per hour.
- Errors are JSON:
{"error": "<code>", "message": "…"}.413: the upload is too large.429: rate limited.503: busy.
429and503, retry after theRetry-Afterheader. - Files are served byte for byte, each site on its own origin under
sloppy.page.