Démarrage rapide
De « aucun compte » à « session créée + premier webhook reçu » en environ cinq minutes. Nous utiliserons le SDK Node ; Python est presque identique.
1. Obtenir des identifiants API
- Inscrivez-vous sur app.nexbasira.com — le flux d'amorçage crée votre organisation + votre utilisateur admin en une seule étape.
- Allez dans Admin → Identifiants API et cliquez sur Émettre un identifiant.
- Copiez la
nb_pub_*+nb_sec_*paire. Le secret est affiché exactement une fois — stockez-le immédiatement dans votre gestionnaire de secrets.
2. Installer le SDK
npm install @nexbasira/node Ou pour Python : pip install nexbasira.
3. Créer une session
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. Émettre une invitation pour un utilisateur terrain
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_..." Envoyez l'URL à votre utilisateur terrain — il l'ouvre sur un téléphone (Safari ou Chrome mobile), autorise la caméra + le GPS, et l'opérateur le voit sur le tableau de bord de la SPA en moins de 30 secondes.
5. Câbler le webhook
Les webhooks se déclenchent sur session.created, session.completed,
evidence.added, recording.ready, audit.anchored,
signature.completed, et quelques autres. Enregistrez une URL de livraison depuis Admin → Webhooks et vérifiez la signature sur chaque 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. (Optionnel) Intégrer le widget côté terrain
Si vous préférez héberger l'expérience de l'utilisateur terrain dans votre propre application client plutôt que d'utiliser notre URL hébergée, utilisez le 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(); Application React ? Utilisez @nexbasira/react de <NexBasiraSession> à la place — même surface, React idiomatique.
Ce que vous avez maintenant
- Des sessions créées via l'API
- Des utilisateurs terrain rejoignant via des URL d'invitation signées (sans installation d'application)
- Des webhooks vérifiés + distribués dans votre backend
- (Optionnel) une expérience côté terrain intégrée dans votre produit
Et ensuite
- Concepts — ce que sont réellement une Session, une ligne Evidence et une Chaîne d'audit
- Référence API complète — chaque endpoint avec des exemples
- Plongée dans les webhooks — types d'événements, comportement de réessai, idempotence
- Configuration SSO — OIDC + SAML pour votre équipe informatique