Base URL

https://api.info-score.org/v1

Toutes les requêtes doivent utiliser HTTPS. Le contenu retourné est en application/json; charset=utf-8.

Version actuelle : v1. Les versions précédentes sont maintenues 12 mois après la sortie d'une nouvelle version majeure. L'en-tête X-API-Version indique la version utilisée dans chaque réponse.

Authentification

Toutes les requêtes doivent inclure votre clé API dans l'en-tête Authorization.

Authorization: Bearer is_sk_votre_cle_api

La clé API est disponible dans votre tableau de bord après inscription. Elle identifie votre compte et est liée à votre facturation.

Sécurité : N'incluez jamais votre clé API dans du code front-end ou dans un dépôt Git public. Utilisez des variables d'environnement côté serveur.

Codes d'erreur

HTTPCode erreurDescription
400invalid_requestParamètres manquants ou invalides
401unauthorizedClé API absente ou invalide
402insufficient_creditsSolde insuffisant pour cette opération
404not_foundÉvaluation ou certificat introuvable
422content_too_shortContenu inférieur à 200 mots — non évaluable
429rate_limitedTrop de requêtes (max 60 / minute)
500internal_errorErreur serveur — réessayez dans quelques instants

Format des erreurs

{
  "error": {
    "code": "insufficient_credits",
    "message": "Votre solde est insuffisant.",
    "details": {
      "balance": 0.30,
      "required": 1.00
    }
  }
}

Endpoints

POST /evaluate 1,00 € / requête

Soumet un contenu à l'évaluation RUB. Retourne le score sur les 12 critères, le grade et les justifications.

Corps de la requête

ParamètreTypeRequisDescription
url string optionnel * URL publique du contenu à évaluer
text string optionnel * Texte brut du contenu (min. 200 mots)
title string optionnel Titre du contenu (utilisé si text est fourni)
language string optionnel Code ISO 639-1 (défaut : fr). Supporte : fr, en, es, de
with_certificate boolean optionnel Si true, génère un certificat JSON signé (+0,50 €). Défaut : false

* L'un des deux paramètres url ou text est obligatoire.

Exemple de requête (cURL)

curl -X POST https://api.info-score.org/v1/evaluate \
  -H "Authorization: Bearer is_sk_votre_cle_api" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://www.lemonde.fr/science/article/exemple",
    "language": "fr",
    "with_certificate": false
  }'

Réponse

{
  "id": "eval_01J8X4K7Q2MWNVF3HB9CKPZGRD",
  "status": "completed",
  "created_at": "2026-04-12T14:32:07Z",
  "url": "https://www.lemonde.fr/science/article/exemple",
  "title": "Réchauffement climatique : les données du GIEC 2025",
  "language": "fr",
  "score": {
    "total": 77.6,
    "grade": "B",
    "grade_label": "Fiable",
    "dimensions": {
      "R": { "score": 79.2, "weight": 0.45 },
      "U": { "score": 80.0, "weight": 0.25 },
      "B": { "score": 73.3, "weight": 0.30 }
    }
  },
  "criteria": {
    "R1": { "note": 2, "coefficient": 3, "points": 6,
            "justification": "Les affirmations s'appuient sur le rapport GIEC AR6. Quelques chiffres non sourcés." },
    "R2": { "note": 3, "coefficient": 3, "points": 9,
            "justification": "Sources primaires citées avec liens vers les publications originales." },
    "R3": { "note": 2, "coefficient": 2, "points": 4,
            "justification": "Marges d'incertitude mentionnées, intervalles de confiance non reportés." },
    "R4": { "note": 2, "coefficient": 2, "points": 4,
            "justification": "Contexte temporel présent. Comparaisons géographiques insuffisantes." },
    "R5": { "note": 3, "coefficient": 1, "points": 3,
            "justification": "Affirmations vérifiables depuis les sources fournies." },
    "U1": { "note": 3, "coefficient": 2, "points": 6,
            "justification": "Article bien structuré, vocabulaire technique défini." },
    "U2": { "note": 2, "coefficient": 2, "points": 4,
            "justification": "Analyse descriptive. Des recommandations pratiques seraient bienvenues." },
    "U3": { "note": 2, "coefficient": 1, "points": 2,
            "justification": "Périmètre couvert. Quelques lacunes sur les politiques d'adaptation." },
    "B1": { "note": 2, "coefficient": 3, "points": 6,
            "justification": "Points de vue critiques mentionnés mais rapidement." },
    "B2": { "note": 3, "coefficient": 2, "points": 6,
            "justification": "Auteur identifié, affiliation déclarée, aucun conflit d'intérêts apparent." },
    "B3": { "note": 2, "coefficient": 2, "points": 4,
            "justification": "Ton factuel. Un passage légèrement alarmiste." },
    "B4": { "note": 3, "coefficient": 1, "points": 3,
            "justification": "Contribution positive au débat public." }
  },
  "raw_points": 57,
  "max_points": 87,
  "engine": "victoria-v2",
  "certificate": null
}
GET /score/{id} Gratuit

Récupère les résultats d'une évaluation existante par son identifiant. Toutes les évaluations publiques sont accessibles gratuitement.

Paramètre de chemin

