curl --request POST \
--url https://openapi.enginy.ai/v1/saved-filters \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"filters": {},
"provider": "LINKEDIN",
"keywords": [
"<string>"
],
"searchFallbackFilters": [
{
"filters": {},
"keywords": [
"<string>"
]
}
],
"isShared": false
}
'import requests
url = "https://openapi.enginy.ai/v1/saved-filters"
payload = {
"name": "<string>",
"filters": {},
"provider": "LINKEDIN",
"keywords": ["<string>"],
"searchFallbackFilters": [
{
"filters": {},
"keywords": ["<string>"]
}
],
"isShared": False
}
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({
name: '<string>',
filters: {},
provider: 'LINKEDIN',
keywords: ['<string>'],
searchFallbackFilters: [{filters: {}, keywords: ['<string>']}],
isShared: false
})
};
fetch('https://openapi.enginy.ai/v1/saved-filters', 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://openapi.enginy.ai/v1/saved-filters",
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([
'name' => '<string>',
'filters' => [
],
'provider' => 'LINKEDIN',
'keywords' => [
'<string>'
],
'searchFallbackFilters' => [
[
'filters' => [
],
'keywords' => [
'<string>'
]
]
],
'isShared' => false
]),
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://openapi.enginy.ai/v1/saved-filters"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"filters\": {},\n \"provider\": \"LINKEDIN\",\n \"keywords\": [\n \"<string>\"\n ],\n \"searchFallbackFilters\": [\n {\n \"filters\": {},\n \"keywords\": [\n \"<string>\"\n ]\n }\n ],\n \"isShared\": false\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://openapi.enginy.ai/v1/saved-filters")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"filters\": {},\n \"provider\": \"LINKEDIN\",\n \"keywords\": [\n \"<string>\"\n ],\n \"searchFallbackFilters\": [\n {\n \"filters\": {},\n \"keywords\": [\n \"<string>\"\n ]\n }\n ],\n \"isShared\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/saved-filters")
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 \"name\": \"<string>\",\n \"filters\": {},\n \"provider\": \"LINKEDIN\",\n \"keywords\": [\n \"<string>\"\n ],\n \"searchFallbackFilters\": [\n {\n \"filters\": {},\n \"keywords\": [\n \"<string>\"\n ]\n }\n ],\n \"isShared\": false\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "<string>",
"data": {
"id": 123
}
}Create a saved filter
Create a saved AI Finder filter for later reuse. Filters are provider-aware and can be loaded directly into preview creation via savedFilterId.
Required scope:
ACTIONS_WRITERate limit: 30 requests per minute
curl --request POST \
--url https://openapi.enginy.ai/v1/saved-filters \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"filters": {},
"provider": "LINKEDIN",
"keywords": [
"<string>"
],
"searchFallbackFilters": [
{
"filters": {},
"keywords": [
"<string>"
]
}
],
"isShared": false
}
'import requests
url = "https://openapi.enginy.ai/v1/saved-filters"
payload = {
"name": "<string>",
"filters": {},
"provider": "LINKEDIN",
"keywords": ["<string>"],
"searchFallbackFilters": [
{
"filters": {},
"keywords": ["<string>"]
}
],
"isShared": False
}
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({
name: '<string>',
filters: {},
provider: 'LINKEDIN',
keywords: ['<string>'],
searchFallbackFilters: [{filters: {}, keywords: ['<string>']}],
isShared: false
})
};
fetch('https://openapi.enginy.ai/v1/saved-filters', 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://openapi.enginy.ai/v1/saved-filters",
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([
'name' => '<string>',
'filters' => [
],
'provider' => 'LINKEDIN',
'keywords' => [
'<string>'
],
'searchFallbackFilters' => [
[
'filters' => [
],
'keywords' => [
'<string>'
]
]
],
'isShared' => false
]),
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://openapi.enginy.ai/v1/saved-filters"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"filters\": {},\n \"provider\": \"LINKEDIN\",\n \"keywords\": [\n \"<string>\"\n ],\n \"searchFallbackFilters\": [\n {\n \"filters\": {},\n \"keywords\": [\n \"<string>\"\n ]\n }\n ],\n \"isShared\": false\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://openapi.enginy.ai/v1/saved-filters")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"filters\": {},\n \"provider\": \"LINKEDIN\",\n \"keywords\": [\n \"<string>\"\n ],\n \"searchFallbackFilters\": [\n {\n \"filters\": {},\n \"keywords\": [\n \"<string>\"\n ]\n }\n ],\n \"isShared\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/saved-filters")
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 \"name\": \"<string>\",\n \"filters\": {},\n \"provider\": \"LINKEDIN\",\n \"keywords\": [\n \"<string>\"\n ],\n \"searchFallbackFilters\": [\n {\n \"filters\": {},\n \"keywords\": [\n \"<string>\"\n ]\n }\n ],\n \"isShared\": false\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "<string>",
"data": {
"id": 123
}
}Authorizations
Body
Name for the saved filter.
1Primary provider-specific search filters configuration to save. For LINKEDIN, send the field-keyed map directly (e.g. {"REGION": [...], "CURRENT_TITLE": [...]}) — do NOT wrap it in a top-level filtersByType key. A single filtersByType wrapper is auto-unwrapped for backward compatibility, but the unwrapped shape is required. For CRM_CONTACTS and CRM_COMPANIES, send the exact same {"include": {...}, "exclude": {...}} shape used by search_contacts_with_advanced_filters / search_companies_with_advanced_filters (e.g. {"include": {"icpScore": ["80", "100"]}, "exclude": {"companyGroup": [12]}}); CRM saved filters round-trip through that same advanced-search filter DSL.
Show child attributes
Show child attributes
Saved filter type (LEAD or COMPANY).
LEAD, COMPANY Which AI Finder provider this saved filter belongs to. Defaults to LINKEDIN for backward compatibility.
LINKEDIN, CRM_CONTACTS, CRM_COMPANIES, STORELEADS, CRUNCHBASE_COMPANIES, CRUNCHBASE_CONTACTS, CRUNCHBASE_INVESTORS, THEIRSTACK_TECHNOLOGY, THEIRSTACK_JOBS, GOOGLE_MAPS Optional keywords associated with this saved filter.
1Optional ordered fallback searches to try after the primary filter.
Show child attributes
Show child attributes
Whether the saved filter is shared with the team.