Update a pipeline entry
curl --request PUT \
--url https://app.leonar.app/api/v1/pipeline-entries/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"stage_id": "e5f6a7b8-9012-34cd-efab-567890123def"
}
'import requests
url = "https://app.leonar.app/api/v1/pipeline-entries/{id}"
payload = { "stage_id": "e5f6a7b8-9012-34cd-efab-567890123def" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({stage_id: 'e5f6a7b8-9012-34cd-efab-567890123def'})
};
fetch('https://app.leonar.app/api/v1/pipeline-entries/{id}', 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://app.leonar.app/api/v1/pipeline-entries/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'stage_id' => 'e5f6a7b8-9012-34cd-efab-567890123def'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://app.leonar.app/api/v1/pipeline-entries/{id}"
payload := strings.NewReader("{\n \"stage_id\": \"e5f6a7b8-9012-34cd-efab-567890123def\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.put("https://app.leonar.app/api/v1/pipeline-entries/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"stage_id\": \"e5f6a7b8-9012-34cd-efab-567890123def\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.leonar.app/api/v1/pipeline-entries/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"stage_id\": \"e5f6a7b8-9012-34cd-efab-567890123def\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"project_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stage": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"rating": 123,
"notes": "<string>",
"rejection_reason_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"moved_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"custom_variables": {
"custom_variable_1": "<string>",
"custom_variable_2": "<string>",
"custom_variable_3": "<string>",
"custom_variable_4": "<string>",
"custom_variable_5": "<string>"
},
"project_variables": {
"project_variable_1": "<string>",
"project_variable_2": "<string>",
"project_variable_3": "<string>",
"project_variable_4": "<string>",
"project_variable_5": "<string>"
},
"contact": {
"id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"first_name": "Sophie",
"last_name": "Martin",
"title": "Senior Software Engineer",
"current_company": "Doctolib",
"location": "Paris, France",
"linkedin_profile": "https://www.linkedin.com/in/sophie-martin",
"emails": [
{
"email": "sophie@doctolib.com",
"type": "work"
}
],
"phones": [
{
"phone": "+33612345678",
"type": "personal"
}
],
"tags": [
"frontend",
"senior"
],
"global_status": "new",
"source": "linkedin",
"summary": null,
"skills": [
"React",
"TypeScript",
"Node.js"
],
"languages": [
"French",
"English"
],
"years_experience": 8,
"custom_data": {
"industry_code": "A12",
"vip": true
},
"do_not_contact": false,
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-20T14:00:00Z",
"last_contacted_at": null,
"archived_at": null
}
}
}{
"error": {
"code": "validation_error",
"message": "Invalid input"
}
}{
"error": {
"code": "invalid_api_key",
"message": "Invalid API key"
}
}{
"error": {
"code": "not_found",
"message": "Resource not found"
}
}Pipeline entries
Update a pipeline entry
Updates a pipeline entry.
Use this endpoint to move a contact to another project stage by passing
the target stage UUID in stage_id. To find available stage IDs for a
project, call GET /projects/{id} and read data.pipeline.stages.
PUT
/
pipeline-entries
/
{id}
Update a pipeline entry
curl --request PUT \
--url https://app.leonar.app/api/v1/pipeline-entries/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"stage_id": "e5f6a7b8-9012-34cd-efab-567890123def"
}
'import requests
url = "https://app.leonar.app/api/v1/pipeline-entries/{id}"
payload = { "stage_id": "e5f6a7b8-9012-34cd-efab-567890123def" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({stage_id: 'e5f6a7b8-9012-34cd-efab-567890123def'})
};
fetch('https://app.leonar.app/api/v1/pipeline-entries/{id}', 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://app.leonar.app/api/v1/pipeline-entries/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'stage_id' => 'e5f6a7b8-9012-34cd-efab-567890123def'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://app.leonar.app/api/v1/pipeline-entries/{id}"
payload := strings.NewReader("{\n \"stage_id\": \"e5f6a7b8-9012-34cd-efab-567890123def\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.put("https://app.leonar.app/api/v1/pipeline-entries/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"stage_id\": \"e5f6a7b8-9012-34cd-efab-567890123def\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.leonar.app/api/v1/pipeline-entries/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"stage_id\": \"e5f6a7b8-9012-34cd-efab-567890123def\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"project_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stage": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"rating": 123,
"notes": "<string>",
"rejection_reason_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"moved_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"custom_variables": {
"custom_variable_1": "<string>",
"custom_variable_2": "<string>",
"custom_variable_3": "<string>",
"custom_variable_4": "<string>",
"custom_variable_5": "<string>"
},
"project_variables": {
"project_variable_1": "<string>",
"project_variable_2": "<string>",
"project_variable_3": "<string>",
"project_variable_4": "<string>",
"project_variable_5": "<string>"
},
"contact": {
"id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"first_name": "Sophie",
"last_name": "Martin",
"title": "Senior Software Engineer",
"current_company": "Doctolib",
"location": "Paris, France",
"linkedin_profile": "https://www.linkedin.com/in/sophie-martin",
"emails": [
{
"email": "sophie@doctolib.com",
"type": "work"
}
],
"phones": [
{
"phone": "+33612345678",
"type": "personal"
}
],
"tags": [
"frontend",
"senior"
],
"global_status": "new",
"source": "linkedin",
"summary": null,
"skills": [
"React",
"TypeScript",
"Node.js"
],
"languages": [
"French",
"English"
],
"years_experience": 8,
"custom_data": {
"industry_code": "A12",
"vip": true
},
"do_not_contact": false,
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-20T14:00:00Z",
"last_contacted_at": null,
"archived_at": null
}
}
}{
"error": {
"code": "validation_error",
"message": "Invalid input"
}
}{
"error": {
"code": "invalid_api_key",
"message": "Invalid API key"
}
}{
"error": {
"code": "not_found",
"message": "Resource not found"
}
}Authorizations
API key starting with leo_
Path Parameters
Pipeline entry ID
Body
application/json
Target pipeline stage UUID.
Deprecated. This field is accepted for compatibility but is not persisted on project pipeline entries.
Deprecated. This field is accepted for compatibility but is not persisted on project pipeline entries.
Per-contact sequence variables stored on a pipeline entry or enrollment.
Show child attributes
Show child attributes
Response
Entry updated
Show child attributes
Show child attributes
⌘I