Upcoming reminder sends in the next 30 days
post
https://api.expiryedge.com/v1/getUpcomingNotificationsV2any role60/minAny method
Request
curl -X POST 'https://api.expiryedge.com/v1/getUpcomingNotificationsV2' \
-H "Authorization: Bearer $EXPIRYEDGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"selectedTeam": "0"
}'Response
[
{
"id": "exp_4Tq9sLm2",
"expiryName": "Northwind Dental - State Dental License",
"expiryType": "License",
"expiryDate": "2026-10-15",
"nextNotification": "2026-10-01T14:00:00.000Z",
"nextNotificationOrgTz": "2026-10-01T09:00:00.000Z",
"reminderTime": "09:00",
"timezone": "America/Chicago",
"daysUntilExpiry": 18,
"recipients": [
{
"name": "Priya Shah",
"email": "priya.shah@northwinddental.com",
"channels": [
"email"
]
}
],
"notificationChannels": [
"email"
],
"priority": "medium"
}
]One entry per active (not done, not archived) expiry with a reminder scheduled in the next 30 days and at least
one reachable recipient, sorted by nextNotification. Returns a bare array; unbounded.
selectedTeamstringTeam id to filter by;'0'or omitted for all teams.
200
Upcoming notifications.
idstringExpiry id.expiryNamestringexpiryTypestringexpiryDatestringCalendar dateYYYY-MM-DDin the organization's timezone.nextNotificationstringUTC timestamp, ISO 8601. Every v1 response uses this form, never a raw Firestore Timestamp ({_seconds, _nanoseconds}).format: date-timenextNotificationOrgTzstringThe send time expressed as organization-local wall time (serialized with a Z suffix).reminderTimestringLocal send timeHH:mm.timezonestringOrganization timezone.daysUntilExpiryintegerrecipientsarray of objectsnotificationChannelsarray of stringAllowedemailsmswhatsappprioritystringAllowedcriticalhighmedium
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. |
