List expiries with filters and pagination

posthttps://api.expiryedge.com/v1/getPaginatedExpiries
any role500/min
Request
curl -X POST 'https://api.expiryedge.com/v1/getPaginatedExpiries' \
  -H "Authorization: Bearer $EXPIRYEDGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "page": 1,
  "limit": 25,
  "metric": "future",
  "futureDurationDays": 30,
  "type": "License",
  "sortBy": "expiry_date",
  "sortDirection": "asc"
}'
Response
{
  "data": [
    {
      "id": "exp_4Tq9sLm2",
      "name": "Northwind Dental - State Dental License",
      "type": "License",
      "expiry_date": "2026-10-15",
      "priority": "High",
      "state": "todo",
      "is_done": false,
      "is_archive": false,
      "has_share_password": false,
      "assigned_to": "u_71bXq",
      "assigned_to_user_full_name": "Priya Shah",
      "assigned_to_user_email": "priya@northwinddental.com",
      "assigned_by_user_full_name": null,
      "assigned_by_user_email": null
    }
  ],
  "expiries": [
    {
      "id": "exp_4Tq9sLm2",
      "name": "Northwind Dental - State Dental License",
      "type": "License",
      "expiry_date": "2026-10-15"
    }
  ],
  "pagination": {
    "total": 27,
    "totalPages": 2,
    "currentPage": 1,
    "page": 1,
    "limit": 25,
    "optimized": true
  }
}

Offset pagination with page / limit (default 10, max 10000). With complex filters the server scans at most 5000 records in memory (pagination.optimized: false). Prefer listExpiryChanges for polling.

Body parameters

application/json
  • pageinteger
    Default 1min: 1
  • limitinteger
    Values above 10000 are clamped.
    Default 10min: 1 · max: 10000
  • metricFilterstring
    Dashboard metric card to filter by.
    AllowedtotalcompletedexpiredarchivedactivetodayupcomingThisMonthfuture
  • metricstring
    Dashboard metric card to filter by.
    AllowedtotalcompletedexpiredarchivedactivetodayupcomingThisMonthfuture
  • typeFilterstring
    Expiry type name, or All. Alias type.
  • typestring
  • priorityFilterstring
    Priority, or All. Alias priority.
  • prioritystring
  • stateFilterstring
    Workflow state, or All.
  • searchQuerystring
    Text search. Alias search.
  • searchstring
  • selectedTeamstring
    Team id; '0' = all. Alias team_id.
  • team_idstring
  • folder_idstring | null
    Folder id; root, null or empty string = unfiled only.
  • include_subfoldersboolean
    Default false
  • assignedToMeboolean
    Default false
  • assignedUserstring
    User id of the assignee.
  • futureDurationDaysinteger or string
    Window for metric: future, in days, or all.
  • notifyNoneboolean
    Only records with no queued reminder or no live contact.
    Default false
  • sortBystring
    A field name, or <templateId>:::<fieldKey> for a template field. Invalid values fall back to expiry_date.
    Default expiry_date
  • sortDirectionstring
    AllowedascdescDefault asc

Returns

200
One page of expiries. data and expiries hold the same array.
  • dataarray of objectsrequired
  • expiriesarray of objectsrequired
    Same array as data (kept for older clients).
  • paginationobjectrequired

Errors

400
The request is missing required fields or contains invalid values.
401
Missing, expired or invalid bearer token.
404
The record does not exist or is not in your organization.
429
Too many requests for this endpoint from your IP. Wait Retry-After seconds.