En plus des classements, le site a quelques pages publiques accessibles sans connexion : la présentation de l'équipe, les pages légales, des liens de contact, et une API qui permet à un développeur de lire certaines données du bot (statistiques, niveaux, serveurs bumpés…).
Les trois premières sections concernent tout le monde. Les sections sur l'API s'adressent aux personnes qui veulent écrire un programme (un autre bot, un site) qui interroge Dispatch.IO™.
La page Équipe
Les personnes qui font Dispatch.IO.
Ouvre-la depuis le menu du haut : Application › Équipe (adresse /team).

La page s'ouvre sur le titre Notre Équipe, puis affiche une carte par membre actif de l'équipe, les créateurs en premier, puis les autres membres par date d'arrivée.
- La couronne en haut à droite : elle signale un Créateur.
- Le nom : le nom d'affichage choisi par l'équipe (ou le pseudo Discord), puis
@pseudo. - Les badges : le rôle dans l'équipe (par exemple « Développeur » ou « Support »), Créateur et Modérateur selon le cas.
- Membre depuis le : la date d'arrivée dans l'équipe.
Les cartes ne contiennent pas de lien. S'il n'y a encore personne, la page affiche « Aucun membre pour le moment ».
Pages légales et FAQ du site
Ce qui existe aujourd'hui et ce qui est en cours d'écriture.
Les liens des pages légales sont dans le pied de page (colonne Liens rapides) et, une fois connecté, dans le menu de ton profil (En savoir plus).
| Page | Adresse | État actuel |
|---|---|---|
| Politique de confidentialité | /legal/privacy | En cours d'écriture |
| Conditions générales d'utilisation (CGU) | /legal/cgu | En cours d'écriture |
| Conditions générales de vente (CGV) | /legal/cgv | En cours d'écriture |
| FAQ | /faq | En cours d'écriture |
Pour l'instant, chacune de ces pages affiche son titre, un court résumé, puis le message « Cette page est en cours de construction par IO. Revenez bientôt ! ». Le texte légal n'est pas encore publié.

