§01Documentation v0.9Mise à jour : 12.04.2026

01 / Installation

Neurolyss s'installe en complément de votre intégration Stripe existante. Aucune modification serveur n'est requise pour démarrer.

Via npm

# Installer le SDK Neurolyss
npm install @neurolyss/sdk

# Ou via yarn / pnpm
yarn add @neurolyss/sdk

Via script tag

Pour les sites sans bundler, chargez le SDK via CDN :

<script src="https://cdn.neurolyss.com/sdk/v0.9/neurolyss.min.js"></script>

02 / Authentification

Toutes les requêtes API utilisent un en-tête Authorization: Bearer. Vos clés sont disponibles dans la console Neurolyss.

# Vérifier l'authentification
curl -X GET https://api.neurolyss.com/v1/ping \
  -H "Authorization: Bearer $NEUROLYSS_KEY" \
  -H "Content-Type: application/json"

# Réponse
{ "status": "ok", "version": "3.2.1" }

03 / Première décision

Le SDK s'attache à votre Stripe PaymentElement. Une fois le formulaire soumis, Neurolyss calcule un score puis renvoie la décision avant la confirmation Stripe.

const neurolyss = Neurolyss('pk_test_...');
const element = neurolyss.attach('#payment-element');

element.on('decision', (decision) => {
  if (decision.action === 'confirm') {
    stripe.confirmPayment({ /* ... */ });
  } else if (decision.action === 'step_up') {
    // 3D Secure step-up
    stripe.confirmPayment({ payment_method_options: { card: { request_three_d_secure: 'any' }}});
  } else {
    // Bloqué — afficher message neutre
  }
});

04 / Scoring ML

Notre modèle (XGBoost calibré + uplift CatBoost) renvoie un score entre 0 et 100 sur la base de 146 features extraites en moins de 40 ms.

Seuils par défaut

  • SCORE ≥ 75Confirmation immédiate
  • 50 – 743DS step-up automatique
  • SCORE < 50Blocage ou file manuelle

05 / Webhooks signés

Tous les webhooks sont signés via HMAC SHA-256. La signature est transmise dans l'en-tête Neurolyss-Signature.

// Vérifier une signature webhook
const signature = req.headers['neurolyss-signature'];
const event = neurolyss.webhooks.verify(req.body, signature, 'whsec_...');

if (event.type === 'decision.completed') {
  // Décision rendue · log dans votre DB
}