/v1/infoTester l'authentification et voir les infos de votre clé API.
{
"data": {
"guild_id": "123456789",
"plan": "pro",
"daily_limit": 1000,
"current_usage": 42,
"api_version": "v1"
}
}Chargement…
Documentation
Une API REST pour piloter la modération, les tickets et la sécurité de votre serveur Discord depuis vos propres outils. 15 endpoints, réservés aux plans Pro et Enterprise.
Chaque requête s'authentifie avec une clé API passée dans l'en-tête Authorization. Générez vos clés depuis le dashboard, section API Keys.
curl -H "Authorization: Bearer pgpt_live_votre_cle_ici" \
https://protectgpt.fr/v1/infoPour une action (POST), joignez un corps JSON :
curl -X POST \
-H "Authorization: Bearer pgpt_live_votre_cle_ici" \
-H "Content-Type: application/json" \
-d '{"user_id": "123456789", "reason": "Spam"}' \
https://protectgpt.fr/v1/moderation/banChaque clé dispose d'un quota quotidien. Le compteur se réinitialise à minuit UTC ; un dépassement renvoie un statut 429.
Récupérer l'état du serveur sans rien modifier.
/v1/infoTester l'authentification et voir les infos de votre clé API.
{
"data": {
"guild_id": "123456789",
"plan": "pro",
"daily_limit": 1000,
"current_usage": 42,
"api_version": "v1"
}
}/v1/guildRécupérer les informations du serveur lié à votre clé.
{
"data": {
"guild_id": "123456789",
"plan": "pro",
"total_tickets": 156,
"open_tickets": 3
}
}/v1/ticketsLister les tickets ouverts.
Paramètres de requête
limitnumberNombre max de résultats (défaut: 50, max: 100){
"data": {
"tickets": [
{
"channel_id": "123...",
"owner_id": "456...",
"claimed_by": "789...",
"created_at": "2026-03-20T14:30:00"
}
],
"count": 1
}
}/v1/moderationLister les actions de modération récentes.
Paramètres de requête
limitnumberNombre max (défaut: 50, max: 100)typestringFiltrer par type: ban, kick, mute, warn{
"data": {
"actions": [
{
"id": 1,
"type": "ban",
"moderator_id": "123...",
"target_id": "456...",
"reason": "Spam",
"created_at": "2026-03-20T14:30:00"
}
],
"count": 1
}
}/v1/securityVoir la configuration sécurité du serveur.
{
"data": {
"configured": true,
"anti_raid": true,
"anti_spam": true,
"anti_webhook": false,
"anti_ghostping": false,
"anti_bot": true,
"role_restore": false
}
}/v1/statsRécupérer les statistiques/analytics du serveur.
{
"data": {
"period_days": 30,
"tickets_per_day": { "2026-03-20": 5, "2026-03-19": 3 },
"mod_actions_per_day": { "2026-03-20": 2 }
}
}/v1/membersLister les membres du serveur avec leurs rôles.
Paramètres de requête
limitnumberNombre max (défaut: 100, max: 1000)afterstringID du dernier membre pour paginer{
"data": {
"members": [
{
"id": "123456789",
"name": "Yukio#0001",
"display_name": "Yukio",
"bot": false,
"joined_at": "2025-01-15T10:00:00",
"roles": [
{ "id": "111...", "name": "Admin" },
{ "id": "222...", "name": "Staff" }
]
}
],
"count": 100,
"total": 24176
}
}Agir sur le serveur : modération, rôles, tickets, annonces.
/v1/moderation/banBannir un membre du serveur.
Corps (JSON)
user_idstringID Discord du membre à bannir (requis)reasonstringRaison du ban (optionnel){
"data": {
"banned": true,
"user_id": "456789123",
"reason": "Spam"
}
}/v1/moderation/kickExpulser un membre du serveur.
Corps (JSON)
user_idstringID Discord du membre à kick (requis)reasonstringRaison du kick (optionnel){
"data": {
"kicked": true,
"user_id": "456789123",
"reason": "Comportement inapproprié"
}
}/v1/moderation/muteMettre un membre en timeout (mute).
Corps (JSON)
user_idstringID Discord du membre (requis)durationnumberDurée en secondes (défaut: 3600, max: 2419200 = 28 jours)reasonstringRaison du mute (optionnel){
"data": {
"muted": true,
"user_id": "456789123",
"duration_seconds": 3600,
"reason": "Spam vocal"
}
}/v1/moderation/unbanDébannir un utilisateur.
Corps (JSON)
user_idstringID Discord de l'utilisateur à unban (requis){
"data": {
"unbanned": true,
"user_id": "456789123"
}
}/v1/tickets/closeFermer un ticket (supprime le channel).
Corps (JSON)
channel_idstringID du channel ticket à fermer (requis){
"data": {
"closed": true,
"channel_id": "987654321"
}
}/v1/roles/addAjouter un rôle à un membre.
Corps (JSON)
user_idstringID Discord du membre (requis)role_idstringID du rôle à ajouter (requis){
"data": {
"added": true,
"user_id": "456789123",
"role_id": "111222333",
"role_name": "VIP"
}
}/v1/roles/removeRetirer un rôle d'un membre.
Corps (JSON)
user_idstringID Discord du membre (requis)role_idstringID du rôle à retirer (requis){
"data": {
"removed": true,
"user_id": "456789123",
"role_id": "111222333",
"role_name": "VIP"
}
}/v1/announceEnvoyer une annonce dans un channel (texte et/ou embed).
Corps (JSON)
channel_idstringID du channel cible (requis)contentstringTexte du message (optionnel si title/description)titlestringTitre de l'embed (optionnel)descriptionstringDescription de l'embed (optionnel)colornumberCouleur de l'embed en décimal (défaut: violet){
"data": {
"sent": true,
"message_id": "123456789",
"channel_id": "987654321"
}
}Toute erreur renvoie un statut HTTP et un code lisible dans le champ error.
bad_requestParamètres manquants ou invalidesunauthorizedClé API manquante ou invalideforbiddenPlan insuffisant pour cette fonctionnaliténot_foundRessource non trouvée (guild, membre, channel)rate_limitedLimite de requêtes dépasséeinternal_errorErreur serveur