---
title: "Score an event"
method: POST
path: "/v1/score"
tags: ["Scoring"]
---

# Score an event

`POST /v1/score`

## Request

- Base URL: `https://api.kaidn.io`
- URL: `https://api.kaidn.io/v1/score`
- Auth: API key in header `x-api-key`

The core call. Describe a signup, login, checkout or any other event and get back a score from 0 to 100, a verdict of `allow`, `review` or `block`, and the reasons that produced it. Rules decide the verdict; the AI layer only writes the explanation.

## Request body

- object
  - `event` string, required
  - `user_id` string
  - `ip` string
  - `email` string
  - `device_id` string
  - `device_token` string
  - `device` object
    - `is_headless` boolean
    - `ua_consistent` boolean
    - `is_emulated` boolean
    - `is_noise_injected` boolean
    - `is_tampered` boolean
    - `is_context_mismatch` boolean
    - `is_engine_mismatch` boolean
    - `is_os_mismatch` boolean
    - `is_font_standardized` boolean
    - `antidetect_score` integer
    - `antidetect_confidence` 'low' | 'medium' | 'high'
    - `is_emulator` boolean
    - `is_rooted` boolean
    - `is_cloned` boolean
    - `is_hooked` boolean
    - `is_sideloaded` boolean
    - `is_adb_enabled` boolean
    - `is_mock_location` boolean
    - `is_vpn_active` boolean
    - `is_debuggable` boolean
    - `is_auto_time_off` boolean
  - `timezone` string
  - `phone` string
  - `phone_country` string
  - `event_country` string
  - `ip_country` string
  - `source` string
  - `site` string
  - `campaign` string
  - `affiliate` string
  - `link` string

## Response `200`

Success.

- object: Success.
  - `event_id` string, required
  - `score` number, required
  - `verdict` 'allow' | 'review' | 'block', required
  - `reasons` string[], required
  - `reason_text` string, required
  - `checks` object[], required
    - `check` string, required
    - `key` string
    - `weight` number, required
    - `reason` string, required
    - `message` string, required
    - `evidence` object
  - `device` object
    - `id` string
    - `resolved_id` string
    - `resolution` 'deterministic' | 'probabilistic'
    - `resolution_rung` integer
    - `collision_risk` number
    - `risk_measured` boolean
    - `token_rejected` 'malformed' | 'bad_signature' | 'expired'
    - `account_count` integer
    - `account_count_same_network` integer
    - `distinct_ips` integer
    - `unique` boolean
    - `connection_type` 'datacenter' | 'residential', nullable
    - `os` string, nullable
    - `browser` string, nullable
    - `mobile` boolean, nullable
    - `is_headless` boolean, nullable
    - `ua_consistent` boolean, nullable
    - `is_emulated` boolean, nullable
    - `is_noise_injected` boolean, nullable
    - `is_tampered` boolean, nullable
    - `is_context_mismatch` boolean, nullable
    - `is_engine_mismatch` boolean, nullable
    - `is_os_mismatch` boolean, nullable
    - `timezone` string, nullable
    - `ja4` boolean
    - `ja4_known_tool` string, nullable
  - `device_token` string
  - `identity` object
    - `email_canonical` string
    - `email_is_aliased` boolean
    - `email_alias_tricks` string[]
  - `warnings` string[]

## Other responses

- `400`: The request body or query string failed validation.
- `401`: Missing or invalid API key.
- `429`: Rate limit exceeded. Back off and retry.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/kaidn/apis/kaidn-api.md) · [All operations](https://skmtc.dev/kaidn/apis/kaidn-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kaidn/apis/kaidn-api/revisions/6f0706942d0e?raw)
