> ## 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.

# People Redeem

> Dépensez des crédits pour déverrouiller l'e-mail professionnel vérifié, l'e-mail personnel et le numéro de téléphone d'une personne déjà identifiée — schémas unitaire, en masse et en masse asynchrone.

L'API Redeem People transforme un `people_search_id` (ou une URL LinkedIn) en l'ensemble complet des contacts vérifiés — e-mail professionnel, e-mail personnel, téléphone — pour cette personne. Vous ne dépensez des crédits que lorsque des données de contact sont effectivement renvoyées.

```bash theme={null}
curl -X POST https://api.pubrio.com/redeem/people \
  -H "pubrio-api-key: $PUBRIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "people_search_id": "e37ccf38-ea8f-422e-9874-cb23b15e8fe4",
    "people_contact_types": ["email-work", "phone"]
  }'
```

## Quand utiliser Redeem

Utilisez Redeem lorsque **vous savez déjà qui est la personne** et avez besoin de ses coordonnées :

* Vous avez exécuté [People Search](/fr/api-reference/endpoint/people/search) et souhaitez déverrouiller les contacts des correspondances
* Vous disposez de l'URL d'un profil LinkedIn et souhaitez contacter la personne
* Vous disposez d'un `people_search_id` provenant d'une réponse Pubrio précédente

Si au contraire vous disposez d'un **e-mail ou d'un téléphone et souhaitez retrouver la personne correspondante**, utilisez [People Contact Lookup](/fr/developer-guides/people-contact-lookup) — c'est le sens inverse, à 1 crédit par correspondance.

## Trois variantes

| Endpoint                          | À utiliser quand                   | Comportement                                                      |
| --------------------------------- | ---------------------------------- | ----------------------------------------------------------------- |
| `POST /redeem/people`             | Une personne à la fois             | Synchrone. Renvoie les contacts dans la réponse.                  |
| `POST /redeem/people/batch`       | 2 à N personnes en une seule fois  | Asynchrone. Renvoie immédiatement un `redeem_query_id`.           |
| `POST /redeem/people/batch/query` | Interrogation des résultats du lot | Renvoie l'ensemble complet des résultats une fois le lot terminé. |

Le flux en lot est le schéma adapté à tout workflow piloté par liste — imports CSV, inscription à une séquence, synchronisation CRM — car il parallélise le travail de résolution des contacts côté serveur.

## Démarrage rapide — redeem unique

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://api.pubrio.com/redeem/people \
    -H "pubrio-api-key: $PUBRIO_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "people_search_id": "e37ccf38-ea8f-422e-9874-cb23b15e8fe4",
      "people_contact_types": ["email-work", "phone"]
    }'
  ```

  ```js JavaScript theme={null}
  const res = await fetch("https://api.pubrio.com/redeem/people", {
    method: "POST",
    headers: {
      "pubrio-api-key": process.env.PUBRIO_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      people_search_id: "e37ccf38-ea8f-422e-9874-cb23b15e8fe4",
      people_contact_types: ["email-work", "phone"],
    }),
  });
  const { data } = await res.json();
  ```

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

  res = requests.post(
      "https://api.pubrio.com/redeem/people",
      headers={"pubrio-api-key": os.environ["PUBRIO_API_KEY"]},
      json={
          "people_search_id": "e37ccf38-ea8f-422e-9874-cb23b15e8fe4",
          "people_contact_types": ["email-work", "phone"],
      },
  )
  data = res.json()["data"]
  ```
</CodeGroup>

**Réponse :**

```json theme={null}
{
  "data": {
    "profile": {
      "credit": 450376,
      "topup_credit": 235237,
      "total_credit_cost": 15
    },
    "peoples": [
      {
        "people_search_id": "e37ccf38-ea8f-422e-9874-cb23b15e8fe4",
        "emails": [
          { "value": "king.lai@pubrio.com", "type": "email-work", "status": "Verified" }
        ],
        "phones": [
          { "value": "+15551234567", "type": "phone", "status": null }
        ]
      }
    ]
  }
}
```

