Pagination & Filtering
All eight list endpoints (GET /v1/employees, /v1/customers, /v1/projects, /v1/tasks, /v1/forms, /v1/submissions, /v1/absences, /v1/worklogs) use cursor pagination.
#Parameters
| Parameter | Description |
|---|---|
limit | Page size, 1 to 100. Default 50. Values outside this range return 400 invalid_limit. |
cursor | Opaque value from nextCursor of the previous page. Invalid values return 400 invalid_cursor. |
updatedAfter | ISO 8601 timestamp, for example 2026-10-01T00:00:00Z. Only returns records with updatedAt strictly after this time. |
#Response
{
"data": [ ... ],
"nextCursor": "MjAyNi0xMC0zMFQwOToyNzo1NVp8OGExZDRmN2MtMmI5ZS00YzNhLWE2ZjEtN2UyZDliMGM1ZjE4"
}Records are sorted by updatedAt ascending, then by id. If there are more records, the response contains nextCursor. On the last page nextCursor is omitted. Treat the cursor as opaque: do not parse or build it yourself.
#Fetching all pages
Pass nextCursor as cursor and repeat the same filters on every page:
curl "https://api-test.worklogx.com/api/v1/customers?limit=100" \
-H "Authorization: Bearer wlx_test_YOUR_API_KEY"
curl "https://api-test.worklogx.com/api/v1/customers?limit=100&cursor=NEXT_CURSOR" \
-H "Authorization: Bearer wlx_test_YOUR_API_KEY"#Incremental sync with updatedAfter
- On the first run, page through the full list and remember the highest
updatedAtyou received. - On the next run, call the list with
updatedAfterset to that value and page through all results.
curl "https://api-test.worklogx.com/api/v1/projects?updatedAfter=2026-10-30T09:27:55Z" \
-H "Authorization: Bearer wlx_test_YOUR_API_KEY"The comparison is strictly greater than. A record whose updatedAt equals the stored value is not returned again.
#Additional filters
| Endpoint | Filters |
|---|---|
GET /v1/tasks | projectId |
GET /v1/submissions | formId, projectId, customerId, taskId |
GET /v1/absences | employeeId, status, dateFrom, dateTo |
GET /v1/worklogs | employeeId, customerId, projectId, dateFrom, dateTo |
- IDs are UUIDs. An ID from another organization returns an empty page, not an error.
dateFromanddateToare dates (YYYY-MM-DD).dateFromafterdateToreturns400 invalid_date_range. For absences, the filter matches absences whose period overlaps the range.statusfor absences is one ofPENDING,APPROVED,REJECTED,CANCELLED,REPORTED. Other values return400 invalid_status.