The same account-owned publish action, three ways.
Checked-in artifact and session-continuation adapters for Claude Code, Codex, Pi, Gemini CLI, and Copilot CLI. Public distribution is pending.
View release status →REST APIJSON or multipart HTTP for scripts, backends, and custom workflows.
View endpoint →CLI + skillsPortable artifact and session commands available to maintainers from the project checkout while public packages complete release validation.
View release status →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.
A minimal account request.
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.
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.
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>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.