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

# Start Bulk Enrichment

Use this endpoint to find the contact information of any B2B person:

* Work email (1 credit)
* Mobile phone number (10 credits)
* Personal Email (3 credits)

#### Input needed

To enrich a contact, you must provide either:

1. `firstname + lastname` & `company` (domain or the company\_name)
2. `linkedin_url`

For the best results, provide as much information as possible. Including a LinkedIn URL can improve enrichment rates by +5–20% for emails and +10–60% for mobile phone numbers.

If you pass a `linkedin_url`, we will also return a full contact and company profile (job title, location, headcount, etc.).

#### Practical tips

You can enrich up to 100 contacts in bulk. If you want to enrich only 1 contact, you can pass only 1 contact in the list.

All enrichments started on the API are visible on your FullEnrich dashboard. It is good practice to use a readable 'name' for each enrichment. This way, you can easily search through them. For instance, if you are enriching just one contact, you might name your enrichment 'Firstname Lastname'.

To pass specific properties, utilize the 'custom' field by passing an object. For example, if you are enriching a contact from your CRM, include the CRM 'contact\_id' in the custom object. This allows you to reference the contact\_id when you receive the result on your webhook. The custom value should be a cast as a string (number will return an error)

To retrieve the results of your enrichment, you can either provide a **webhook URL** \[recommended] or call the **GET /bulk/enrichment\_id** endpoint \[not recommended].

#### How do webhooks work?

Your webhook URL will receive a POST request when the enrichment is finished, lacks credits, or is canceled. If we fail to deliver a result to your webhook (receiving a non-2xx status code), we will retry every minute, up to 5 times. The content sent to your webhook is the same as that provided by the /bulk/enrichment\_id endpoint.


## OpenAPI

````yaml reference/openapi.yml POST /contact/enrich/bulk
openapi: 3.1.0
info:
  title: FullEnrich API Documentation
  version: 1.0.0
servers:
  - url: https://app.fullenrich.com/api/v1
security: []
paths:
  /contact/enrich/bulk:
    post:
      summary: Enrich Contacts In Bulk
      operationId: postContactBulkEnrich
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestPostContactBulkEnrich'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponsePostContactBulkEnrich'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                EnrichmentNameNotSet:
                  value:
                    code: error.enrichment.name.empty
                    message: Enrichment name not set
                WebhookURLInvalid:
                  value:
                    code: error.enrichment.webhook_url
                    message: Webhook URL must be start with http or https
                ProviderNotSet:
                  value:
                    code: error.enrichment.provider.empty
                    message: Providers not set
                DatasNotSet:
                  value:
                    code: error.enrichment.datas.empty
                    message: Datas is empty
                FirstnameNotSet:
                  value:
                    code: error.enrichment.firstname.empty
                    message: Firstname cannot be empty
                LastnameNotSet:
                  value:
                    code: error.enrichment.lastname.empty
                    message: Lastname cannot be empty
                DomainNotSet:
                  value:
                    code: error.enrichment.domain.empty
                    message: Domain cannot be empty
                EnrichFieldsNotSet:
                  value:
                    code: error.enrichment.enrich_fields.empty
                    message: enrichFields cannot be empty
                EnrichFieldValue:
                  value:
                    code: error.enrichment.enrich_field.value
                    message: >-
                      enrichField 'xxxx' not valide must be contact.emails or
                      contact.phones
                CustomKeyExceeded:
                  value:
                    code: error.enrichment.custom.key.exceeded
                    message: 'Custom field containe too many keys (max: 10 keys)'
                CustomKeyValueExceeded:
                  value:
                    code: error.enrichment.custom.value.exceeded
                    message: 'Custom field value max len exceeded (max: 100 character)'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                AuthorizationHeaderNotSet:
                  value:
                    code: error.authorization.not_set
                    message: Authorization headers not set
                AuthorizationHeaderNotAnBearer:
                  value:
                    code: error.authorization.not_bearer
                    message: Authorization headers not have prefix 'bearer'
                UnknownApiKey:
                  value:
                    code: error.api.key
                    message: Unknown api key
      security:
        - BearerAuth: []
components:
  schemas:
    RequestPostContactBulkEnrich:
      type: object
      properties:
        name:
          type: string
          examples:
            - Sales Operations in London
        webhook_url:
          type: string
          description: >-
            If you are using n8n, this is where you add the Webhook that will be
            triggered when the enrichment is done.
          examples:
            - https://example.com/webhook
            - https://n8n.com/webhook/36ajcd81-7f76-4b43-ab21-ba8a67264da7
        datas:
          type: array
          items:
            $ref: '#/components/schemas/RequestPostContactBulkEnrichContact'
      required:
        - name
        - providers
        - datas
      x-stoplight:
        id: qbqd1bt6pfpb6
    ResponsePostContactBulkEnrich:
      type: object
      properties:
        enrichment_id:
          type: string
          format: uuid
          examples:
            - 2db5ea61-1752-42cf-8ea1-ab1da060cd0a
      x-stoplight:
        id: yujio9ljywunw
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
      required:
        - code
        - message
      x-stoplight:
        id: v5d69l7ks2svx
    RequestPostContactBulkEnrichContact:
      type: object
      properties:
        firstname:
          type: string
          examples:
            - john
        lastname:
          type: string
          examples:
            - snow
        domain:
          type: string
          examples:
            - example.com
        company_name:
          type: string
          examples:
            - example inc
        linkedin_url:
          type: string
          description: >-
            Supports standard LinkedIn profile URLs (e.g.,
            https://www.linkedin.com/in/demoge) as well as LinkedIn Sales
            Navigator URLs (e.g.,
            https://www.linkedin.com/in/ACwAACLLwaIBKi655883b).
          examples:
            - https://www.linkedin.com/in/demoge/
        enrich_fields:
          type: array
          examples:
            - - contact.emails
              - contact.phones
          items:
            type: string
            examples:
              - - contact.emails
                - contact.phones
            enum:
              - contact.emails
              - contact.phones
        custom:
          type: object
          description: >-
            Returned in the enrichment result. Use it to identify a user, a CRM
            contact, or to pass any other information. All values must be
            strings. Limited to 20 entries.
          examples:
            - user_id: '12584'
            - crm_contact_id: '123'
      x-stoplight:
        id: fwqx8iw6iu2ve
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: string

````