Skip to main content
POST
Injection Detection
Scores signals collected during the applicant’s liveness capture for indicators of media injection — virtual cameras, screen replays, emulators, and similar spoofing techniques. Runs against the session’s injection-detection step configuration and persists its result to the session.
This check fails soft. If an internal error occurs, or neither device_integrity nor media_source is supplied, it returns 200 with verdict: "UNAVAILABLE" and action: "allow" rather than blocking or erroring. (frame_timing on its own does not count as a signal.)
Unlike the other iGaming checks, this endpoint does not skip when the session’s workflow has no INJECTION_DETECTION step. It scores the supplied signals with the default config (action_on_detection: block, automation_handling: block, confidence_threshold: 70) and can fail the session. Only call it on sessions whose workflow includes the step.

Request

Headers

Body parameters

Bodies use snake_case field names — there are no camelCase aliases. Each supplied signal group is an object with this shape: Omit a signal group entirely to skip it — only supplied groups are scored.

How the score is resolved

  1. Hard hits. media_source.pass: false resolves to the step’s action_on_detection; device_integrity.pass: false resolves to automation_handling (ignoreallow). If both fire, the more severe action wins. confidence in the response is that group’s score.
  2. Soft score. Otherwise confidence = round(0.6 × media_source.score + 0.4 × frame_timing.score). If it is below confidence_threshold (default 70), the verdict is HIT with action_on_detection. device_integrity.score does not enter this average.
  3. Automation soft signals. If device_integrity.signals is non-empty (even with pass: true) and automation_handling isn’t ignore, the verdict becomes HIT and the action is raised to automation_handling when that is more severe.
  4. A step-up action is downgraded to flag unless the step configures an escalation_type.
A clean capture should therefore be sent with high scores (for example 90100). Sending score: 8 for a clean capture yields confidence: 25 and a block under the default threshold.

Collecting the signals

The server scores what your client reports; how you derive pass, score, and signals is up to your capture code. Typical sources:

Example request

Response

200 — Success

Verdicts

Error responses