API Outils IA (Detector + Humanizer)
AI Detection et Humanizer via HTTP — single-shot ou batch.
L'API Outils IA regroupe deux domaines fonctionnels : l'AI Detector (détecte du texte généré par IA et fournit un score 0–100) et le Humanizer (réécrit du texte IA pour le rendre plus humain — en single-shot ou en batch sur plusieurs documents). Tous les endpoints sont sous /v1/... et team-scoped.
Contexte des modules : AI Detector · Humanizer.
AI Scanner (Detect + Humanize inline)
La voie rapide — détection + humanisation sur un article déjà présent dans Rankion.
| Méthode | Endpoint | Body | Crédits |
|---|---|---|---|
| POST | /v1/ai-scanner/detect |
{text, scan_type?:"full"|"snippet"} |
2 |
| POST | /v1/ai-scanner/humanize |
{article_id, level?:"light"|"medium"|"heavy"} |
5 |
TOKEN="$RANKION_API_TOKEN"
BASE="https://rankion.ai/api/v1"
# Détection sur un snippet
curl -X POST "$BASE/ai-scanner/detect" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"text":"Künstliche Intelligenz revolutioniert die digitale Welt...","scan_type":"snippet"}'
Réponse :
{
"ai_probability": 87,
"verdict": "likely_ai",
"confidence": "high",
"flagged_passages": [
{ "start": 0, "end": 142, "score": 92, "reason": "Generic opener pattern" }
]
}
scan_type=full analyse au niveau du paragraphe et fournit un tableau heatmap passages[] avec un score par paragraphe. scan_type=snippet (défaut) ne renvoie que le score agrégé.
L'endpoint humanize réécrit inline un article existant dans Rankion (écrase article.content, crée une version) — le level pilote l'agressivité : light = corrections de phrasing, medium = syntaxe + vocabulaire, heavy = reformulation complète.
Humanizer (batch, async)
L'endpoint Humanizer dédié prend du texte libre (pas besoin de stub d'article) et le traite en batch — idéal pour le rewriting en masse ou les workflows headless.
| Méthode | Endpoint | Body | Crédits |
|---|---|---|---|
| POST | /v1/humanize |
{text, project_id?, language?, level?} → 202 + {batch_id} |
8 |
| GET | /v1/humanize/{batch_id} |
Statut du batch + liste de sortie | — |
| GET | /v1/humanize/{batch_id}/documents/{id} |
Détail d'un document | — |
# Démarrer le batch
BATCH=$(curl -s -X POST "$BASE/humanize" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{
"text":"AI-generierter Originaltext, mehrere Absätze...",
"language":"de",
"level":"medium"
}' | jq -r .batch_id)
# Poller le statut (async : 15 à 60 s par document)
curl "$BASE/humanize/$BATCH" \
-H "Authorization: Bearer $TOKEN"
Valeurs de status : queued → processing → completed (ou failed).
Réponse GET /humanize/{batch_id} (200) :
{
"batch_id": 19,
"status": "completed",
"language": "de",
"level": "medium",
"documents": [
{
"id": 102,
"original_word_count": 740,
"humanized_word_count": 758,
"ai_score_before": 91,
"ai_score_after": 22,
"preview": "Erste 200 Zeichen des humanisierten Texts..."
}
],
"credits_used": 8
}
Tu récupères le texte humanisé complet via GET /humanize/{batch_id}/documents/{id} (champ humanized_text).
Exemple complet : Detect → Humanize → Re-Detect
TEXT="..." # texte IA original
# 1) Détection avant
SCORE_BEFORE=$(curl -s -X POST "$BASE/ai-scanner/detect" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d "{\"text\":\"$TEXT\",\"scan_type\":\"snippet\"}" | jq -r .ai_probability)
# 2) Batch Humanize
BATCH=$(curl -s -X POST "$BASE/humanize" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d "{\"text\":\"$TEXT\",\"level\":\"medium\"}" | jq -r .batch_id)
# 3) Polling
while [ "$(curl -s "$BASE/humanize/$BATCH" \
-H "Authorization: Bearer $TOKEN" | jq -r .status)" != "completed" ]; do
sleep 5
done
# 4) Texte humanisé + nouvelle détection
DOC_ID=$(curl -s "$BASE/humanize/$BATCH" \
-H "Authorization: Bearer $TOKEN" | jq -r '.documents[0].id')
HUMANIZED=$(curl -s "$BASE/humanize/$BATCH/documents/$DOC_ID" \
-H "Authorization: Bearer $TOKEN" | jq -r .humanized_text)
curl -s -X POST "$BASE/ai-scanner/detect" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d "{\"text\":\"$HUMANIZED\",\"scan_type\":\"snippet\"}" \
| jq '{before: '$SCORE_BEFORE', after: .ai_probability}'
Notes & pièges
- Humanize ne ramène pas garantissement le score IA à 0. Réaliste : 80+ → 15–30. Qui promet « score IA 0 » ment. Utilise
level=heavypour une réduction plus forte (changement de style plus marqué). /humanizeest async,/ai-scanner/humanizeest sync. Article unique en sync, bulk/texte libre en async.- La détection est probabiliste. Score IA < 30 = probablement humain, > 70 = probablement IA. Les valeurs entre les deux doivent honnêtement être interprétées comme indéterminées.
- Spécifie la langue. Sans
language, le Humanizer devine — en cas de mix linguistique (DE dans un texte EN), cela donne de moins bons résultats.
Voir aussi : API Articles · Crédits · AI Detector · Humanizer.