Skip to content
MISSIONBuilding to $50K/year · partnership threshold — every $20 subscription reserves 10 meals in the fund. Report published monthly.SEE THE PROGRESS →
DOC · UPDATED 2026-07-20

Sharing chats.

Publish any chat as a read-only public snapshot at /share/:slug. Images copied to a public bucket. PDFs stay private. Revocable any time.

Sharing is opt-in and per-chat. Nothing you type is ever public until you explicitly share the chat. When you do, LADLE takes a snapshot of the chat's current active branch (not the raw DB rows) and publishes it at /share/:slug — a public read-only page anyone with the link can view without an account.

What's in the snapshot

The snapshot is a copy of the active-branch messages at share time. It does NOT update as you continue chatting.

Messages on the active branchIncluded (role, content, model, created_at, citations)
Other branches (regenerate siblings)Not included
Image attachmentsCopied to a public bucket (shared-assets/), rendered inline in the share page
PDF attachmentsRepresented as chips — filename + size, but the bytes stay private
Custom instructions / memory / project knowledgeNot included (would leak private context)
Reasoning traces (thinking blocks)Not included
Second-opinion blocksNot included in the public snapshot

How to share

Three ways: (a) the SHARE button in the chat header (visible when the chat has at least one turn), (b) the 'Share this chat' action in ⌘K, (c) POST /api/app/chats/:id/share programmatically. All three produce the same result: a 10-character random slug, a full snapshot in shared_chats.content, and a modal with the URL + a COPY button.

URL model and privacy

Every share URL is a random 10-character slug from a-z0-9 (36^10 ≈ 3.7 × 10^15 possibilities).

Share URLhttps://ladle.chat/share/<10-char-slug>
DiscoverabilityNot indexable by search engines by default. Robots.txt disallows /share/*. Setting shared_chats.indexable = true opts a specific share in.
RevokeSettings → Data & privacy → your shares. Sets revoked_at; the public page returns 404 immediately.
Anon accessGET /share/:slug renders without auth. RLS is bypassed via a policy that allows unauthenticated read of un-revoked snapshots by slug only.

The public share page

Rendered at /share/:slug. Shows: chat title, snapshot capture timestamp, every message in the branch (user turns as chat bubbles, assistant turns with the ladle mark), citations, attachments (images inline, PDFs as chips), and a discreet 'Made in LADLE' footer with a link to signup. No user identity is shown; the sharer is not named.

Listing and revoking

GET /api/app/shared returns every share the caller has ever created (live + revoked). Settings → Data & privacy displays them with per-share Revoke buttons. Revoked shares stay in the DB (for the historical record) but the public page returns 404. Un-revoking is not supported — sharing again produces a new slug.

What you should think twice about sharing

Chats containing personally identifiable information about people other than yourself. Chats with API keys, tokens, or credentials in them. Chats where you asked for feedback on private drafts you don't want public. LADLE does not scan for these — the responsibility is yours. If you shared something you shouldn't have, revoke it; the public page is gone within seconds.

RELATED

Docs: Data export

Task guides in /help: Delete your data.

Docs stay current. Report drift.

If a limit in the product doesn't match the number on this page, that's a bug — help@ladle.chat.

See all docsWatch it work
$20/MO · CANCEL ANYTIME · $0.80/MEAL · RECEIPTS MONTHLY
Read the ledger →
0meals fundedROLLING TOTAL · UPDATED HOURLY
SEE THE RECEIPTS →