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

> Turns one contact-sourcing recommendation into a lemlist contact.

# Add a Sourced Contact

Takes a `leadId` from a run's `contacts` array and creates the matching contact
in your workspace.

## Filing and enriching

* `listId` files the new contact into a contact list. Without it the contact
  lands in **All contacts**.
* `findEmail: true` also runs email enrichment on the new contact. It spends
  enrichment credits, so it is off by default.

## Why `companyId` is required

The People Database resolves a person's company from their own profile. If the
person has changed jobs since the run, they belong to a different company than
the one you sourced — so lemlist checks, and answers `409` rather than filing
them under the wrong account and reporting success.

| Code  | Meaning                                                                                             |
| ----- | --------------------------------------------------------------------------------------------------- |
| `201` | Contact created.                                                                                    |
| `404` | The person is no longer in the People Database. Re-run the sourcing to refresh the recommendations. |
| `409` | Their profile now lists a different employer, so they were not added to this account.               |


## OpenAPI

````yaml post /contact-sourcing/contacts
openapi: 3.0.0
info:
  title: lemlist API
  version: 1.0.0
  description: >-
    Welcome to the lemlist Developer Documentation.


    lemlist is very customizable and open. You'll find on this page all the API
    and integration you can do with lemlist.


    # Rate Limit


    lemlist's API rate limits requests in order to prevent abuse and overload of
    our services.  

    Rate limits are applied on all routes and per API key performing the
    request.  

    The rate limits are **20** requests per **2** seconds.  

    The response provides any information you may need about it:


    | Header | Description |

    | --- | --- |

    | Retry-After | The number of seconds in which you can retry |

    | X-RateLimit-Limit | The maximum requests in that time |

    | X-RateLimit-Remaining | The number of remaining requests you can make |

    | X-RateLimit-Reset | The date when the rate limit will reset |


    _Example of values for the rate limit headers_


    ``` json

    {
        "Retry-After": 2,
        "X-RateLimit-Limit": 20,
        "X-RateLimit-Remaining": 7,
        "X-RateLimit-Reset" : "Tue Feb 16 2021 09:02:42 GMT+0100 (Central European Standard Time)"
    }

     ```

    # Definitions


    ## Team


    A team is the entity of lemlist that can handle users and billing.


    ## Credits


    Credits are the coins a team uses to enrich emails, LinkedIn URLs, etc. via
    the enrich route. Each enrichment feature needs a certain amount of credits
    to run.


    ## User


    You use a user account to connect to lemlist and send messages via the
    connected emails or LinkedIn account.


    ## Campaign


    A campaign is the entity to automate outreach. A campaign has multiple
    sequences composed of steps.


    ## Lead


    A lead is a person that you try to contact via a campaign.


    ## Activity


    An activity is the history of all the steps.


    ## Unsubscribe


    An unsubscribe occurs when a person decides they don't want to receive
    emails from you anymore.


    # Authentication


    All API routes use the dedicated subdomain `api.lemlist.com`.


    lemlist uses API keys to allow access to the API. You can get your lemlist
    API key at our [integration
    page](https://app.lemlist.com/settings/integrations).


    You need to add the `Authorization` header using the `Basic` authentication
    type. `login:password` **where the login is always empty and the password is
    the API key**.


    ⚠️ **Don't forget to add the semicolon (**`:`**) before your API key in curl
    command.**


    > To authorize, use this code: 
      

    ``` shell

    curl https://api.lemlist.com/api/team \
      --user ":YourApiKey"

     ```

    **Make sure to replace** **`YourApiKey`** **with your API key.**


    # Give feedback


    If you want to report a bug, ask for data, or share with us a use case,
    please fill this [form](https://lemlist.typeform.com/to/mfVlkyGf). It will
    help us centralize your needs!
servers:
  - url: https://api.lemlist.com/api
security:
  - basicAuth: []
paths:
  /contact-sourcing/contacts:
    post:
      tags:
        - Contact sourcing
      summary: Add a Sourced Contact
      description: >-
        Turns one contact-sourcing recommendation into a lemlist contact.


        `leadId` comes from a run's `contacts[].leadId` — a People-Database id,
        not a contact id. `companyId` is required and verified: if the person's
        profile now puts them at a different company, the contact is not filed
        under the account asked for and the call answers 409.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - leadId
                - companyId
              properties:
                leadId:
                  type: string
                  description: People-Database id, from a run's `contacts[].leadId`.
                  example: '123456789'
                companyId:
                  type: string
                  example: cpn_K4tRm2Qw9Yb7Xz1Ns
                listId:
                  type: string
                  description: >-
                    File the new contact into this contact list (`clt_xxx`).
                    Omit to leave it in all contacts.
                  example: clt_P3vDh8Lk5Tq2Wm6Rj
                findEmail:
                  type: boolean
                  default: false
                  description: >-
                    Also run email enrichment on the new contact. Spends
                    enrichment credits.
      responses:
        '201':
          description: Contact created.
        '402':
          description: '`findEmail` was asked for without the credits for it.'
        '404':
          description: >-
            The lead is no longer in the People Database. Re-run the sourcing to
            refresh the recommendations.
        '409':
          description: >-
            The lead's profile lists a different current employer, so they were
            not filed under this account.
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic

````