Docs
Deploy HTML from the command line or directly over the REST API. Anonymous use is fully supported via a one-time edit token; no account required. Markdown artifacts are planned — see the roadmap.
CLI
No install required — run it with npx. Sign in once (opens your browser), then deploy any HTML file:
npx artifact-host auth login
npx artifact-host deploy ./index.html --ttl 7d
# self-hosted instance:
npx artifact-host auth login --host https://artifacts.your-co.com
npx artifact-host deploy ./index.html --host https://artifacts.your-co.comOther commands: list, update <slug> <file>,visibility <slug> public|password, delete <slug>,comments <slug> [--json]. In CI, skip the browser with ARTIFACT_HOST_TOKEN.
REST API
POST /api/deploy — create an artifact. Body:
{
"content": "<!doctype html>…", // required, ≤ 5 MB
"ttl": "7d", // 1h | 1d | 7d | 30d (default 7d)
"visibility": "public", // public | password
"password": "…" // required when visibility = password
}
→ 201 { "slug", "url", "edit_token", "expires_at" }PATCH /api/artifacts/{slug} — update content or visibility. Authorize with the edit token via the x-edit-token header (or edit_token in the body).
// Update content
PATCH /api/artifacts/x7k2
x-edit-token: <token>
{ "content": "<!doctype html>…" }
→ { "slug", "url", "expires_at" }
// Change visibility
PATCH /api/artifacts/x7k2
x-edit-token: <token>
{ "visibility": "password", "password": "…" }
→ { "ok": true }Limits: 5 MB per artifact; up to 5 live artifacts per anonymous user (bucketed by IP); expiry is set once at deploy and never extended by updates.
Comments
Owners enable comments per artifact with the Allow comments toggle (deploy panel or dashboard editor). Signed-in viewers see comment pins rendered directly on the page — hover a pin to read the comment, or click the 💬 pill (bottom-right) to enter comment mode: click anywhere to drop a pin, or select text to attach a highlight. Resolved comments are hidden in-page; list or reopen them via the API or CLI.
Permissions: reading comments is open to anyone who can view the artifact. Posting requires a signed-in account. On public and password-protected artifacts any signed-in viewer can post. On restricted artifacts each invited person carries a View or Commentrole (set in the share editor). The API never exposes commenters' email addresses — only a display name.
GET /api/artifacts/{slug}/comments — list comments (anyone who can view).
→ { "comments": [{ "id", "body", "anchor", "author_name", "resolved", "created_at" }] }POST /api/artifacts/{slug}/comments — add a comment (sign-in + comment permission).
{ "body": "…", "anchor": { "kind": "pin"|"highlight", "x": 0.5, "y": 0.3, "quote": "…" } }
// x, y are normalized 0–1 relative to the rendered pagePATCH /api/artifacts/{slug}/comments/{id} — edit body (author) or mark resolved (owner or commenter). DELETE — author or owner.
Enable or disable comments on an artifact: PATCH /api/artifacts/{slug} { "comments_enabled": true } (owner only).
From the CLI, artifact comments <slug> --json returns the full structured comment thread — useful for an AI agent to read and act on.