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

# Verification

> Billable server-side decision for an event_id

# POST /v2/verify

Billable verify. Use a **secret** API key.

## Request

```http theme={null}
POST https://api.keverd.com/v2/verify
X-Secret-API-Key: kv_sk_live_…
Content-Type: application/json

{
  "event_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

## Response

```json theme={null}
{
  "event_id": "…",
  "fingerprint": "…",
  "visitor_id": "…",
  "risk_score": 42,
  "recommendation": "allow",
  "action": "allow",
  "reason": ["VPN_DETECTED"],
  "reasons": [
    {
      "code": "VPN_DETECTED",
      "explanation": "…",
      "evidence": {}
    }
  ],
  "score": 0.42,
  "trust_score": 70,
  "reputation_score": null,
  "signals": {},
  "smart_signals": {},
  "created_at": "2026-07-25T12:00:00Z",
  "country_code": "KE",
  "country_name": "Kenya",
  "page_url": "https://…",
  "page_origin": "https://…"
}
```

`action` / `recommendation`: `allow` | `soft_challenge` | `hard_challenge` | `block`

## Errors

| Status | Meaning                           |
| ------ | --------------------------------- |
| 400    | Missing / invalid `event_id`      |
| 401    | Bad secret key                    |
| 402    | Protected-device quota exceeded   |
| 404    | Event not found / wrong workspace |

Prefer the [Node](/server/node), [Python](/server/python), or [PHP](/server/php) SDKs over raw HTTP.
