Returns a list of events for a specified form.
This is the preferred read pattern. Cache results on first call, then use lastSynchronisationTimeOnServer from the previous response to fetch only changed/new events. Only fetch the full dataset on first sync.
Supports cursor pagination (100 events per page by default; override with pagination.pageSize).
Pagination:
Pass pagination parameters as a nested object in the request body:
{
"pagination": {
"paginate": true,
"cursor": "{{cursor}}"
}
}Omit cursor (or pass null) on the first page. Use the cursor value from each response to fetch the next page.
Upcoming enforcement: A future AMS release will add server-side enforcement that rejects unpaginated requests on high-volume endpoints. Implement pagination now to avoid disruption when that ships.
lastSynchronisationTimeOnServer:
The lastSynchronisationTimeOnServer value returned in each response must be:
- Persisted after every call.
- Passed back as the lower time bound on the next call to retrieve only changed records.
- Never hardcoded to
0or a fixed timestamp — doing so forces a full history scan on every run, which causes server-level memory exhaustion under concurrent load.
Paging: keep the timestamp you started the sync with unchanged on every page request, and persist only the final page's returned value for the next sync run. Advancing the lower bound between pages skips records that fall inside the original window.
Error semantics:
HTTP 500on this endpoint typically means the request payload is too large — usually caused by requesting too many users without pagination, orlastSynchronisationTimeOnServer: 0on a large dataset. Enable pagination and pass a non-zerolastSynchronisationTimeOnServeron subsequent calls.HTTP 403means the authenticated account does not have access to the specified form. Check form permissions in the AMS Admin portal.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
