Propelus
Developer Guide

Pagination

How list endpoints page their results and how to iterate through every page.

List endpoints return results one page at a time. You control the page with query parameters and follow the nextPage link in the response until there are no more pages.

Request parameters

ParameterTypeDefaultRangeDescription
pageinteger11 to 100Which page to return.
perPageinteger101 to 100Number of items per page.
curl "https://api.demo.propelus.com/v2/professionals?page=1&perPage=25" \
  -H "x-api-key: $PROPELUS_API_KEY" \
  -H "x-client-id: $PROPELUS_CLIENT_ID"

Response envelope

Paginated responses wrap the items in a consistent envelope:

{
  "count": 25,
  "total": 213,
  "professionals": [ /* ... items for this page ... */ ],
  "nextPage": "/v2/professionals?page=2&perPage=25",
  "prevPage": null
}
FieldDescription
countNumber of items on the current page.
totalTotal number of items across all pages.
nextPageRelative path to the next page, or null on the last page.
prevPageRelative path to the previous page, or null on the first page.

The array field is named after the resource (professionals, credentials, webhooks).

Iterating through all pages

Follow nextPage until it is null. Because it's a ready-made relative path, you can append it directly to the base URL rather than assembling query strings yourself.

async function fetchAll(path: string) {
  const base = "https://api.demo.propelus.com";
  const headers = {
    "x-api-key": process.env.PROPELUS_API_KEY!,
    "x-client-id": process.env.PROPELUS_CLIENT_ID!,
  };

  const all = [];
  let next: string | null = path; // e.g. "/v2/professionals?perPage=100"

  while (next) {
    const res = await fetch(base + next, { headers });
    const body = await res.json();
    all.push(...body.professionals);
    next = body.nextPage; // null on the last page ends the loop
  }

  return all;
}

Request the largest perPage (up to 100) that your processing can handle to minimize round trips, and add a short backoff between pages if you're iterating large result sets. See Rate limits.

Which endpoints paginate

These list endpoints use page/perPage and the envelope above:

Other list endpoints (for example GET /v2/professions) return their full result set in a single response and are not paginated.

On this page