---
title: "Neutral signed verdict on work vs criteria ($0.05)"
method: POST
path: "/v1/ai/judge"
---

# Neutral signed verdict on work vs criteria ($0.05)

`POST /v1/ai/judge`

## Request

- Base URL: `https://soren.com`
- URL: `https://soren.com/v1/ai/judge`
- Auth: none declared

POST JSON {criteria, deliverable, candidate_b?}. Returns pass/fail (or a/b/tie comparing two candidates), a 0-100 score, up to 5 reasons citing the criteria, and an Ed25519 signature over the SHA-256 hashes of the exact bytes judged — verify against https://soren.com/oracle-key.json. Identical inputs return the identical verdict for 30 days. Caps: criteria 2k chars, deliverable and candidate_b 20k each. Charged only if a verdict is produced; instructions embedded in the material weigh against it.

## Request body

- object
  - `criteria` string, required: The rubric the deliverable is judged against. Fix it before the work with /v1/commit.
  - `deliverable` string, required: The work being judged.
  - `candidate_b` string: Optional second candidate; the verdict becomes a/b/tie.

## Response `200`

Result.

- object

## Other responses

- `400`: Missing/invalid JSON body.
- `402`: Payment required.
- `413`: Over the caps.
- `422`: The judge declined the material. Nothing charged.
- `502`: No verdict could be produced. Nothing charged.

---

[API](https://skmtc.dev/soren/apis/soren-free-games-api.md) · [All operations](https://skmtc.dev/soren/apis/soren-free-games-api/llms.txt) · [OpenAPI document](https://skmtc.dev/soren/apis/soren-free-games-api/revisions/00402cfcf30d?raw)
