Documentation de l'API Jury Rouge
Envoyez un fichier, recevez un rapport d'analyse en JSON : similarité chiffrée, indice d'usage de l'IA, références, correction sur grille avec preuves et empreintes d'audit.
Principe
L'API est l'interface qu'utilise l'application elle-même. Chaque appel envoie un fichier (encodé en base64) et renvoie le rapport d'analyse en JSON. Rien n'est conservé : les copies sont traitées en mémoire, les empreintes de comparaison entre copies d'un même lot sont purgées après 12 heures, aucun rapport n'est archivé côté Jury Rouge. L'accès se fait avec un code d'accès fourni par Jury Rouge (contact@juryrouge.fr).
URL de base : https://juryrouge.fr/api/. Authentification : en-tête X-Jury-Key sur les appels protégés.
Endpoints
| Méthode | Chemin | Code requis | Rôle |
|---|---|---|---|
| GET | /health | Non | État du service et version du moteur. |
| GET | /modes | Non | Les trois modes de correction : neutre, dur, bienveillant. |
| GET | /grilles | Non | Grilles de la bibliothèque (identifiants, critères, barèmes). |
| POST | /grille-import | Oui | Transforme un fichier de grille (Word, CSV, JSON, texte « Nom ; points ; description ») en objet grille réutilisable. Si le fichier n'a pas de barème mais liste des compétences ou critères (référentiel Word, PDF ou texte), renvoie une proposition à valider (champ a_valider: true, 20 points répartis à parts égales) : heuristique à règles fixes, à relire. |
| POST | /analyse | Oui | Analyse complète : similarité, indice IA, références, correction sur grille. |
| POST | /plagiat | Oui | Similarité et indice IA seuls, sans grille (références en option). |
| GET | /solde | Oui | Solde d'un code à crédits (si votre code en a un). |
Analyser un document
Champs du corps JSON de /analyse : filename (extension .docx, .pdf ou .txt), data_b64 (fichier en base64), grille_id (universelle, un identifiant de /grilles, ou auto) ou grille (objet renvoyé par /grille-import), mode (neutre, dur, bienveillant), externe (booléen, faux par défaut), lot (texte libre : les copies envoyées avec le même lot sont comparées entre elles).
curl -s https://juryrouge.fr/api/analyse \
-H "X-Jury-Key: VOTRE_CODE_D_ACCES" -H "Content-Type: application/json" \
-d '{"filename":"memoire.docx","data_b64":"<contenu du fichier en base64>",
"grille_id":"universelle","mode":"neutre","externe":false,"lot":"promo-2026"}'import base64, json, urllib.request
corps = {"filename": "memoire.docx", "data_b64": base64.b64encode(open("memoire.docx", "rb").read()).decode(),
"grille_id": "universelle", "mode": "neutre", "externe": False, "lot": "promo-2026"}
req = urllib.request.Request("https://juryrouge.fr/api/analyse", data=json.dumps(corps).encode(),
headers={"X-Jury-Key": "VOTRE_CODE_D_ACCES", "Content-Type": "application/json"})
rapport = json.load(urllib.request.urlopen(req, timeout=300))
print(rapport["note"]["note_partielle_sur_20"], rapport["plagiat"]["indice_global_pct"], rapport["ia"]["indice"])Ce que renvoie /analyse
Structure (abrégée) :
{
"document": {"pages": 1, "mots": 168, "type_detecte": "memoire", ...},
"grille": {"nom": "Écrit professionnel ou universitaire (grille de référence)", "origine": "proposée par Jury Rouge"},
"criteres": [{"nom": "Méthodologie", "max": 4, "ratio": 0.6, "constats": [...], "preuves": [...], "note_proposee": 2.5}, ...],
"note": {"points_mesures": 5.0, "sur_mesures": 15.0, "sur_total": 20.0, "couverture_pct": 75.0, "note_partielle_sur_20": 6.7, "criteres_a_apprecier": [...]},
"references": {"n": 1, "verifiees": 0, "en_ligne": false, "non_controlees": 1, "entrees": [...]},
"plagiat": {"externe": null, "lot": [...], "indice_global_pct": 0.0, "indice_global_note": "..."},
"ia": {"indice": 54, "niveau": "élevé", "indicateurs": [...], "avertissement": "Indice statistique ..."},
"questions_oral": ["..."],
"audit": {"moteur": "Jury Rouge 1.0.0", "sha256_fichier": "...", "sha256_grille": "...", "date_analyse": "...", "deterministe": true, "mode": "neutre"}
}Le rapport contient les preuves citées pour chaque critère et une piste d'audit : empreintes SHA-256 du fichier et de la grille, date, version du moteur, mode. Pour un même fichier, une même grille et un même mode, les mesures par règles sont identiques ; les appréciations par IA (température 0) sont indicatives et à valider par le correcteur.
L'option « bases externes » (désactivée par défaut)
Avec "externe": true, de courtes phrases du texte sont interrogées sur Wikipédia FR et HAL, et des titres de références sur Crossref, OpenAlex et Google Livres. Sans elle, aucune requête ne quitte le serveur : seules les copies du même lot sont comparées et l'existence des références n'est pas contrôlée (statut « non contrôlée »). Le choix appartient à l'établissement, responsable du traitement : voir la politique de confidentialité. Si des requêtes externes échouent, le rapport l'indique (champ avertissement).
Limites et erreurs
| Cas | Comportement |
|---|---|
| Taille | Corps de requête de 30 Mo au plus (le base64 alourdit le fichier d'environ un tiers). |
| Cadence | Au plus 40 requêtes par minute et par adresse IP ; au-delà : HTTP 429. |
| Références | Jusqu'à 80 entrées de bibliographie contrôlées par document. |
| 401 | Code d'accès absent ou invalide. |
| 402 | Code à crédits : crédits épuisés, code expiré ou document trop long pour la formule (aucun crédit débité). |
| 415 | Format de fichier non accepté (attendu : .docx, .pdf, .txt). |
| 422 | Aucun critère reconnu dans le fichier de grille ou de référentiel. |
| 400 | Analyse impossible : texte insuffisant (PDF scanné sans texte, document trop court). |
Ce que l'API n'est pas (à ce jour)
Pas de compte utilisateur, pas d'historique ni d'archivage des rapports, pas de webhook, pas de bibliothèque cliente officielle, pas de connecteur prêt à l'emploi pour Moodle, Canvas ou Blackboard. Si votre projet d'intégration en a besoin, écrivez-nous : cela oriente notre feuille de route. Description machine : openapi.json.
Questions fréquentes
Faut-il un code d'accès pour utiliser l'API ?
Oui, sur /analyse, /plagiat et /grille-import. Il est fourni par Jury Rouge.
L'API conserve-t-elle mes documents ?
Non. Traitement en mémoire ; empreintes de comparaison purgées après 12 heures ; aucun rapport archivé. Hébergement en Allemagne (Hetzner) ; si l'option IA est cochée, le texte de la copie est transmis à Anthropic (États-Unis), sous-traitant. Hébergement en Allemagne (Hetzner) ; si l'option IA est cochée, le texte de la copie est transmis à Anthropic (États-Unis), sous-traitant.
Mis à jour le 29/09/2026. Mentions légales · Confidentialité · Sécurité