Every request goes to $PAGEPIN_BASE — the scheme and host of the pagepin instance, no trailing slash — and carries Authorization: Bearer $PP_TOKEN, a Personal Access Token. The token is SHA-256 hashed at rest and never needs to be pasted into chat: the skill obtains it through a browser device-login the first time. There is no bespoke client to install; the same calls work against the hosted instance or your own self-hosted one.
Authoritative quotas and your handle always come from GET /api/me. Deployed sites are private by default — reachable only after login — so make a site public or mint a share link before sending it to someone outside the instance.
A multipart/form-data upload. files (content) and paths (in-site relative path) come in pairs and may repeat for a multi-file site. Re-deploying the same slug appends a new version and flips the current pointer atomically. A single HTML file is safest as paths=index.html.
For sites over ~90MB there's a 3-step batched flow (deploys → …/files → …/commit); see the full reference. Visibility is controlled separately with PATCH /api/sites/<slug> — {"visibility":"public","public_hours":72} opens a bounded, auto-reverting public window.
Returns open threads (add ?all=true to include resolved ones). Each thread carries a selector ("@page" means whole-page feedback), a kind (copy / style / question / bug, may be null), resolved and stale flags, the threaded comments with authors, and a deep-link url. This is the channel the agent reads, fixes against, and redeploys.
Close the loop with POST /api/sites/<slug>/comments/<thread_id>/replies to reply and PATCH …/comments/<thread_id> with {"resolved":true}. A question the agent can't judge should be relayed to you, not resolved on your behalf.
Mints a short https://<content-host>/s/<code> URL. Anyone opening it can view the private site and pin comments as a guest — no account. Both fields are optional and links never expire by default; pass hours for a self-expiring link (server-capped, default 720h) or label to tell links apart. Revoke one link or all of them to cut guests off.
All endpoints authenticate the same way. See the API reference for request bodies, limits, and error codes.
| Method & path | Purpose |
|---|---|
GET /api/me | Verify the token; returns handle, content base, limits, quota |
GET /api/me/usage | Current storage usage against the instance limits |
GET /api/sites | List your sites |
POST /api/sites/<slug>/deploy | Deploy / update — one atomic version (multipart) |
PATCH /api/sites/<slug> | Set visibility & public_hours, title, or SPA fallback |
GET /api/sites/<slug>/versions | Version list, including the current one |
POST /api/sites/<slug>/rollback | Point the current version backward by version_id |
DELETE /api/sites/<slug> | Delete the site |
GET /api/sites/<slug>/comments | Review comments (unresolved by default; ?all=true for all) |
POST /api/sites/<slug>/comments/<id>/replies | Reply to a thread |
PATCH /api/sites/<slug>/comments/<id> | Resolve or reopen a thread |
POST /api/sites/<slug>/share-link | Mint a guest share link (never expires by default) |
GET /api/sites/<slug>/share-links | List active share links |
DELETE /api/sites/<slug>/share-links/<code> | Revoke one link (and kick its guest sessions) |
DELETE /api/sites/<slug>/share-link | Revoke all outstanding share links for the site |
limits returned by GET /api/me. Error bodies are { "detail": "…", "code": "…" }; branch on the stable code, not the localized message.npx skills add pagepin/pagepin -g
Free during Beta, or self-host under Apache-2.0. One token, one base URL, and the review loop is an API.