Avvio rapido
Da "nessun account" a "sessione creata + primo webhook ricevuto" in circa cinque minuti. Useremo il Node SDK; quello Python è quasi identico.
1. Ottieni le credenziali API
- Registrati su app.nexbasira.com — il flusso di bootstrap crea la tua organizzazione + utente admin in un solo passaggio.
- Vai su Admin → Credenziali API e clicca Emetti credenziale.
- Copia la coppia
nb_pub_*+nb_sec_*. Il secret viene mostrato esattamente una volta — salvalo subito nel tuo secrets manager.
2. Installa l'SDK
npm install @nexbasira/node Oppure per Python: pip install nexbasira.
3. Crea una sessione
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. Genera un invito per l'utente sul campo
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_..." Invia l'URL al tuo utente sul campo — lo apre su un telefono (Safari mobile o Chrome), concede i permessi per fotocamera + GPS, e l'operatore lo vede sulla dashboard SPA in meno di 30 secondi.
5. Collega il webhook
I webhook si attivano su session.created, session.completed,
evidence.added, recording.ready, audit.anchored,
signature.completed, e altri ancora. Registra un URL di recapito da Admin → Webhook e verifica la firma su ogni 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. (Opzionale) Incorpora il widget lato campo
Se preferisci ospitare l'esperienza dell'utente sul campo dentro la tua app rivolta ai clienti invece di usare il nostro URL ospitato, usa il widget 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(); App React? Usa il @nexbasira/react di <NexBasiraSession> componente — stessa superficie, React idiomatico.
Cosa hai adesso
- Sessioni create tramite API
- Utenti sul campo che si uniscono tramite URL di invito firmati (nessuna installazione di app)
- Webhook verificati + smistati nel tuo backend
- (Opzionale) esperienza lato campo incorporata dentro il tuo prodotto
Cosa c'è dopo
- Concetti — cosa sono davvero una Session, una riga Evidence e una Audit Chain
- Riferimento API completo — ogni endpoint con esempi
- Approfondimento sui webhook — tipi di evento, comportamento dei retry, idempotenza
- Configurazione SSO — OIDC + SAML per il tuo team IT