`profile` reprend votre solde après facturation ainsi que le nombre de crédits que cet appel a coûté, afin que vous puissiez mettre à jour un indicateur dans votre application sans effectuer un aller-retour distinct vers `/profile/usage`.

## Identifiants

Vous pouvez identifier la personne à racheter de deux façons :

| Identifiant        | Description                                                                                                                                                                                                                       |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `people_search_id` | UUID renvoyé par tout endpoint de recherche/lookup Pubrio. Le moins coûteux et le plus fiable — aucune étape de résolution.                                                                                                       |
| `linkedin_url`     | Une URL de profil LinkedIn (par exemple, `https://www.linkedin.com/in/jane-doe-123`). Pubrio la résout d'abord en `people_search_id` ; si le profil est nouveau, cela peut inclure une étape d'enrichissement externe ponctuelle. |

`people_contact_types` définit le contrat de ce que vous souhaitez obtenir en retour. Combinez librement `email-work`, `email-personal`, `phone` — vous êtes facturé par type renvoyé, pas par type demandé. Demander `["email-work", "phone"]` et n'obtenir que `email-work` en retour ne facture que l'e-mail.

## Redeem en masse (schéma asynchrone)

Pour plus d'une personne, utilisez le flux en lot. Il exécute chaque redeem en parallèle côté serveur et évite le coût d'aller-retour par requête.

**Étape 1 — soumission :**

```bash theme={null}
curl -X POST https://api.pubrio.com/redeem/people/batch \
  -H "pubrio-api-key: $PUBRIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "peoples": [
      "540574d1-ff74-475b-aea2-f8ae643b806d",
      "e37ccf38-ea8f-422e-9874-cb23b15e8fe4"
    ],
    "people_contact_types": ["email-work", "phone"]
  }'
```

```json theme={null}
{
  "data": {
    "redeem_query_id": "a046c1da-b3d4-4ca1-aca6-1dd8c8055701",
    "is_completed": false,
    "estimated_time": 6,
    "estimated_time_type": "second"
  }
}
```

**Étape 2 — interrogation :**

```bash theme={null}
curl -X POST https://api.pubrio.com/redeem/people/batch/query \
  -H "pubrio-api-key: $PUBRIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "redeem_query_id": "a046c1da-b3d4-4ca1-aca6-1dd8c8055701" }'
```

Lorsque `is_completed` vaut `true`, la réponse contient le tableau `peoples` complet avec les contacts résolus et le coût total en crédits du lot.

<Tip>
  Interrogez au rythme indiqué par `estimated_time`. Interroger plus fréquemment que l'estimation ne fait que gaspiller des allers-retours — le travail n'est pas encore terminé.
</Tip>

## Coûts en crédits

Les crédits sont déduits **par contact renvoyé**, pas par requête. Tarification par enregistrement :

| Type de contact                 | Crédits par enregistrement |
| ------------------------------- | -------------------------- |
| `email-work` / `email-personal` | 5                          |
| `phone`                         | 10                         |

Si une personne n'a pas d'e-mail professionnel et que vous n'avez demandé que `email-work`, vous n'êtes rien facturé pour cet enregistrement. Si vous avez demandé à la fois un e-mail et un téléphone et que Pubrio renvoie les deux, vous êtes facturé pour les deux. Consultez le [tableau tarifaire](/fr/get-started/pricing) complet pour les tarifs spécifiques à chaque offre.

## Modèles d'utilisation courants

