List Top Correspondents
curl --request GET \
--url https://api.example.com/v1/email/correspondentsimport requests
url = "https://api.example.com/v1/email/correspondents"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/email/correspondents', 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.example.com/v1/email/correspondents",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/v1/email/correspondents"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/v1/email/correspondents")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/email/correspondents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"correspondents": [
{
"email": "<string>",
"display_name": "<string>",
"contact_id": "<string>",
"company_name": "<string>",
"message_count": 123,
"sent_count": 123,
"received_count": 123,
"last_message_at": "<string>"
}
]
}
}Email
List Top Correspondents
Return the workspace’s most frequent email correspondents, sorted by activity
GET
/
v1
/
email
/
correspondents
List Top Correspondents
curl --request GET \
--url https://api.example.com/v1/email/correspondentsimport requests
url = "https://api.example.com/v1/email/correspondents"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/email/correspondents', 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.example.com/v1/email/correspondents",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/v1/email/correspondents"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/v1/email/correspondents")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/email/correspondents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"correspondents": [
{
"email": "<string>",
"display_name": "<string>",
"contact_id": "<string>",
"company_name": "<string>",
"message_count": 123,
"sent_count": 123,
"received_count": 123,
"last_message_at": "<string>"
}
]
}
}Request
This endpoint is the fastest way to surface the people your team is actively emailing, ranked by recency and volume. It is the data source behind the sidebar’s “Top correspondents” widget.Query Parameters
integer
default:"25"
Number of correspondents to return. Maximum 200.
string
Optional ISO 8601 lower-bound on the messages considered (e.g. the last 30 days).
string
Scope the aggregation to a single user in the workspace. When omitted, every connected mailbox is aggregated.
integer
default:"2"
Exclude correspondents who have exchanged fewer than this number of messages.
Headers
Authorization: Bearer wbk_your_api_key_here
Response
object
Show properties
Show properties
array
Show Correspondent object
Show Correspondent object
string
Correspondent’s email address
string
Best-known display name from thread metadata
string
Linked contact UUID, when resolved
string
Company inferred from the email domain
integer
Total messages exchanged
integer
Outbound messages
integer
Inbound messages
string
ISO 8601 timestamp of the most recent message
X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, and X-Request-ID headers.
curl "https://data.leadlex.com/functions/v1/api-gateway/v1/email/correspondents?limit=50" \
-H "Authorization: Bearer wbk_your_api_key_here"
import requests
API_KEY = "wbk_your_api_key_here"
BASE_URL = "https://data.leadlex.com/functions/v1/api-gateway"
r = requests.get(
f"{BASE_URL}/v1/email/correspondents",
headers={"Authorization": f"Bearer {API_KEY}"},
params={"limit": 50},
)
for c in r.json()["data"]["correspondents"]:
print(c["display_name"], c["message_count"])
const res = await fetch(
'https://data.leadlex.com/functions/v1/api-gateway/v1/email/correspondents?limit=50',
{ headers: { Authorization: 'Bearer wbk_your_api_key_here' } },
);
const { data } = await res.json();
data.correspondents.forEach((c) => console.log(c.display_name, c.message_count));
Example Response
{
"data": {
"correspondents": [
{
"email": "jane@acme.com",
"display_name": "Jane Doe",
"contact_id": "123e4567-e89b-12d3-a456-426614174000",
"company_name": "Acme Corp",
"message_count": 42,
"sent_count": 21,
"received_count": 21,
"last_message_at": "2026-04-17T09:14:00Z"
}
]
}
}
Errors
| Status | Code | Description |
|---|---|---|
| 401 | invalid_key | Invalid or expired API key |
| 403 | insufficient_permissions | Missing read:email permission |
| 429 | rate_limited | Rate limit exceeded |