---
title: Référence API
description: Documentation détaillée de tous les points de terminaison de l'API Memegoat.
---
## 📖 Référence API
Cette page documente tous les points de terminaison disponibles sur l'API Memegoat. L'URL de base de l'API est `https://api.memegoat.fr`.
L'authentification est gérée via des **cookies HttpOnly sécurisés** (`iron-session`). Les tokens ne sont pas exposés dans le corps des réponses après connexion pour une sécurité maximale.
### 🔐 Authentification (`/auth`)
Inscrit un nouvel utilisateur.
**Corps de la requête (JSON) :**
- `username` (string) : Nom d'utilisateur unique.
- `email` (string) : Adresse email valide.
- `password` (string) : Mot de passe (min. 8 caractères).
```json
{
"username": "goat_user",
"email": "user@memegoat.fr",
"password": "strong-password"
}
```
Authentifie un utilisateur et retourne les jetons de session. Si la 2FA est activée, retourne un indicateur.
**Corps de la requête :**
- `email` (string)
- `password` (string)
**Réponse (Succès) :**
```json
{
"message": "User logged in successfully",
"userId": "uuid-v4"
}
```
*Note: L'access_token et le refresh_token sont stockés dans un cookie HttpOnly chiffré.*
**Réponse (2FA requise) :**
```json
{
"message": "2FA required",
"requires2FA": true,
"userId": "uuid-v4"
}
```
Finalise la connexion si la 2FA est requise.
**Corps de la requête :**
- `userId` (uuid) : ID de l'utilisateur.
- `token` (string) : Code TOTP à 6 chiffres.
Obtient un nouvel `access_token` à partir du `refresh_token` stocké dans la session.
Met à jour automatiquement le cookie de session.
Invalide la session actuelle.
### 👤 Utilisateurs (`/users`)
Récupère les informations détaillées de l'utilisateur connecté. Requiert l'authentification.
Extrait l'intégralité des données de l'utilisateur au format JSON (Conformité RGPD).
Contient le profil, les contenus et les favoris.
Met à jour les informations du profil.
- `displayName` (string)
Marque le compte pour suppression (Soft Delete).
Les données sont définitivement purgées après un délai légal de 30 jours.
- `POST /users/me/2fa/setup` : Génère un secret et QR Code.
- `POST /users/me/2fa/enable` : Active après vérification du jeton.
- `POST /users/me/2fa/disable` : Désactive avec jeton.
Liste tous les utilisateurs. Réservé aux administrateurs.
**Params :** `limit`, `offset`.
### 🖼️ Contenus (`/contents`)
Recherche et filtre les contenus. Ces endpoints sont mis en cache (Redis + Navigateur).
**Query Params :**
- `sort` : `trend` | `recent` (uniquement sur `/explore`)
- `tag` (string)
- `category` (slug ou id)
- `author` (username)
- `query` (titre)
- `favoritesOnly` (bool)
Récupère un contenu par son ID ou son Slug.
**Détection de Bots (SEO) :**
Si l'User-Agent correspond à un robot d'indexation (Googlebot, Twitterbot, etc.), l'API retourne un rendu HTML minimal contenant les méta-tags **OpenGraph** et **Twitter Cards** pour un partage optimal. Pour les autres clients, les données sont retournées en JSON.
Upload un fichier avec traitement automatique.
**Type :** `multipart/form-data`
**Champs :**
- `file` (binary) : png, jpeg, webp, webm, gif.
- `type` : `meme` | `gif`
- `title` : string
- `categoryId`? : uuid
- `tags`? : string[]
Incrémente les statistiques de vue ou d'utilisation.
Supprime un contenu (Soft Delete). Doit être l'auteur.
### 📂 Catégories, ⭐ Favoris, 🚩 Signalements
- `GET /categories` : Liste toutes les catégories.
- `POST /categories` : Création (Admin uniquement).
- `GET /favorites` : Liste les favoris de l'utilisateur.
- `POST /favorites/:contentId` : Ajoute un favori.
- `DELETE /favorites/:contentId` : Retire un favori.
- `POST /reports` : Signale un contenu ou un tag.
- `GET /reports` : Liste (Modérateurs).
- `PATCH /reports/:id/status` : Gère le workflow.
### 🔑 Clés API & 🏷️ Tags
- `POST /api-keys` : Génère une clé `{ name, expiresAt? }`.
- `GET /api-keys` : Liste les clés actives.
- `DELETE /api-keys/:id` : Révoque une clé.
- `GET /tags` : Recherche de tags populaires ou récents.
**Params :** `query`, `sort`, `limit`.