curl --request GET \
--url https://api.naturalead.ai/api/preferences/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.naturalead.ai/api/preferences/{id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.naturalead.ai/api/preferences/{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://api.naturalead.ai/api/preferences/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.naturalead.ai/api/preferences/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.naturalead.ai/api/preferences/{id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.naturalead.ai/api/preferences/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"_id": "507f1f77bcf86cd799439011",
"leadId": "42",
"topic": "budget",
"preference": "$50k-100k",
"confidence": "high",
"source": "lead: Our budget is around 50 to 100k",
"updatedAt": "2026-08-10T12:00:00.000Z",
"createdAt": "2026-08-10T11:55:00.000Z"
},
{
"_id": "507f1f77bcf86cd799439012",
"leadId": "42",
"topic": "timeline",
"preference": "Q2 2026",
"confidence": "medium",
"source": "lead: Looking to decide by summer",
"updatedAt": "2026-08-10T12:01:00.000Z",
"createdAt": "2026-08-10T12:01:00.000Z"
}
]{
"error": "Failed to fetch preferences"
}List Lead Insights
Returns all Lead Insights (preferences) extracted for a lead. Same data shown in the conversation UI under Lead Insights.
Path {id} here is the lead id (the numeric id from
GET /api/leads), not a preference document id.
Requires conversations:view permission.
curl --request GET \
--url https://api.naturalead.ai/api/preferences/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.naturalead.ai/api/preferences/{id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.naturalead.ai/api/preferences/{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://api.naturalead.ai/api/preferences/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.naturalead.ai/api/preferences/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.naturalead.ai/api/preferences/{id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.naturalead.ai/api/preferences/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"_id": "507f1f77bcf86cd799439011",
"leadId": "42",
"topic": "budget",
"preference": "$50k-100k",
"confidence": "high",
"source": "lead: Our budget is around 50 to 100k",
"updatedAt": "2026-08-10T12:00:00.000Z",
"createdAt": "2026-08-10T11:55:00.000Z"
},
{
"_id": "507f1f77bcf86cd799439012",
"leadId": "42",
"topic": "timeline",
"preference": "Q2 2026",
"confidence": "medium",
"source": "lead: Looking to decide by summer",
"updatedAt": "2026-08-10T12:01:00.000Z",
"createdAt": "2026-08-10T12:01:00.000Z"
}
]{
"error": "Failed to fetch preferences"
}Authorizations
API key for programmatic access (format nl_live_* or nl_test_*)
Path Parameters
Lead id (same id returned by GET /api/leads), as a string path
segment — e.g. "42".
Response
Lead insights for the lead (empty array if none yet).
Preference document id.
Lead id these insights belong to.
Preference domain (e.g. budget, timeline, location).
100Extracted value for the topic.
200Model confidence in the extraction.
high, medium, low Owning account id.
Conversation that last wrote or updated this insight.
Short snippet or provenance of the extraction.
TTL expiry (default ~90 days from last write).