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

# Поиск контакта человека

> Обратный поиск человека по email, телефону или имени/фамилии + компании — без необходимости в people_search_id. 1 кредит за оплачиваемое совпадение.

API People Contact Lookup отвечает на вопрос **«кому принадлежит этот email/телефон/имя?»** Передайте идентификатор — получите обратно `people_search_id` и профиль найденного человека — без необходимости сначала выполнять поиск.

```bash theme={null}
curl -X POST https://api.pubrio.com/redeem/people/contact/lookup \
  -H "pubrio-api-key: $PUBRIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "email": "king.lai@pubrio.com" }'
```

## Когда использовать Contact Lookup

Используйте Contact Lookup, когда **у вас есть идентификатор и вы хотите найти человека**:

* Email пришёл в ваш почтовый ящик — кто его отправил, из какой компании, с какой должностью?
* Телефонный номер позвонил на вашу линию продаж — сопоставьте его с известным контактом
* CSV с потенциальными клиентами, содержащий имена и компании, но без ID Pubrio — разрешите их все в `people_search_id`
* Отправка формы с `email + имя` — обогатите до полной контактной записи

Если вместо этого у вас есть `people_search_id` (или URL LinkedIn) и вы хотите получить **email + телефон этого человека**, используйте [People Redeem](/ru/developer-guides/people-redeem) — это прямое направление.

## Два варианта

| Эндпоинт                                   | Когда использовать                                                                                 |
| ------------------------------------------ | -------------------------------------------------------------------------------------------------- |
| `POST /redeem/people/contact/lookup`       | Одиночный поиск — один идентификатор на запрос.                                                    |
| `POST /redeem/people/contact/lookup/batch` | Пакетный поиск — до лимита массового размера вашей подписки за запрос, обрабатывается параллельно. |

Оба эндпоинта возвращают одинаковые метаданные `match` для каждой записи (см. [Метаданные совпадения](#match-metadata) ниже).

## Быстрый старт

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://api.pubrio.com/redeem/people/contact/lookup \
    -H "pubrio-api-key: $PUBRIO_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{ "email": "king.lai@pubrio.com" }'
  ```

  ```js JavaScript theme={null}
  const res = await fetch("https://api.pubrio.com/redeem/people/contact/lookup", {
    method: "POST",
    headers: {
      "pubrio-api-key": process.env.PUBRIO_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ email: "king.lai@pubrio.com" }),
  });
  const { data } = await res.json();
  ```

  ```python Python theme={null}
  import os, requests

  res = requests.post(
      "https://api.pubrio.com/redeem/people/contact/lookup",
      headers={"pubrio-api-key": os.environ["PUBRIO_API_KEY"]},
      json={"email": "king.lai@pubrio.com"},
  )
  data = res.json()["data"]
  ```
</CodeGroup>

**Ответ:**

```json theme={null}
{
  "data": {
    "profile": {
      "credit": 450375,
      "topup_credit": 235236,
      "total_credit_cost": 1
    },
    "peoples": [
      {
        "people_search_id": "e37ccf38-ea8f-422e-9874-cb23b15e8fe4",
        "first_name": "King",
        "last_name": "Lai",
        "people_name": "King Lai",
        "company_name": "Pubrio",
        "domain": "pubrio.com",
        "match": {
          "confidence": "exact",
          "input": { "value": "king.lai@pubrio.com", "type": "email-work" },
          "is_duplicate_input": false
        }
      }
    ]
  }
}
```

## Режимы поиска

Вы можете сопоставить человека двумя способами:

### Точное совпадение — по email или телефону

Способ по умолчанию. Передайте `email` или `phone`; Pubrio сопоставляет по нормализованному значению контакта. Это всегда возвращает `match.confidence: "exact"` при совпадении.

```json theme={null}
{ "email": "king.lai@pubrio.com" }
```

```json theme={null}
{ "phone": "+15551234567" }
```

### Совпадение по сходству — по имени + домену или компании

Если у вас нет детерминированного идентификатора, вы можете использовать сопоставление по сходству. Передайте `first_name`, `last_name`, плюс либо `domain`, либо `company`, и установите `is_enable_similarity_search: true`.

```json theme={null}
{
  "first_name": "King",
  "last_name": "Lai",
  "domain": "pubrio.com",
  "is_enable_similarity_search": true
}
```

Pubrio сначала пытается найти точное совпадение по email/телефону; если такого нет и сходство включено, он ранжирует кандидатов по близости имени в пределах домена компании (или, если `domain` опущен, по совпадению компании). Возвращённые совпадения несут `match.confidence: "similarity_domain"` или `"similarity_company"`, чтобы вы могли фильтровать по уверенности.

Вы можете комбинировать оба варианта: передать email **и** имя + домен. Точное совпадение по email побеждает; поля имени становятся резервным вариантом только если email не разрешился.

## Метаданные совпадения

Каждая возвращённая запись включает объект `match`, описывающий, как было найдено совпадение:

| Поле                       | Значения             | Значение                                                                                                                    |
| -------------------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `match.confidence`         | `exact`              | Прямое совпадение по email/телефону. Наивысшая уверенность.                                                                 |
|                            | `similarity_domain`  | Совпадение на основе имени, привязанное к известному домену компании.                                                       |
|                            | `similarity_company` | Совпадение на основе имени, привязанное к названию компании (без домена).                                                   |
| `match.input`              | `{ value, type }`    | Отражает идентификатор, который дал совпадение, чтобы вы могли показать «совпало по `king.lai@pubrio.com`» в вашем UI.      |
| `match.is_duplicate_input` | boolean              | `true`, когда тот же идентификатор ранее встречался в пакете — поиск выполняется только один раз, дубликат не оплачивается. |

Используйте `match.confidence`, чтобы контролировать последующие действия: например, автоматически включайте в последовательность только `exact`-совпадения; направляйте совпадения `similarity_*` на ручную проверку.

## Пакетный поиск

Отправьте до лимита массового размера вашей подписки в одном запросе. Каждая запись принимает те же идентификаторы, что и тело одиночного поиска.

```bash theme={null}
curl -X POST https://api.pubrio.com/redeem/people/contact/lookup/batch \
  -H "pubrio-api-key: $PUBRIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "peoples": [
      { "email": "king.lai@pubrio.com" },
      { "first_name": "John", "last_name": "Smith", "domain": "example.com" }
    ],
    "is_enable_similarity_search": true
  }'
