---
title: "Enrich person"
method: POST
path: "/v2/enrich/persons"
tags: ["Enrich"]
---

# Enrich person

`POST /v2/enrich/persons`

## Request

- Base URL: `https://api.reversecontact.com`
- URL: `https://api.reversecontact.com/v2/enrich/persons`
- Auth: HTTP bearer

Synchronously resolves a person from any combination of email, first name, last name, and company domain/name. Returns the full profile of the matched person nested under data.person, with the full profiles of the alternative candidates under data.alternativePersons and data.isFullProfile telling whether the full profile could be assembled. Credits: 2 when a person is found, full profile included. 404 is free.

## Request body

- EnrichPersonBody: Provide at least one of: email, firstName, lastName, companyDomain, or companyName.
  - `email` string, email: Email address to enrich
  - `firstName` string: Person first name
  - `lastName` string: Person last name
  - `companyDomain` string: Company domain (e.g. acme.com)
  - `companyName` string: Company name (alternative to domain)
  - `fullProfile` boolean: Deprecated and ignored: enrich always returns the full profile. Still accepted so existing requests keep working.

## Response `200`

Person enriched successfully

- object
  - `success` true, required
  - `data` EnrichPersonData, required: Nested under the top-level V2 data field: response.data.person and response.data.alternativePersons.
    - `person` union, required: Matched person: the full profile (data.isFullProfile true), or the light shape when the full profile could not be assembled (data.isFullProfile false).
      - EnrichedPersonFull: Full person profile shape returned by fetch.
        - `id` string, required: Reverse Contact person id (prs_...)
        - `publicId` string, required: Social public slug
        - `memberId` string: Upstream member identifier when available
        - `linkedinUrl` string, required: Public Social profile URL
        - `firstName` string, nullable
        - `lastName` string, nullable
        - `headline` string, nullable
        - `summary` string, nullable
        - `pronoun` string, nullable
        - `isOpenToWork` boolean: Whether the profile is flagged open to work
        - `hasPremium` boolean: Whether the profile has Social Premium
        - `hasVerificationBadge` boolean: Whether the profile has a verification badge
        - `isInRemembrance` boolean: Whether the profile is in remembrance
        - `photoUrl` string, nullable
        - `backgroundUrl` string, nullable
        - `creationDate` string, nullable
        - `followersCount` integer, nullable
        - `connectionsCount` integer, nullable
        - `location` PersonLocation
          - `city` string, nullable
          - `state` string, nullable
          - `country` string, nullable
          - `countryCode` string, nullable
          - `rawLocation` string, nullable
        - `currentPosition` object, nullable
          - `title` string, nullable
          - `description` string, nullable
          - `contractType` string, nullable
          - `companyId` string, nullable: Reverse Contact company id (com_...)
          - `companyName` string, nullable
          - `companyLinkedinId` string, nullable
          - `companyUrl` string, nullable
          - `companyLocation` string, nullable
          - `companyLogoUrl` string, nullable
          - `startEndDate` object, nullable
            - `start` string, nullable: Start date (ISO 8601)
            - `end` string, nullable: End date (ISO 8601), null if current
        - `experience` object[]
          - `title` string, nullable
          - `description` string, nullable
          - `contractType` string, nullable
          - `companyId` string, nullable: Reverse Contact company id (com_...)
          - `companyName` string, nullable
          - `companyLinkedinId` string, nullable
          - `companyUrl` string, nullable
          - `companyLocation` string, nullable
          - `companyLogoUrl` string, nullable
          - `startEndDate` object, nullable
            - `start` string, nullable: Start date (ISO 8601)
            - `end` string, nullable: End date (ISO 8601), null if current
        - `education` object[]
          - `degreeName` string, nullable
          - `fieldOfStudy` string, nullable
          - `description` string, nullable
          - `grade` string, nullable
          - `schoolName` string, nullable
          - `schoolUrl` string, nullable
          - `schoolLogoUrl` string, nullable
          - `startEndDate` object, nullable
            - `start` string, nullable: Start date (ISO 8601)
            - `end` string, nullable: End date (ISO 8601), null if current
        - `skills` string[]
        - `languages` object[]
          - `language` string, nullable
          - `proficiency` string, nullable
        - `certifications` object[]
          - `name` string, nullable
          - `organizationName` string, nullable
          - `organizationUrl` string, nullable
          - `issuedDate` string, nullable
        - `recommendations` object[]
          - `caption` string, nullable
          - `description` string, nullable
          - `authorFullname` string, nullable
          - `authorUrl` string, nullable
        - `testScores` object[]
          - `testTitle` string, nullable
          - `score` string, nullable
          - `date` string, nullable
        - `currentPositionTitle` string, nullable
        - `currentCompanyId` string, nullable
        - `currentCompanyName` string, nullable
        - `currentCompanyLinkedinId` string, nullable
        - `updateDate` string, nullable: Last update timestamp (ISO 8601)
      - EnrichedPersonLight: Light enrich shape: identity and current role. Used for data.person when the full profile could not be assembled (data.isFullProfile is false), and for an alternative candidate whose full profile could not be retrieved in time.
        - `id` string, required: Reverse Contact person id (prs_...)
        - `publicId` string, required: Social public slug
        - `linkedinUrl` string, required: Public Social profile URL
        - `firstName` string, nullable
        - `lastName` string, nullable
        - `headline` string, nullable
        - `currentPositionTitle` string, nullable
        - `currentCompanyId` string, nullable
        - `currentCompanyName` string, nullable
        - `currentCompanyLinkedinId` string, nullable
        - `updateDate` string, nullable: Last update timestamp (ISO 8601)
        - `location` PersonLocation
          - `city` string, nullable
          - `state` string, nullable
          - `country` string, nullable
          - `countryCode` string, nullable
          - `rawLocation` string, nullable
    - `alternativePersons` union[], required: Other candidates ranked best first, each with its full profile (it carries experience), or the light shape when its full profile could not be retrieved in time. Always an array (empty when unique).
      - union
        - EnrichedPersonFull: Full person profile shape returned by fetch.
          - `id` string, required: Reverse Contact person id (prs_...)
          - `publicId` string, required: Social public slug
          - `memberId` string: Upstream member identifier when available
          - `linkedinUrl` string, required: Public Social profile URL
          - `firstName` string, nullable
          - `lastName` string, nullable
          - `headline` string, nullable
          - `summary` string, nullable
          - `pronoun` string, nullable
          - `isOpenToWork` boolean: Whether the profile is flagged open to work
          - `hasPremium` boolean: Whether the profile has Social Premium
          - `hasVerificationBadge` boolean: Whether the profile has a verification badge
          - `isInRemembrance` boolean: Whether the profile is in remembrance
          - `photoUrl` string, nullable
          - `backgroundUrl` string, nullable
          - `creationDate` string, nullable
          - `followersCount` integer, nullable
          - `connectionsCount` integer, nullable
          - `location` PersonLocation
            - `city` string, nullable
            - `state` string, nullable
            - `country` string, nullable
            - `countryCode` string, nullable
            - `rawLocation` string, nullable
          - `currentPosition` object, nullable
            - `title` string, nullable
            - `description` string, nullable
            - `contractType` string, nullable
            - `companyId` string, nullable: Reverse Contact company id (com_...)
            - `companyName` string, nullable
            - `companyLinkedinId` string, nullable
            - `companyUrl` string, nullable
            - `companyLocation` string, nullable
            - `companyLogoUrl` string, nullable
            - `startEndDate` object, nullable
              - …
          - `experience` object[]
            - `title` string, nullable
            - `description` string, nullable
            - `contractType` string, nullable
            - `companyId` string, nullable: Reverse Contact company id (com_...)
            - `companyName` string, nullable
            - `companyLinkedinId` string, nullable
            - `companyUrl` string, nullable
            - `companyLocation` string, nullable
            - `companyLogoUrl` string, nullable
            - `startEndDate` object, nullable
              - …
          - `education` object[]
            - `degreeName` string, nullable
            - `fieldOfStudy` string, nullable
            - `description` string, nullable
            - `grade` string, nullable
            - `schoolName` string, nullable
            - `schoolUrl` string, nullable
            - `schoolLogoUrl` string, nullable
            - `startEndDate` object, nullable
              - …
          - `skills` string[]
          - `languages` object[]
            - `language` string, nullable
            - `proficiency` string, nullable
          - `certifications` object[]
            - `name` string, nullable
            - `organizationName` string, nullable
            - `organizationUrl` string, nullable
            - `issuedDate` string, nullable
          - `recommendations` object[]
            - `caption` string, nullable
            - `description` string, nullable
            - `authorFullname` string, nullable
            - `authorUrl` string, nullable
          - `testScores` object[]
            - `testTitle` string, nullable
            - `score` string, nullable
            - `date` string, nullable
          - `currentPositionTitle` string, nullable
          - `currentCompanyId` string, nullable
          - `currentCompanyName` string, nullable
          - `currentCompanyLinkedinId` string, nullable
          - `updateDate` string, nullable: Last update timestamp (ISO 8601)
        - EnrichedPersonLight: Light enrich shape: identity and current role. Used for data.person when the full profile could not be assembled (data.isFullProfile is false), and for an alternative candidate whose full profile could not be retrieved in time.
          - `id` string, required: Reverse Contact person id (prs_...)
          - `publicId` string, required: Social public slug
          - `linkedinUrl` string, required: Public Social profile URL
          - `firstName` string, nullable
          - `lastName` string, nullable
          - `headline` string, nullable
          - `currentPositionTitle` string, nullable
          - `currentCompanyId` string, nullable
          - `currentCompanyName` string, nullable
          - `currentCompanyLinkedinId` string, nullable
          - `updateDate` string, nullable: Last update timestamp (ISO 8601)
          - `location` PersonLocation
            - `city` string, nullable
            - `state` string, nullable
            - `country` string, nullable
            - `countryCode` string, nullable
            - `rawLocation` string, nullable
    - `isFullProfile` boolean, required: True when data.person is the full profile, false when only the light shape could be returned.
  - `error` unknown, required
  - `quotas` V2Quotas, required
    - `creditsConsumed` number, required: Credits used for this request after pricing resolution
    - `workspace` object, required
      - `id` string, required: Workspace identifier
      - `credits` V2Credits, required
        - `total` number, required: Total credits in your plan
        - `used` number, required: Credits consumed so far
        - `left` number, required: Remaining credits
      - `hasUnlimitedCredits` boolean, required: Whether workspace credits are unlimited
      - `allowDailyOvercost` boolean, required: Whether the workspace may exceed its daily cap (Enterprise only)
      - `dailyLimit` V2LimitInfo
        - `limit` integer, required: Maximum allowed in the window
        - `used` integer, required: Amount used in the window
        - `left` integer, required: Remaining in the window
        - `nextReset` string, required: When the window resets (ISO 8601)
      - `minuteRateLimit` V2LimitInfo, required
        - `limit` integer, required: Maximum allowed in the window
        - `used` integer, required: Amount used in the window
        - `left` integer, required: Remaining in the window
        - `nextReset` string, required: When the window resets (ISO 8601)
    - `key` object, nullable, required
      - `id` string, required: API key identifier
      - `dailyLimit` V2LimitInfo
        - `limit` integer, required: Maximum allowed in the window
        - `used` integer, required: Amount used in the window
        - `left` integer, required: Remaining in the window
        - `nextReset` string, required: When the window resets (ISO 8601)
      - `minuteRateLimit` V2LimitInfo, required
        - `limit` integer, required: Maximum allowed in the window
        - `used` integer, required: Amount used in the window
        - `left` integer, required: Remaining in the window
        - `nextReset` string, required: When the window resets (ISO 8601)
      - `creditLimits` object, required: Credit limits set on this API key. Each is null when the key has no such limit.
        - `daily` V2KeyCreditLimit, required
          - `limit` number, required: Credits this key may spend in the period
          - `used` number, required: Credits this key spent in the period, this request included
          - `left` number, required: Credits this key may still spend in the period
          - `nextReset` string, nullable, required: When the period resets (ISO 8601): 00:00 UTC for the daily limit, the 1st of next month at 00:00 UTC for the monthly limit, null for the total limit
        - `monthly` V2KeyCreditLimit, required
          - `limit` number, required: Credits this key may spend in the period
          - `used` number, required: Credits this key spent in the period, this request included
          - `left` number, required: Credits this key may still spend in the period
          - `nextReset` string, nullable, required: When the period resets (ISO 8601): 00:00 UTC for the daily limit, the 1st of next month at 00:00 UTC for the monthly limit, null for the total limit
        - `total` V2KeyCreditLimit, required
          - `limit` number, required: Credits this key may spend in the period
          - `used` number, required: Credits this key spent in the period, this request included
          - `left` number, required: Credits this key may still spend in the period
          - `nextReset` string, nullable, required: When the period resets (ISO 8601): 00:00 UTC for the daily limit, the 1st of next month at 00:00 UTC for the monthly limit, null for the total limit
  - `metadata` V2Metadata, required
    - `requestId` string, required: Unique identifier for this request
    - `executionTimeMs` integer, required: Total execution time in milliseconds
    - `updatedAt` string: Last upstream update timestamp (ISO 8601). Present only when available.

## Other responses

- `400`: Invalid JSON body or endpoint-specific business validation
- `401`: Missing or invalid API key or OAuth access token
- `402`: No credits left. Purchase more to continue.
- `403`: Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)
- `404`: Data not found
- `422`: Schema or validation error, unresolved internal id, or disposable email domain
- `429`: Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.
- `451`: Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.

---

[API](https://skmtc.dev/scrapin/apis/reverse-contact-api.md) - [All operations](https://skmtc.dev/scrapin/apis/reverse-contact-api/llms.txt) - [OpenAPI document](https://skmtc.dev/scrapin/apis/reverse-contact-api/revisions/7d02242af2a9?raw)
