Docs/Getting started

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:

Shell
curl "https://api.emailchaser.com/r/leads?campaignId=1234&page=2&limit=100" \
  -H "Authorization: Bearer $EMAILCHASER_API_KEY"
JSON
{
  "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

EndpointsParametersDefaultMaximumResponse
GET /leads, GET /campaigns, GET /sender-emails, GET /replies, GET /reply-draftspage, limit20200total, page, limit, hasMore
GET /icps, GET /credits/transactions, GET /dfy/orders, GET /autopilot/runspage, limit50200total only: stop when you have that many
GET /blocklistlimit, offset1001,000totalCount
GET /email-verification/jobs and a job's /recordspage, size25200count, next (true or false), results
GET /inbox-placement/runslimit50200count
GET /lead-finder/importslimit1050
GET /dfy/domains/searchlimit50100
POST /lead-finder/searches (in the body)page, pageSizepageSize 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.