Skip to main content
Batch verify takes a list of people you already have and answers one question for each: is the work history on their profile real? Each result carries a verdict, a confidence score, the reasoning behind it, and the web sources it relied on.
Verification is an add-on, enabled per account. If your plan does not include it, contact your Crustdata account team. Verification jobs are not billed today.

How a profile is checked

For each person the service runs three checks, then asks a language model to weigh the whole picture:
  • Dates: a full-time job that overlaps full-time study by more than six months is flagged.
  • Social graph: the person’s own recent posts are fetched. The people who reacted or commented are looked up in the Crustdata people database and matched to the claimed employer. Coworker engagement can lift a verdict to probably_genuine, never higher.
  • Web search: the model searches the web for independent evidence of the current role. Profile mirror sites that only restate the claim carry no weight.
The current role decides the verdict. Old roles that cannot be verified add a past_roles_unverified flag instead of dragging the verdict down. A job usually finishes in a minute or two.

Submit a job

POST /batch/person/verify takes professional_network_profile_urls, a list of person profile URLs, with up to 10 values per job for now. Sending none returns 400. You can also pass webhook_url, a URL on your side. When the job finishes, Crustdata sends a POST to it with the download link, so you do not have to poll. See Skip polling with webhooks.
The action is verify wherever you poll or list jobs.

Poll for the results file

Poll GET /batch/{batch_id} until status is completed. The response then carries download_url, a link to a gzipped JSON lines file with one record per person. The link expires after 5 days.
Download and unpack it:

Read the results

When the job completes, each line in the downloaded file is one person wrapped in the standard batch envelope. original_identifier echoes the URL you sent, and internal_id is the numeric Crustdata person ID.
One record from the results file
reasoning and cited_text are shortened here. A profile that cannot be resolved, or whose check fails, is left out of the results file rather than written as an error, so result_count can be lower than identifier_count.

Fields in data

Verdicts

Coverage counts

posts_unavailable means no posts were retrieved. It cannot tell a retrieval failure from a person who never posts, so read a cannot_verify with this flag as “unchecked” rather than “suspicious”.

Rate limits

Submissions are limited to 5 per minute, and verify jobs count toward the live pool of active jobs. See Rate limits.

Errors

Sending a body without professional_network_profile_urls returns 400 with error.type of invalid_request.

What to do next