<CardGroup cols={2}>
  <Card title="Pipeline search → redeem" icon="magnifying-glass">
    Exécutez [People Search](/fr/api-reference/endpoint/people/search), laissez l'utilisateur sélectionner des lignes dans votre interface, puis envoyez les `people_search_id` sélectionnés via `/redeem/people/batch`. Ne facturez que ce qui est utilisé.
  </Card>

  <Card title="Flux de collage d'URL LinkedIn" icon="linkedin">
    Acceptez une liste d'URL LinkedIn provenant d'un export CRM ou d'une extension de navigateur. Soumettez-les via `/redeem/people` (unitaire) ou construisez un petit wrapper de lot.
  </Card>

  <Card title="Inscription à une séquence" icon="envelope">
    Avant d'ajouter des contacts à une cadence sortante, ne rachetez que `email-work` — cela garde le coût prévisible tout en fournissant des adresses délivrables à votre outil d'envoi.
  </Card>

  <Card title="Enrichissement CRM" icon="database">
    Associez les enregistrements CRM existants à un `people_search_id` (via [People Lookup](/fr/api-reference/endpoint/people/lookup)), puis rachetez en lot selon une planification.
  </Card>
</CardGroup>

## FAQ

<AccordionGroup>
  <Accordion title="Serai-je facturé si aucun contact n'est trouvé ?">
    Non. Les crédits sont déduits par enregistrement renvoyé. Si une personne n'a pas d'e-mail professionnel disponible, vous ne payez rien pour cet emplacement de contact — même si vous l'aviez demandé.
  </Accordion>

  <Accordion title="Que se passe-t-il si la même personne figure deux fois dans mon lot ?">
    Les doublons sont dédupliqués côté serveur. Vous n'êtes facturé qu'une seule fois.
  </Accordion>

  <Accordion title="Que se passe-t-il si l'URL LinkedIn est inconnue de Pubrio ?">
    Pubrio tente une résolution externe ponctuelle. Si le profil se résout, la tarification redeem normale s'applique. Si ce n'est pas le cas, aucun crédit n'est facturé.
  </Accordion>

  <Accordion title="Quelle est la fraîcheur des données de contact ?">
    Pubrio revérifie les enregistrements d'e-mail et de téléphone en continu. Chaque contact est accompagné d'un champ `status` (`Verified`, `null`, etc.) afin que vous puissiez filtrer pour ne conserver que les enregistrements vérifiés de votre côté.
  </Accordion>

  <Accordion title="Puis-je racheter uniquement le téléphone, uniquement l'e-mail, ou uniquement l'e-mail personnel ?">
    Oui — `people_contact_types` est un tableau. Passez exactement les types que vous souhaitez ; vous n'êtes facturé que sur ce qui est renvoyé.
  </Accordion>

  <Accordion title="Masse vs unitaire — quand le schéma asynchrone l'emporte-t-il ?">
    Au-delà d'environ 3 enregistrements, le lot l'emporte en latence et en fiabilité par enregistrement. L'endpoint de lot exécute un fan-out en interne et parallélise les éventuelles étapes d'enrichissement externe, de sorte qu'un lot de 50 enregistrements se rapproche davantage de 5 secondes en temps réel que de 50 × le temps d'aller-retour par requête.
  </Accordion>
</AccordionGroup>

## Voir aussi

<CardGroup cols={2}>
  <Card title="People Contact Lookup" icon="magnifying-glass-arrow-right" href="/fr/developer-guides/people-contact-lookup">
    Recherche inversée : retrouvez une personne à partir d'un e-mail, d'un téléphone ou d'un nom + domaine. 1 crédit par correspondance.
  </Card>

  <Card title="People Search" icon="users" href="/fr/api-reference/endpoint/people/search">
    Trouvez des personnes correspondant à un profil (titre, localisation, taille d'entreprise, technologies, etc.).
  </Card>

  <Card title="People Lookup" icon="user" href="/fr/api-reference/endpoint/people/lookup">
    Résolvez le profil complet d'une seule personne à partir d'un identifiant — sans déverrouillage de contact.
  </Card>

  <Card title="Tarification" icon="coins" href="/fr/get-started/pricing">
    Coûts en crédits pour tous les endpoints, par palier d'offre.
  </Card>
</CardGroup>
