Embed
One script tag. Your interface, your domain, our pipeline.
The embed renders into your page rather than into an iframe, inherits your CSS custom properties where you let it, and falls back to a hosted iframe when a content-security policy forbids inline styling.
<script src="https://aletheca.com/embed/v1.js" data-partner="uap-nexus" data-theme="inherit" async ></script>
Surfaces
Each surface is a div with a data-aletheca attribute. The script scans on load and on DOM mutation, so surfaces rendered by your own framework are picked up without a second call.
- data-aletheca="request-button"
The workhorse. Opens the composer pre-filled from whatever the page is about — a case, a place, a person — takes the payment and files it. Your site never touches a letter, a card or an agency.
data-agencydata-prefill-titledata-prefill-scopedata-campaigndata-label - data-aletheca="docket"
The public queue, filtered to your subjects. Votes and contributions happen inline; a visitor without an account is sent to the house sign-in and returned to your page.
data-tagdata-agencydata-campaigndata-limitdata-sort - data-aletheca="campaign"
A funding panel for a set of related requests, with the progress bar, the requests already filed and what each one returned.
data-campaigndata-show-requests - data-aletheca="request"
One request's live status: disposition, statutory clock, and the last few ledger events. Drop it on a case page and it updates itself as the agency moves.
data-requestdata-compact - data-aletheca="feed"
The activity ledger, filtered to requests your site originated — or to a tag, an agency or a campaign.
data-partnerdata-tagdata-limit
A case page, end to end
<div
data-aletheca="request-button"
data-agency="faa"
data-prefill-title="Radar and ATC audio, SLC sector, 11 Mar 2026"
data-prefill-scope="All radar data (NTAP or equivalent), controller
audio recordings and position reports for Salt Lake City ARTCC
sectors 14 and 16 between 0200Z and 0500Z on 11 March 2026."
data-campaign="aaro-resolution-record"
data-label="Request the records"
></div>
<div
data-aletheca="request"
data-request="ALT-2026-0097"
data-compact="true"
></div>Theming
With data-theme="inherit" the embed reads your page’s computed colours and type. Override any of them explicitly, or set data-theme="aletheca" to keep the archive’s own dialect, which is the right choice when the embed should read as a citation rather than as part of your interface.
.aletheca-embed {
--alx-bg: transparent;
--alx-fg: var(--your-text);
--alx-accent: var(--your-accent);
--alx-border: var(--your-hairline);
--alx-radius: 6px;
--alx-font: inherit;
}What the embed will never do
Track your readers
No advertising identifiers, no cross-site cookie, no fingerprinting. The only state it keeps is a first-party record of which surface a visitor interacted with, so a returning contributor sees their own contribution reflected.
Take a payment in your DOM
Card details are entered in a Stripe-hosted context, never in a field the embed rendered. Your site stays out of PCI scope entirely.
Block your page
The script is async, under 14 KB compressed, renders nothing until a surface is found, and degrades to a plain link to aletheca.com if it fails to load at all.
Server-side instead? The REST API does everything the embed does, and webhooks push the results back to you.