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.com

Other 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 page

PATCH /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.