---
title: "Evaluate up to 50 inputs against one rule set in a single call"
method: POST
path: "/api/v1/evaluate/batch"
tags: ["Evaluate"]
---

# Evaluate up to 50 inputs against one rule set in a single call

`POST /api/v1/evaluate/batch`

## Request

- Base URL: `https://overwing.ai`
- URL: `https://overwing.ai/api/v1/evaluate/batch`
- Auth: HTTP bearer

Each item counts as one evaluation against the daily quota and the per-minute burst limit; the whole batch is reserved up front (429 if it would not fit). Items succeed or fail independently and are processed with bounded concurrency. Supports Idempotency-Key.

## Headers

- `Idempotency-Key` string

## Request body

- BatchRequest
  - `rule_set` string, required
  - `context` object: Default context for every item; an item's own context overrides it
  - `store` boolean: Applies to every item. False keeps no input text or context
  - `items` object[], required
    - `id` string: Your own identifier, echoed back; must be unique within the batch
    - `input` string, required
    - `metadata` object
    - `context` object

## Response `200`

Per-item results (some items may carry an error)

- BatchResponse
  - `summary` object
    - `total` integer
    - `pass` integer
    - `fail` integer
    - `review` integer
    - `errors` integer
  - `results` object[]
    - `id` string, nullable
    - `index` integer
    - `evaluation` Evaluation
      - `id` string, required
      - `verdict` 'pass' | 'fail' | 'review', required: fail: a rule's fail condition matched. review: a rule's confidence was below its review threshold and nothing failed. pass: otherwise.
      - `recommended_action` 'block' | 'redact' | 'review' | 'allow', required: One word to act on, derived from the failed rules' actions: block if any failed rule says block, else redact, else review (a review verdict or a review-action fail), else allow.
      - `aggregate_score` number, required: Weighted score: pass=1, review=0.5, fail=0 per rule, weighted by rule weight. A ranking signal for sorting or thresholds, not a decision: use verdict and recommended_action to act.
      - `confidence` number, required: Minimum confidence across rules
      - `latency_ms` integer, required
      - `results` RuleResult[], required
        - `rule` string, required
        - `action` 'block' | 'redact' | 'review', required: The rule's declared action: what to do when this rule fails
        - `type` 'choice' | 'score' | 'noul', required
        - `answer` union, required: choice: selected option; score: position on the level scale (may be fractional); noul: boolean
          - string
          - number
          - boolean
        - `probability` number, required
        - `confidence` number, required
        - `verdict` 'pass' | 'fail' | 'review', required: fail: a rule's fail condition matched. review: a rule's confidence was below its review threshold and nothing failed. pass: otherwise.
    - `error` string, nullable

## Other responses

- `400`: Invalid input; the message names the offending item
- `401`: Missing or invalid API key
- `404`: Rule set not found
- `409`: Idempotency-Key still in progress
- `422`: Idempotency-Key reused with a different body
- `429`: Batch would exceed the daily quota or the per-minute limit
- `502`: Every item failed

---

[API](https://skmtc.dev/overwing/apis/overwing-api.md) · [All operations](https://skmtc.dev/overwing/apis/overwing-api/llms.txt) · [OpenAPI document](https://skmtc.dev/overwing/apis/overwing-api/revisions/ff1282d31438?raw)
