Update Enrichment Waterfall
curl --request PATCH \
--url https://api.lemlist.com/api/v2/enrichments/waterfalls/{waterfallId} \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.lemlist.com/api/v2/enrichments/waterfalls/{waterfallId}"
payload = {}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.lemlist.com/api/v2/enrichments/waterfalls/{waterfallId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));require 'uri'
require 'net/http'
url = URI("https://api.lemlist.com/api/v2/enrichments/waterfalls/{waterfallId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lemlist.com/api/v2/enrichments/waterfalls/{waterfallId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": {
"id": "ecw_ExAmPlE1234567890a",
"type": "email",
"name": "Europe email waterfall",
"isDefault": false,
"editor": "usr_ExAmPlE1234567890a",
"conditions": {
"country": {
"in": [
"FR",
"DE",
"ES",
"IT",
"GB"
]
}
},
"providers": [
{
"id": "findymail",
"order": 1,
"enabled": true
},
{
"id": "prospeo",
"order": 2,
"enabled": true
},
{
"id": "lusha",
"order": 3,
"enabled": false
},
{
"id": "datagma",
"order": 4,
"enabled": false
}
],
"createdAt": "2026-09-10T14:03:00.000Z",
"updatedAt": "2026-09-11T08:20:00.000Z"
}
}{
"error": "Unknown provider \"hunter\" for type \"email\"",
"code": "ENRICHMENT_WATERFALL_UNKNOWN_PROVIDER"
}{
"error": "Route unauthorized",
"code": "ROUTE_UNAUTHORIZED"
}{
"error": "Waterfall not found",
"code": "ENRICHMENT_WATERFALL_NOT_FOUND"
}{
"error": "Internal error",
"code": "INTERNAL_ERROR"
}Enrichment Waterfalls
Update Enrichment Waterfall
Updates the name or provider order of an enrichment waterfall.
PATCH
/
v2
/
enrichments
/
waterfalls
/
{waterfallId}
Update Enrichment Waterfall
curl --request PATCH \
--url https://api.lemlist.com/api/v2/enrichments/waterfalls/{waterfallId} \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.lemlist.com/api/v2/enrichments/waterfalls/{waterfallId}"
payload = {}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.lemlist.com/api/v2/enrichments/waterfalls/{waterfallId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));require 'uri'
require 'net/http'
url = URI("https://api.lemlist.com/api/v2/enrichments/waterfalls/{waterfallId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lemlist.com/api/v2/enrichments/waterfalls/{waterfallId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": {
"id": "ecw_ExAmPlE1234567890a",
"type": "email",
"name": "Europe email waterfall",
"isDefault": false,
"editor": "usr_ExAmPlE1234567890a",
"conditions": {
"country": {
"in": [
"FR",
"DE",
"ES",
"IT",
"GB"
]
}
},
"providers": [
{
"id": "findymail",
"order": 1,
"enabled": true
},
{
"id": "prospeo",
"order": 2,
"enabled": true
},
{
"id": "lusha",
"order": 3,
"enabled": false
},
{
"id": "datagma",
"order": 4,
"enabled": false
}
],
"createdAt": "2026-09-10T14:03:00.000Z",
"updatedAt": "2026-09-11T08:20:00.000Z"
}
}{
"error": "Unknown provider \"hunter\" for type \"email\"",
"code": "ENRICHMENT_WATERFALL_UNKNOWN_PROVIDER"
}{
"error": "Route unauthorized",
"code": "ROUTE_UNAUTHORIZED"
}{
"error": "Waterfall not found",
"code": "ENRICHMENT_WATERFALL_NOT_FOUND"
}{
"error": "Internal error",
"code": "INTERNAL_ERROR"
}This endpoint only accepts
name and providers. Sending conditions is rejected with a 400.providers is sent it replaces the whole order; providers you leave out are appended, disabled. On a default waterfall this takes over from the lemlist order: editor becomes your user id and the list is followed as is. Use Reset Enrichment Waterfall to hand it back to lemlist.
Error codes
| Code | Cause |
|---|---|
ENRICHMENT_WATERFALL_INVALID_NAME | name is empty or longer than 100 characters. |
ENRICHMENT_WATERFALL_UNKNOWN_PROVIDER | A providers[].id is not listed by List Enrichment Providers for this type. |
ENRICHMENT_WATERFALL_DUPLICATE_PROVIDER | The same provider id appears twice. |
ENRICHMENT_WATERFALL_PROVIDER_NOT_CONNECTED | An external provider is enabled while its API key is not saved — connect it with Connect Provider. |
ENRICHMENT_WATERFALL_EMPTY_UPDATE | The body is empty. |
Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Path Parameters
Id of the waterfall, as returned by the list endpoint: default_email or default_phone for a default waterfall, an ecw_ id for a custom one.
Body
application/json
Response
Success
An ordered list of providers for one enrichment type.
Show child attributes
Show child attributes
Was this page helpful?