API pour les développeurs

Fini les requêtes en boucle, on vous prévient

Enregistrez une URL et choisissez les événements. Nous envoyons une requête POST signée quelques secondes après chaque changement, et réessayons pendant 24 heures en cas d'échec.

Événements

rate.updatedLe cours d'une devise a changé dans une banque
rate.best_changedLa vente la moins chère ou l'achat le plus élevé a changé
rate.threshold_crossedUn cours a franchi un seuil que vous avez défini
cbe.rate_changedLe cours de la Banque centrale a changé
gold.updatedLes prix de l'or ont changé
silver.updatedLes prix de l'argent ont changé
transfer.quotes_updatedLes prix des prestataires de transfert ont changé
certificate.createdUne banque a lancé un nouveau certificat
certificate.rate_changedLe rendement d'un certificat a changé
tbill.auction_resultUn résultat d'adjudication de bons du Trésor
fund.price_updatedLe prix de la part d'un fonds a été mis à jour
status.incidentUn incident de service a commencé ou s'est terminé

Ce que nous envoyons

POST https://example.com/geneh
Geneh-Event: rate.best_changed
Geneh-Signature: t=1792118220,v1=5f2b9c1e7a

{
  "id": "evt_01JB7Q2K",
  "type": "rate.best_changed",
  "created_at": "2026-10-16T00:37:00Z",
  "data": {
    "currency": "USD",
    "side": "sell",
    "previous": { "bank": "nbe", "rate": 53.52 },
    "current": { "bank": "credit_agricole", "rate": 53.47 }
  }
}

Vérifier la signature

Chaque requête est signée avec le secret de votre endpoint en HMAC SHA-256. Rejetez tout ce qui date de plus de 5 minutes.

import crypto from "node:crypto";

function verify(rawBody, header, secret) {
  const [t, v1] = header.split(",").map(p => p.split("=")[1]);
  const mac = crypto.createHmac("sha256", secret)
    .update(t + "." + rawBody).digest("hex");
  const fresh = Math.abs(Date.now() / 1000 - t) < 300;
  return fresh && crypto.timingSafeEqual(Buffer.from(mac), Buffer.from(v1));
}

Livraison et nouvelles tentatives

Délai d'attente
Répondez avec un 2xx en moins de 10 secondes
Nouvelles tentatives
8 tentatives sur 24 heures, de plus en plus espacées
Doublons
Un événement peut arriver deux fois, utilisez donc son id pour ignorer les répétitions
Ordre
Comparez created_at, car l'ordre n'est pas garanti
Mise en pause
Nous mettons un endpoint en pause après 3 jours d'échecs et vous prévenons par e-mail, et vous pouvez rejouer ce que vous avez manqué

Vos endpoints

Les webhooks arrivent bientôtVous ajouterez vos endpoints ici dès l'ouverture des webhooks. Ils sont inclus à partir de l'offre Pro.
Bientôt disponible