Pagination
List endpoints return results a page at a time, newest first. Pages are numbered; there are no cursors.
Most lists take page and limit
page starts at 1, and limit is how many results a page holds. The main lists return the total and whether another page exists:
curl "https://api.emailchaser.com/r/leads?campaignId=1234&page=2&limit=100" \
-H "Authorization: Bearer $EMAILCHASER_API_KEY"{
"leads": [ { "id": 8589949820, "email": "jane@acme.com" } ],
"total": 1340,
"page": 2,
"limit": 100,
"hasMore": true
}Keep asking for the next page until hasMore is false. The array is named after what it holds: leads, campaigns, senderEmails, replies or drafts.
The defaults and maximums differ by list
| Endpoints | Parameters | Default | Maximum | Response |
|---|---|---|---|---|
GET /leads, GET /campaigns, GET /sender-emails, GET /replies, GET /reply-drafts | page, limit | 20 | 200 | total, page, limit, hasMore |
GET /icps, GET /credits/transactions, GET /dfy/orders, GET /autopilot/runs | page, limit | 50 | 200 | total only: stop when you have that many |
GET /blocklist | limit, offset | 100 | 1,000 | totalCount |
GET /email-verification/jobs and a job's /records | page, size | 25 | 200 | count, next (true or false), results |
GET /inbox-placement/runs | limit | 50 | 200 | count |
GET /lead-finder/imports | limit | 10 | 50 | |
GET /dfy/domains/search | limit | 50 | 100 | |
POST /lead-finder/searches (in the body) | page, pageSize | pageSize 25 or 50, up to page 100 |
GET /webhooks, GET /workspaces, GET /inbox-placement/tests and GET /inbox-placement/sender-reputation return everything at once.
Ask for big pages and fewer of them
Set limit to the maximum when you sync a whole list. It takes 7 requests to read 1,340 leads at 200 a page, and 67 at the default 20. If a list changes while you page through it, a lead can move between pages; when that matters, filter by campaignId or by date and sync in smaller slices.
Questions about the API? Email support@emailchaser.com.