# Review images

> Score an image from 1 to 4 and list what is wrong with it, using a panel of reviewers. Two effort levels trade thoroughness for price.

`POST /image/review` scores one image and lists its defects and strengths. A
panel of vision models reviews the image independently, and Mynth merges their
verdicts. There is no `model` field. `effort` picks the panel.

**SDK**

```ts
import Mynth from "@mynthio/sdk";

const mynth = new Mynth();

const review = await mynth.image.review({
  url: "https://cdn.example.com/lighthouse.png",
  effort: "low",
});

console.log(review.score, review.summary);
for (const finding of review.findings) console.log(finding.severity, finding.finding);
```

**CLI**

```bash
npx @mynthio/cli image review https://cdn.example.com/lighthouse.png --effort low
```

**REST**

```bash
curl https://api.mynth.io/image/review \
  -H "Authorization: Bearer $MYNTH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://cdn.example.com/lighthouse.png","effort":"low"}'
```

| `effort`         | Panel                | Price | Use it for                  |
| ---------------- | -------------------- | ----- | --------------------------- |
| `high` (default) | five strong models   | $0.30 | final checks on hero images |
| `low`            | three smaller models | $0.01 | triage at volume            |

You pay only when the task succeeds. The body takes `url` and `effort`, and no
`webhook` or `metadata`. The SDK also accepts a `file`.

## The result

```json
{
  "score": 3,
  "summary": "Clean composition with one visible defect in the left hand.",
  "findings": [
    {
      "finding": "The left hand has six fingers",
      "category": "anatomy",
      "severity": "major",
      "where": "Bottom left, the hand resting on the railing",
      "confidence": "high"
    }
  ],
  "strengths": [{ "strength": "Warm, consistent lighting", "confidence": "medium" }]
}
```

| Field        | Meaning                                                                                   |
| ------------ | ----------------------------------------------------------------------------------------- |
| `score`      | 1 to 4, higher is better. The median of the reviewers' scores                             |
| `summary`    | A short prose summary                                                                     |
| `finding`    | What is wrong, in plain language                                                          |
| `category`   | Usually `anatomy`, `text`, `composition`, `artifact`, `color`, or `lighting`. An open set |
| `severity`   | `critical`, `major`, or `minor`                                                           |
| `where`      | Where in the image, in plain language                                                     |
| `confidence` | `low`, `medium`, or `high`: how strongly the reviewers agreed                             |

A finding or strength is reported only when at least two reviewers named it.
Treat `category` as a label, not an enum: an unusual defect gets its own
category. The rubric is revised from time to time, so compare scores taken
around the same time rather than across months.

## Next steps

- [Rate images](https://mynth.io/docs/guides/rate-images.md): sfw/nsfw, a different question from quality.
- [Pricing](https://mynth.io/docs/pricing.md#tool-prices): the two effort prices.
