---
title: "Webhook : company_enrichment.completed"
method: POST
path: "company_enrichment.completed"
tags: ["Company Enrichment"]
---

# Webhook : company_enrichment.completed

`POST company_enrichment.completed` (webhook)

Envoyé sur votre `callbackUrl` quand une recherche entreprise async se termine. En-tête `X-Listar-Signature`. Répondez 2xx.

## Payload

- CompanyWebhookPayload: Corps POST sur votre callbackUrl quand la recherche entreprise se termine.
  - `event` 'company_enrichment.completed'
  - `id` string
  - `status` 'completed' | 'pending_payment': `completed` → result rempli. `pending_payment` → result null, le crédit était insuffisant.
  - `result` CompanyEnrichmentResult: Entreprise enrichie : firmographics + contacts. Les libellés (`legalForm`, `apeLabel`, rôles de mandat) sont renvoyés en anglais ; villes, pays et noms de personnes sont mis en casse lisible, l’adresse reste celle publiée par le registre. Le champ `activity` (objet social en texte libre, dans la langue du registre) n’est PAS exposé sur cette API : utilisez `apeCode` / `apeLabel` pour le secteur.
    - `companyName` string, nullable
    - `tradeName` string, nullable
    - `domain` string, nullable
    - `siren` string, nullable
    - `siret` string, nullable
    - `legalForm` string, nullable: Forme juridique en anglais (ex: `Simplified joint-stock company (SAS)`).
    - `legalFormCode` string, nullable
    - `apeCode` string, nullable
    - `apeLabel` string, nullable: Secteur en anglais, résolu depuis `apeCode` (ex: `Computer programming, consultancy and related activities`).
    - `isActive` boolean, nullable
    - `creationDate` string, nullable
    - `capital` number, nullable
    - `industry` string, nullable
    - `employees` integer, nullable
    - `revenue` number, nullable
    - `foundedYear` integer, nullable
    - `address` string, nullable
    - `city` string, nullable
    - `postalCode` string, nullable
    - `country` string, nullable: Pays en anglais (`France`, `Germany`) ; un code ISO fourni à la requête est renvoyé tel quel en majuscules.
    - `establishmentSiret` string, nullable: Renseigné quand le match porte sur un ÉTABLISSEMENT différent du siège (chaînes, multi-sites). Dans ce cas `establishment*` est l’adresse du site matché et `address`/`city`/`postalCode` celle du siège.
    - `establishmentAddress` string, nullable
    - `establishmentCity` string, nullable
    - `establishmentPostalCode` string, nullable
    - `establishmentsCount` integer, nullable: Nombre d’établissements ouverts.
    - `industries` string[], nullable: Secteurs du fournisseur de firmographics (vocabulaire distinct de `apeLabel`).
    - `technologies` string[], nullable
    - `website` string, nullable
    - `linkedinUrl` string, nullable
    - `phone` string, nullable
    - `directors` CompanyContactInfo[], nullable: Représentants légaux issus des registres officiels : personnes physiques, et mandataires personnes morales (holdings, `type: "entity"`) lorsque le registre les publie. Indépendant de `withContacts`, mais **`withFirmographics: false` met ce tableau à `null`** (comme `address`/`city`/`country`) puisque le bloc société n’est alors ni facturé ni renvoyé. Les employés des mandataires personnes morales ne sont jamais recherchés.
      - `fullName` string, nullable
      - `firstName` string, nullable
      - `lastName` string, nullable
      - `jobTitle` string, nullable
      - `mandateRole` string, nullable: Rôle de mandat déclaré au registre, en anglais (ex: `Managing director`, `President`). Contexte secondaire quand `jobTitle` porte un intitulé opérationnel distinct.
      - `type` 'individual' | 'entity': `entity` = mandataire personne morale (holding / société représentante) - pas de LinkedIn/email.
      - `linkedinUrl` string, nullable
      - `validated` boolean: Contact validé (identité confirmée).
      - `confidence` number
    - `contactsRequested` integer, nullable
    - `contactsFound` integer
    - `contacts` CompanyContactInfo[], nullable
      - `fullName` string, nullable
      - `firstName` string, nullable
      - `lastName` string, nullable
      - `jobTitle` string, nullable
      - `mandateRole` string, nullable: Rôle de mandat déclaré au registre, en anglais (ex: `Managing director`, `President`). Contexte secondaire quand `jobTitle` porte un intitulé opérationnel distinct.
      - `type` 'individual' | 'entity': `entity` = mandataire personne morale (holding / société représentante) - pas de LinkedIn/email.
      - `linkedinUrl` string, nullable
      - `validated` boolean: Contact validé (identité confirmée).
      - `confidence` number
  - `completedAt` string, date-time

## Acknowledgement `200`

Acquittement.

---

[API](https://skmtc.dev/listar/apis/listar-api.md) · [All operations](https://skmtc.dev/listar/apis/listar-api/llms.txt) · [OpenAPI document](https://skmtc.dev/listar/apis/listar-api/revisions/d8b4a5e9acc8?raw)
