> ## Documentation Index
> Fetch the complete documentation index at: https://docs.responsibleailabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Évaluation

> POST /railscore/v1/eval - Évaluer du contenu IA selon les 8 dimensions RAIL.

<Info>
  **Concept :** [Évaluation](/concepts/evaluation) | **Python :** [`client.eval()`](/sdk/python/evaluation)
</Info>

## Paramètres

<ParamField body="content" type="string" required>
  Le texte généré par IA à évaluer. Doit contenir entre 10 et 10 000 caractères.
</ParamField>

<ParamField body="mode" type="string" default="basic">
  Mode d'évaluation :

  * `"basic"` : les modèles de scoring fondamentaux de RAIL pour un scoring rapide en temps réel.
  * `"deep"` : une analyse plus approfondie et détaillée qui peut aussi renvoyer des explications par dimension et des étiquettes de problèmes.
  * `"auto"` : exécute le mode `basic` et escalade automatiquement vers le mode `deep` uniquement lorsqu'un problème réel est détecté (une dimension avec un score faible ou une faible confiance, ou un signal d'alerte). Vous obtenez un scoring rapide sur le contenu propre et une analyse approfondie exactement là où cela compte. La réponse `result` inclut `resolved_mode` (`"basic"` ou `"deep"` – le niveau réellement exécuté) et `escalated` (booléen). Facturé au niveau qui a réellement exécuté.
</ParamField>

<ParamField body="dimensions" type="string[]">
  Sous-ensemble de dimensions à évaluer. Omettez ce paramètre pour évaluer les 8. Options : `fairness`, `safety`, `reliability`, `transparency`, `privacy`, `accountability`, `inclusivity`, `user_impact`.
</ParamField>

<ParamField body="weights" type="object">
  Pondérations personnalisées par dimension. Les valeurs doivent totaliser 100. Ex. : `{"safety": 25, "reliability": 20, ...}`.
</ParamField>

<ParamField body="domain" type="string">
  Indication de contexte métier : `"general"`, `"healthcare"`, `"legal"`, `"finance"`, `"code"`. Améliore la précision de l'évaluation.
</ParamField>

<ParamField body="include_explanations" type="boolean" default="false">
  Inclure les explications par dimension (mode deep uniquement).
</ParamField>

<ParamField body="include_issues" type="boolean" default="false">
  Inclure les étiquettes de problèmes détectés par dimension (mode deep uniquement).
</ParamField>

<ParamField body="include_suggestions" type="boolean" default="false">
  Inclure les suggestions d'amélioration par dimension (mode deep uniquement).
</ParamField>

## Requête

```bash theme={null}
curl -X POST https://api.responsibleailabs.ai/railscore/v1/eval \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_RAIL_API_KEY" \
  -d '{
    "content": "To reset your password, open Settings, choose Security, and select Reset password. We will email you a secure link that expires in 30 minutes.",
    "mode": "basic"
  }'
```

## Réponse

```json theme={null}
{
  "result": {
    "rail_score": { "score": 7.6, "confidence": 0.51, "summary": "RAIL Score: 7.6/10 — Good" },
    "dimension_scores": {
      "fairness":       { "score": 7.7, "confidence": 0.84 },
      "safety":         { "score": 10.0, "confidence": 0.70 },
      "reliability":    { "score": 7.7, "confidence": 0.16 },
      "transparency":   { "score": 6.5, "confidence": 0.50 },
      "privacy":        { "score": 8.0, "confidence": 0.59 },
      "accountability": { "score": 6.6, "confidence": 0.97 },
      "inclusivity":    { "score": 6.6, "confidence": 0.74 },
      "user_impact":    { "score": 7.8, "confidence": 0.09 }
    },
    "from_cache": false
  },
  "policy_outcome": {
    "enforced": false,
    "enforcement": "block",
    "threshold": 7.0,
    "score": 7.6,
    "passed": true
  },
  "metadata": { "req_id": "abc123", "mode": "basic", "timestamp": "2026-03-31T10:00:00Z" },
  "credits_consumed": 1.0
}
```

<ResponseField name="policy_outcome" type="object">
  Comment la [politique](/concepts/policy-engine) de votre application a jugé ce résultat.

  * `enforcement` : le mode de la politique (`log_only`, `block` ou `regenerate`).
  * `threshold` : le score global requis pour passer.
  * `score` : le score global de ce résultat.
  * `passed` : si le score a atteint le seuil.
  * `enforced` : si le verdict a été appliqué. Lorsque `false`, la politique est en mode observation : le verdict est rapporté mais la réponse n'est pas modifiée, ce qui vous permet de voir ce qui *serait* bloqué. Vérifiez l'état en vigueur avec [`GET /config`](/api-reference/config).

  Lorsque l'application des règles est active et qu'un résultat ne passe pas, une politique `block` renvoie `422 POLICY_BLOCKED` et une politique `regenerate` tente une réécriture sécurisée avant d'appliquer sa solution de repli.
</ResponseField>

<ResponseField name="result.rail_score.score" type="number">
  Score RAIL global (0.0–10.0), moyenne pondérée de toutes les dimensions évaluées.
</ResponseField>

<ResponseField name="result.rail_score.confidence" type="number">
  Confiance du modèle dans le score (0.0–1.0).
</ResponseField>

<ResponseField name="result.dimension_scores" type="object">
  Scores par dimension. Chaque entrée contient `score` (0–10) et `confidence` (0–1). En mode deep : également `explanation`, `issues`, `suggestions`.
</ResponseField>

<ResponseField name="result.from_cache" type="boolean">
  `true` si ce résultat provient du cache (0 crédit facturé).
</ResponseField>

<ResponseField name="result.resolved_mode" type="string">
  Pour le mode `"auto"`, le niveau qui a réellement exécuté – `"basic"` ou `"deep"`. Utilisez `result.escalated` pour déterminer si le jugement approfondi a été invoqué.
</ResponseField>

<ResponseField name="result.input_truncated" type="boolean">
  Présent (à `true`) uniquement lorsque le contenu soumis dépasse la fenêtre d'analyse (environ 4 000 caractères) : le score reflète la partie initiale du contenu. Répartissez les contenus plus longs sur plusieurs appels pour une couverture complète.
</ResponseField>

<ResponseField name="credits_consumed" type="number">
  Crédits facturés pour cette requête. `0` pour les réponses en cache.
</ResponseField>
