# aiReview.evaluate

Manually dry-run or save a deterministic and human-evidence evaluation for up to 50 redacted chats over at most 31 days. Cost limit must be zero; no model calls, schedules or production prompt changes. Requires evaluate and read grants for each exact owner. Human dashboard or terminal only.

`POST /api/v1/accounting/aiReview.evaluate`

Permissions: `accounting:read`, `accounting:write` · Roles: admin, finance, contributor

Not available over MCP: Private redacted chats and human review stay in Oatmilk and its terminal; connected AI apps receive no reviewer access or chat sharing.

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `selection` | object | Yes | No other fields. |
| `selection.from` | string (date-time) | Yes | The first date to include, as YYYY-MM-DD. |
| `selection.to` | string (date-time) | Yes | The last date to include, as YYYY-MM-DD. |
| `selection.limit` | integer |  | How many results to return at most. 1 to 50. Default `10`. |
| `selection.search` | string |  | Text to search for. at most 200 characters. Default `""`. |
| `selection.coverage` | enum |  | One of: `complete`, `incomplete`, `unavailable`. |
| `selection.model` | string |  | at most 160 characters. |
| `selection.tool` | string |  | at most 120 characters. |
| `selection.errorsOnly` | boolean |  |  |
| `selection.fallback` | enum |  | One of: `observed`, `unavailable`. |
| `dryRun` | boolean |  |  |
| `maxCostUsd` | 0 |  | Default `0`. |
| `evaluatorVersion` | "deterministic-human-v1" |  | Default `"deterministic-human-v1"`. |

## Example request

```bash
curl https://app.getoatmilk.com/api/v1/accounting/aiReview.evaluate \
  -H "Authorization: Bearer $OATMILK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "selection": {
    "from": "2026-09-30T14:00:00Z",
    "to": "2026-09-30T14:00:00Z"
  }
}'
```

Reference page: https://app.getoatmilk.com/docs/api/aiReview.evaluate
