Poll expiries created, updated or completed since a point in time
get
https://api.expiryedge.com/v1/listExpiryChangesany member of an organization60/min
Request
curl 'https://api.expiryedge.com/v1/listExpiryChanges?event=updated&since=2026-09-01T00%3A00%3A00Z&limit=50' \
-H "Authorization: Bearer $EXPIRYEDGE_API_KEY"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,
"organization_id": "org_northwind",
"created_at": "2026-09-27T14:05:00.000Z",
"updated_at": "2026-09-27T15:10:00.000Z"
}
],
"next_cursor": "WyIyMDI2LTA5LTI3VDE1OjEwOjAwLjAwMFoiLCJleHBfNFRxOXNMbTIiXQ",
"has_more": false
}Returns expiries whose created_at / updated_at / completed_at is after since, oldest first,
in pages of up to 100. Continue with cursor (the previous next_cursor) instead of since.
share_password is never returned. This is the recommended way to poll for changes.
eventstringWhich timestamp to page on.completedalso filters tois_done = true.AllowedcreatedupdatedcompletedDefaultupdatedsincestringISO 8601 timestamp; required unlesscursoris given.format: date-timecursorstringOpaquenext_cursorfrom the previous page.limitintegerPage size, 1-100 (values above 100 are clamped; default 50).Default50min: 1 · max: 100
200
A page of expiries, oldest change first.
dataarray of objectsrequirednext_cursorstring | nullrequiredOpaque cursor. Store it and send it ascursoron the next poll, even whenhas_moreis false.has_morebooleanrequired
400 | The request is missing required fields or contains invalid values. |
401 | Missing, expired or invalid bearer token. |
403 | Authenticated, but your role or organization does not allow this action. |
405 | The endpoint does not accept this HTTP method. |
429 | Too many requests for this endpoint from your IP. Wait Retry-After seconds. |
500 | Unexpected server error. Retry later; quote requestId to support. |
