API v1 JSON · REST · gratuit

Documentation API Botix

Récupère les informations de n'importe quel bot, ses votes, ses statistiques et les classements, directement depuis ton code.

🚀 Démarrage rapide

Toutes les routes sont préfixées par :

URL de base
https://botix.fr/api/v1

L'API est publique en lecture. Une clé API double ton quota (120 requêtes/minute au lieu de 60).

Authentification
Authorization: Bearer btx_xxxxxxxxxxxxxxxxxxxx

📍 Points d'entrée

GET /api/v1/bots Liste et recherche de bots
GET /api/v1/bot/{id} Détails complets d'un bot
GET /api/v1/bot/{id}/votes Derniers votes reçus
GET /api/v1/bot/{id}/stats Historique des statistiques
POST /api/v1/bot/{id}/stats Publier le nombre de serveurs
GET /api/v1/bot/{id}/check/{user} Vérifier le vote d'un utilisateur
GET /api/v1/leaderboard Classement des bots
GET /api/v1/user/{id} Profil public d'un développeur
GET /api/v1/categories Catégories et compteurs
GET /api/v1/stats Statistiques globales du site

📦 Exemple — récupérer un bot

Requête
curl https://botix.fr/api/v1/bot/123456789012345678
Réponse 200
{
  "success": true,
  "data": {
    "id": "123456789012345678",
    "name": "Botix Moderator",
    "slug": "botix-moderator",
    "avatar": "https://cdn.discordapp.com/avatars/…",
    "short_description": "Bot de modération Discord puissant.",
    "category": "moderation",
    "certified": true,
    "premium": false,
    "server_count": 25430,
    "votes": 125000,
    "monthly_votes": 8420,
    "rating": 4.8,
    "rating_count": 1240,
    "rank": 3,
    "invite": "https://discord.com/oauth2/authorize?…",
    "url": "https://botix.fr/bot/botix-moderator"
  }
}

📊 Publier tes statistiques

Utilise le token de ton bot (visible dans Clés API) pour envoyer ton nombre de serveurs. Recommandé : toutes les 30 minutes.

Node.js — discord.js
client.on('ready', () => {
  const post = async () => {
    await fetch(`https://botix.fr/api/v1/bot/${client.user.id}/stats`, {
      method: 'POST',
      headers: {
        'Authorization': process.env.BOTIX_TOKEN,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        server_count: client.guilds.cache.size,
        shard_count: client.shard?.count ?? 0
      })
    });
  };
  post();
  setInterval(post, 30 * 60 * 1000);
});
Python — discord.py
import aiohttp

async def post_stats(bot):
    url = f"https://botix.fr/api/v1/bot/{bot.user.id}/stats"
    headers = {"Authorization": BOTIX_TOKEN}
    payload = {"server_count": len(bot.guilds)}
    async with aiohttp.ClientSession() as s:
        await s.post(url, json=payload, headers=headers)

🔔 Webhook de vote

Renseigne une URL de webhook dans les réglages de ton bot : Botix enverra un POST à chaque vote, signé en HMAC SHA-256.

Corps envoyé par Botix
{
  "bot": "123456789012345678",
  "user": "987654321098765432",
  "type": "upvote",
  "weight": 2,
  "time": 1735689600
}
Vérification de la signature (Node.js)
const crypto = require('crypto');

app.post('/botix/vote', (req, res) => {
  const signature = crypto
    .createHmac('sha256', process.env.BOTIX_WEBHOOK_SECRET)
    .update(JSON.stringify(req.body))
    .digest('hex');

  if (signature !== req.headers['x-botix-signature']) {
    return res.sendStatus(401);
  }

  console.log(`Vote de ${req.body.user} (×${req.body.weight})`);
  res.sendStatus(200);
});

🧩 Déclarer tes commandes

Publie la liste de tes commandes : elle alimente l'onglet « Commandes » de ta fiche, le contenu que les visiteurs consultent le plus. Même token que pour les statistiques. Chaque envoi remplace la liste complète, ce qui permet de refléter une suppression.

POST /api/v1/bot/{id}/commands
await fetch(`https://botix.fr/api/v1/bot/${client.user.id}/commands`, {
  method: 'POST',
  headers: {
    'Authorization': process.env.BOTIX_TOKEN,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    commands: client.application.commands.cache.map(c => ({
      name: c.name,
      description: c.description,
      signature: `/${c.name}`,
      category: 'Général'
    }))
  })
});

Lecture publique sans authentification : GET /api/v1/bot/{id}/commands. 300 commandes maximum.

🏷️ Pastille pour ton README

Une image SVG servie en direct, sans authentification ni clé.

Markdown
[![Botix](https://botix.fr/badge/mon-bot.svg)](https://botix.fr/bot/mon-bot)
ParamètreValeurs
metricvotes (défaut), serveurs, note, score
labelLibellé personnalisé, 24 caractères maximum
colorCouleur hexadécimale sans #, ex. 8b5cf6
.jsonFormat « endpoint » de shields.io, au lieu de .svg

⚠️ Codes de réponse

CodeSignification
200Requête réussie
401Clé ou token manquant/invalide
404Ressource introuvable
422Paramètres invalides
429Limite de requêtes atteinte (attendre 60 s)
500Erreur interne du serveur