Inicio rápido
De «sin cuenta» a «sesión creada + primer webhook recibido» en unos cinco minutos. Usaremos el SDK de Node; el de Python es casi idéntico.
1. Obtenga las credenciales de API
- Regístrese en app.nexbasira.com — el flujo de arranque crea su organización + usuario administrador en un solo paso.
- Vaya a Admin → Credenciales de API y haga clic en Emitir credencial.
- Copie el
nb_pub_*+nb_sec_*par. El secreto se muestra exactamente una vez — guárdelo inmediatamente en su gestor de secretos.
2. Instale el SDK
npm install @nexbasira/node O para Python: pip install nexbasira.
3. Cree una sesión
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. Genere una invitación de usuario de 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_..." Envíe la URL a su usuario de campo: la abre en un teléfono (Safari o Chrome móvil), concede permisos de cámara + GPS, y el operador lo ve en el panel de la SPA en menos de 30 segundos.
5. Conecte el webhook
Los webhooks se disparan en session.created, session.completed,
evidence.added, recording.ready, audit.anchored,
signature.completed, y algunos más. Registre una URL de entrega desde Admin → Webhooks y verifique la firma en cada 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. (Opcional) Embeba el widget del lado de campo
Si prefiere alojar la experiencia del usuario de campo dentro de su propia app orientada al cliente en lugar de usar nuestra URL alojada, use el widget embebido:
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 de React? Use @nexbasira/reactde <NexBasiraSession> en su lugar: la misma superficie, React idiomático.
Lo que tiene ahora
- Sesiones creadas vía API
- Usuarios de campo que se unen mediante URL de invitación firmadas (sin instalar ninguna app)
- Webhooks verificados y despachados en su backend
- (Opcional) experiencia de campo embebida dentro de su producto
Qué sigue
- Conceptos — qué son realmente una sesión, una fila de prueba y una cadena de auditoría
- Referencia completa de la API — cada endpoint con ejemplos
- Análisis a fondo de webhooks — tipos de evento, comportamiento de reintento, idempotencia
- Configuración de SSO — OIDC + SAML para su equipo de TI