List endpoints use cursor pagination. There are no page numbers and no total counts — this keeps list requests fast on large workspaces, where a COUNT(*) or deep OFFSET would be expensive.
Response shape
Every list endpoint returns the same envelope:
{
"data": [ ... ],
"has_more": true,
"next_cursor": "cD0yMDI2LTA3LTA0..."
}
Whether more results exist after this page.
An opaque cursor pointing at the next page. null when has_more is false.
Fetching the next page
Pass the next_cursor value back as the cursor query parameter to fetch the following page:
curl --location --request GET 'https://api.audienceful.com/v2/people?cursor=cD0yMDI2LTA3LTA0...' \
--header 'X-Api-Key: <your-api-key>'
import requests
url = "https://api.audienceful.com/v2/people"
headers = {"X-Api-Key": "<your-api-key>"}
params = {"cursor": "cD0yMDI2LTA3LTA0..."}
response = requests.get(url, headers=headers, params=params)
print(response.json())
const response = await fetch(
"https://api.audienceful.com/v2/people?cursor=cD0yMDI2LTA3LTA0...",
{
method: "GET",
headers: { "X-Api-Key": "<your-api-key>" },
},
);
const data = await response.json();
console.log(data);
Keep following next_cursor until has_more is false.
Page size
Control the number of items per page with the page_size query parameter. Each list endpoint has its own default and maximum — for example, contacts default to 100 and allow up to 500.
curl --location --request GET 'https://api.audienceful.com/v2/people?page_size=250' \
--header 'X-Api-Key: <your-api-key>'
import requests
url = "https://api.audienceful.com/v2/people"
headers = {"X-Api-Key": "<your-api-key>"}
params = {"page_size": 250}
response = requests.get(url, headers=headers, params=params)
print(response.json())
const response = await fetch(
"https://api.audienceful.com/v2/people?page_size=250",
{
method: "GET",
headers: { "X-Api-Key": "<your-api-key>" },
},
);
const data = await response.json();
console.log(data);