Aller au contenu

API et webhooks

Récompensez vos joueurs quand ils votent pour votre jeu, et affichez vos statistiques GameVote dans votre jeu, votre site ou votre bot.

  1. Revendiquez ou créez la fiche de votre jeu.
  2. Récupérez votre jeton d'API dans Mes jeux.
  3. Branchez l'adresse de votre webhook : chaque vote vous est envoyé en temps réel.

Webhook de vote

À chaque vote valide, GameVote envoie un POST JSON à votre adresse. Répondez 200 en moins de 5 secondes, sinon l'envoi est retenté deux fois (après 30 s puis 5 min). Utilisez id pour ignorer un doublon.

{
  "id": "0b5c…",
  "type": "vote.create",
  "game": { "id": 12, "slug": "my-game" },
  "user": { "discord_id": "123456789012345678" },
  "weekend": false,
  "created_at": "2026-10-09T12:00:00.000Z"
}

En-têtes : X-GameVote-Timestamp, X-GameVote-Signature (sha256= suivi du HMAC-SHA256 de timestamp.corps avec votre secret) et X-GameVote-Event-Id.

Exemple de réception (Node.js)

// Node.js : recevoir un vote et récompenser le joueur
import crypto from "node:crypto";

app.post("/hooks/vote", express.raw({ type: "application/json" }), (req, res) => {
  const ts = req.header("x-gamevote-timestamp");
  const sig = req.header("x-gamevote-signature");
  const expected = "sha256=" + crypto.createHmac("sha256", process.env.GAMEVOTE_SECRET)
    .update(ts + "." + req.body.toString()).digest("hex");
  if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return res.sendStatus(400);   // rejeu
  if (!ts || !sig) return res.sendStatus(400);
  if (sig.length !== expected.length || !crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected))) {
    return res.sendStatus(401);
  }
  res.sendStatus(200);                                   // répondre vite
  const event = JSON.parse(req.body.toString());
  giveReward(event.user.discord_id, event.weekend ? 2 : 1);   // traiter ensuite
});

API REST

Authentification : en-tête Authorization: Bearer <jeton>. Limite : 120 requêtes par minute et par jeton.

RequêteAccèsRôle
GET /api/v1/games/{id|slug}PublicFiche, votes, note moyenne
GET /api/v1/games/{id|slug}/check?user=<discord_id>JetonLe joueur a-t-il voté dans les 12 dernières heures ?
GET /api/v1/games/{id|slug}/votesJeton100 derniers votes valides
POST /api/v1/games/{id|slug}/statsJetonEnvoyer {"players":1200,"servers":15}

Badge à intégrer

Une image toujours à jour, à placer sur votre site, votre page Steam ou votre README : elle affiche vos votes ou votre rang du mois et renvoie vers votre fiche. Le code exact de votre jeu est dans la gestion de sa fiche.

<a href="https://www.gamevote.fr/games/VOTRE-JEU">
  <img src="https://www.gamevote.fr/badge/VOTRE-JEU.svg" alt="Votez sur GameVote">
</a>

Variantes : ?style=votes (votes du mois, par défaut), ?style=rank (rang du mois), ?style=vote (« Votez pour nous »). Ajoutez lang=en pour la version anglaise. L'image est mise à jour toutes les 10 minutes.

Bot Discord GameVote

Ajoutez le bot sur le serveur de votre communauté : vos joueurs votent sans quitter Discord, reçoivent un rappel en message privé quand ils peuvent revoter, et vos actualités sont annoncées automatiquement.

Ajouter le bot à DiscordIl faut la permission « Gérer le serveur » sur le serveur choisi.
/voterVote direct, avec rappel 12 h plus tard
/jeu · /top · /tendancesFiche et classements
/profilProfil GameVote d'un membre
/suivreAnnonce vos nouveaux billets dans un salon (« Gérer le serveur »)
/bons-plansPromos Steam du moment et jeux gratuits Epic
/sortiesSorties des prochains jours
/role-votantRôle donné automatiquement aux votants de votre jeu (« Gérer le serveur »)
/recapRécap chaque lundi : top de la semaine, sorties et bons plans (« Gérer le serveur »)

Rôle de votant sur votre serveur

Récompensez votre communauté : le bot donne un rôle aux membres de votre serveur qui ont voté pour votre jeu ce mois-ci (vote sur le site ou sur Discord), et le retire le mois suivant. Mise à jour toutes les 10 minutes, instantanée pour les votes faits avec le bot.

  1. Invitez le bot GameVote sur votre serveur.
  2. Créez un rôle (ex. « Votant ») et placez le rôle du bot au-dessus de lui dans les paramètres du serveur.
  3. Tapez /voter-role set avec votre jeu et ce rôle (permission « Gérer les rôles » requise).

/voter-role status pour vérifier, /voter-role off pour arrêter.