Skip to main content
POST
cURL

Authorizations

Authorization
string
header
required

Your API key, sent as Authorization: Bearer <key>. A key is nrk_live_ or nrk_test_, a 26-character key id, _ and a 43-character secret. Account, audit and usage data stay within the key's environment. Dedicated team scopes apply across the workspace.

assess creates and reads assessments, records outcomes and reports key usage. investigate reads accounts, assessment history and request diagnostics without export or enforcement access. The legacy history scope also permits account exports, submitted identifiers and enforcement reports. delete permits account and assessment deletion.

evidence or detailed adds detailed merged evidence and submitted identifiers where the operation permits them. Neither grants access to the underlying resource alone. exports permits exports with the underlying account or audit scope. audit reads audit events and usage reads usage. audit_manage manages audit streams and retention, and includes audit-read and export authority.

webhooks manages webhook endpoints. integrations manages hosted auth-provider integrations. management manages keys, settings, lists, reviews and policy evaluations in the key's environment. New keys cannot exceed the issuer's effective permissions.

settings reads configuration, previews policy and list changes, runs evaluations and changes retention. Publishing decision policy or changing lists requires settings and policy_publish together, or the legacy management scope.

groups creates and reads groups, adds people, starts and cancels screenings and records decisions on people, in the key's environment.

members reads the workspace directory. members_manage also administers non-owner members and invitations. These scopes require a live key issued by a current owner with access to both environments. They grant access across the workspace. management does not grant team access. API keys cannot change owners or accept invitations.

A missing, unknown, revoked or expired key answers 401. A valid key without a required scope answers 403.

Path Parameters

workspace_id
string
required

The workspace id. A workspace the acting user is not an active member of answers 404, as do another workspace than an API key's own, a malformed id and a test environment's id. The workspace id, which is also its live environment's workspace id; the test environment's is the same id with:test appended. A workspace created through the API is tnt_ and a 26-character ULID.

Pattern: ^[A-Za-z0-9][A-Za-z0-9_.-]{0,122}$
environment
enum<string>
required

The environment: live or test. Each has its own settings. Any other value answers 400. An API key reads and changes only its own environment's; the other answers 404. The environment the key belongs to. A live key assesses with live sources; a test key answers from the deterministic simulator.

Available options:
live,
test
group_id
string
required
Pattern: ^grp_[0-7][0-9A-HJKMNP-TV-Z]{25}$
person_id
string
required
Pattern: ^per_[0-7][0-9A-HJKMNP-TV-Z]{25}$

Body

application/json

Records a decision on a person.

decision
enum<string>
required

cleared, watch or escalated.

Available options:
cleared,
watch,
escalated
note
string

Why, for the venue team and later reviewers.

Maximum string length: 2000

Response

The person with the decision recorded.

A person and where their screening and review stand.

id
string
required
Pattern: ^per_[0-7][0-9A-HJKMNP-TV-Z]{25}$
group_id
string
required
Pattern: ^grp_[0-7][0-9A-HJKMNP-TV-Z]{25}$
name
string
required

The person's full name.

Required string length: 1 - 200
match_state
enum<string>
required

How sure the latest screening is that it found the person's accounts. unscreened until a screening reaches the person, and after one that had no profile to check (no_profile_to_check).

Available options:
unscreened,
confirmed,
probable,
possible,
none_found,
inaccessible
highest_band
enum<string> | null
required

The most severe finding's band, or null when nothing was flagged.

Available options:
critical,
high,
moderate,
low,
info
decision
enum<string> | null
required

The latest reviewer decision, or null before any.

Available options:
cleared,
watch,
escalated
coverage
object
required

What the latest screening read: accounts found, accessible, items read, the period covered and each platform's status. Zero, with no platforms, until a screening reaches the person.

created_at
string<date-time>
required
updated_at
string<date-time>
required
spend
object
required

What the latest screening of the person cost.

external_id
string

Your own id for the person, unique within the group. A later row with the same external id updates this person.

Required string length: 1 - 128
email
string

The person's email.

Required string length: 3 - 254
Pattern: ^[^@\s]+@[^@\s]+$
phone
string

The person's phone in E.164 form.

Pattern: ^\+[1-9][0-9]{6,14}$
company
string

Where the person works.

Required string length: 1 - 200
city
string

Where the person lives.

Required string length: 1 - 100
handles
object[]

Accounts the person is known to hold, at most 20.

Maximum array length: 20
role
enum<string>

The person's role in the group: guest (a ticket holder), crew, vendor or press. Leave it out when you do not know it: a person without one has no role, not guest. A later row naming the same person replaces it, and a change of role alone keeps the person's screening results.

Available options:
guest,
crew,
vendor,
press
no_profile_to_check
boolean

true when the latest screening reached the person but the list gave nothing to look up on any requested platform, such as no handle for a platform that reads supplied handles only: nobody looked for a profile. match_state stays unscreened, every platform is in coverage.not_searched, and the person is neither none_found nor failed and does not make the screening partial. Its lookups are on its report. Left out otherwise.

decision_note
string
Required string length: 1 - 2000
decided_by
string
Required string length: 1 - 256
decided_at
string<date-time>
last_screening_id
string
Pattern: ^scn_[0-7][0-9A-HJKMNP-TV-Z]{25}$
screened_at
string<date-time>