Szybki start
Od „brak konta" do „sesja utworzona + pierwszy webhook odebrany" w około pięć minut. Użyjemy SDK dla Node; wersja Python jest niemal identyczna.
1. Zdobądź poświadczenia API
- Zarejestruj się na app.nexbasira.com — przepływ bootstrap tworzy Twoją organizację + użytkownika administratora w jednym kroku.
- Przejdź do Admin → Poświadczenia API i kliknij Wystaw poświadczenie.
- Skopiuj parę
nb_pub_*+nb_sec_*. Sekret jest pokazywany dokładnie raz — zapisz go natychmiast w swoim menedżerze sekretów.
2. Zainstaluj SDK
npm install @nexbasira/node Lub dla Pythona: pip install nexbasira.
3. Utwórz sesję
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. Wygeneruj zaproszenie dla użytkownika terenowego
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_..." Wyślij URL do użytkownika terenowego — otwiera go na telefonie (mobilny Safari lub Chrome), wyraża zgodę na kamerę + GPS, a operator widzi go na pulpicie SPA w niecałe 30 sekund.
5. Podłącz webhook
Webhooki uruchamiają się przy session.created, session.completed,
evidence.added, recording.ready, audit.anchored,
signature.completed, i kilku innych. Zarejestruj URL dostarczenia w Admin → Webhooki i zweryfikuj podpis na każdym POST-cie:
// 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. (Opcjonalnie) Osadź widget po stronie terenowej
Jeśli wolisz hostować doświadczenie użytkownika terenowego wewnątrz własnej aplikacji skierowanej do klienta zamiast korzystać z naszego hostowanego URL-a, użyj widgetu embed:
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(); Aplikacja React? Użyj zamiast tego komponentu @nexbasira/react's <NexBasiraSession> — ta sama powierzchnia, idiomatyczny React.
Co masz teraz
- Sesje tworzone przez API
- Użytkownicy terenowi dołączający przez podpisane URL-e zaproszeń (bez instalacji aplikacji)
- Webhooki zweryfikowane + rozsyłane w Twoim backendzie
- (Opcjonalnie) osadzone doświadczenie po stronie terenowej wewnątrz Twojego produktu
Co dalej
- Koncepcje — czym właściwie są Sesja, wiersz Dowodu i Łańcuch audytu
- Pełna referencja API — każdy endpoint z przykładami
- Webhooki w głębi — typy zdarzeń, zachowanie ponawiania, idempotencja
- Konfiguracja SSO — OIDC + SAML dla Twojego zespołu IT