AirIndex Verify Widget
A three-line embeddable badge that surfaces AirIndex audit-chain verification on any cited AIX-ID. Drop it next to AirIndex data in your reports, dashboards, or published documents — readers click through to cryptographic proof at /verify/{aix-id}.
1. Integration
Three lines of code. The widget auto-scans the page for elements carrying a data-airindex attribute and renders each as a verification badge.
<div data-airindex="aix:hp:HD67TBTA"></div> <script src="https://www.airindex.io/widget/v1/verify.js" async></script>
That renders this badge inline:
Each badge is a link to airindex.io/verify/{aix-id} opening in a new tab. The verification page itself works without AirIndex servers after the initial fetch — DigiCert RFC 3161 TSA + OpenTimestamps + Bitcoin anchor, verifiable locally with openssl + ots.
2. Options
Configure each badge via additional data-attributes on the host element.
<div data-airindex="aix:hp:HD67TBTA"
data-airindex-theme="dark"
data-airindex-size="small"></div>| Attribute | Values | Default |
|---|---|---|
| data-airindex required — AIX-ID to verify | aix:hp:HD67TBTA | — |
| data-airindex-theme | light · dark · minimal | light |
| data-airindex-size | small · medium | medium |
3. Live Demo
All theme and size combinations rendered against the same sample AIX-ID (aix:hp:HD67TBTA — Iowa Methodist Medical Center heliport).
v2 · Live Verification
The badge above (v1) is a static navigation surface — it links to proof but always reads the same. v2 is a drop-in upgrade: same three lines, same data-attributes, but each badge fetches the real audit-chain status of its AIX-ID and renders it. Point the script tag at /widget/v2/verify.js to opt in; existing v1 embeds are unaffected.
<script src="https://www.airindex.io/widget/v2/verify.js" async></script> <div data-airindex="aix:hp:HD67TBTA"></div>
Each badge makes one call to /api/widget/verify/{aix-id} (CORS-open, hour-cached) and renders one of four honest states. The destination /verify/{aix-id} page stays independently verifiable with no AirIndex server in the trust path.
See the live fetch across every theme and size at /widget/v2/demo.html.
4. Dynamic Content (SPAs)
For React, Vue, Svelte, or any framework that mutates the DOM after initial load, call window.AirIndexWidget.refresh() after rendering new data-airindex elements. The widget tracks which elements have already been rendered, so re-running refresh() is idempotent.
// React useEffect after content renders:
useEffect(() => {
window.AirIndexWidget?.refresh();
}, [data]);5. Versioning
The widget is served from a versioned URL path so embeds never break. /widget/v1/ is the original static navigation badge and remains supported, unchanged. /widget/v2/ adds live audit-chain status on the same embed contract — opt in by pointing the script tag at it. Future breaking changes ship under a new version path; backward-compatible improvements ship in place.
6. License
The widget is free to use commercially with no attribution required beyond the link the widget itself surfaces. Same posture as the AIX-ID identifier system: free to look up, free to cite, free to use commercially. See AIX-ID License for the broader licensing framework.
See Also
- AIX-ID System Methodology — the identifier scheme this widget verifies against
- Cryptographic Provenance — the audit-chain construction the verification page uses
- AIX-ID Registry — browse identifiers across the 16 production namespaces