> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.client-p.pylote.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Authentication

> How to authenticate with the Pylote API

## Getting your API key

<Steps>
  <Step title="Contact Pylote">
    Send an email to `hello@pylote.io` stating your company and your use case
    (direct integration, distribution via platform, CRM integrator, etc.).
  </Step>

  <Step title="Sign the partnership agreement">
    Pylote sends you the API partnership agreement. Signing it constitutes acceptance
    of the [legal terms](/en/legal-terms) (tracking, GDPR, confidentiality).
  </Step>

  <Step title="Receive your key">
    Once the agreement is signed, Pylote emails you your API key.
    You can start integrating right away.
  </Step>
</Steps>

<Tip>
  While waiting for your key, you can already test the API via the [sandbox](/en/sandbox)

  * no key required.
</Tip>

## API key

The API uses an **API key** to identify requests.

Include it in the `x-api-key` header of every request:

```bash theme={null}
curl -X GET "https://client-p.pylote.io/freelances?modifiedTime=0&page=1&limit=50" \
  -H "x-api-key: your-api-key"
```

### Access levels

Your API key determines your access level:

| Type           | Accessible endpoints                                                        | Examples          |
| -------------- | --------------------------------------------------------------------------- | ----------------- |
| **Client**     | `GET /freelances`, `POST /freelances`, `GET /freelances/deleted-freelances` | Comet, RecruitCRM |
| **Integrator** | All Client + `/integration/*`                                               | BoondManager      |
| **Partner**    | `/partners/whitelist` + `/partners/events`                                  | Agrega            |
| **Admin**      | All Client + cache refresh, debug                                           | Pylote internal   |

### Authentication errors

<ResponseExample>
  ```json 401 - Missing key theme={null}
  {
    "statusCode": 401,
    "message": "Missing x-api-key header"
  }
  ```

  ```json 403 - Invalid key theme={null}
  {
    "statusCode": 403,
    "message": "Invalid API key"
  }
  ```
</ResponseExample>

### Security and responsibility

<Warning>
  The API key is personal, non-transferable and may not be shared with third parties.
  **Any use of the API key, including fraudulent use, is deemed to be carried out
  under your responsibility.**
</Warning>

In the event of a confirmed or suspected compromise of your API key:

1. **Immediately** notify Pylote at `support@pylote.io`
2. Pylote will revoke the compromised key and provide you with a new one
3. Any use between the compromise and the notification remains under your responsibility

<Info>
  Pylote reserves the right to suspend or revoke the API key in the event of a breach
  of any of your contractual obligations.
</Info>
