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

# Quickstart

> Two API calls to your first verdict.

Base URL: `https://api.rial.io`

<Steps>
  <Step title="Get an API key">
    Dashboard → **Settings → API** → create a key. Copy it once; it's not shown again.

    ```bash theme={null}
    export RIAL_API_KEY=rk_secret_...
    ```
  </Step>

  <Step title="Create a verification">
    ```bash theme={null}
    curl https://api.rial.io/v1/verifications \
      -H "Authorization: Bearer $RIAL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{ "max_captures": 1, "signals_required": ["screen", "ai"] }'
    ```

    ```json theme={null}
    { "id": "vfy_01H...", "capture_url": "https://verify.rial.io/v/...", "status": "pending" }
    ```

    Send `capture_url` to the person. No app, no account: it opens in their phone's browser and walks them through the photo.
  </Step>

  <Step title="Read the verdict">
    ```bash theme={null}
    curl https://api.rial.io/v1/verifications/vfy_01H... \
      -H "Authorization: Bearer $RIAL_API_KEY"
    ```

    ```json theme={null}
    {
      "status": "completed",
      "verdict": { "label": "verified", "score": 0.97 }
    }
    ```

    `label` is what you branch on: `verified`, `suspicious` or `failed`. No `verdict` yet means analysis is still running.
  </Step>
</Steps>

<Tip>
  Don't poll. Pass `"webhook_url": "https://your.app/rial"` when creating the verification and RIAL POSTs `verification.created` and `verification.completed` to that URL. Retries on failure.
</Tip>

## Ask for more than one photo

Each `image` step can say what must appear in it and what condition to assess.

```json theme={null}
{
  "steps": [
    {
      "key": "front", "type": "image", "description": "Front of the car",
      "expected_object": "car",
      "condition_aspects": ["paint", "bumper"]
    },
    {
      "key": "plate", "type": "image", "description": "License plate",
      "expected_object": "license plate"
    }
  ],
  "expected_location": "Av. Córdoba 5635, Buenos Aires"
}
```

`expected_object` rejects a photo of something else. `condition_aspects` scores each aspect 0 to 10 with a one-line reason. `expected_location` checks the photo was taken there. All three come back as separate fields next to the verdict — see [Verdicts](/verdicts).

## Reuse it: publish a template

Same steps, published once, one permanent link you can send forever.

```bash theme={null}
curl https://api.rial.io/v1/link-templates \
  -H "Authorization: Bearer $RIAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "slug": "car-intake", "name": "Car intake", "steps": [ ... ] }'
```

```json theme={null}
{ "slug": "car-intake", "public_url": "https://verify.rial.io/l/...", "status": "active" }
```

Every person who opens `public_url` gets their own verification. Same thing from the terminal: `rial templates apply car-intake.json` — see [CLI](/cli).

<CardGroup cols={2}>
  <Card title="Verdicts" icon="badge-check" href="/verdicts">
    What every field means.
  </Card>

  <Card title="API reference" icon="book-open" href="/api-reference">
    Every field you can send.
  </Card>
</CardGroup>
