Schnellstart
Von „kein Konto“ zu „Sitzung erstellt + erster Webhook empfangen“ in etwa fünf Minuten. Wir verwenden das Node-SDK; Python ist nahezu identisch.
1. API-Credentials beschaffen
- Registrieren Sie sich unter app.nexbasira.com — der Bootstrap-Ablauf erstellt Ihre Organisation + den Admin-Nutzer in einem Schritt.
- Gehen Sie zu Admin → API-Credentials und klicken Sie auf Credential ausstellen.
- Kopieren Sie das
nb_pub_*+nb_sec_*-Paar. Das Secret wird genau einmal angezeigt — speichern Sie es sofort in Ihrem Secrets Manager.
2. Das SDK installieren
npm install @nexbasira/node Oder für Python: pip install nexbasira.
3. Eine Sitzung erstellen
import { NexBasira } from "@nexbasira/node";
const nb = new NexBasira({
apiKey: process.env.NB_PUBLIC_KEY!,
apiSecret: process.env.NB_SECRET_KEY!,
});
const session = await nb.sessions.create({
notes: "Vehicle damage — claim CL-2026-0042",
scheduled_for: "2026-05-23T10:00:00Z",
});
console.log("Session id:", session.id);
// → "0c8f4d2e-..." 4. Eine Einladung für den Außendienst-Nutzer prägen
const invite = await nb.sessions.invite(session.id, {
recipient_email: "alex@policyholder.com",
send_email: true,
});
console.log("Field URL (shown ONCE):", invite.url);
// → "https://app.nexbasira.com/join/0c8f.../?t=tok_..." Senden Sie die URL an Ihren Außendienst-Nutzer — er öffnet sie auf einem Telefon (mobiles Safari oder Chrome), erteilt Kamera- + GPS-Berechtigungen, und der Operator sieht ihn in unter 30 Sekunden auf dem SPA-Dashboard.
5. Den Webhook verdrahten
Webhooks feuern bei session.created, session.completed,
evidence.added, recording.ready, audit.anchored,
signature.completed, und einigen weiteren. Registrieren Sie eine Zustell-URL unter Admin → Webhooks und verifizieren Sie die Signatur bei jedem POST:
// Express handler
app.post("/nb-webhook", express.raw({ type: "application/json" }), (req, res) => {
const sig = req.header("NB-Signature")!;
const secret = process.env.NB_WEBHOOK_SECRET!;
try {
const event = nb.webhooks.constructEvent(req.body, sig, secret);
// event is now type-narrowed by event.type
switch (event.type) {
case "session.completed":
await onSessionCompleted(event.data);
break;
case "audit.anchored":
await onAuditAnchored(event.data);
break;
}
res.status(204).end();
} catch (err) {
if (err instanceof InvalidSignatureError) {
return res.status(401).send("bad signature");
}
throw err;
}
}); 6. (Optional) Das Feldseiten-Widget einbetten
Wenn Sie die Außendienst-Nutzer-Experience lieber in Ihrer eigenen kundenseitigen App hosten möchten, statt unsere gehostete URL zu verwenden, nutzen Sie das Embed-Widget:
import { embed } from "@nexbasira/embed";
const widget = embed({
container: "#nb-host",
sessionUrl: invite.url,
onSessionComplete: (id) => router.push(`/inspections/${id}`),
});
// Imperative methods on the returned handle:
widget.requestSnapshot();
widget.openWhiteboard();
widget.endSession(); React-App? Verwenden Sie die @nexbasira/reacts <NexBasiraSession> -Komponente stattdessen — dieselbe Oberfläche, idiomatisches React.
Was Sie jetzt haben
- Über die API erstellte Sitzungen
- Außendienst-Nutzer, die über signierte Einladungs-URLs beitreten (keine App-Installation)
- In Ihrem Backend verifizierte + verarbeitete Webhooks
- (Optional) eingebettete Feldseiten-Experience in Ihrem Produkt
Wie es weitergeht
- Konzepte — was eine Sitzung, eine Beweis-Zeile und eine Audit-Kette wirklich sind
- Vollständige API-Referenz — jeder Endpunkt mit Beispielen
- Webhooks im Detail — Event-Typen, Wiederholungsverhalten, Idempotenz
- SSO-Einrichtung — OIDC + SAML für Ihr IT-Team