A clean, typed, documented API.
REST + JSON, URL-versioned, scope-gated, cursor-paginated. Node, Python, React and Embed SDKs. Signed webhooks, generated OpenAPI 3.1, ready-to-use code generators.
Your first session in 5 minutes.
# 1. Créer une session d'inspection
curl -X POST https://api.nexbasira.com/v1/sessions \
-H "Authorization: Bearer nbx_live_sk_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"type": "field_inspection",
"reference": "INS-42871",
"participant": {
"name": "Marie L.",
"channel": "sms",
"phone": "+33612345678"
},
"callbacks": {
"session.completed": "https://your-app.com/webhooks/nbx"
}
}'
# Réponse 201 — la session est créée, le lien SMS est en route
{
"id": "sess_42871",
"status": "pending",
"join_url": "https://join.nexbasira.com/s/abc123def...",
"expires_at": "2026-05-26T14:00:00Z"
}import Nexbasira from '@nexbasira/node';
const nbx = new Nexbasira({ apiKey: process.env.NBX_KEY });
const session = await nbx.sessions.create({
type: 'field_inspection',
reference: 'INS-42871',
participant: {
name: 'Marie L.',
channel: 'sms',
phone: '+33612345678',
},
callbacks: {
'session.completed': 'https://your-app.com/webhooks/nbx',
},
});
console.log(session.join_url);
// → https://join.nexbasira.com/s/abc123def...
// Itérer sur les sessions récentes (async iterator)
for await (const s of nbx.sessions.list({ status: 'completed' })) {
console.log(s.id, s.completed_at);
}from nexbasira import Nexbasira
nbx = Nexbasira(api_key=os.environ["NBX_KEY"])
session = nbx.sessions.create(
type="field_inspection",
reference="INS-42871",
participant={
"name": "Marie L.",
"channel": "sms",
"phone": "+33612345678",
},
callbacks={
"session.completed": "https://your-app.com/webhooks/nbx",
},
)
print(session.join_url)
# → https://join.nexbasira.com/s/abc123def...
# Récupérer le dossier de preuve une fois signé
evidence = nbx.evidence.retrieve(session_id=session.id)
print(evidence.pdf_url, evidence.audit_chain_hash)import { NexbasiraEmbed } from '@nexbasira/react';
export function InspectionView({ sessionId }) {
return (
<NexbasiraEmbed
sessionId={sessionId}
onCapture={(evt) => trackPhoto(evt)}
onSigned={(evt) => redirect(evt.evidence_url)}
theme="dark"
brand={{ logo: "/logo.svg", accent: "#00E5A0" }}
/>
);
}
// L'embed gère WebRTC, capture GPS, signature eIDAS.
// Vous gérez l'UI autour. White-label par défaut.Everything you can drive from the API.
/sessions
Create, list, retrieve and end an inspection session. SMS / email invites.
/evidence
List session evidence, download signed PDF, retrieve blockchain hash.
/whiteboards
Retrieve annotations as SVG / PNG per session. Timestamped export.
/webhooks
Register endpoint, rotate secret, test-fire. HMAC-SHA256 signature.
/branding
Customize logo, colors, domain for white-label mode.
/org
Read organization metadata, quotas, members, RBAC roles.
HMAC-SHA256 signed webhooks.
Stripe-style format with 5-min clock skew tolerance. Secret encrypted at rest. Exponential retries with backoff up to 24h.
# En-tête envoyé par Nexbasira
Nbx-Signature: t=1714060800,v1=5257a869e7ec...
# Vérification (Node.js)
import { verifyWebhook } from '@nexbasira/node';
app.post('/webhooks/nbx', (req, res) => {
const event = verifyWebhook(
req.rawBody,
req.headers['nbx-signature'],
process.env.NBX_WEBHOOK_SECRET
);
if (event.type === 'session.completed') {
downloadEvidence(event.data.id);
}
res.json({ ok: true });
});
4 typed, maintained SDKs.
npm install @nexbasira/node
- Types from OpenAPI
- Async iterator pagination
- Built-in webhook verify
pip install nexbasira
- Pydantic v2 models
- Async + sync mode
- Typed errors by code
npm install @nexbasira/react
- Plug & play <Embed/>
- Hooks useSession, useEvidence
- Tailwind-compat theming
<script src="cdn.nbx.com/embed.js"></script>
- No framework, <30 KB
- Europe-distributed CDN
- All-framework compat.
Connect Nexbasira to your stack.
OIDC + SAML 2.0 SSO
Just-in-time provisioning with domain allowlist and default role.
SCIM 2.0
Auto-provisioning of users and groups. Per-org bearer token.
Webhooks & verify
HMAC verify helpers in all SDKs. Exponential retries.
Self-hosting
Docker + Caddy stack documented. Available on Enterprise plan.
Idempotency
Idempotency-Key header on all POSTs. No duplicates, ever.
Rate limits
X-RateLimit-* headers on every response. Per-key + per-org quotas.
Generated, public, versioned schema.
Download the filtered OpenAPI 3.1 schema (public operations only) and generate your types automatically.
# Types TypeScript
npx openapi-typescript \
https://api.nexbasira.com/v1/openapi.json \
-o src/nbx-types.ts
# Modèles Pydantic
datamodel-codegen \
--url https://api.nexbasira.com/v1/openapi.json \
--output-model-type pydantic_v2.BaseModel \
--output nbx_models.py
SemVer-URL guaranteed stability
Breaking changes live under a new prefix (/v2/) with at least 12 months of overlap before the previous version retires. Additive changes (new optional fields, new endpoints, new event types) ship in place. Our SDKs treat unknown fields as forward-compatible.
Ready to integrate Nexbasira?
Get your sandbox API key in 30 seconds, no credit card.