Leads
List leads
Incrementally list leads. Requires updatedSince and/or createdSince. Soft-deleted leads are included (deleted: true); treat as removals. Use lastActivityAt to decide whether to fetch events.
GET
/
leads
cURL
curl --request GET \
--url https://api.attent.app/v1/leads \
--header 'x-api-key: <api-key>'import requests
url = "https://api.attent.app/v1/leads"
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.attent.app/v1/leads', 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.attent.app/v1/leads",
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.attent.app/v1/leads"
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.attent.app/v1/leads")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.attent.app/v1/leads")
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{
"leads": [
{
"id": "room_abc",
"firstName": "John",
"lastName": "Doe",
"phone": "+15555555555",
"email": "john.doe@example.com",
"customerProfile": "My Customer Profile",
"createdAt": "2026-05-01T12:00:00.000Z",
"updatedAt": "2026-05-14T15:30:00.000Z",
"lastActivityAt": "2026-05-14T15:30:00.000Z",
"additionalInfo": {
"key1": "value1"
},
"hasReplied": true,
"isHot": true,
"isQualified": false,
"isUnsubscribed": false,
"isAiOn": true,
"tags": [
{
"id": "tag1",
"name": "Tag 1",
"condition": "Condition 1"
}
],
"summary": "Summary of the conversation.",
"externalLeadId": "00Q5g00000ABCDEAA1",
"deleted": false,
"deletedAt": null
}
],
"nextToken": "eyJzZWFyY2hBZnRlciI6WyIyMDI2LTA1LTE0VDE1OjMwOjAwLjAwMFoiLCJyb29tX2FiYyJdfQ=="
}{
"message": "Invalid format for field: phone"
}{
"message": "Unauthorized"
}{
"message": "Internal Server Error"
}Authorizations
Query Parameters
ISO 8601 timestamp. Returns leads whose updatedAt is greater than or equal to this value.
ISO 8601 timestamp. Returns leads whose createdAt is greater than or equal to this value.
Maximum number of leads to return per page. Defaults to 100, max 1000.
Required range:
1 <= x <= 1000Opaque cursor returned by a prior response. Pass it back to fetch the next page.
⌘I
cURL
curl --request GET \
--url https://api.attent.app/v1/leads \
--header 'x-api-key: <api-key>'import requests
url = "https://api.attent.app/v1/leads"
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.attent.app/v1/leads', 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.attent.app/v1/leads",
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.attent.app/v1/leads"
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.attent.app/v1/leads")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.attent.app/v1/leads")
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{
"leads": [
{
"id": "room_abc",
"firstName": "John",
"lastName": "Doe",
"phone": "+15555555555",
"email": "john.doe@example.com",
"customerProfile": "My Customer Profile",
"createdAt": "2026-05-01T12:00:00.000Z",
"updatedAt": "2026-05-14T15:30:00.000Z",
"lastActivityAt": "2026-05-14T15:30:00.000Z",
"additionalInfo": {
"key1": "value1"
},
"hasReplied": true,
"isHot": true,
"isQualified": false,
"isUnsubscribed": false,
"isAiOn": true,
"tags": [
{
"id": "tag1",
"name": "Tag 1",
"condition": "Condition 1"
}
],
"summary": "Summary of the conversation.",
"externalLeadId": "00Q5g00000ABCDEAA1",
"deleted": false,
"deletedAt": null
}
],
"nextToken": "eyJzZWFyY2hBZnRlciI6WyIyMDI2LTA1LTE0VDE1OjMwOjAwLjAwMFoiLCJyb29tX2FiYyJdfQ=="
}{
"message": "Invalid format for field: phone"
}{
"message": "Unauthorized"
}{
"message": "Internal Server Error"
}
