API per sviluppatori
Basta controllare, ti avvisiamo noi
Registra un URL e scegli gli eventi. Inviamo una POST firmata pochi secondi dopo ogni variazione e riproviamo fino a 24 ore se non va a buon fine.
Eventi
rate.updatedUn cambio è variato in una bancarate.best_changedLa vendita più conveniente o l'acquisto più alto è cambiatorate.threshold_crossedUn cambio ha superato una soglia che hai impostatocbe.rate_changedIl cambio della Banca Centrale è variatogold.updatedI prezzi dell'oro sono variatisilver.updatedI prezzi dell'argento sono variatitransfer.quotes_updatedI prezzi degli operatori di trasferimento sono variaticertificate.createdUna banca ha lanciato un nuovo certificatocertificate.rate_changedIl rendimento di un certificato è cambiatotbill.auction_resultIl risultato di un'asta di buoni del Tesorofund.price_updatedIl prezzo della quota di un fondo è stato aggiornatostatus.incidentUn problema del servizio è iniziato o terminatoCosa inviamo
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 }
}
}Verifica la firma
Ogni richiesta è firmata con il segreto del tuo endpoint tramite HMAC SHA-256. Rifiuta tutto ciò che ha più di 5 minuti.
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));
}Consegna e tentativi
- Tempo limite
- Rispondi con 2xx entro 10 secondi
- Tentativi
- 8 tentativi in 24 ore, sempre più distanziati
- Duplicati
- Un evento può arrivare due volte, quindi usa il suo id per ignorare le ripetizioni
- Ordine
- Confronta created_at, perché l'ordine non è garantito
- Pausa
- Mettiamo in pausa un endpoint dopo 3 giorni di errori e ti scriviamo un'email, così puoi recuperare ciò che hai perso
I tuoi endpoint
I webhook stanno arrivandoPotrai aggiungere endpoint qui quando i webhook saranno attivi. Sono inclusi dal piano Pro in su.
In arrivo