Kwazi

[kwazi_account_link style="dropdown"]

Download for free

Getting started

Pagination and polling

How lists come back in pages, and how to fetch only what changed since your last call.

Pages

Every list answers in the same shape:

{
  "items": [ … ],
  "next_cursor": "azoxMjg4",
  "total": 212
}
  • per_page sets the page size (1–100, default 25).
  • Pass next_cursor as cursor to get the next page. null means this was the last page.
  • A cursor is opaque: do not build or change it.
  • total is the number of matches over all pages. Only the first page (without cursor) has it; later pages give null, because counting is a query of its own.
curl -u "user:app password" -G https://your-site.example/wp-json/kwazi/v1/contacts \
  -d per_page=100 -d cursor=azoxMjg4

Polling: what changed since …

Polling is the alternative to webhooks when the other side cannot receive them. Remember the moment of your last poll and ask what changed since then:

List Filter
GET /contacts updated_since
GET /organizations updated_since
GET /appointments updated_since
GET /submissions created_since (a submission does not change after it is sent)
GET /audit-log newest first with a cursor

Times are ISO 8601 in UTC, e.g. 2026-10-15T08:00:00Z. A record changed exactly at that moment is included, so you may receive it twice: use its id to recognise it.

curl -u "user:app password" -G https://your-site.example/wp-json/kwazi/v1/appointments \
  -d updated_since=2026-10-15T08:00:00Z -d per_page=100

Without updated_since, GET /appointments lists a period (from, to, local days, at most 62) or one contact (contact) in one page, by start time.

Tip: poll every few minutes at most; for instant updates use webhooks.

Still stuck?

A real person answers, in plain words. Use the help form, or ask on the WordPress forum.

Ask us a question