curl --request POST \
--url https://client-p.pylote.io/partners/search \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"keywords": "react \"design system\" -wordpress",
"skills": [
"React",
"TypeScript"
],
"workAreas": [
"Île-de-France"
],
"seniority": [
"senior_6-10_ans",
"master_10_ans"
],
"available": true,
"page": 1,
"limit": 50
}
'import requests
url = "https://client-p.pylote.io/partners/search"
payload = {
"keywords": "react \"design system\" -wordpress",
"skills": ["React", "TypeScript"],
"workAreas": ["Île-de-France"],
"seniority": ["senior_6-10_ans", "master_10_ans"],
"available": True,
"page": 1,
"limit": 50
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
keywords: 'react "design system" -wordpress',
skills: ['React', 'TypeScript'],
workAreas: ['Île-de-France'],
seniority: ['senior_6-10_ans', 'master_10_ans'],
available: true,
page: 1,
limit: 50
})
};
fetch('https://client-p.pylote.io/partners/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://client-p.pylote.io/partners/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'keywords' => 'react "design system" -wordpress',
'skills' => [
'React',
'TypeScript'
],
'workAreas' => [
'Île-de-France'
],
'seniority' => [
'senior_6-10_ans',
'master_10_ans'
],
'available' => true,
'page' => 1,
'limit' => 50
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://client-p.pylote.io/partners/search"
payload := strings.NewReader("{\n \"keywords\": \"react \\\"design system\\\" -wordpress\",\n \"skills\": [\n \"React\",\n \"TypeScript\"\n ],\n \"workAreas\": [\n \"Île-de-France\"\n ],\n \"seniority\": [\n \"senior_6-10_ans\",\n \"master_10_ans\"\n ],\n \"available\": true,\n \"page\": 1,\n \"limit\": 50\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://client-p.pylote.io/partners/search")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"keywords\": \"react \\\"design system\\\" -wordpress\",\n \"skills\": [\n \"React\",\n \"TypeScript\"\n ],\n \"workAreas\": [\n \"Île-de-France\"\n ],\n \"seniority\": [\n \"senior_6-10_ans\",\n \"master_10_ans\"\n ],\n \"available\": true,\n \"page\": 1,\n \"limit\": 50\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-p.pylote.io/partners/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"keywords\": \"react \\\"design system\\\" -wordpress\",\n \"skills\": [\n \"React\",\n \"TypeScript\"\n ],\n \"workAreas\": [\n \"Île-de-France\"\n ],\n \"seniority\": [\n \"senior_6-10_ans\",\n \"master_10_ans\"\n ],\n \"available\": true,\n \"page\": 1,\n \"limit\": 50\n}"
response = http.request(request)
puts response.read_body{
"freelances": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"headline": "Lead developpeuse React",
"summary": "<string>",
"location": {
"city": "Paris",
"region": "Île-de-France",
"countryCode": "FR",
"postalCode": "75002"
},
"skills": [
{
"name": "React",
"level": "Expert",
"keywords": [
"<string>"
]
}
],
"languages": [
{
"language": "Français",
"fluency": "Natif"
}
],
"seniority": "senior_6-10_ans",
"professions": [
"<string>"
],
"availability": {
"available": true,
"availabilityDate": "<string>"
},
"preferences": {
"remoteWork": [
"<string>"
],
"missionDuration": [
"<string>"
],
"daysPerWeek": [
"<string>"
],
"workAreas": [
{}
]
},
"workHistory": [
{
"position": "Lead dev",
"startDate": "2021-01-01",
"endDate": "2023-06-30",
"summary": "Refonte du design system, equipe de 6 devs."
}
],
"matchRank": 12,
"updatedAt": "<string>"
}
],
"infos": {
"total": 103,
"page": 1,
"limit": 50,
"totalPages": 3
}
}{
"error": "Validation failed",
"message": "\"modifiedTime\" is required"
}Search freelancers (Stage 1, anonymized)
Searches the Pylote freelancer pool, ranked by relevance by our matching
engine. Results are anonymized: partial profiles with no identifying
or contact data. The full profile is then obtained via
POST /partners/reveal with the id field.
keywords semantics:
- several words = implicit AND (
react node= profiles matching both) "design system"= exact phrase-wordpress= exclusion- OR is not supported at this stage
Filters: accepted values for skills, workAreas and seniority
come from the Pylote referential (POST /referential). skills is an
AND (the freelancer must have every requested skill), workAreas and
seniority are ORs.
Rate limit: 120 requests/minute per API key.
curl --request POST \
--url https://client-p.pylote.io/partners/search \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"keywords": "react \"design system\" -wordpress",
"skills": [
"React",
"TypeScript"
],
"workAreas": [
"Île-de-France"
],
"seniority": [
"senior_6-10_ans",
"master_10_ans"
],
"available": true,
"page": 1,
"limit": 50
}
'import requests
url = "https://client-p.pylote.io/partners/search"
payload = {
"keywords": "react \"design system\" -wordpress",
"skills": ["React", "TypeScript"],
"workAreas": ["Île-de-France"],
"seniority": ["senior_6-10_ans", "master_10_ans"],
"available": True,
"page": 1,
"limit": 50
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
keywords: 'react "design system" -wordpress',
skills: ['React', 'TypeScript'],
workAreas: ['Île-de-France'],
seniority: ['senior_6-10_ans', 'master_10_ans'],
available: true,
page: 1,
limit: 50
})
};
fetch('https://client-p.pylote.io/partners/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://client-p.pylote.io/partners/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'keywords' => 'react "design system" -wordpress',
'skills' => [
'React',
'TypeScript'
],
'workAreas' => [
'Île-de-France'
],
'seniority' => [
'senior_6-10_ans',
'master_10_ans'
],
'available' => true,
'page' => 1,
'limit' => 50
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://client-p.pylote.io/partners/search"
payload := strings.NewReader("{\n \"keywords\": \"react \\\"design system\\\" -wordpress\",\n \"skills\": [\n \"React\",\n \"TypeScript\"\n ],\n \"workAreas\": [\n \"Île-de-France\"\n ],\n \"seniority\": [\n \"senior_6-10_ans\",\n \"master_10_ans\"\n ],\n \"available\": true,\n \"page\": 1,\n \"limit\": 50\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://client-p.pylote.io/partners/search")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"keywords\": \"react \\\"design system\\\" -wordpress\",\n \"skills\": [\n \"React\",\n \"TypeScript\"\n ],\n \"workAreas\": [\n \"Île-de-France\"\n ],\n \"seniority\": [\n \"senior_6-10_ans\",\n \"master_10_ans\"\n ],\n \"available\": true,\n \"page\": 1,\n \"limit\": 50\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-p.pylote.io/partners/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"keywords\": \"react \\\"design system\\\" -wordpress\",\n \"skills\": [\n \"React\",\n \"TypeScript\"\n ],\n \"workAreas\": [\n \"Île-de-France\"\n ],\n \"seniority\": [\n \"senior_6-10_ans\",\n \"master_10_ans\"\n ],\n \"available\": true,\n \"page\": 1,\n \"limit\": 50\n}"
response = http.request(request)
puts response.read_body{
"freelances": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"headline": "Lead developpeuse React",
"summary": "<string>",
"location": {
"city": "Paris",
"region": "Île-de-France",
"countryCode": "FR",
"postalCode": "75002"
},
"skills": [
{
"name": "React",
"level": "Expert",
"keywords": [
"<string>"
]
}
],
"languages": [
{
"language": "Français",
"fluency": "Natif"
}
],
"seniority": "senior_6-10_ans",
"professions": [
"<string>"
],
"availability": {
"available": true,
"availabilityDate": "<string>"
},
"preferences": {
"remoteWork": [
"<string>"
],
"missionDuration": [
"<string>"
],
"daysPerWeek": [
"<string>"
],
"workAreas": [
{}
]
},
"workHistory": [
{
"position": "Lead dev",
"startDate": "2021-01-01",
"endDate": "2023-06-30",
"summary": "Refonte du design system, equipe de 6 devs."
}
],
"matchRank": 12,
"updatedAt": "<string>"
}
],
"infos": {
"total": 103,
"page": 1,
"limit": 50,
"totalPages": 3
}
}{
"error": "Validation failed",
"message": "\"modifiedTime\" is required"
}Autorisations
Cle API fournie par Pylote. Inclure dans le header x-api-key de chaque requete.
Exemple : x-api-key: votre-cle-api
Corps
Free-text query (max 500 characters)
"react \"design system\" -wordpress"
Required skills (AND). Use the name field from the referential (Skills table).
20["React", "TypeScript"]
Accepted mobility areas (OR). Use the name field from the referential (Regions table).
20["Île-de-France"]
Accepted seniorities (OR). Use the slug field from the referential (Seniority table).
10["senior_6-10_ans", "master_10_ans"]
If provided, filters on the freelancer's declared availability
x >= 11 <= x <= 100