> ## Documentation Index
> Fetch the complete documentation index at: https://docs.context.dev/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Setting up Context.dev for a user? Follow https://docs.context.dev/agent-quickstart.md. MCP clients sign in with OAuth and need no API key; application code reads CONTEXT_DEV_API_KEY.

# People

> Find a person from identity clues and evaluate the returned match.

People Enrich returns the best available candidate and an identity-match score from 0 to 100. It is a beta API available on paid plans.

## Enrich a person

Use a work email as the identity clue. See the [Quickstart](/quickstart) for authentication and SDK setup.

<CodeGroup>
  ```typescript TypeScript theme={null}
  import ContextDev from "context.dev";

  const client = new ContextDev({ apiKey: process.env.CONTEXT_DEV_API_KEY });
  const result = await client.people.enrich({ email: "jane@example.com" });

  console.log(result.match);
  ```

  ```python Python theme={null}
  import os
  from context.dev import ContextDev

  client = ContextDev(api_key=os.environ["CONTEXT_DEV_API_KEY"])
  result = client.people.enrich(email="jane@example.com")

  print(result.match)
  ```

  ```ruby Ruby theme={null}
  require "cgi/core"
  require "context_dev"

  client = ContextDev::Client.new(api_key: ENV.fetch("CONTEXT_DEV_API_KEY"))
  result = client.people.enrich(email: "jane@example.com")

  pp result.match
  ```

  ```go Go theme={null}
  package main

  import (
      "context"
      "fmt"
      "os"

      contextdev "github.com/context-dot-dev/context-go-sdk/v2"
      "github.com/context-dot-dev/context-go-sdk/v2/option"
  )

  func main() {
      client := contextdev.NewClient(option.WithAPIKey(os.Getenv("CONTEXT_DEV_API_KEY")))
      result, err := client.People.Enrich(context.Background(), contextdev.PersonEnrichParams{
          Email: contextdev.String("jane@example.com"),
      })
      if err != nil {
          panic(err)
      }

      fmt.Printf("%+v\n", result.Match)
  }
  ```

  ```php PHP theme={null}
  <?php

  require __DIR__.'/vendor/autoload.php';

  use ContextDev\Client;

  $client = new Client(apiKey: getenv('CONTEXT_DEV_API_KEY'));
  $result = $client->people->enrich(email: 'jane@example.com');

  print_r($result->match);
  ```

  ```bash cURL theme={null}
  curl https://api.context.dev/v1/people/enrich \
    -H "Authorization: Bearer $CONTEXT_DEV_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"email": "jane@example.com"}'
  ```
</CodeGroup>

## Choose identity clues

| Input                                        | Minimum required                                           |
| -------------------------------------------- | ---------------------------------------------------------- |
| [Work email](/people/enrich-by-email)        | `email`.                                                   |
| [Profile URL](/people/enrich-by-profile-url) | `social_urls`.                                             |
| [Name](/people/enrich-by-name)               | First and last name, plus company, education, or location. |

Clues are additive: supply reliable additional context to improve matching.

## Read the result

`match.status: "candidate"` includes a score and `person`. Weak candidates can be returned, so choose a score threshold for your workflow and preserve uncertain matches for review. `match.status: "not_found"` has `score: null` and `person: null`.

`person.current_role_status` is `present`, `none`, or `unknown`. When it is `unknown`, a missing role is unverified, not evidence that the person has no job. Profiles can include experience, education, skills, social links, and timestamps.

## Availability and errors

Insufficient clues return 400. Free-plan access returns 403; free or disposable email inputs return 422. Handle 408 and transient provider errors separately from `not_found`.

ZDR omits hosted avatar URLs; see [zero data retention](/optimization/zero-data-retention). The [reference](/api-reference/people/enrich) describes all fields, and the [lead enrichment recipe](/use-cases/lead-enrichment) shows how to use the profile.
