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

# Introduction

> Integrate Pylote freelance profiles into your platform

<Note>
  **April 2026**: access to the Pylote API is now **free** for all partners.
  The API itself hasn't changed, but the documentation has been fully rewritten.
  If you spot anything missing, wrong or unclear,
  report it to `hello@pylote.io` - we fix it within the day.
</Note>

## Pylote Client API

The Pylote Client API lets you retrieve **tech freelance profiles** from the Pylote database
and integrate them into your recruiting platform.

Pylote centralizes the profiles of freelancers registered on Crème, Comet, Free-Work, Collective,
WTTJ and many others, and makes them available through this API in enriched
[JSON Resume](https://jsonresume.org/schema/) format.

### What you get

* **Complete profiles**: skills, work experience, education, certifications, languages
* **Real-time availability**: the freelancer updates their availability in the Pylote extension
* **Mission preferences**: day rate, remote work, duration, days/week, geographic mobility
* **Tracked links**: CV and LinkedIn via `hive.pylote.io` (watermarked for tracking)
* **Proxy emails**: `@freelance.pylote.io` to protect the freelancer's identity

### Essential for things to work

<Note>
  **Whitelist every recruiter on your platform** as soon as they access Pylote profiles.
  This is what generates their `@recruiter.pylote.io` proxy email and lets them **contact
  the freelancers** (freelancer emails are themselves proxies).

  * **Initial setup**: `POST /partners/whitelist/batch` (up to 500 recruiters at once)
  * **New recruiters afterwards**: `POST /partners/whitelist` (single)

  Without whitelisting, no recruiter message reaches the freelancer ([details](/en/tracking-obligations#1-whitelist-essential-for-recruiter-freelancer-contact)).
</Note>

### Your contractual commitments

<Warning>
  Use of this API is subject to contractual commitments:

  1. **Track profile views**: every time a recruiter views a profile, you must
     send an event via `POST /partners/events` ([details](/en/tracking-obligations))
  2. **Delete deleted profiles within 30 days**: when a freelancer deletes their account,
     you must remove them from your database within 30 days ([details](/en/tracking-obligations#deletion-obligations))
  3. **Protect the data**: never expose freelancers' personal emails
  4. **Comply with the GDPR**: you act as an independent data controller for the data
     you receive through the API ([details](/en/legal-terms#personal-data-and-gdpr))
  5. **Keep your integration up to date**: you have 15 days after notification
     to comply with API changes ([details](/en/legal-terms#documentation-compliance))
</Warning>

### Prohibitions

Use of the API is strictly limited to connecting recruiters with freelancers.
You may not:

* Resell, sublicense or transfer access to the API to third parties
* Build a competing database from Pylote data
* Use the profiles for unsolicited commercial prospecting
* Carry out automated or unlawful profiling of freelancers
* Store data disproportionately to your operational needs

For the full details, see the [legal terms](/en/legal-terms).

### Base URL

```
https://client-p.pylote.io
```

| Environment    | URL                                  | Usage                                      |
| -------------- | ------------------------------------ | ------------------------------------------ |
| **Production** | `https://client-p.pylote.io`         | Real data                                  |
| **Preprod**    | `https://client-pp.pylote.io`        | Tests with real data (preprod key)         |
| **Sandbox**    | `https://client-p.pylote.io/sandbox` | Tests without an API key (anonymized data) |

### Quick start

<Steps>
  <Step title="Test the sandbox">
    No key required. Validate your integration with anonymized data:

    ```bash theme={null}
    curl "https://client-p.pylote.io/sandbox/freelances?modifiedTime=0&page=1&limit=10"
    ```
  </Step>

  <Step title="Get your API key">
    Contact Pylote to receive your production API key.
    See [Authentication](/en/authentication) for the details.
  </Step>

  <Step title="Sync the freelancers">
    Fetch all profiles with `modifiedTime=0`, then incremental updates.
    See [Integration guide](/en/integration-guide) for the sync strategy.
  </Step>

  <Step title="Whitelist your recruiters">
    Required so your recruiters can contact Pylote freelancers.
    Once per recruiter via `POST /partners/whitelist`. See [Whitelist and tracking](/en/tracking-obligations#1-whitelist-essential-for-recruiter-freelancer-contact).
  </Step>

  <Step title="Track profile views">
    Send an event every time a recruiter views a profile.
    See [Whitelist and tracking](/en/tracking-obligations#2-tracking-contractual-obligation) (contractual).
  </Step>
</Steps>

### Response format

The API returns **JSON** and uses standard HTTP status codes:

| Code  | Meaning                                                      |
| ----- | ------------------------------------------------------------ |
| `200` | Successful request                                           |
| `201` | Resource created (POST freelances by IDs, whitelist, events) |
| `204` | Successful deletion (no body)                                |
| `400` | Invalid parameters (see the `message` field)                 |
| `401` | Missing API key                                              |
| `403` | Invalid API key or access denied                             |

### Rate limiting

No strict rate limiting. We recommend **200 requests/minute maximum**.
If you need more, contact us.

### Import into your API client

The OpenAPI file is available for import into Postman, Insomnia, Bruno or any other client:

```
https://documentation.client-p.pylote.io/openapi.yaml
```
