Démarrage rapide
De « pas de compte » à « session créée + premier webhook reçu » en environ cinq minutes. Nous utiliserons le SDK Node ; celui de Python est presque identique.
1. Obtenir des identifiants API
- Inscrivez-vous sur app.nexbasira.com — le flux d'amorçage crée votre organisation + utilisateur admin en une seule étape.
- Allez dans Admin → Identifiants API et cliquez sur Émettre un identifiant.
- Copiez la paire
nb_pub_*+nb_sec_*. Le secret n'est affiché qu'une seule 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. Générer une invitation 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 mobile ou Chrome), accorde les permissions caméra + GPS, et l'opérateur le voit sur le tableau de bord 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. (Facultatif) Intégrer le widget côté terrain
Si vous préférez héberger l'expérience utilisateur terrain dans votre propre application destinée aux clients plutôt que d'utiliser notre URL hébergée, utilisez le widget d'intégration :
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 plutôt le composant @nexbasira/react's <NexBasiraSession> — même surface, React idiomatique.
Ce dont vous disposez maintenant
- Sessions créées via l'API
- Utilisateurs terrain rejoignant via des URL d'invitation signées (sans installation d'application)
- Webhooks vérifiés + dispatchés dans votre backend
- (Facultatif) expérience côté terrain intégrée dans votre produit
Et ensuite
- Concepts — ce que sont réellement une Session, une ligne de preuve et une chaîne d'audit
- Référence API complète — chaque endpoint avec des exemples
- Webhooks en détail — types d'événements, comportement de réessai, idempotence
- Configuration SSO — OIDC + SAML pour votre équipe informatique