List endpoints use offset pagination with two query parameters.
Number of records to skip before collecting results.
Number of records to return. Maximum 100. Requests above 100 are clamped to 100.
Every list response echoes your paging window and the total count:
{
"count": 1320,
"skip": 0,
"take": 20,
"products": [ /* … */ ]
}
Iterating all pages
Increase skip by take until skip + take >= count.
async function* allProducts() {
const take = 100;
let skip = 0, count = Infinity;
while (skip < count) {
const res = await fetch(
`https://api.kalixo.io/v2/catalog/products?skip=${skip}&take=${take}`,
{ headers: { "x-api-key": process.env.KALIXO_API_KEY } }
);
const page = await res.json();
count = page.count;
yield* page.products;
skip += take;
}
}
Use take=100 for bulk syncs to minimise round trips, and combine with
filters to fetch only what you need.