> ## 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.

# Evaluation

> POST /railscore/v1/eval - AI content को 8 RAIL dimensions पर score करें।

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

## Parameters

<ParamField body="content" type="string" required>
  evaluate करने के लिए AI से बना text। 10–10,000 characters के बीच होना चाहिए।
</ParamField>

<ParamField body="mode" type="string" default="basic">
  Evaluation mode:

  * `"basic"` — तेज़, real-time scoring के लिए RAIL के core scoring models।
  * `"deep"` — एक ज्यादा गहरा, ज्यादा detailed analysis जो per-dimension explanations और issue tags भी लौटा सकता है।
  * `"auto"` — `basic` चलाता है, और automatically `deep` पर escalate करता है सिर्फ़ तब जब कोई असली issue detect हो (कम score या low confidence का dimension, या कोई flagged signal)। Clean content तेज़ रहता है और deep analysis सिर्फ़ जहां ज़रूरत हो वहां मिलता है। Response `result` में `resolved_mode` (`"basic"` या `"deep"` — कौन-सा tier actually चला) और `escalated` (boolean) होता है। Billing उस tier के हिसाब से जो actually चला।
</ParamField>

<ParamField body="dimensions" type="string[]">
  score करने के लिए dimensions का subset। सभी 8 score करने के लिए छोड़ दें। Options: `fairness`, `safety`, `reliability`, `transparency`, `privacy`, `accountability`, `inclusivity`, `user_impact`।
</ParamField>

<ParamField body="weights" type="object">
  Custom dimension weights। values का जोड़ 100 होना चाहिए। जैसे `{"safety": 25, "reliability": 20, ...}`।
</ParamField>

<ParamField body="domain" type="string">
  Domain context hint: `"general"`, `"healthcare"`, `"legal"`, `"finance"`, `"code"`। scoring की सटीकता बेहतर करता है।
</ParamField>

<ParamField body="include_explanations" type="boolean" default="false">
  per-dimension explanations शामिल करें (सिर्फ़ deep mode)।
</ParamField>

<ParamField body="include_issues" type="boolean" default="false">
  हर dimension के detected issue tags शामिल करें (सिर्फ़ deep mode)।
</ParamField>

<ParamField body="include_suggestions" type="boolean" default="false">
  हर dimension के सुधार के suggestions शामिल करें (सिर्फ़ deep mode)।
</ParamField>

## Request

```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"
  }'
```

## Response

```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">
  आपकी application की [policy](/concepts/policy-engine) ने इस result को कैसे judge किया।

  * `enforcement` — policy का mode (`log_only`, `block`, या `regenerate`)।
  * `threshold` — pass होने के लिए जरूरी overall score।
  * `score` — इस result का overall score।
  * `passed` — score ने threshold पूरा किया या नहीं।
  * `enforced` — outcome पर action लिया गया या नहीं। जब `false` हो, तो policy monitor mode में है: verdict report होता है पर response बदला नहीं जाता, ताकि आप देख सकें कि क्या *block होता*। live state [`GET /config`](/api-reference/config) से check करें।

  जब enforcement active हो और कोई result pass न करे, तो `block` policy `422 POLICY_BLOCKED` लौटाती है और `regenerate` policy अपना fallback लगाने से पहले एक safe rewrite की कोशिश करती है।
</ResponseField>

<ResponseField name="result.rail_score.score" type="number">
  Overall RAIL score (0.0–10.0), सभी evaluate किए गए dimensions का weighted average।
</ResponseField>

<ResponseField name="result.rail_score.confidence" type="number">
  score में model का confidence (0.0–1.0)।
</ResponseField>

<ResponseField name="result.dimension_scores" type="object">
  Per-dimension scores। हर entry में `score` (0–10) और `confidence` (0–1) होता है। Deep mode में: साथ में `explanation`, `issues`, `suggestions` भी।
</ResponseField>

<ResponseField name="result.from_cache" type="boolean">
  `true` अगर यह result cache से लौटाया गया (0 credits charge हुए)।
</ResponseField>

<ResponseField name="result.resolved_mode" type="string">
  `mode: "auto"` के लिए, जो tier actually चला — `"basic"` या `"deep"`। `result.escalated` देखकर पता चलेगा कि deep judge invoke हुआ या नहीं।
</ResponseField>

<ResponseField name="result.input_truncated" type="boolean">
  यह field केवल तब present होती है (`true` के रूप में) जब submit किया गया content analysis window (लगभग 4,000 characters) से बड़ा हो: score content के शुरुआती हिस्से को reflect करता है। पूरी coverage के लिए लंबे content को कई calls में बाँटें।
</ResponseField>

<ResponseField name="credits_consumed" type="number">
  इस request के लिए charge किए गए credits। cached responses के लिए `0`।
</ResponseField>