```

Пакет синхронный — ответ содержит все разрешённые записи в том же порядке, что и ввод. Несовпавшие входные данные исключаются из ответа (они не появляются вовсе и не оплачиваются).

## Стоимость в кредитах

**1 кредит за оплачиваемое совпадение.** А именно:

* Успешное совпадение (точное или по сходству) → 1 кредит
* Нет совпадения → 0 кредитов
* Дублирующийся ввод в пределах пакета → 0 кредитов (разрешается один раз, оплачивается один раз)

Это делает Contact Lookup на порядок дешевле, чем [Redeem](/ru/developer-guides/people-redeem) — вы платите за то, чтобы **идентифицировать** человека, а не за то, чтобы **разблокировать** его контакты. Если после поиска вам также нужны email/телефон, погасите возвращённый `people_search_id`.

## Распространённые паттерны

<CardGroup cols={2}>
  <Card title="Обогащение входящих писем" icon="envelope-open">
    При каждом входящем письме ищите отправителя. Отображайте его компанию, должность и `people_search_id` в вашей CRM или в справочной службе.
  </Card>

  <Card title="Разрешение CSV в CRM" icon="file-csv">
    Разрешите CSV со строками `имя + компания` в канонические `people_search_id`. Те, что не совпали точно, автоматически получают попытку по сходству.
  </Card>

  <Card title="Обогащение отправки формы" icon="form">
    Передайте `{ email }` из вашей маркетинговой формы. Получите обратно компанию, должность и ID Pubrio, который вы можете провести через правила скоринга.
  </Card>

  <Card title="Конвейер lookup → redeem" icon="arrow-right-arrow-left">
    Двухшаговый поток: дешёвый lookup (1 кредит), чтобы идентифицировать человека, затем полный redeem (5–10 кредитов) только для совпадений выше порога уверенности.
  </Card>
</CardGroup>

## FAQ

<AccordionGroup>
  <Accordion title="Возвращает ли Contact Lookup верифицированные email и телефон?">
    Нет — Contact Lookup возвращает профиль человека (`people_search_id`, имя, компанию, домен, должность и т.д.) плюс метаданные совпадения. Чтобы получить сами верифицированные контакты, передайте возвращённый `people_search_id` в [Redeem](/ru/developer-guides/people-redeem).
  </Accordion>

  <Accordion title="В чём разница между similarity_domain и similarity_company?">
    `similarity_domain` означает, что мы привязали совпадение по имени к известному домену компании — самый надёжный из уровней сходства. `similarity_company` означает, что мы привязали к названию компании без канонического домена — немного менее надёжно, поскольку несколько несвязанных компаний могут иметь одно название.
  </Accordion>

  <Accordion title="Буду ли я платить за несовпавшие входные данные?">
    Нет. Несовпавшие входные данные молча исключаются из ответа и не оплачиваются.
  </Accordion>

  <Accordion title="Что если я отправлю один и тот же email дважды в пакете?">
    Дубликат обнаруживается на стороне сервера, поиск выполняется один раз, вы платите один раз. Дублирующаяся запись помечается `match.is_duplicate_input: true` в ответе.
  </Accordion>

  <Accordion title="Каков лимит размера пакета?">
    Лимит устанавливается для вашей подписки как `people_contact_enrichment_bulk_size`. Большинство тарифов допускают 100+ за вызов; свяжитесь с нами, если вам нужен более высокий потолок.
  </Accordion>

  <Accordion title="Могу ли я искать по URL LinkedIn?">
    Не через Contact Lookup. Используйте [Redeem](/ru/developer-guides/people-redeem) с `linkedin_url`, если у вас есть профиль LinkedIn и вы хотите получить и разрешение, и контакты за один вызов.
  </Accordion>

  <Accordion title="Что происходит с международными номерами телефонов?">
    Телефон сопоставляется по нормализованной форме. Международный формат (E.164) — самый надёжный ввод. Номера в национальном формате могут совпасть, если страну можно определить, но E.164 (`+15551234567`) исключает неоднозначность.
  </Accordion>
</AccordionGroup>

## Связанное

<CardGroup cols={2}>
  <Card title="People Redeem" icon="key" href="/ru/developer-guides/people-redeem">
    Прямое направление: тратьте кредиты, чтобы разблокировать email + телефон для известного `people_search_id` или URL LinkedIn.
  </Card>

  <Card title="People Search" icon="users" href="/ru/api-reference/endpoint/people/search">
    Найдите людей, соответствующих фильтру по должности/компании/локации.
  </Card>

  <Card title="People Lookup" icon="user" href="/ru/api-reference/endpoint/people/lookup">
    Разрешите полный профиль одного человека из известного идентификатора.
  </Card>

  <Card title="Тарифы" icon="coins" href="/ru/get-started/pricing">
    Стоимость в кредитах по всем эндпоинтам, по уровню тарифа.
  </Card>
</CardGroup>
