Skip to main content
POST
Report a data-quality issue with a person record

How It Works

Found something wrong in a record we returned? Report it against the record’s legion_id and our team will review it. Reporting has no credit cost, is available to any valid API key, and is rate limited to 50 requests per minute.
  • People: POST /utility/report/person
  • Companies: POST /utility/report/company
The request body is identical for both — the path selects the entity. We capture the record’s current data version at submit time, so the reviewer sees exactly what you saw.

What to Report

Set issue_type to what is wrong and issue_level to how broad the problem is.

issue_type

issue_level

Not every combination is valid — for example, frankenstein and not_a_real_person are always record-level. The API returns 422 with an explanation when:
  • the issue_type / issue_level combination doesn’t apply
  • the legion_id doesn’t match an existing record of that type
  • the field isn’t a real group or response field
  • the target is a metadata or provenance field (e.g. confidence, last_seen, build_version, hashes) — report the underlying data instead

Field Groups (for issue_level: group)

These are the keys you see in the response. The “current” flat fields fold into their collection — a wrong current job title is group: experience (or field: job_title), current city is group: locations, and so on. Person: identity, experience, education, emails, phones, locations, socials, skills, languages, certifications Company: firmographics, domains, socials, tickers, metrics Each report must include at least one of correct_value or comment.

Examples

A single wrong field:
A whole record that looks like two different people:
Each report returns a report_id for your reference.

Authorizations

API-Key
string
header
required

Body

application/json

Request body for POST /utility/report/{person|company}.

The entity (person vs company) comes from the path, so it is not in the body.

legion_id
string
required

The legion_id of the record being reported.

Required string length: 1 - 128
issue_type
enum<string>
required

What is wrong. 'frankenstein' = the record appears to merge multiple real people; 'not_a_real_person' = not a real individual (person reports only); 'misattributed' = a value belongs to a different person; 'incorrect' = a value is wrong; 'outdated' = a value is stale; 'duplicate' = a duplicated value or record.

Available options:
incorrect,
outdated,
misattributed,
frankenstein,
not_a_real_person,
duplicate
issue_level
enum<string>
required

Scope of the issue. 'record' = the whole record; 'group' = a field group (e.g. experience); 'field' = a single field (e.g. job_title).

Available options:
record,
group,
field
field
string | null

Target of the issue. Omit for 'record'. For 'group', a field-group slug (e.g. 'experience'). For 'field', a response field name (e.g. 'job_title').

Maximum string length: 128
observed_value
string | null

The value currently returned that is being disputed.

Maximum string length: 1000
correct_value
string | null

The value that would be correct, if known.

Maximum string length: 1000
comment
string | null

Free-text detail about the issue.

Maximum string length: 2000

Response

Report recorded

Confirmation returned after a report is recorded.

report_id
integer
required
status
string
required
subject_type
string
required
legion_id
string
required
issue_type
string
required
issue_level
string
required
created_at
string<date-time>
required
field
string | null