Aicscan Documentation

Format des alertes

Quand un événement on-chain correspond à une règle, Aicscan crée une alerte (un match), puis une notification par canal de la règle. Vous retrouvez la même alerte sous trois formes :

Où Forme Page
GET /v1/matches Alerte structurée : règle, événement on-chain complet, prise en charge. Lister les alertes
Webhook, temps réel Message prêt à afficher : type, étape, gravité, titre et texte. Webhooks, Temps réel
GET /v1/notifications Un envoi sur un canal, avec son état et ses tentatives. Lister les notifications

Étapes d’une alerte#

stage Quand
unconfirmed La transaction est incluse dans un bloc, pas encore confirmé. Envoyée seulement si la règle fait une alerte immédiate.
confirmed Le bloc a atteint le nombre de confirmations de la chaîne.
cancelled Le bloc a été retiré par une réorganisation : l’alerte non confirmée est annulée, aucune action n’est requise.
escalation Alerte critique toujours sans prise en charge 5 minutes après son envoi : un rappel part vers les canaux d’escalade de l’espace (role: "escalation"), à défaut vers le canal d’origine. Le texte commence par ⏰ ESCALADE.

Une même alerte peut donc donner deux messages (unconfirmed puis confirmed, ou unconfirmed puis cancelled). Dans GET /v1/matches, phase vaut immediate (vue avant confirmation) ou confirmed.

Les canaux reçoivent aussi d’autres messages que les alertes, distingués par type : digest (récapitulatif d’alertes regroupées), test (message de test), security (changement sensible dans l’espace, par exemple la suppression d’une règle ou d’un canal), summary (résumé quotidien ou hebdomadaire) et service (avis d’interruption ou de reprise du service). Ignorez les types que vous ne traitez pas.

Gravité et priorité#

severity priority
critical 30 et plus
warning 20 à 29
info moins de 20

Message envoyé aux canaux#

Le message est du texte brut, rédigé dans la langue du canal (locale). Sa première ligne est le titre (title) ; le texte complet est dans text. Exemple en anglais pour une règle large_transfer :

Text
🔴 CRITICAL · Treasury: large USDT outflows · outgoing
✅ Confirmed · 15 confirmations
Chain: BNB Chain
Address: Treasury (0x8894…d4e3)
Amount: 250,000 USDT (≈ $250,000)
To: 0x77cd…01e2 (unknown)
Block 45,123,456
Details: https://aicscan.io/e/0193a1c9-3e02-7f3a-9b4c-5d6e7f8091a2

Le même message en français :

Text
🔴 CRITIQUE · Treasury: large USDT outflows · sortant
✅ Confirmée · 15 confirmations
Chaîne : BNB Chain
Adresse : Treasury (0x8894…d4e3)
Montant : 250 000 USDT (≈ 250 000 $ · ≈ 148 millions FCFA)
Vers : 0x77cd…01e2 (inconnue)
Bloc 45 123 456
Détails : https://aicscan.io/e/0193a1c9-3e02-7f3a-9b4c-5d6e7f8091a2
  • La première ligne commence par la gravité (CRITICAL, WARNING, INFO) ou par CANCELLED pour une annulation, suivie du nom de la règle et du sens.
  • La deuxième ligne donne l’étape : UNCONFIRMED · waiting for 15 confirmations, Confirmed · 15 confirmations.
  • L’équivalent en dollars (et en francs CFA en français) n’apparaît que pour les stablecoins.
  • Le lien « Details » mène toujours au domaine aicscan.io. Aucun message ne contient de lien vers un autre domaine, ni de demande de connexion, de signature ou d’envoi de fonds.

Ne pas analyser le texte

Le texte est fait pour être lu par une personne et peut évoluer. Pour un traitement automatique, utilisez les champs structurés (type, stage, severity) puis lisez l’alerte complète avec GET /v1/matches (montant brut, adresses, hash de transaction, numéro de bloc).

Alerte structurée#

JSON
{
  "id": "0193a1c9-3f10-7d42-8a1b-2c3d4e5f6a7b",
  "phase": "confirmed",
  "created_at": "2026-11-14T09:30:13.590Z",
  "rule": { "id": "0193a1b4-2e7f-7a10-9b3c-4d5e6f708192", "name": "Treasury: large USDT outflows", "severity": "critical" },
  "event": {
    "id": "0193a1c9-3e02-7f3a-9b4c-5d6e7f8091a2",
    "chain_id": 56,
    "block_number": 45123456,
    "block_hash": "0x5f1c0a7e9d3b2c4a6e8f0d1b3c5a7e9f1d3b5c7a9e1f3d5b7c9a1e3f5d7b9c1a",
    "block_timestamp": "2026-11-14T09:30:12Z",
    "tx_hash": "0x9a8b7c6d5e4f30211203f4e5d6c7b8a99a8b7c6d5e4f30211203f4e5d6c7b8a9",
    "source": "log",
    "source_index": 211,
    "type": "erc20_transfer",
    "contract": "0x55d398326f99059ff775485246999027b3197955",
    "from": "0x8894e0a0c962cb723c1976a4421c95949be2d4e3",
    "to": "0x77cd0000000000000000000000000000000001e2",
    "token": "0x55d398326f99059ff775485246999027b3197955",
    "amount": "250000000000000000000000",
    "status": "confirmed",
    "payload": {},
    "created_at": "2026-11-14T09:30:13.402Z"
  },
  "acknowledged": null
}

acknowledged indique la prise en charge de l’alerte par un membre de l’espace (by, at) ; null tant que personne ne l’a prise en charge. Le statut de l’événement (status) vaut pending, confirmed ou orphaned (bloc retiré par une réorganisation).

Aicscan ne vous demandera jamais de vous connecter à un wallet, de signer une transaction ni d’envoyer des fonds.

aicscan.io · Statut · openapi.yaml