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

# Verdicts

> What comes back, and what to do with it.

## Status

```
pending → partially_captured → completed | expired | failed
```

`completed` means the verdict is in. `expired` means nobody finished the capture in time.

## Verdict

```json theme={"dark"}
{
  "verdict": { "rial": false, "signals": ["screen_detected"] }
}
```

| Field | Meaning |
| - | - |
| `rial` | `true` when no check tripped. **Branch on this.** |
| `signals` | The checks that tripped: `screen_detected`, `ai_detected`, `found_online`. Empty when `rial` is `true`. |

## Which checks run

Rial picks them from what you send. On an audit you can narrow them with `checks` — see [Only AI detection](https://docs.rial.io/audits.md#only-ai-detection).

| When | It answers | It reports |
| - | - | - |
| Always, on every photo | Is this a photo of a screen? Does it look AI-generated? | `screen_detected`, `ai_detected` |
| On an audit | Is this image already online? | `found_online` |
| When you describe the photo (`expected_object`, `context`) | Does it show that? | `object_match`, `context_match` |
| When you send `condition_aspects` | In what condition? | `condition` |
| When you send `expected_location` | Was it taken there? | `location_match` |

## Extra checks

Each one is switched on by a field at creation and comes back next to the verdict, never inside it.

| You send | You get back |
| - | - |
| `expected_object: "2021 Toyota Corolla"` | `object_match: { status: "match" \| "mismatch" \| "inconclusive" }` |
| `expected_location: "Av. Córdoba 5635, Buenos Aires"` | `location_match: { status: "verified" \| "no_match" \| "ungeocoded", distance_m }` |
| `condition_aspects: ["paint", "tires"]` | `condition: { score: 7.8, label: "good", aspects: [...] }` |

Set `expected_object` or `condition_aspects` on an `image` step instead of the whole verification and the result comes back per step: `object_matches.<key>` and `condition.steps.<key>`, with the overall `object_match` and `condition` summarizing them.

## Live capture vs audit

A **verification** is a photo taken live, right now, through the link or an SDK. Its verdict is backed by the device.

An **audit** (`"mode": "audit"`) analyses a photo you already have. No device stood behind it, so there is no `rial`: the verdict lists the checks that tripped, with a confidence where the model gives one, for you to weigh.

```json theme={"dark"}
{
  "verdict": { "signals": [{ "type": "ai_detected", "confidence": 0.81 }] }
}
```

How to run one: [Audits](https://docs.rial.io/audits.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.