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

# POST /v1/evaluate

> Run a ruleset and return a compliance verdict.

The main compliance endpoint. Send a geometry (and/or a typed
identifier) plus a ruleset, get back a structured verdict with
per-check evidence.

## Request

```json theme={null}
{
  "input": {
    "geometry": {
      "type": "Polygon",
      "coordinates": [[[-60,-3],[-60,-2],[-59,-2],[-59,-3],[-60,-3]]]
    },
    "scheme": { "type": "br:cnpj", "value": "00.000.000/0001-91" }
  },
  "ruleset_id": "br-bacen-cmn-5193-credito-rural@1"
}
```

| Field            | Required | Notes                                                          |
| ---------------- | -------- | -------------------------------------------------------------- |
| `input.geometry` | yes¹     | GeoJSON Polygon, MultiPolygon, or Point.                       |
| `input.scheme`   | yes¹     | Typed identifier `{type, value}` for subject-register checks.  |
| `input.crs`      | no       | Source CRS (e.g. `EPSG:31983`). Default: `EPSG:4326`.          |
| `ruleset_id`     | yes²     | `name@version` for a pinned version, or `name` for the latest. |
| `ruleset`        | yes²     | Inline ruleset document.                                       |

¹ At least one of `geometry` or `scheme` is required.
² Exactly one of `ruleset_id` / `ruleset`.

## Response

```json theme={null}
{
  "data": {
    "ruleset_ref": "br-bacen-cmn-5193-credito-rural@1",
    "evaluated_at": "2026-05-05T12:34:56Z",
    "status":  "ok",
    "outcome": "non_compliant",
    "checks": [
      {
        "id": "no_indigenous_overlap",
        "severity": "critical",
        "triggered": true,
        "status": "ok",
        "evidence": [
          {
            "source_name": "funai_tis",
            "name": "Yanomami",
            "overlap_area_m2": 420314.5,
            "overlap_pct_input": 0.42
          }
        ],
        "total_matched": 3
      }
    ],
    "projections": []
  }
}
```

### Two distinct fields

* **`status`** — execution health: `ok` if every check ran cleanly,
  `degraded` if any source or check could not be evaluated.
* **`outcome`** — compliance result: `compliant`, `warning`,
  `non_compliant`, or `degraded`.

You read both. A response can be `status: ok` with `outcome:
non_compliant` (clean evaluation, policy violated). A `status:
degraded` is incomplete — treat with caution and consider retrying.

See [Verdicts](/concepts/verdicts) for the full semantics.

## Idempotency

Pass `Idempotency-Key: <unique-string>` to make the call safely
retryable. The first response is replayed for matching keys; key
collisions with different bodies are rejected.

## Output formats

* Default: JSON.
* `Accept: application/geo+json` — return a GeoJSON FeatureCollection
  of evidence features.
