Quick start
Publish a site in three steps — no account needed
A site is not live until finalize succeeds. The whole flow is three HTTP calls.
1. Create
Send a manifest of the files you want to publish:
curl -X POST https://shiply.now/api/v1/publish \
-H "content-type: application/json" \
-d '{
"files": [
{ "path": "index.html", "size": 128, "contentType": "text/html" }
]
}'The response contains everything you need:
{
"slug": "plucky-otter-4x2j",
"siteUrl": "https://plucky-otter-4x2j.shiply.now/",
"upload": {
"versionId": "01KTVKX3QN…",
"uploads": [
{ "path": "index.html", "method": "PUT", "url": "https://…", "headers": { "Content-Type": "text/html" } }
],
"finalizeUrl": "https://shiply.now/api/v1/publish/plucky-otter-4x2j/finalize",
"expiresInSeconds": 3600
},
"claimToken": "…",
"claimUrl": "https://shiply.now/claim?slug=…&token=…",
"expiresAt": "2026-06-13T00:00:00.000Z",
"anonymous": true
}Save the claimToken — it is returned only once.
2. Upload
PUT each file's raw bytes to its presigned URL (parallel uploads are fine):
curl -X PUT "<upload.uploads[0].url>" \
-H "Content-Type: text/html" \
--data-binary @index.html3. Finalize
curl -X POST "<upload.finalizeUrl>" \
-H "content-type: application/json" \
-d '{"versionId": "<upload.versionId>"}'Your site is now live at the siteUrl. Anonymous sites expire after 24 hours —
open the claimUrl (or sign in and claim) to keep it forever.