ParamètreTypeDescription
id string Identifiant de l'évaluation (format eval_*)

Exemple

curl https://api.info-score.org/v1/score/eval_01J8X4K7Q2MWNVF3HB9CKPZGRD \
  -H "Authorization: Bearer is_sk_votre_cle_api"

Réponse (résumé)

{
  "id": "eval_01J8X4K7Q2MWNVF3HB9CKPZGRD",
  "status": "completed",
  "created_at": "2026-04-12T14:32:07Z",
  "url": "https://www.lemonde.fr/science/article/exemple",
  "title": "Réchauffement climatique : les données du GIEC 2025",
  "score": {
    "total": 77.6,
    "grade": "B",
    "grade_label": "Fiable"
  }
}
GET /certificate/{id} Gratuit (si déjà généré)

Récupère le certificat JSON signé d'une évaluation. Le certificat doit avoir été demandé lors de l'évaluation (with_certificate: true) ou via une commande séparée.

Paramètre de requête optionnel

ParamètreTypeDescription
format string json (défaut) ou pdf (certification Premium uniquement)

Exemple

curl https://api.info-score.org/v1/certificate/eval_01J8X4K7Q2MWNVF3HB9CKPZGRD \
  -H "Authorization: Bearer is_sk_votre_cle_api"

Réponse

{
  "certificate": {
    "id": "cert_01J8X4KBNJRW5PVTQ7DFHM23SY",
    "evaluation_id": "eval_01J8X4K7Q2MWNVF3HB9CKPZGRD",
    "issued_at": "2026-04-12T14:32:18Z",
    "expires_at": "2027-04-12T14:32:18Z",
    "issuer": "Association Info-Score",
    "subject": {
      "url": "https://www.lemonde.fr/science/article/exemple",
      "title": "Réchauffement climatique : les données du GIEC 2025",
      "content_hash": "sha256:a3f4b2c1d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3"
    },
    "grade": "B",
    "score": 77.6,
    "version": "1.0",
    "signature": "is_sig_MEQCIBNkQ7mP2vX4wR9jKL1mNqAp3...",
    "public_url": "https://info-score.org/cert/cert_01J8X4KBNJRW5PVTQ7DFHM23SY",
    "badge_url": "https://api.info-score.org/v1/badge/cert_01J8X4KBNJRW5PVTQ7DFHM23SY.svg"
  }
}

Intégrer le badge sur votre site

<!-- Badge dynamique Info-Score -->
<a href="https://info-score.org/cert/cert_01J8X4KBNJRW5PVTQ7DFHM23SY"
   target="_blank" title="Certifié Info-Score — Grade B">
  <img src="https://api.info-score.org/v1/badge/cert_01J8X4KBNJRW5PVTQ7DFHM23SY.svg"
       alt="Info-Score Grade B" height="20">
</a>
GET /stats Gratuit

Retourne les statistiques globales de la plateforme. Données mises à jour toutes les heures.

Paramètres de requête optionnels

ParamètreTypeDescription
since string Date ISO 8601 — filtre les stats depuis cette date
domain string Filtre par domaine source (ex : lemonde.fr)

Exemple

curl "https://api.info-score.org/v1/stats?since=2026-01-01" \
  -H "Authorization: Bearer is_sk_votre_cle_api"

Réponse

{
  "total_evaluations": 12470,
  "average_score": 62.4,
  "grade_distribution": {
    "A": { "count": 1547, "percentage": 12.4 },
    "B": { "count": 3005, "percentage": 24.1 },
    "C": { "count": 3579, "percentage": 28.7 },
    "D": { "count": 2407, "percentage": 19.3 },
    "E": { "count": 1397, "percentage": 11.2 },
    "N": { "count": 535,  "percentage": 4.3  }
  },
  "dimension_averages": {
    "R": 61.0, "U": 68.0, "B": 57.0
  },
  "last_updated": "2026-04-12T06:00:00Z"
}

Exemples de code

Des exemples d'intégration sont disponibles sur GitHub pour les langages les plus courants.

Python

import httpx

client = httpx.Client(
    base_url="https://api.info-score.org/v1",
    headers={"Authorization": "Bearer is_sk_votre_cle_api"}
)

response = client.post("/evaluate", json={
    "url": "https://www.lemonde.fr/article/exemple",
    "language": "fr"
})

result = response.json()
print(f"Grade : {result['score']['grade']} — Score : {result['score']['total']}/100")

JavaScript / TypeScript

const response = await fetch('https://api.info-score.org/v1/evaluate', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer is_sk_votre_cle_api',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    url: 'https://www.lemonde.fr/article/exemple',
    language: 'fr',
  }),
});

const { score } = await response.json();
console.log(`Grade ${score.grade} — ${score.total}/100`);

cURL (minimal)

curl -X POST https://api.info-score.org/v1/evaluate \
  -H "Authorization: Bearer is_sk_votre_cle_api" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://exemple.fr/article","language":"fr"}'
SDK officiel Python (pip install info-score) en cours de développement. Contributions bienvenues sur github.com/Info-Score/info-score.

Prêt à intégrer Info-Score ?

Première évaluation offerte. Créez votre compte en 2 minutes.