QuickStatic Skills
Purpose
QuickStatic is an anonymous static-site publisher:
- upload a zip
- get a public URL
- no login required
Base
- API Base URL:
https://667661.xyz - Public URL pattern:
https://{slug}.667661.xyz
Core API
1) Upsert site (create or update)
POST /v1/sites/{site_key}Content-Type: multipart/form-data- Form fields:
- file (required): zip archive, must include index.html - slug (optional): custom subdomain slug
2) Query site
GET /v1/sites/{site_key}
3) Delete site
DELETE /v1/sites/{site_key}
site_key Rules
- Regex:
[A-Za-z0-9_-]{22} - Reusing the same
site_keyupdates the same site (new version).
slug Rules
- Allowed chars: lowercase letters, digits, hyphen
- Length: 3-63
- Reserved values not allowed:
api,www,admin,root,static - If omitted, server auto-generates slug
- Conflict returns
409with codeSLUG_TAKEN - Expired sites still occupy slug until purge/delete
Lifecycle
- Site expires in 30 days
- After expiry, visitors see expired page
- Internal purge at 60 days
Limits
- zip upload size
< 30 MiB - zip must be valid/safe (no traversal/symlink)
- server enforces unzipped size and file count limits
Success Response
Typical fields:
site_keyslugurlstatus(active | expired | deleting)created_atexpires_atversion
Error Format
{
"detail": {
"error": {
"code": "ERROR_CODE",
"message": "Human readable message"
}
}
}Common codes:
INVALID_SITE_KEYINVALID_SLUGSLUG_TAKENFILE_TOO_LARGEINVALID_ZIPMISSING_INDEX_HTMLSITE_NOT_FOUND
AI Usage Guidelines
- Generate one stable
site_keyper project and reuse it for updates. - Always upload via multipart form.
- Pass
slugonly when explicit custom domain is needed. - Handle
409 SLUG_TAKENby selecting another slug. - Treat
4xxas user/input issues and5xxas retryable service issues.
Example Calls
Create/Update:
curl -X POST "https://667661.xyz/v1/sites/Q8w2mV7rNf3kT1pXy6ZdSa" \
-F "file=@site.zip" \
-F "slug=my-site"Query:
curl "https://667661.xyz/v1/sites/Q8w2mV7rNf3kT1pXy6ZdSa"Delete:
curl -X DELETE "https://667661.xyz/v1/sites/Q8w2mV7rNf3kT1pXy6ZdSa"