Documentation / Start

Build here.
Open anywhere.

Linkifact publishes offline HTML through an isolated renderer and moves selected coding-agent conversations through a redacted continuation bundle. Start in your agent or use the versioned API.

01 / Pick an interface

The same account-owned publish action, three ways.

02 / Make an artifact

Keep the document self-contained.

Embed CSS, data, and small assets directly in the HTML. The release-safe profile is HTML/CSS-only: scripts, event handlers, forms, frames, downloads, workers, and known active URL carriers are rejected. Same-document fragment links and native controls such as details remain available. A deny-by-default CSP blocks remaining network loads, while the opaque sandbox prevents navigation of the parent page.

Never put a secret in an artifact. Linkifact checks common credential patterns, but the share URL remains a bearer link that anyone can open.
03 / Publish

A minimal account request.

Account required. Create a scoped API key in the signed-in app and keep it out of source control, logs, and chat output.
curl https://api.linkifact.com/v1/artifacts \
  --header 'Authorization: Bearer lfk_<account API key>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: lfpr_<52 lowercase base32 characters>' \
  --header 'X-Linkifact-Publish-Recovery: 1' \
  --data '{
    "title": "Tiny weather map",
    "html": "<!doctype html><title>Map</title>..."
  }'

Before using the REST API, generate and durably save a 256-bit lfpr_ retry identity; the placeholder above is not a literal token. Retry an uncertain response only with the same document, normalized title, key, and recovery-protocol header. Use a new key after changing the request.

{
  "id": "aaaaaaaaaaaaaaaaaaaaaaaaaa",
  "url": "https://linkifact.com/artifacts/aaaaaaaaaaaaaaaaaaaaaaaaaa",
  "expires_at": "2026-12-01T16:42:00.000Z"
}

The branded share URL is safe to pass around. Its fixed wrapper loads user HTML only through the opaque sandbox on pages.linkifact.com. Owner operations remain attached to the authenticated account; agent clients must keep the scoped API key private and return only the public URL and exact expiry in routine output.

04 / Understand expiry

Every response states the exact expiry.

Free-account artifacts retain their stable URL for 90 days after the latest successful version update; shared sessions retain their returned expiry from publication. At expiry, the cookie-free renderer inside the branded URL begins returning 410 Gone. The outer noindex wrapper remains a 200 platform shell so it can display the expiry state; no user content is served. Object cleanup follows asynchronously.

05 / Continue an agent session

Selected context in. Portable context out.

Session exchange begins only after you explicitly choose an operation, source adapter, and input path. Linkifact never searches native transcript directories. Structured adapters exclude recognized tool calls and results unless you ask to include them. Opaque Markdown exports can contain tool or terminal output and need full review.

# First save a user-selected Codex conversation export as codex-session.md
linkifact session export <codex-session.md> --adapter generic-markdown --output <bundle.json>
Review before sharing. Automated redaction catches common credentials and absolute paths, but unknown secrets, personal data, and proprietary code can remain. Inspect the local bundle before confirming publication.
linkifact session recovery-key --output <private-publish-key>
LINKIFACT_API_TOKEN=<sessions:write token> linkifact session publish <bundle.json> \
  --confirm-privacy \
  --idempotency-key-file <private-publish-key>

The first command creates an owner-private CSPRNG key without printing it; do not open, paste, stage, or commit that file. Account publication returns two different public bearer URLs: the branded url is the human viewer, while bundle_url is the direct cookie-free download for import. Reuse the same key file only for an uncertain retry of the unchanged reviewed bundle.

linkifact session import <bundle_url> --target claude-code --output <context.md>
# Review context.md, then explicitly attach or paste it into a new Claude Code request.

Import selects a versioned target renderer and produces injection-warned Markdown with target-specific filename and handoff guidance. It never edits a harness session store and cannot restore hidden prompts, branches, prior approvals, model state, or live tool handles. The recipient reviews the continuation file and deliberately supplies it to the target harness; Linkifact does not send it to a model provider. This is continuation context, not native resume.