Fonctionnalités
Intégrations
Les canaux de livraison des alertes. Vous en connectez un une fois, dans Intégrations ; chaque moniteur peut émettre vers un canal différent.
Telegram
- 1Écrivez à @BotFather et créez un bot (/newbot), copiez le token.
- 2Écrivez à @userinfobot pour connaître votre chat_id.
- 3Dans Intégrations → Telegram, collez le token et le chat_id.
- 4Envoyez n'importe quoi à votre bot (sinon Telegram ne le laissera pas envoyer le premier message).
Discord
Sur votre serveur : Paramètres du canal → Intégrations → Webhooks → Nouveau webhook, copiez l'URL et collez-la dans Intégrations. Les alertes arrivent sous forme de messages dans le canal choisi.
Push navigateur
Des notifications système qui fonctionnent même onglet fermé. Chaque appareil (portable, téléphone Android) se connecte séparément via le bouton « Activer sur cet appareil » ; la liste des appareils, avec test et suppression, se trouve dans la même fenêtre.
Safari prend en charge le push à partir de la version 16.4 ; sur iPhone, le site doit être ajouté à l'écran d'accueil.
Webhook et e-mail
Vous indiquez votre propre adresse HTTPS et chaque trouvaille de moniteur arrive en POST JSON (Content-Type: application/json). Le body a toujours la même forme — les champs inconnus pour une offre donnée arrivent à null :
{
"title": "iPhone 13 Pro 256GB",
"url": "https://vinted.pl/items/123456",
"marketplace": "vinted",
"price": "2 000 PLN",
"image": "https://images.vinted.net/...jpg",
"hidden": false,
"monitorId": "8f3c1e2a-…-uuid",
"seller": {
"login": "ola_vinted",
"country": "Polska",
"countryFlag": "🇵🇱",
"city": "Warszawa",
"feedbackCount": 123,
"feedbackReputation": 0.98,
"photoUrl": "https://images.vinted.net/avatar.jpg"
}
}- 1title, url, marketplace — toujours présents.
- 2price — chaîne formatée (par ex. « 2 000 PLN ») ou null.
- 3image — URL de la miniature ou null.
- 4hidden — true lorsque l'offre a été trouvée par sondage d'identifiants et peut être invisible dans la recherche publique de la plateforme.
- 5monitorId — UUID du moniteur qui a capté l'offre (pour le routage de votre côté).
- 6seller — les données du vendeur ; Vinted uniquement aujourd'hui, null ailleurs. feedbackReputation est une fraction 0–1 (0,98 = 98 %).
Les requêtes proviennent d'adresses IP Cloudflare (pas de notre serveur). Si vous filtrez le trafic par IP, autorisez les plages Cloudflare.
Clé de signature facultative : une fois définie, chaque requête porte un en-tête x-snipeit-signature: sha256=<hex>, où hex = HMAC-SHA256(clé, body brut). Calculez la même chose de votre côté et comparez — cela confirme que la requête vient de nous et que le body n'a pas été modifié.
import { createHmac, timingSafeEqual } from "node:crypto";
function verify(rawBody, header, secret) {
const expected =
"sha256=" + createHmac("sha256", secret).update(rawBody).digest("hex");
const a = Buffer.from(header ?? "");
const b = Buffer.from(expected);
return a.length === b.length && timingSafeEqual(a, b);
}Chaque canal connecté dispose d'un bouton « Tester l'alerte » (limite 3/min) — utilisez-le juste après la configuration.
E-mail : le canal le plus simple — vous indiquez une adresse et recevez les alertes par e-mail avec un lien vers l'offre.