Où trouver des réponses en attendant
- La page d'accueil du site a une FAQ de six questions (gratuité, ajout du bot, configuration sans code, flammes et gels, personnalisation des cartes, essai de 14 jours) : fais défiler jusqu'en bas ou ouvre
/#faq. - Cette documentation a sa propre FAQ du site.
- Pour une question sur tes données ou un achat, contacte l'équipe (voir la section suivante).
Contact et liens utiles
Joindre l'équipe et le serveur de support.
| Besoin | Où |
|---|---|
| Rejoindre le serveur Discord de support | Bouton Support (icône Discord) du menu du haut, lien Obtenir de l'aide du menu de ton profil, ou l'adresse courte /discord qui redirige vers l'invitation du serveur officiel. |
| Écrire à l'équipe | L'adresse e-mail de la colonne Contact du pied de page. |
| Ajouter le bot | Bouton Ajouter à Discord de la page d'accueil et du pied de page. |
Note
Le lien Commandes du menu Application et du pied de page mène pour l'instant à une page introuvable. La liste des commandes est dans cette documentation : Toutes les commandes.
L'API publique : les principes
Adresse, format des réponses, identifiants, pagination et limite de requêtes.
L'API est un ensemble d'adresses qui renvoient des données au format JSON. Elle sert par exemple à afficher les statistiques du bot sur un autre site, ou à vérifier depuis un autre bot si un utilisateur est sur la liste noire de Dispatch.IO.
Adresse et méthode
- Toutes les adresses commencent par l'adresse du site suivie de
/api/v1/(par exemple/api/v1/stats). - Seule la méthode GET (lecture) existe. Toute autre méthode reçoit le code 405 et
{"message":"Method Not Allowed"}. - Il n'y a pas de clé d'API : les adresses publiques s'appellent sans authentification. Les deux adresses des tickets utilisent ta session du site (cookie) : elles ne répondent que dans un navigateur où tu es connecté.
Format des réponses
| Cas | Code | Corps de la réponse |
|---|---|---|
| Un élément trouvé | 200 | { "data": { … } } |
| Une liste paginée | 200 | { "data": [ … ], "pagination": { … } } |
| Paramètre invalide | 400 | { "error": [ { "path": "userId", "message": "ID must contain only digits" } ] } |
| Rien trouvé | 404 | { "message": "…" } (le texte dépend de l'adresse) |
Les messages d'erreur sont en anglais.
Les identifiants Discord
Les ID de serveur et d'utilisateur s'écrivent en chiffres uniquement, avec 17 à 19 chiffres (par exemple 100000000000000001). Sinon, la réponse est une erreur 400 : « ID must be at least 17 characters », « ID must be at most 19 characters » ou « ID must contain only digits ».
La pagination
Les listes acceptent ces paramètres dans l'adresse (après ?) :
| Paramètre | Valeurs | Par défaut |
|---|---|---|
page | Nombre entier, 1 ou plus | 1 |
itemsPerPage | De 5 à 100 | 5 |
order | asc (croissant) ou desc (décroissant) | desc |
orderBy | Nom du champ de tri | updatedAt |
L'objet pagination de la réponse contient page, itemsPerPage, total (nombre total d'éléments), totalPages, hasNextPage et hasPreviousPage.
La limite de requêtes
Chaque adresse IP a droit à 100 requêtes par minute sur l'ensemble des adresses /api du site (la connexion Discord a sa propre limite). La minute démarre à la première requête.
| Requêtes dans la minute | Effet |
|---|---|
| De 80 à 89 | Chaque réponse est ralentie de 0,3 seconde. |
| De 90 à 99 | Chaque réponse est ralentie d'1 seconde. |
| 100 et plus | Code 429 et {"error":"TooManyRequests","message":"You have exceeded the maximum number of allowed requests. Please try again later."} |
Attention
La réponse 429 n'indique pas quand réessayer : attends la fin de la minute. Le site lui-même utilise aussi ces adresses (aperçus d'images, listes de tickets, mises à jour en direct) : si tu testes l'API depuis le même réseau, ces requêtes comptent aussi.
Certaines réponses sont gardées en mémoire quelques minutes : une donnée qui vient de changer peut apparaître avec un léger retard.
Les adresses de l'API
Chaque adresse, ses paramètres et sa réponse.
| Adresse | Accès | Renvoie |
|---|---|---|
GET /api/v1/health | Public | Le site répond-il ? |
GET /api/v1/health/full | Public | L'état de la base de données et du cache |
GET /api/v1/stats | Public | Les statistiques globales du bot |
GET /api/v1/bumps | Public | Les derniers serveurs bumpés |
GET /api/v1/tags | Public | Les tags de serveur Discord connus du bot |
GET /api/v1/blacklist/{userId} | Public | La fiche d'un utilisateur sur la liste noire |
GET /api/v1/level/{guildId}/{userId} | Public | Le niveau d'un membre sur un serveur |
GET /api/v1/user/tickets | Connecté | Tes tickets, sur tous les serveurs |
GET /api/v1/guild/{guildId}/tickets | Connecté et gestionnaire du serveur | Les tickets d'un serveur |
GET /api/v1/health
Vérifie que le site répond. Aucun paramètre.
{ "isoDate": "2026-10-15T18:54:03.000Z", "status": "ok", "timestamp": 1792090443000 }
GET /api/v1/health/full
Comme health, avec l'état des services : services.db (base de données) et services.cache (cache Redis) valent up ou down.
{ "isoDate": "2026-10-15T18:54:03.000Z", "services": { "db": "up", "cache": "up" }, "status": "ok", "timestamp": 1792090443000 }
Attention
Pour l'instant, status vaut toujours ok et le code reste 200, même quand un service est down. Pour surveiller le site, lis les valeurs de services.
GET /api/v1/stats
Les chiffres du bot affichés sur la page d'accueil. Aucun paramètre.
{ "data": { "commands": 142, "servers": 1240, "users": 186500, "version": "1.0.0" } }
commands = nombre de commandes du bot, servers = nombre de serveurs, users = nombre total de membres de ces serveurs, version = version du bot. Si les statistiques n'existent pas encore : 404 {"message":"No stats found."}.
GET /api/v1/bumps
La liste paginée des serveurs qui ont activé le bump (voir Bump). Accepte les paramètres de pagination ; pour avoir les derniers serveurs bumpés, utilise ?orderBy=lastBump&order=desc.
{
"data": [
{
"bumpCount": 87,
"guild": { "iconUrl": null, "id": "100000000000000001", "name": "Café des Devs" },
"inviteCode": "CafeDevs00",
"lastBump": "2026-10-15T17:40:00.000Z"
}
],
"pagination": { "hasNextPage": true, "hasPreviousPage": false, "itemsPerPage": 5, "page": 1, "total": 12, "totalPages": 3 }
}
bumpCount = nombre de bumps, inviteCode = code de l'invitation Discord du serveur, lastBump = date du dernier bump, iconUrl = icône du serveur ou null. Liste vide : 404 {"message":"No bumps found."}.
GET /api/v1/tags
La liste paginée des tags de serveur Discord (le court tag qu'un membre peut afficher à côté de son pseudo) connus du bot. Chaque élément contient tag, guildId (le serveur du tag), badge (le badge du tag ou null) et user_count (nombre de membres qui portent ce tag). Liste vide : 404 {"message":"No tags found."}.
GET /api/v1/blacklist/{userId}
Indique si un utilisateur est sur la liste noire globale de Dispatch.IO. Remplace {userId} par l'ID Discord de l'utilisateur.
- Utilisateur sur la liste : 200 avec
data, qui contient notammentuseretadmin(chacun avecid,username,avatarUrl),reason(la raison),canBeUnflagged(peut-il être retiré de la liste),createdAtetupdatedAt. - Utilisateur absent de la liste : 404
{"message":"User not flagged"}.
GET /api/v1/level/{guildId}/{userId}
Le niveau d'un membre sur un serveur. Exemple : GET /api/v1/level/100000000000000001/100000000000001001.
{
"data": {
"createdAt": "2026-03-02T18:21:44.000Z",
"guildId": "100000000000000001",
"level": 12,
"updatedAt": "2026-10-14T20:05:10.000Z",
"user": { "avatarUrl": "https://cdn.discordapp.com/embed/avatars/1.png", "id": "100000000000001001", "username": "alex" },
"xpMessage": 12100,
"xpVoice": 3000
}
}
Membre sans XP sur ce serveur : 404 {"message":"This user don't have a valid level."}.
GET /api/v1/user/tickets
Les tickets dont tu es le créateur ou un responsable, sur tous tes serveurs. C'est l'adresse qu'utilise la page des tickets de ton espace personnel. Il faut être connecté au site ; sinon : 401 {"message":"Not authenticated"}.
| Paramètre | Valeurs | Par défaut |
|---|---|---|
| Pagination | page, itemsPerPage, order (voir plus haut) | |
orderBy | createdAt, status, ticketOption.name, userId, archive.createdAt | createdAt |
filter | all, open, closed, archived | all |
creatorUserId | ID Discord du créateur | |
responsibleUserId | ID Discord d'un responsable | |
search | Texte cherché dans la raison, l'ID du ticket ou les pseudos |
Chaque ticket contient id, channelId, status (OPEN, CLOSED ou DELETED), reason, ticketOptionName, createdAt, archivedAt, creator, responsibles, et le serveur (guildId, guildName, guildIcon).
GET /api/v1/guild/{guildId}/tickets
Les tickets d'un serveur, pour la page des tickets du tableau de bord (voir Tickets). Mêmes paramètres que l'adresse précédente. Il faut être connecté et être propriétaire du serveur ou avoir la permission Administrateur ou Gérer le serveur sur Discord.
- Non connecté : 401
{"message":"Not authenticated"}. - Pas les droits sur ce serveur : 403
{"message":"Forbidden"}. - Les filtres
creatorUserIdetresponsibleUserIdne s'appliquent que pour le propriétaire ou un Administrateur.
Note
Deux autres adresses existent mais servent uniquement au site et ne sont pas documentées dans /api-docs : /api/v1/image-proxy (affichage des images des tickets, réservé aux personnes connectées) et /api/v1/landing-card (les cartes de la page d'accueil).
Tester l'API avec /api-docs
La documentation interactive Swagger.
La page /api-docs présente l'API de façon interactive. Ouvre-la depuis le menu du haut : Documentation › Documentation API (elle s'ouvre dans un nouvel onglet).

- Accueil : revient à la page d'accueil du site. Cette page n'a ni le menu ni le pied de page habituels.
- Les groupes : Blacklist, Bump, Health, Level, Stats, Tag et Ticket. Clique sur une adresse pour voir sa description, ses paramètres et ses réponses possibles.
- Schemas (en bas de page) : la forme exacte des objets renvoyés.
L'outil (Swagger) est en anglais. Pour essayer une adresse :
- Clique sur l'adresse, par exemple GET /v1/level/{guildId}/{userId}.
- Clique sur Try it out.
- Remplis les paramètres (ici l'ID du serveur et l'ID du membre).
- Clique sur Execute. Swagger envoie une vraie requête et affiche la commande
curléquivalente, l'adresse appelée, le code et le corps de la réponse.

Astuce
Les essais comptent dans la limite de 100 requêtes par minute. Pour les adresses des tickets, connecte-toi d'abord au site dans le même navigateur.



