Skip to main content
POST
Resolve v1

Quick Answer

How do I resolve a person’s identity? Use this endpoint to match a person to their unique Minerva PID (person identifier) using their name and contact information.Common questions this endpoint answers:
  • How do I match a person to get their ID?
  • How do I find someone’s Minerva PID?
  • How do I identify someone from their name and email?
  • How can I deduplicate or match records?
  • How do I get a unique identifier for a contact?
What you need: Name (first + last or full name) AND contact information (email or phone).What you get back: Minerva PID (unique person identifier) and match confidence score.Note: Consider upgrading to /v2/resolve for more flexible matching options including reverse lookup by email or phone only.

Overview

The Resolve endpoint matches person identity data (name, email, phone) to a unique Minerva Person ID (minerva_pid). This is typically the first step before enriching person data. This endpoint uses fuzzy matching to handle variations in names and contact information.

Request

Headers

string
required
Your API key for authentication
string
required
application/json

Request Body

object[]
required
An array of person records to resolve. Maximum 1000 records per request.

Request Example

Response

Response Structure

string
Unique identifier for this API request
array
Array of resolution results, one per input record
string
ISO 8601 timestamp when the request was completed

Result Object

string
Your identifier from the request
boolean
Whether a match was found in the Minerva database
string
Minerva person identifier (only present if is_match is true)
number
Confidence score for the match, as an additive point total — not a 0-1 or 0-100 scale. Matches score at least 50 and routinely exceed 100. null unless is_match is true. See Interpreting match_score.
boolean
Whether the input record had sufficient valid data to attempt resolution
object
Object containing any validation errors encountered with the input data
Error responses include statusCode and body fields for backward compatibility with existing integrations. These are deprecated — prefer the HTTP status code and the top-level code / message / api_request_id fields directly. (The deprecated nested body still carries the legacy error_message.)

Error Responses

Common Errors

  • 400 - Bad Request: Invalid input format or missing required fields
  • 401 - Unauthorized: Invalid or missing API key
  • 402 - Payment Required: Minerva credits exhausted. The response body’s details object includes records_remaining (estimated records remaining based on your credit balance) and records_requested (batch size that was rejected)
  • 413 - Payload Too Large: More than 1000 records in request
  • 422 - Unprocessable Entity: Invalid data format
  • 429 - Too Many Requests: Rate limit exceeded
  • 500 - Internal Server Error: Server error occurred

Notes

Input Requirements

  • Name: Required - provide either (first_name AND last_name) OR full_name
  • Contact: Required - provide at least one emails or phones
  • Both name and contact information are required for V1 resolve

Matching Quality

  • The matching algorithm uses fuzzy matching to handle variations in names and contact information
  • Providing both accurate name and contact information improves match accuracy

Interpreting match_score

match_score is an additive point total, not a normalized 0-1 or 0-100 confidence. It is the sum of two components:
  • Name — up to 60 points, based on how closely the input name matches the person’s known names and aliases
  • Contact info — points for every input email and phone that matches the person, weighted by how strongly that email or phone is associated with them
Because the contact-info component grows with each additional match, there is no upper bound: a record matched on a name plus several emails and phones commonly scores 110-130. The example above scores 110.0.
Compare scores against each other, not against a fixed ceiling. Thresholding on a percentage (for example, “accept above 0.8” or “above 80%”) will not behave the way you expect.
Practical guidance:
  • Every record returned with is_match: true already cleared Minerva’s internal match threshold and scores at least 50. You don’t need your own floor unless you want to be stricter than Minerva.
  • match_score is null when is_match is false.
  • Scores are rounded to two decimal places.

Migration to V2

Consider upgrading to V2 for:
  • Reverse lookup capabilities (email or phone only, no name required)
  • LinkedIn URL in response
  • Match condition filters to ensure data availability