Create an API key
Sign up, mint a key, keep it server-side. Your backend mints short-lived tokens for each embed.
Embed file uploads. Gate on valid.
Embed collection in your app. Query which documents are still good, gate the next action, and get signed webhooks when something is missing, expiring, or expired — no portal, your auth, your branding.
import { DocumentChecklist } from '@holectus/react';
import '@holectus/react/styles.css';
export function SubjectDocuments({ subjectId }) {
return (
<DocumentChecklist
tokenEndpoint={`/api/holectus/session?s=${subjectId}`}
/>
);
}Built for developers
How it works
Sign up, configure slots, embed. Holectus tracks status and validity inside your product — not a portal your users log into.
Sign up, mint a key, keep it server-side. Your backend mints short-lived tokens for each embed.
Required files, optional templates, size and type rules, approval settings. Bundle slots into sets when you need packs.
Mount the components. Call assert_valid before a critical action, and subscribe to signed webhooks so your backend can remind, chase, or refuse to proceed.
Components
Collection is how files get in. Validity is the gate. Mount both embeds behind the identity you already have — Holectus never talks to your end users.
Government ID
Proof of address
Insurance certificate
Signed W-9
Webhooks
document.expiring, document.expired, and validity.changed land on your backend as signed events. Gate an action, send a reminder, or chase a renewal — email and SMS stay in your stack.
{
"eventType": "document.expired",
"subjectId": "drv_1042",
"status": "expired",
"slotName": "Insurance certificate",
"expiresAt": "2026-08-01T00:00:00.000Z",
"occurredAt": "2026-08-01T00:00:00.000Z"
}The lifecycle
A reviewer accepting a file is one state. valid means the requirement is currently satisfied, including expiry math. Query it — do not re-implement the clock.
Get a subject checklist running today — then assert validity before you unlock the next step.