Skip to content
Aletheca

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.

Anywhere in the page
<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

uap.nexus/cases/2026-03-11
<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.

CSS custom properties
.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.